1 // PR c++/69005 2 // { dg-do compile { target c++11 } } 3 4 template<typename T> T& declval(); 5 6 template<typename _Sig> class function; 7 8 template<typename _Res, typename _Arg> 9 struct function<_Res(_Arg)> 10 { 11 function() noexcept { } 12 13 function(const function&) { } 14 15 template<typename _Functor, 16 typename = decltype(declval<_Functor&>()(declval<_Arg>()))> 17 function(_Functor) { } 18 19 _Res operator()(_Arg) const; 20 }; 21 22 struct Foo { 23 function<void(Foo)> Func; 24 }; 25 26 extern Foo exfoo; 27 Foo f (exfoo); 28