https://gcc.gnu.org/bugzilla/show_bug.cgi?id=66405
--- Comment #2 from Markus Trippelsdorf <trippels at gcc dot gnu.org> --- Creduce came up with: template <typename> struct A; template <bool> struct enable_if; template <typename T, T> struct B; template <bool... Bools> using and_c = A<B<bool, Bools || true...>>; template <typename...> using Constructible = int; template <typename... Ts> struct common_tuple { template < typename... Us, typename enable_if<and_c<(int)Constructible<Ts, Us>()...>::value>::type> common_tuple(); void foo(); }; template <> void common_tuple<>::foo(){};