Hello,This aligns __is_bitwise_relocatable with its modern meaning, that is, checking for trivial move construction and destruction.
Thanks, -- Giuseppe D'Angelo
From 0666e993066818ab0940c61d8d9539e883848b29 Mon Sep 17 00:00:00 2001 From: Giuseppe D'Angelo <giuseppe.dang...@kdab.com> Date: Mon, 9 Dec 2024 02:11:19 +0100 Subject: [PATCH 3/6] libstdc++: port bitwise relocatable away from is_trivial MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit In preparation for the deprecation of is_trivial (P3247R2). "bitwise relocation" (or "trivial relocation" à la P1144/P2786) doesn't need the full-fledged notion of triviality, just checking for a trivial move constructor and a trivial destructor is sufficient. libstdc++-v3/ChangeLog: * include/bits/stl_uninitialized.h: Amended the __is_bitwise_relocatable type trait. Signed-off-by: Giuseppe D'Angelo <giuseppe.dang...@kdab.com> --- libstdc++-v3/include/bits/stl_uninitialized.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libstdc++-v3/include/bits/stl_uninitialized.h b/libstdc++-v3/include/bits/stl_uninitialized.h index 2190261134e..916288352d7 100644 --- a/libstdc++-v3/include/bits/stl_uninitialized.h +++ b/libstdc++-v3/include/bits/stl_uninitialized.h @@ -1248,7 +1248,7 @@ _GLIBCXX_BEGIN_NAMESPACE_VERSION // Also known as is_trivially_relocatable. template<typename _Tp, typename = void> struct __is_bitwise_relocatable - : is_trivial<_Tp> { }; + : __and_<is_trivially_move_constructible<_Tp>, is_trivially_destructible<_Tp>> { }; template <typename _InputIterator, typename _ForwardIterator, typename _Allocator> -- 2.34.1
smime.p7s
Description: S/MIME Cryptographic Signature