https://gcc.gnu.org/bugzilla/show_bug.cgi?id=86355
Richard Biener <rguenth at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Resolution|--- |FIXED Target Milestone|10.5 |10.4 Known to fail| |10.3.0 Known to work| |10.4.0 Status|ASSIGNED |RESOLVED --- Comment #13 from Richard Biener <rguenth at gcc dot gnu.org> --- The comment#5 testcase was fixed in GCC 10.4 but the original testcase is still rejected everywhere: t.C: In substitution of 'template<class V, class ... T> using check2 = mp_all<std::is_same<V, void>, std::integral_constant<bool, (static_cast<bool>(std::is_copy_constructible<T>::value) ... && static_cast<bool>(std::integral_constant<bool, (static_cast<bool>(std::is_copy_assignable<T>::value) && ...)>::value))> > [with V = void; T = {int, float}]': t.C:10:52: required from here t.C:6:77: error: invalid use of pack expansion expression 6 | ass... T> using mp_all = mp_bool<(static_cast<bool>(T::value) && ...)>; | ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~ t.C:10:62: error: template argument 1 is invalid 10 | tatic_assert( std::is_same<check2<void, int, float>, mp_true>::value ); | ^ we seem to track the ICE here, so fixed.