1 // RUN: %clang_cc1 -std=c++2a -verify %s -Wdeprecated 2 3 // This test does two things. 4 // Deleting the copy constructor ensures that an [=, this] capture doesn't copy the object. 5 // Accessing a member variable from the lambda ensures that the capture actually works. 6 class A { 7 A(const A &) = delete; 8 int i; 9 func()10 void func() { 11 auto L = [=, this]() -> int { return i; }; 12 L(); 13 } 14 }; 15 16 struct B { 17 int i; fB18 void f() { 19 (void) [=] { // expected-note {{add an explicit capture of 'this'}} 20 return i; // expected-warning {{implicit capture of 'this' with a capture default of '=' is deprecated}} 21 }; 22 } 23 }; 24