diff options
Diffstat (limited to 'gcc-4.9/gcc/testsuite/g++.dg/cpp0x/alias-decl-dr1286a.C')
-rw-r--r-- | gcc-4.9/gcc/testsuite/g++.dg/cpp0x/alias-decl-dr1286a.C | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/alias-decl-dr1286a.C b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/alias-decl-dr1286a.C new file mode 100644 index 0000000..1780c9a --- /dev/null +++ b/gcc-4.9/gcc/testsuite/g++.dg/cpp0x/alias-decl-dr1286a.C @@ -0,0 +1,60 @@ +// DR 1286 +// { dg-do compile { target c++11 } } + +template <class,class> struct same; +template <class T> struct same<T,T> {}; + +template <class,class> struct different {}; +template <class T> struct different<T,T>; + +template<typename T, typename U = T> struct A; +template<template <class...> class> struct X; + +// equivalent to A +template<typename V, typename W> +using B = A<V, W>; + +same<X<A>,X<B>> s1; + +// not equivalent to A: not all parameters used +template<typename V, typename W> +using C = A<V>; + +different<X<A>,X<C>> d1; + +// not equivalent to A: different number of parameters +template<typename V> +using D = A<V>; + +different<X<A>,X<D>> d2; + +// not equivalent to A: template-arguments in wrong order +template<typename V, typename W> +using E = A<W, V>; + +different<X<A>,X<E>> d3; + +// equivalent to A: default arguments not considered +template<typename V, typename W = int> +using F = A<V, W>; + +same<X<A>,X<F>> s2; + +// equivalent to A and B +template<typename V, typename W> +using G = A<V, W>; + +same<X<A>,X<G>> s3; +same<X<B>,X<G>> s3b; + +// equivalent to E +template<typename V, typename W> +using H = E<V, W>; + +same<X<E>,X<H>> s4; + +// not equivalent to A: argument not identifier +template<typename V, typename W> +using I = A<V, typename W::type>; + +different<X<A>,X<I>> d4; |