1 // PR c++/88752 2 // { dg-do compile { target c++17 } } 3 4 template <int a> struct b { static constexpr int c = a; }; 5 class d; 6 template <typename> struct e { typedef d f; }; 7 template <typename g> using h = typename e<g>::f; 8 template <typename> constexpr bool i = b<true>::c; 9 class d { 10 public: 11 using j = float; 12 }; 13 template <typename> void k(); main()14int main() { k<d>(); } 15 template <class l> l m; n(r o)16template <class, class r> void n(r o) { 17 [](int) {}(o(m<d>)); 18 } k()19template <typename> void k() { 20 n<int>([](auto inputs) { 21 auto p(inputs); 22 using s = h<decltype(p)>; 23 s q; 24 if constexpr (i<typename s::j>) 25 [&] { return q; }(); 26 return 42; 27 }); 28 } 29