// CWG 150: Matching of template template-arguments excludes compatible // templates // { dg-options -fnew-ttp-matching } template class A { /* ... */ }; template class B { /* ... */ }; template class P> class X { /* ... */ }; X xa; // OK X xb; // OK since P0522R0 #if __cpp_variadic_templates template class C { /* ... */ }; template class Q> class Y { /* ... */ }; X xc; // OK since P0522R0 Y ya; // OK Y yb; // OK Y yc; // OK #endif #if __cpp_template_auto template class D { /* ... */ }; template class R> class Z { /* ... */ }; Z zd; // OK #endif