41 lines · cpp
1// RUN: %clang_cc1 -std=c++11 %s -verify2 3int GlobalVar; // expected-note {{declared here}}4 5namespace N {6 int AmbiguousVar; // expected-note {{candidate}}7}8int AmbiguousVar; // expected-note {{candidate}}9using namespace N;10 11class 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 27void 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