1 // RUN: %clang_cc1 -std=c++11 %s -verify 2 3 int GlobalVar; // expected-note {{declared here}} 4 5 namespace N { 6 int AmbiguousVar; // expected-note {{candidate}} 7 } 8 int AmbiguousVar; // expected-note {{candidate}} 9 using namespace N; 10 11 class X0 { 12 int Member; 13 14 static void Overload(int); 15 void Overload(); 16 virtual X0& Overload(float); 17 18 void explicit_capture() { 19 int variable; // expected-note {{declared here}} 20 (void)[&Overload] () {}; // expected-error {{does not name a variable}} 21 (void)[&GlobalVar] () {}; // expected-error {{does not have automatic storage duration}} 22 (void)[&AmbiguousVar] () {}; // expected-error {{reference to 'AmbiguousVar' is ambiguous}} 23 (void)[&Variable] () {}; // expected-error {{use of undeclared identifier 'Variable'; did you mean 'variable'}} 24 } 25 }; 26 27 void test_reaching_scope() { 28 int local; // expected-note{{declared here}} 29 static int local_static; // expected-note{{'local_static' declared here}} 30 (void)[=]() { 31 struct InnerLocal { 32 void member() { 33 (void)[local, // expected-error{{reference to local variable 'local' declared in enclosing function 'test_reaching_scope'}} 34 local_static]() { // expected-error{{'local_static' cannot be captured because it does not have automatic storage duration}} 35 return 0; 36 }; 37 } 38 }; 39 }; 40 } 41