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

            Bug ID: 83614
           Summary: deduction failure for template-template argument with
                    trailing template parameter pack
           Product: gcc
           Version: 7.2.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: barry.revzin at gmail dot com
  Target Milestone: ---

Here's a short example:

template <typename >
struct X
{ };

template <template <class> class A, typename T>
struct Y
{ };

template <template <class> class A, typename... Ts> 
void foo(Y<A, Ts...> ) { } 

template <template <class> class A, typename T>
void bar(Y<A, T> ) { } 

int main() {
    Y<X, int> y;

    foo(y); // error: X does not match A
    bar(y); // ok
}


The call to 'foo' should be able to deduce Ts... as {int}, but instead
deduction fails and the error message complains about X not matching A (which
it does). The call to 'bar' succeeds.

clang compiles this.

Reply via email to