https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63362
--- Comment #18 from Ville Voutilainen <ville.voutilainen at gmail dot com> --- (In reply to Jason Merrill from comment #17) > (In reply to Ville Voutilainen from comment #16) > > > This one: > > > > > > #include <type_traits> > > > > > > template <typename T, class... Args> > > > struct mytrait : public std::__and_<std::is_constructible<T, Args...>, > > > std::integral_constant<bool, > > > __is_trivially_constructible(T, Args...)>>::type > > > { > > > } > > Yeah, that works fine for me. Perhaps the ICE is related to changes you've > made to type_traits? Fishy. Taking integral_constant and __and_ (and conditional) from type_traits and faking is_constructible works fine. My modifications to type_traits work fine when used in a test program, so compiling the actual trait itself seems to work just fine. Yet this particular test will not work with my modifications, but works without them (I just tested that). Well, this test is an ill-formed program, it's using names reserved to the implementation. :)