[libcxx-commits] [libcxx] 89a2137 - [libc++] Remove _IsThisTuple (#213909)

via libcxx-commits libcxx-commits at lists.llvm.org
Mon Aug 10 03:04:50 PDT 2026


Author: Nikolas Klauser
Date: 2026-08-10T12:04:46+02:00
New Revision: 89a2137aa09ec1bb4832628e0fa54adb5831fb0b

URL: https://github.com/llvm/llvm-project/commit/89a2137aa09ec1bb4832628e0fa54adb5831fb0b
DIFF: https://github.com/llvm/llvm-project/commit/89a2137aa09ec1bb4832628e0fa54adb5831fb0b.diff

LOG: [libc++] Remove _IsThisTuple (#213909)

We can inline it into `_EnableUTypesCtor` instead.

Added: 
    

Modified: 
    libcxx/include/__configuration/namespace.h
    libcxx/include/tuple

Removed: 
    


################################################################################
diff  --git a/libcxx/include/__configuration/namespace.h b/libcxx/include/__configuration/namespace.h
index 1f4b8ce247b13..3142c4132189d 100644
--- a/libcxx/include/__configuration/namespace.h
+++ b/libcxx/include/__configuration/namespace.h
@@ -30,10 +30,12 @@
     _LIBCPP_CLANG_DIAGNOSTIC_IGNORED("-Wc++17-extensions")                                                             \
     _LIBCPP_CLANG_DIAGNOSTIC_IGNORED("-Wc++20-extensions")                                                             \
     _LIBCPP_CLANG_DIAGNOSTIC_IGNORED("-Wc++23-extensions")                                                             \
+    _LIBCPP_CLANG_DIAGNOSTIC_IGNORED("-Wc++26-extensions")                                                             \
     _LIBCPP_GCC_DIAGNOSTIC_IGNORED("-Wc++14-extensions")                                                               \
     _LIBCPP_GCC_DIAGNOSTIC_IGNORED("-Wc++17-extensions")                                                               \
     _LIBCPP_GCC_DIAGNOSTIC_IGNORED("-Wc++20-extensions")                                                               \
-    _LIBCPP_GCC_DIAGNOSTIC_IGNORED("-Wc++23-extensions")
+    _LIBCPP_GCC_DIAGNOSTIC_IGNORED("-Wc++23-extensions")                                                               \
+    _LIBCPP_GCC_DIAGNOSTIC_IGNORED("-Wc++26-extensions")
 #  define _LIBCPP_POP_EXTENSION_DIAGNOSTICS _LIBCPP_DIAGNOSTIC_POP
 #  define _LIBCPP_PUSH_ABI_PRAGMA_DIAGNOSTICS                                                                          \
     _LIBCPP_DIAGNOSTIC_PUSH _LIBCPP_CLANG_DIAGNOSTIC_IGNORED("-Wpragma-clang-attribute")                               \

diff  --git a/libcxx/include/tuple b/libcxx/include/tuple
index 2f0127bc7388d..b3f4ac92ccd4a 100644
--- a/libcxx/include/tuple
+++ b/libcxx/include/tuple
@@ -604,14 +604,10 @@ public:
       : __base_(allocator_arg_t(), __a, __forward_args{}, __t...) {}
 
   // tuple(U&& ...) constructors (including allocator_arg_t variants)
-  template <class... _Up>
-  struct _IsThisTuple : false_type {};
-  template <class _Up>
-  struct _IsThisTuple<_Up> : is_same<__remove_cvref_t<_Up>, tuple> {};
-
   template <class... _Up>
   struct _EnableUTypesCtor
-      : _And<_Not<_IsThisTuple<_Up...> >, // extension to allow mis-behaved user constructors
+      : _And<_Or<integral_constant<bool, sizeof...(_Up) != 1>,
+                 _IsNotSame<__remove_cvref_t<_Up...[0]>, tuple>>, // extension to allow mis-behaved user constructors
              is_constructible<_Tp, _Up>... > {};
 
   template <class... _Up,


        


More information about the libcxx-commits mailing list