1 // { dg-do compile { target c++11 } } 2 template<typename... Args> 3 struct tuple_base { 4 static const int value = 0; 5 }; 6 7 template<> 8 struct tuple_base<int> { 9 static const int value = 1; 10 }; 11 12 template<> 13 struct tuple_base<int, float> { 14 static const int value = 2; 15 }; 16 17 template<> 18 struct tuple_base<float, int> { 19 static const int value = 3; 20 }; 21 22 template<typename... Args> 23 struct int_tuple : tuple_base<int, Args...> { }; 24 25 template<typename... Args> 26 struct tuple_int : tuple_base<Args..., int> { }; 27 28 int a0a[int_tuple<int>::value == 0? 1 : -1]; 29 int a0b[int_tuple<int>::value == 0? 1 : -1]; 30 int a1a[int_tuple<>::value == 1? 1 : -1]; 31 int a1b[tuple_int<>::value == 1? 1 : -1]; 32 int a2[int_tuple<float>::value == 2? 1 : -1]; 33 int a3[tuple_int<float>::value == 3? 1 : -1]; 34