1 // CWG 150: Matching of template template-arguments excludes compatible 2 // templates 3 4 // { dg-options -fnew-ttp-matching } 5 6 template<class T, class U = T> class B { /* ... */ }; 7 #if __cpp_variadic_templates 8 template <class ... Types> class C { /* ... */ }; 9 #endif 10 template<template<class> class P, class T> void f(P<T>); 11 main()12int main() 13 { 14 f(B<int>()); 15 f(B<int,float>()); // { dg-error "no match" } 16 #if __cpp_variadic_templates 17 f(C<int>()); 18 #endif 19 } 20