OSDN Git Service

PR c++/36628
[pf3gnuchains/gcc-fork.git] / gcc / testsuite / g++.dg / cpp0x / variadic75.C
1 // { dg-options "-std=gnu++0x" }
2
3 template<typename...> struct tuple { };
4
5 template<template<typename T> class Meta, typename... Values>
6 struct apply_all
7 {
8   typedef tuple<typename Meta<Values>::type...> type;
9 };
10
11 template<typename T, typename U>
12 struct is_same {
13   static const bool value = false;
14 };
15
16 template<typename T>
17 struct is_same<T, T> {
18   static const bool value = true;
19 };
20
21 template<typename T>
22 struct add_reference {
23   typedef T& type;
24 };
25
26 template<typename T>
27 struct add_reference<T&> {
28   typedef T& type;
29 };
30
31 static_assert(is_same<apply_all<add_reference, int, int&, float>::type,
32                                 tuple<int&, int&, float&> >::value, 
33               "check apply");