http://gcc.gnu.org/bugzilla/show_bug.cgi?id=57013
Bug #: 57013 Summary: pretty-printing canonical template-parameters is more confusing than helpful Classification: Unclassified Product: gcc Version: unknown Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ AssignedTo: unassig...@gcc.gnu.org ReportedBy: m...@gcc.gnu.org manuel@gcc10:~/test3/198021M/build/gcc$ ~/test3/198021M/build/gcc/cc1plus /home/manuel/test3/src/gcc/testsuite/g++.dg/cpp0x/variadic79.C -std=c++11 /home/manuel/test3/src/gcc/testsuite/g++.dg/cpp0x/variadic79.C:7:57: error: type/value mismatch at argument 1 in template parameter list for ‘template<template<class> class ...<template-parameter-1-1> > struct A’ template<template<typename...> class... B> struct A<B...> {}; // { dg-error "mismatch|'template<class ...> class ... B ...'" } ^ /home/manuel/test3/src/gcc/testsuite/g++.dg/cpp0x/variadic79.C:7:57: error: expected a template of type ‘template<class> class ...<template-parameter-1-1>’, got ‘template<class ...> class ... B ...’ In this case, the canonical names are quite confusing, we'll be better off not printing them at all. Just print ‘template<template<class> class ... > struct A’ and 'template<class> class ...' The second error should be a note and it should point to the declaration of A and the parameter there.