PR c++/85765 - SFINAE and non-type default template arg.
[official-gcc.git] / gcc / testsuite / g++.dg / cpp0x / variadic-ex14a.C
blob8887033e722824ab6a192505462e18f4c00e1976
1 // CWG 150: Matching of template template-arguments excludes compatible
2 // templates
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 { /* ... */ };
8 X<A> xa; // OK
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
15 Y<A> ya; // OK
16 Y<B> yb; // OK
17 Y<C> yc; // OK
18 #endif
20 #if __cpp_template_auto
21 template<auto n> class D { /* ... */ };
22 template<template<int> class R> class Z { /* ... */ };
23 Z<D> zd; // OK
24 #endif