https://gcc.gnu.org/bugzilla/show_bug.cgi?id=71217
Jonathan Wakely <redi at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Known to work| |10.0 Blocks| |67491 --- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> --- Seems to be fixed on current trunk: template<typename T, typename U> struct is_same { static constexpr bool value = false; }; template<typename T> struct is_same<T, T> { static constexpr bool value = true; }; template <class ... TT> struct Fold; template <class T> struct IntFoldCtor { enum RetType { Ret = false }; }; template <class T> concept TestInt = (bool)IntFoldCtor<T>::Ret || is_same<T,int>::value ; template <TestInt ... TT> struct IntFoldCtor<Fold<TT...> > { enum RetType { Ret = true }; }; static_assert(TestInt<int>); static_assert(!TestInt<short>); // 0 static_assert(TestInt< Fold<int,int,int> >); // 1 static_assert(!TestInt< Fold<int,int,short> >); // 0 static_assert(TestInt< Fold<int,Fold<int,int>,int> >); // 0 static_assert(!TestInt< Fold<int,Fold<int,short>,int> >); // 0 static_assert(!TestInt< Fold<int,Fold<int,int>,short> >); // 0 Referenced Bugs: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67491 [Bug 67491] [meta-bug] concepts issues