On 09/12/24 13:22 +0100, Giuseppe D'Angelo wrote:
Hello,

This aligns __is_bitwise_relocatable with its modern meaning, that is, checking for trivial move construction and destruction.

Looks good, thanks.

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




Reply via email to