// 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}} | |
}; | |
} | |
}; |