Index: include/__tuple =================================================================== --- include/__tuple +++ include/__tuple @@ -22,7 +22,7 @@ _LIBCPP_BEGIN_NAMESPACE_STD -template class _LIBCPP_TEMPLATE_VIS tuple_size; +template struct _LIBCPP_TEMPLATE_VIS tuple_size; #if !defined(_LIBCPP_CXX03_LANG) template @@ -29,7 +29,7 @@ using __enable_if_tuple_size_imp = _Tp; template -class _LIBCPP_TEMPLATE_VIS tuple_size<__enable_if_tuple_size_imp< +struct _LIBCPP_TEMPLATE_VIS tuple_size<__enable_if_tuple_size_imp< const _Tp, typename enable_if::value>::type, integral_constant)>>> @@ -36,7 +36,7 @@ : public integral_constant::value> {}; template -class _LIBCPP_TEMPLATE_VIS tuple_size<__enable_if_tuple_size_imp< +struct _LIBCPP_TEMPLATE_VIS tuple_size<__enable_if_tuple_size_imp< volatile _Tp, typename enable_if::value>::type, integral_constant)>>> @@ -43,15 +43,15 @@ : public integral_constant::value> {}; template -class _LIBCPP_TEMPLATE_VIS tuple_size<__enable_if_tuple_size_imp< +struct _LIBCPP_TEMPLATE_VIS tuple_size<__enable_if_tuple_size_imp< const volatile _Tp, integral_constant)>>> : public integral_constant::value> {}; #else -template class _LIBCPP_TEMPLATE_VIS tuple_size : public tuple_size<_Tp> {}; -template class _LIBCPP_TEMPLATE_VIS tuple_size : public tuple_size<_Tp> {}; -template class _LIBCPP_TEMPLATE_VIS tuple_size : public tuple_size<_Tp> {}; +template struct _LIBCPP_TEMPLATE_VIS tuple_size : public tuple_size<_Tp> {}; +template struct _LIBCPP_TEMPLATE_VIS tuple_size : public tuple_size<_Tp> {}; +template struct _LIBCPP_TEMPLATE_VIS tuple_size : public tuple_size<_Tp> {}; #endif template class _LIBCPP_TEMPLATE_VIS tuple_element; @@ -165,7 +165,7 @@ template struct __tuple_like > : true_type {}; template -class _LIBCPP_TEMPLATE_VIS tuple_size > +struct _LIBCPP_TEMPLATE_VIS tuple_size > : public integral_constant { }; @@ -291,7 +291,7 @@ template -class _LIBCPP_TEMPLATE_VIS tuple_size<__tuple_types<_Tp...> > +struct _LIBCPP_TEMPLATE_VIS tuple_size<__tuple_types<_Tp...> > : public integral_constant { }; Index: include/array =================================================================== --- include/array +++ include/array @@ -91,7 +91,7 @@ template void swap(array& x, array& y) noexcept(noexcept(x.swap(y))); // C++17 -template class tuple_size; +template struct tuple_size; template class tuple_element; template struct tuple_size>; template struct tuple_element>; @@ -430,7 +430,7 @@ } template -class _LIBCPP_TEMPLATE_VIS tuple_size > +struct _LIBCPP_TEMPLATE_VIS tuple_size > : public integral_constant {}; template Index: include/tuple =================================================================== --- include/tuple +++ include/tuple @@ -84,8 +84,8 @@ constexpr T make_from_tuple(Tuple&& t); // C++17 // 20.4.1.4, tuple helper classes: -template class tuple_size; // undefined -template class tuple_size>; +template struct tuple_size; // undefined +template struct tuple_size>; template inline constexpr size_t tuple_size_v = tuple_size::value; // C++17 template class tuple_element; // undefined Index: include/utility =================================================================== --- include/utility +++ include/utility @@ -103,7 +103,7 @@ struct piecewise_construct_t { }; inline constexpr piecewise_construct_t piecewise_construct = piecewise_construct_t(); -template class tuple_size; +template struct tuple_size; template class tuple_element; template struct tuple_size >; @@ -663,7 +663,7 @@ #endif // _LIBCPP_CXX03_LANG template - class _LIBCPP_TEMPLATE_VIS tuple_size > + struct _LIBCPP_TEMPLATE_VIS tuple_size > : public integral_constant {}; template Index: test/std/utilities/tuple/tuple.tuple/tuple.helper/tuple_size_incomplete.fail.cpp =================================================================== --- test/std/utilities/tuple/tuple.tuple/tuple.helper/tuple_size_incomplete.fail.cpp +++ test/std/utilities/tuple/tuple.tuple/tuple.helper/tuple_size_incomplete.fail.cpp @@ -12,7 +12,7 @@ // template class tuple; // template -// class tuple_size> +// struct tuple_size> // : public integral_constant { }; // UNSUPPORTED: c++98, c++03 @@ -26,19 +26,19 @@ struct Dummy3 {}; template <> -class std::tuple_size { +struct std::tuple_size { public: static size_t value; }; template <> -class std::tuple_size { +struct std::tuple_size { public: static void value() {} }; template <> -class std::tuple_size {}; +struct std::tuple_size {}; int main() { Index: test/std/utilities/tuple/tuple.tuple/tuple.helper/tuple_size_incomplete.pass.cpp =================================================================== --- test/std/utilities/tuple/tuple.tuple/tuple.helper/tuple_size_incomplete.pass.cpp +++ test/std/utilities/tuple/tuple.tuple/tuple.helper/tuple_size_incomplete.pass.cpp @@ -12,7 +12,7 @@ // template class tuple; // template -// class tuple_size> +// struct tuple_size> // : public integral_constant { }; // XFAIL: gcc-4.9 @@ -31,7 +31,7 @@ struct Dummy2 {}; namespace std { -template <> class tuple_size : public integral_constant {}; +template <> struct tuple_size : public integral_constant {}; } template Index: test/std/utilities/tuple/tuple.tuple/tuple.helper/tuple_size_structured_bindings.pass.cpp =================================================================== --- test/std/utilities/tuple/tuple.tuple/tuple.helper/tuple_size_structured_bindings.pass.cpp +++ test/std/utilities/tuple/tuple.tuple/tuple.helper/tuple_size_structured_bindings.pass.cpp @@ -12,7 +12,7 @@ // template class tuple; // template -// class tuple_size> +// struct tuple_size> // : public integral_constant { }; // UNSUPPORTED: c++98, c++03, c++11, c++14 @@ -129,7 +129,7 @@ } template <> -class std::tuple_size { +struct std::tuple_size { public: static const size_t value = 1; };