| // RUN: %clang_cc1 -std=c++2a -verify %s -Wdeprecated |
| |
| // This test does two things. |
| // Deleting the copy constructor ensures that an [=, this] capture doesn't copy the object. |
| // Accessing a member variable from the lambda ensures that the capture actually works. |
| class A { |
| A(const A &) = delete; |
| int i; |
| |
| void func() { |
| auto L = [=, this]() -> int { return i; }; |
| L(); |
| } |
| }; |
| |
| struct B { |
| int i; |
| void f() { |
| (void) [=] { // expected-note {{add an explicit capture of 'this'}} |
| return i; // expected-warning {{implicit capture of 'this' with a capture default of '=' is deprecated}} |
| }; |
| } |
| }; |