[PATCH] libstdc++: fix inplace_vector deprecation warning
Avi Kivity
avi@lists.scylladb.com
Thu Sep 10 20:56:33 GMT 2026
From: Avi Kivity <avi@scylladb.com>
Practically anything that touches std::inplace_vector causes
this warning to be generated:
/usr/lib/gcc/x86_64-redhat-linux/16/../../../../include/c++/16/inplace_vector:853:20: warning: 'is_trivial_v<unsigned int>' is deprecated: use 'is_trivially_default_constructible_v && is_trivially_copyable_v' instead [-Wdeprecated-declarations]
853 | if constexpr (is_trivial_v<_Tp>)
| ^
/usr/lib/gcc/x86_64-redhat-linux/16/../../../../include/c++/16/inplace_vector:128:2: note: in instantiation of member function 'std::inplace_vector<unsigned int, 2>::_M_init' requested here
128 | _M_init();
| ^
Fix it by following the warning's recommendation.
PR libstdc++/127325
libstdc++-v3/ChangeLog:
* include/std/inplace_vector: replace is_trivial_v with
is_trivially_default_constructible_v and is_trivially_copyable_v.
Signed-off-by: Avi Kivity <avi@scylladb.com>
---
DisclAImer: I bravely typed this in on my own.
libstdc++-v3/include/std/inplace_vector | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/libstdc++-v3/include/std/inplace_vector b/libstdc++-v3/include/std/inplace_vector
index 6d67a740f21..a2b5f31be92 100644
--- a/libstdc++-v3/include/std/inplace_vector
+++ b/libstdc++-v3/include/std/inplace_vector
@@ -860,11 +860,12 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
#endif
}
else
{
// TODO: use new(_M_elems) _Tp[_Nm]() once PR121068 is fixed
- if constexpr (is_trivial_v<_Tp>)
+ if constexpr (is_trivially_default_constructible_v<_Tp>
+ && is_trivially_copyable_v<_Tp>)
for (size_t __i = 0; __i < _Nm; ++__i)
_M_elems[__i] = _Tp();
else
__builtin_unreachable(); // only trivial types are supported at compile time
}
--
2.55.0
More information about the Libstdc++
mailing list