// RUN: %clang_cc1 -emit-pch -std=c++23 -o %t %s // RUN: %clang_cc1 -include-pch %t -verify -fsyntax-only -DTEST -std=c++23 %s // Test that dependence of 'this' and DREs due to by-value capture by a // lambda with an explicit object parameter is serialised/deserialised // properly. #ifndef HEADER #define HEADER struct S { int x; auto f() { return [*this] (this auto&&) { int y; x = 42; const auto l = [y] (this auto&&) { y = 42; }; l(); }; } }; #endif // expected-error@* {{read-only variable is not assignable}} // expected-error@* {{cannot assign to a variable captured by copy in a non-mutable lambda}} // expected-note@* 2 {{in instantiation of}} #ifdef TEST void f() { const auto l = S{}.f(); l(); // expected-note {{in instantiation of}} } #endif