| // 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; |
| }; |
| } |
| }; |
| }; |
| } |