2 // { dg-do compile { target c++11 } }
4 template<typename ...T>
7 template<typename ...T>
10 using type = type_list<T...>;
13 // The bug disappears if you use make_type_list directly.
14 template<typename ...T>
15 using make_type_list_t = typename make_type_list<T...>::type;
18 struct ContainerEndA {};
20 template<typename ...Ts>
23 using type = make_type_list_t<Ts..., ContainerEndA>;
27 struct ContainerEndB {};
29 template<typename ...Ts>
32 using type = make_type_list_t<Ts..., ContainerEndB>;
35 template<typename T, typename U>
38 static const bool value = false;
44 static const bool value = true;
47 #define SA(X) static_assert((X), #X)
49 SA((is_same<ContainerB<>::type, type_list<ContainerEndB>>::value));
50 SA((!is_same<ContainerA<>::type, type_list<ContainerEndB>>::value));
51 SA((!is_same<ContainerA<>::type, ContainerB<>::type>::value));