1 // CWG 150: Matching of template template-arguments excludes compatible
3 // { dg-options -fnew-ttp-matching }
5 template<class T> class A { /* ... */ };
6 template<class T, class U = T> class B { /* ... */ };
7 template<template<class> class P> class X { /* ... */ };
9 X<B> xb; // OK since P0522R0
11 #if __cpp_variadic_templates
12 template <class ... Types> class C { /* ... */ };
13 template<template<class ...> class Q> class Y { /* ... */ };
14 X<C> xc; // OK since P0522R0
20 #if __cpp_template_auto
21 template<auto n> class D { /* ... */ };
22 template<template<int> class R> class Z { /* ... */ };