[libcxx-commits] [libcxx] [libc++] Simplify the implementation of tuple_size (PR #162260)
Nikolas Klauser via libcxx-commits
libcxx-commits at lists.llvm.org
Tue Oct 7 03:41:35 PDT 2025
https://github.com/philnik777 created https://github.com/llvm/llvm-project/pull/162260
None
>From e34db08a5c8a0b46f99031e87e6c2be80a8e27b3 Mon Sep 17 00:00:00 2001
From: Nikolas Klauser <nikolasklauser at berlin.de>
Date: Tue, 7 Oct 2025 12:41:15 +0200
Subject: [PATCH] [libc++] Simplify the implementation of tuple_size
---
libcxx/include/__tuple/tuple_size.h | 16 ++++------------
1 file changed, 4 insertions(+), 12 deletions(-)
diff --git a/libcxx/include/__tuple/tuple_size.h b/libcxx/include/__tuple/tuple_size.h
index 60f2a667a1ba3..fbb3c224e3c27 100644
--- a/libcxx/include/__tuple/tuple_size.h
+++ b/libcxx/include/__tuple/tuple_size.h
@@ -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
@@ -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>
More information about the libcxx-commits
mailing list