[clang] Implement lifetime analysis for lifetime_capture_by(X) (#115921)
[llvm-project.git] / clang / test / SemaCXX / cxx20-lambda-decltype-this.cpp
blob4f66ec415b726ceff15733ea4e5dbe6c240611f6
1 // RUN: %clang_cc1 -std=c++2a -emit-llvm-only %s
2 // RUN: %clang_cc1 -std=c++2a -fsyntax-only -fdelayed-template-parsing %s
3 // RUN: %clang_cc1 -std=c++2a -fsyntax-only -fms-extensions %s
4 // RUN: %clang_cc1 -std=c++2a -fsyntax-only -fdelayed-template-parsing -fms-extensions %s
6 namespace PR45881 {
7 struct A {
8 void f();
9 };
10 int id(A*);
11 void A::f() {
12 auto z = [*this](auto z2, decltype(z2(this)) z3){};
13 z(id,3);
16 struct B {
17 void f();
19 void B::f() {
20 auto z = []<typename TT, typename TTT=decltype(TT()(this))>(){return 0;};
21 z.template operator()<int(*)(B*)>();
24 struct C {
25 void f();
27 void C::f() {
28 auto z = []<typename TT, decltype(TT()(this)) n>(){return 0;};
29 z.template operator()<int(*)(C*), 8>();
31 } // namespace PR45881