[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