PR c++/85765 - SFINAE and non-type default template arg.
[official-gcc.git] / gcc / testsuite / g++.dg / cpp0x / variadic-sizeof4a.C
blob0e8096de2fcb020c8586f0d5b22a56765a5d7b74
1 // PR c++/69958
2 // { dg-do compile { target c++11 } }
4 typedef decltype(sizeof(int)) size_t;
6 template <typename...Ts>
7 struct list { };
9 template <size_t N>
10 struct size {  };
12 template <unsigned...Ts>
13 using size_for = size<sizeof...(Ts)>;
15 template<class T, class U> struct assert_same;
16 template<class T> struct assert_same<T,T> {};
18 template <typename T, unsigned...Ts>
19 using wrapped = list<T, size_for<0, Ts...>>;
21 // This assertion fails (produces size<4>)
22 assert_same<
23     list<float, size<5>>,
24   wrapped<float,2,3,4,5>> a3;
27 template <typename T, unsigned...Ts>
28 using wrapped2 = list<T, size_for<Ts..., 0>>;
30 // This assertion fails (produces size<2>)
31 assert_same<
32     list<float, size<5>>,
33   wrapped2<float,2,3,4,5>> a4;