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