1 // PR c++/86875 2 // { dg-do compile { target c++14 } } 3 4 template <typename _Tp> using decay_t = _Tp; 5 template <class Fun> class A { 6 Fun fun_; 7 8 public: A(T p1)9 template <class T> A(T p1) : fun_(p1) {} operator()10 auto operator()() { fun_(this); } 11 }; 12 y_combinator(Fun p1)13template <class Fun> auto y_combinator(Fun p1) { return A<decay_t<Fun>>(p1); } 14 15 int main()16main() 17 { 18 const unsigned int w = 1; 19 auto foo = y_combinator([=](auto) { auto i = +w; }); 20 foo(); 21 } 22