32 lines · cpp
1// RUN: %clang_cc1 -std=c++2a -emit-llvm-only %s2// RUN: %clang_cc1 -std=c++2a -fsyntax-only -fdelayed-template-parsing %s3// RUN: %clang_cc1 -std=c++2a -fsyntax-only -fms-extensions %s4// RUN: %clang_cc1 -std=c++2a -fsyntax-only -fdelayed-template-parsing -fms-extensions %s5 6namespace PR45881 {7struct A {8 void f();9};10int id(A*);11void A::f() {12 auto z = [*this](auto z2, decltype(z2(this)) z3){};13 z(id,3);14}15 16struct B {17 void f();18};19void B::f() {20 auto z = []<typename TT, typename TTT=decltype(TT()(this))>(){return 0;};21 z.template operator()<int(*)(B*)>();22}23 24struct C {25 void f();26};27void C::f() {28 auto z = []<typename TT, decltype(TT()(this)) n>(){return 0;};29 z.template operator()<int(*)(C*), 8>();30}31} // namespace PR4588132