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

24 lines
620 B
C++
Raw Permalink Normal View History

2022-04-25 13:02:35 +02:00
// 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}}
};
}
};