Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 4 additions & 12 deletions libcxx/include/__tuple/tuple_size.h
Original file line number Diff line number Diff line change
Expand Up @@ -12,11 +12,7 @@
#include <__config>
#include <__cstddef/size_t.h>
#include <__fwd/tuple.h>
#include <__tuple/tuple_types.h>
#include <__type_traits/enable_if.h>
#include <__type_traits/integral_constant.h>
#include <__type_traits/is_const.h>
#include <__type_traits/is_volatile.h>

#if !defined(_LIBCPP_HAS_NO_PRAGMA_SYSTEM_HEADER)
# pragma GCC system_header
Expand All @@ -32,18 +28,14 @@ template <class _Tp, class...>
using __enable_if_tuple_size_imp _LIBCPP_NODEBUG = _Tp;

template <class _Tp>
struct tuple_size<
__enable_if_tuple_size_imp<const _Tp, __enable_if_t<!is_volatile<_Tp>::value>, decltype(tuple_size<_Tp>::value)>>
: public integral_constant<size_t, tuple_size<_Tp>::value> {};
struct tuple_size<__enable_if_tuple_size_imp<const _Tp, decltype(tuple_size<_Tp>::value)>> : tuple_size<_Tp> {};

template <class _Tp>
struct tuple_size<
__enable_if_tuple_size_imp<volatile _Tp, __enable_if_t<!is_const<_Tp>::value>, decltype(tuple_size<_Tp>::value)>>
: public integral_constant<size_t, tuple_size<_Tp>::value> {};
struct tuple_size<__enable_if_tuple_size_imp<volatile _Tp, decltype(tuple_size<_Tp>::value)>> : tuple_size<_Tp> {};

template <class _Tp>
struct tuple_size<__enable_if_tuple_size_imp<const volatile _Tp, decltype(tuple_size<_Tp>::value)>>
: public integral_constant<size_t, tuple_size<_Tp>::value> {};
struct tuple_size<__enable_if_tuple_size_imp<const volatile _Tp, decltype(tuple_size<_Tp>::value)>> : tuple_size<_Tp> {
};

#else
template <class _Tp>
Expand Down
Loading