Mercurial > hg > CbC > CbC_gcc
view gcc/testsuite/g++.dg/cpp0x/variadic161.C @ 131:84e7813d76e9
gcc-8.2
author | mir3636 |
---|---|
date | Thu, 25 Oct 2018 07:37:49 +0900 |
parents | 04ced10e8804 |
children |
line wrap: on
line source
// PR c++/63139 // { dg-do compile { target c++11 } } template<typename ...T> struct type_list {}; template<typename ...T> struct make_type_list { using type = type_list<T...>; }; // The bug disappears if you use make_type_list directly. template<typename ...T> using make_type_list_t = typename make_type_list<T...>::type; struct ContainerEndA {}; template<typename ...Ts> struct ContainerA { using type = make_type_list_t<Ts..., ContainerEndA>; }; struct ContainerEndB {}; template<typename ...Ts> struct ContainerB { using type = make_type_list_t<Ts..., ContainerEndB>; }; template<typename T, typename U> struct is_same { static const bool value = false; }; template<typename T> struct is_same<T, T> { static const bool value = true; }; #define SA(X) static_assert((X), #X) SA((is_same<ContainerB<>::type, type_list<ContainerEndB>>::value)); SA((!is_same<ContainerA<>::type, type_list<ContainerEndB>>::value)); SA((!is_same<ContainerA<>::type, ContainerB<>::type>::value));