// RUN: %clang_cc1 -std=c++2a -fsyntax-only -emit-llvm-only %s
// RUN: %clang_cc1 -std=c++2a -fsyntax-only -fdelayed-template-parsing %s
// RUN: %clang_cc1 -std=c++2a -fsyntax-only -fms-extensions %s
// RUN: %clang_cc1 -std=c++2a -fsyntax-only -fdelayed-template-parsing -fms-extensions %s

namespace PR45881 {
struct A {
    void f();
};
int id(A*);
void A::f() {
    auto z = [*this](auto z2, decltype(z2(this)) z3){};
    z(id,3);
}

struct B {
    void f();
};
void B::f() {
    auto z = []<typename TT, typename TTT=decltype(TT()(this))>(){return 0;};
    z.template operator()<int(*)(B*)>();
}

struct C {
    void f();
};
void C::f() {
    auto z = []<typename TT, decltype(TT()(this)) n>(){return 0;};
    z.template operator()<int(*)(C*), 8>();
}
} // namespace PR45881
