Viewing file: alias-decl-57.C (978 B) -rw-r--r-- Select action/file-type: (+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
// PR c++/79960 // { dg-do compile { target c++11 } }
using size_t = decltype(sizeof(0));
template<typename T> struct tuple_size;
template<typename T, size_t U = tuple_size<T>::value> using __has_tuple_size = T;
template<typename T> struct tuple_size<const __has_tuple_size<T>> { static constexpr size_t value = tuple_size<T>::value; };
template<typename T> struct tuple_size<volatile __has_tuple_size<T>> { static constexpr size_t value = tuple_size<T>::value; };
template<typename T> struct tuple_size<const __has_tuple_size<volatile T>> { static constexpr size_t value = tuple_size<T>::value; };
template<typename... T> struct tuple { }; template<typename... T> struct tuple_size<tuple<T...>> { static constexpr size_t value = sizeof...(T); };
static_assert( tuple_size<const tuple<>>::value == 0, "" ); // OK static_assert( tuple_size<volatile tuple<>>::value == 0, "" ); // OK static_assert( tuple_size<const volatile tuple<>>::value == 0, "" ); // FAIL
|