annotate gcc/testsuite/g++.dg/cpp0x/variadic92.C @ 111:04ced10e8804

gcc 7
author kono
date Fri, 27 Oct 2017 22:46:09 +0900
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
111
kono
parents:
diff changeset
1 // Various tests for variadic templates and partial specialization.
kono
parents:
diff changeset
2 // { dg-do compile { target c++11 } }
kono
parents:
diff changeset
3
kono
parents:
diff changeset
4 // PR c++/36846
kono
parents:
diff changeset
5 template<typename A, typename B>
kono
parents:
diff changeset
6 struct pair;
kono
parents:
diff changeset
7
kono
parents:
diff changeset
8 template<typename... T>
kono
parents:
diff changeset
9 struct pairs;
kono
parents:
diff changeset
10
kono
parents:
diff changeset
11 template<typename... AS, typename... BS>
kono
parents:
diff changeset
12 struct pairs<pair<AS, BS>...> {
kono
parents:
diff changeset
13 struct mismatched_packs {};
kono
parents:
diff changeset
14 };
kono
parents:
diff changeset
15
kono
parents:
diff changeset
16 template class pairs<
kono
parents:
diff changeset
17 pair<int, int>,
kono
parents:
diff changeset
18 pair<int, int>
kono
parents:
diff changeset
19 >;
kono
parents:
diff changeset
20
kono
parents:
diff changeset
21 template<int A, int B>
kono
parents:
diff changeset
22 struct point;
kono
parents:
diff changeset
23
kono
parents:
diff changeset
24 template<typename... T>
kono
parents:
diff changeset
25 struct points;
kono
parents:
diff changeset
26
kono
parents:
diff changeset
27 template<int... AS, int... BS>
kono
parents:
diff changeset
28 struct points<point<AS, BS>...> {
kono
parents:
diff changeset
29 struct mismatched_packs {};
kono
parents:
diff changeset
30 };
kono
parents:
diff changeset
31
kono
parents:
diff changeset
32 template class points<
kono
parents:
diff changeset
33 point<0, 1>,
kono
parents:
diff changeset
34 point<0, 1>
kono
parents:
diff changeset
35 >;
kono
parents:
diff changeset
36
kono
parents:
diff changeset
37 // PR c++/35477
kono
parents:
diff changeset
38 template <class...ARGS> struct tuple {};
kono
parents:
diff changeset
39 template <class A, class B> struct test {};
kono
parents:
diff changeset
40 template <class... ARGS, class B> struct test<B, tuple<ARGS...>>
kono
parents:
diff changeset
41 {
kono
parents:
diff changeset
42 template <class T> struct inside {};
kono
parents:
diff changeset
43 };
kono
parents:
diff changeset
44
kono
parents:
diff changeset
45 // PR c++/38276
kono
parents:
diff changeset
46 template<typename...> struct A;
kono
parents:
diff changeset
47
kono
parents:
diff changeset
48 template<typename, typename> struct B;
kono
parents:
diff changeset
49
kono
parents:
diff changeset
50 template<typename... T, typename... U> struct B<A<T...>, A<U...> >
kono
parents:
diff changeset
51 {
kono
parents:
diff changeset
52 static int i;
kono
parents:
diff changeset
53 };
kono
parents:
diff changeset
54
kono
parents:
diff changeset
55 B<A<>, A<int> > b1;
kono
parents:
diff changeset
56
kono
parents:
diff changeset
57 B<A<int>, A<> > b2;
kono
parents:
diff changeset
58
kono
parents:
diff changeset
59 // PR c++/35784
kono
parents:
diff changeset
60 template <typename...> struct p;
kono
parents:
diff changeset
61
kono
parents:
diff changeset
62 template <typename, typename> struct d;
kono
parents:
diff changeset
63
kono
parents:
diff changeset
64 template <typename... A, typename... B>
kono
parents:
diff changeset
65 struct d<p<A...>, p<B...> > { typedef int t; };
kono
parents:
diff changeset
66
kono
parents:
diff changeset
67 typedef d<p<>, p<int, float> >::t q;
kono
parents:
diff changeset
68 typedef d<q, d<p<int>, p<float> >::t> r; // *
kono
parents:
diff changeset
69
kono
parents:
diff changeset
70 typedef d<d<p<>, p<int, float> >::t, d<p<>, p<> >::t> s;