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

            Bug ID: 104326
           Summary: Deduction failure for parameter pack in template
                    template non-type parameter
           Product: gcc
           Version: 11.2.1
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: colavitam at gmail dot com
  Target Milestone: ---

Consider the following code:

```
template <typename... Args>
struct tuple {};

template <typename>
struct Test;

template <
    typename... Types,
    template <Types> typename... Outer,
    Types... Inner
>
struct Test<tuple<Outer<Inner>...>> {};

template <long T> struct O1 {};
template <long T> struct O2 {};
template <unsigned T> struct O3 {};

Test<tuple<O1<1>, O2<2>>> test1;
Test<tuple<O1<1>, O2<2>, O3<3>>> test2;
```

This code is rejected by gcc and accepted by clang.

gcc accepts the definition of test1 but rejects test2. It appears as though
Types is not being correctly expanded with the template template parameter.

Reply via email to