[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