[gdb/build, c++20] Stop using deprecated is_pod
authorTom de Vries <tdevries@suse.de>
Thu, 17 Aug 2023 08:41:34 +0000 (10:41 +0200)
committerTom de Vries <tdevries@suse.de>
Thu, 17 Aug 2023 08:41:34 +0000 (10:41 +0200)
When building gdb with clang 15 and -std=c++20, I run into:
...
gdbsupport/poison.h:52:11: error: 'is_pod<timeval>' is deprecated: use \
  is_standard_layout && is_trivial instead [-Werror,-Wdeprecated-declarations]
            std::is_pod<T>>
                 ^
...

Fix this by following the suggestion.

Likewise in gdb/unittests/ptid-selftests.c.

Tested on x86_64-linux.

gdb/unittests/ptid-selftests.c
gdbsupport/poison.h

index 5af73b0da530ef442a4b36c382de82def94517b6..2713b61974144caccc59dac0beb7dc273340293a 100644 (file)
@@ -29,7 +29,9 @@ namespace ptid {
    This is a requirement for as long as we have ptids embedded in
    structures allocated with malloc. */
 
-static_assert (std::is_pod<ptid_t>::value, "ptid_t is POD");
+static_assert (gdb::And<std::is_standard_layout<ptid_t>,
+                       std::is_trivial<ptid_t>>::value,
+              "ptid_t is POD");
 
 /* We want to avoid implicit conversion from int to ptid_t.  */
 
index 956c3d856d87f362cd1dd3dcb8cebd562beeaada..63fccb30cb950fa8fe9e9e80357057f0b7ebc695 100644 (file)
@@ -49,7 +49,7 @@ be a compile-time error.  */
 template<typename T>
 struct IsMemsettable
   : gdb::Or<std::is_void<T>,
-           std::is_pod<T>>
+           gdb::And<std::is_standard_layout<T>, std::is_trivial<T>>>
 {};
 
 template <typename T,