// PR c++/94453 // { dg-do compile { target c++11 } } void *ay(); template f ay() { return *static_cast(ay()); } template void bf() { ay()(); } struct az { template az(h); using bk = void (*)(); bk bl; }; template az::az(h) { bl = bf; } struct A {}; void da(az); void di(A, int); void dk(A, az, az); void b() { int data = 0; auto n = [] {}; constexpr auto p = A{}; auto q = [=] { di(p, data); }; da([=] { dk(p, n, q); }); }