llvm/clang/test/SemaCXX/cxx2a-lambda-equals-this.cpp

// RUN: %clang_cc1 -std=c++2a -verify %s
// expected-no-diagnostics

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