http://gcc.gnu.org/bugzilla/show_bug.cgi?id=48319
--- Comment #2 from Jonathan Wakely <redi at gcc dot gnu.org> 2011-03-28 18:38:37 UTC --- reduced template<typename Tp> Tp declval() noexcept; template<typename _Tp> class __is_constructible_helper { typedef char __one; typedef struct { char __arr[2]; } __two; template<typename _Tp1, typename... _Args1> static decltype(_Tp1(declval<_Args1>()...), __one()) __test(int); template<typename, typename...> static __two __test(...); public: static const bool __value = sizeof(__test<_Tp>(0)) == 1; }; int main() { return __is_constructible_helper<int>::__value; }