https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91798
Andrew Pinski <pinskia at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |SUSPENDED --- Comment #5 from Andrew Pinski <pinskia at gcc dot gnu.org> --- https://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#1647 And maybe others. Note my other testcase was a full specialization rather than a partial. Here is one with a partial which removes the variadic : ``` //Get type parameter at given index. template<auto i, class T> struct param { static_assert(i > 0, "Index into parameter pack cannot be negative!"); using type = typename param<i - 1, T>::type; }; template<class T> struct param<0, T> { using type = T; }; int main() { typename param<0u, int>::type x = 'a'; static_cast<void>(x); } ``` Both GCC and EDG agree on this while clang and MSVC disagree. This is definitely DR 1647 then. So suspended as the defect report is still active.