// PR c++/56782 // { dg-do compile { target c++11 } } template T&& declval(); struct is_convertible_impl { template static void sink(T); template(declval()))> static auto test(int) -> char; template static auto test(...) -> char(&)[2]; }; template struct is_convertible : is_convertible_impl { static const bool value = sizeof(test(0)) == 1; }; template struct enable_if {}; template struct enable_if { typedef T type; }; template struct conditional { typedef If type; }; template struct conditional { typedef Else type; }; template struct and_; template<> struct and_<> { static const bool value = true; }; template struct and_

: P { }; template struct and_ : conditional::type { }; template struct Tuple { template... >::value, int>::type > Tuple(U&&...){} }; static_assert(is_convertible, Tuple<>>::value, "Ouch"); //#1