1 // RUN: %clang_cc1 -std=c++11 %s -Wunused -verify 2 3 void odr_used() { 4 int i = 17; 5 [i]{}(); 6 } 7 8 struct ReachingThis { 9 static void static_foo() { 10 (void)[this](){}; // expected-error{{'this' cannot be captured in this context}} 11 12 struct Local { 13 int i; 14 15 void bar() { 16 (void)[this](){}; 17 (void)[&](){i = 7; }; 18 } 19 }; 20 } 21 22 void foo() { 23 (void)[this](){}; 24 25 struct Local { 26 int i; 27 28 static void static_bar() { 29 (void)[this](){}; // expected-error{{'this' cannot be captured in this context}} 30 (void)[&](){i = 7; }; // expected-error{{invalid use of nonstatic data member 'i'}} 31 } 32 }; 33 } 34 }; 35 36 void immediately_enclosing(int i) { // expected-note{{'i' declared here}} 37 [i]() { 38 [i] {}(); 39 }(); 40 41 [=]() { 42 [i] {}(); 43 }(); 44 45 []() { // expected-note{{lambda expression begins here}} 46 [i] {}(); // expected-error{{variable 'i' cannot be implicitly captured in a lambda with no capture-default specified}} 47 }(); 48 } 49