// PR c++/86875 | |
// { dg-do compile { target c++14 } } | |
template <typename _Tp> using decay_t = _Tp; | |
template <class Fun> class A { | |
Fun fun_; | |
public: | |
template <class T> A(T p1) : fun_(p1) {} | |
auto operator()() { fun_(this); } | |
}; | |
template <class Fun> auto y_combinator(Fun p1) { return A<decay_t<Fun>>(p1); } | |
int | |
main() | |
{ | |
const unsigned int w = 1; | |
auto foo = y_combinator([=](auto) { auto i = +w; }); | |
foo(); | |
} |