Viewing file: variadic92.C (1.33 KB) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
// Various tests for variadic templates and partial specialization. // { dg-do compile { target c++11 } }
// PR c++/36846 template<typename A, typename B> struct pair;
template<typename... T> struct pairs;
template<typename... AS, typename... BS> struct pairs<pair<AS, BS>...> { struct mismatched_packs {}; };
template class pairs< pair<int, int>, pair<int, int> >;
template<int A, int B> struct point;
template<typename... T> struct points;
template<int... AS, int... BS> struct points<point<AS, BS>...> { struct mismatched_packs {}; };
template class points< point<0, 1>, point<0, 1> >;
// PR c++/35477 template <class...ARGS> struct tuple {}; template <class A, class B> struct test {}; template <class... ARGS, class B> struct test<B, tuple<ARGS...>> { template <class T> struct inside {}; };
// PR c++/38276 template<typename...> struct A;
template<typename, typename> struct B;
template<typename... T, typename... U> struct B<A<T...>, A<U...> > { static int i; };
B<A<>, A<int> > b1;
B<A<int>, A<> > b2;
// PR c++/35784 template <typename...> struct p;
template <typename, typename> struct d;
template <typename... A, typename... B> struct d<p<A...>, p<B...> > { typedef int t; };
typedef d<p<>, p<int, float> >::t q; typedef d<q, d<p<int>, p<float> >::t> r; // *
typedef d<d<p<>, p<int, float> >::t, d<p<>, p<> >::t> s;
|