reference, declarationdefinition
definition → references, declarations, derived classes, virtual overrides
reference to multiple definitions → definitions
unreferenced
    1
    2
    3
    4
    5
    6
    7
    8
    9
   10
   11
   12
   13
   14
   15
   16
   17
   18
   19
   20
   21
   22
   23
// 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}}
    };
  }
};