[libcxx-commits] [libcxx] [libc++] Remove _IsThisTuple (PR #213909)
via libcxx-commits
libcxx-commits at lists.llvm.org
Mon Aug 10 03:05:20 PDT 2026
llvmorg-github-actions[bot] wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-libcxx
Author: Nikolas Klauser (philnik777)
<details>
<summary>Changes</summary>
We can inline it into `_EnableUTypesCtor` instead.
---
Full diff: https://github.com/llvm/llvm-project/pull/213909.diff
2 Files Affected:
- (modified) libcxx/include/__configuration/namespace.h (+3-1)
- (modified) libcxx/include/tuple (+2-6)
``````````diff
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,
``````````
</details>
https://github.com/llvm/llvm-project/pull/213909
More information about the libcxx-commits
mailing list