Viewing file: alias-decl-dr1286a.C (1.27 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
// 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 = V> using B = A<V, W>;
same<X<A>,X<B>> s1;
// not equivalent to A: not all parameters used template<typename V, typename W = V> 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 = V> using E = A<W, V>;
different<X<A>,X<E>> d3;
// NOT equivalent to A: default arguments now considered template<typename V, typename W = int> using F = A<V, W>;
different<X<A>,X<F>> s2;
// equivalent to A and B template<typename V, typename W = V> 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 = V> using H = E<V, W>;
same<X<E>,X<H>> s4;
// not equivalent to A: argument not identifier template<typename V, typename W = V> using I = A<V, typename W::type>;
different<X<A>,X<I>> d4;
|