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

            Bug ID: 90099
           Summary: [P0732] Partial specialization of a class template
                    with variadic parameter pack fails after adding
                    non-type template parameter
           Product: gcc
           Version: 9.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: mateusz.pusz at gmail dot com
  Target Milestone: ---

Hi,

Compiling the code provided below with the following options produces an error:
"-std=c++2a -Wall -Wextra"

```
struct Unit {
  int value;
  // auto operator<=>(const Unit&) = default;
};

template<Unit U, typename... Ts>
struct X {};

template<Unit U, typename T, typename... Rest>
struct X<U, T, Rest...> {};
```

Error:
<source>:10:8: error: template argument '((Unit*)(void)0)->Unit::__ct_comp
(((const Unit)U))' involves template parameter(s)
   10 | struct X<U, T, Rest...> {};
      |        ^~~~~~~~~~~~~~~~

See also here:
https://godbolt.org/z/OdmHCf

Best

Mat

Reply via email to