41 lines
1.3 KiB
C++
41 lines
1.3 KiB
C++
|
// RUN: %clang_cc1 -std=c++11 %s -verify
|
||
|
|
||
|
int GlobalVar; // expected-note {{declared here}}
|
||
|
|
||
|
namespace N {
|
||
|
int AmbiguousVar; // expected-note {{candidate}}
|
||
|
}
|
||
|
int AmbiguousVar; // expected-note {{candidate}}
|
||
|
using namespace N;
|
||
|
|
||
|
class X0 {
|
||
|
int Member;
|
||
|
|
||
|
static void Overload(int);
|
||
|
void Overload();
|
||
|
virtual X0& Overload(float);
|
||
|
|
||
|
void explicit_capture() {
|
||
|
int variable; // expected-note {{declared here}}
|
||
|
(void)[&Overload] () {}; // expected-error {{does not name a variable}}
|
||
|
(void)[&GlobalVar] () {}; // expected-error {{does not have automatic storage duration}}
|
||
|
(void)[&AmbiguousVar] () {}; // expected-error {{reference to 'AmbiguousVar' is ambiguous}}
|
||
|
(void)[&Variable] () {}; // expected-error {{use of undeclared identifier 'Variable'; did you mean 'variable'}}
|
||
|
}
|
||
|
};
|
||
|
|
||
|
void test_reaching_scope() {
|
||
|
int local; // expected-note{{declared here}}
|
||
|
static int local_static; // expected-note{{'local_static' declared here}}
|
||
|
(void)[=]() {
|
||
|
struct InnerLocal {
|
||
|
void member() {
|
||
|
(void)[local, // expected-error{{reference to local variable 'local' declared in enclosing function 'test_reaching_scope'}}
|
||
|
local_static]() { // expected-error{{'local_static' cannot be captured because it does not have automatic storage duration}}
|
||
|
return 0;
|
||
|
};
|
||
|
}
|
||
|
};
|
||
|
};
|
||
|
}
|