https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91133

            Bug ID: 91133
           Summary: Wrong "partial specialization is not more specialized
                    than" error
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: WisdomOfDarkness at gmail dot com
  Target Milestone: ---

The code under fails to compile with GCC 7, 8 and 9, and produces the following
error:
partial specialization 'struct A<T, int, X>' is not more specialized than
[-fpermissive] ...

template<typename T> struct Id
{
    using type = T;
};

template<typename T, typename U, U X>
struct A
{
};

//template<int X>
template<typename T, typename Id<T>::type X>
struct A<T, int, X>
{
};

This is clearly wrong because the specialization is clearly specialized in its
second parameter.

godbolt: https://godbolt.org/z/wDp3B7
Works in GCC 6 and under. Also works in clang and MSVC.

Reply via email to