https://gcc.gnu.org/g:d950dec5180bf11b27858829a658709d134c25ff

commit r16-9641-gd950dec5180bf11b27858829a658709d134c25ff
Author: Avi Kivity <[email protected]>
Date:   Thu Sep 10 23:56:33 2026 +0300

    libstdc++: fix inplace_vector deprecation warning
    
    Practically anything that touches std::inplace_vector causes
    this warning to be generated:
    
    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>)
          |                           ^
    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 <[email protected]>
    (cherry picked from commit 20d1487f74ea914d2b8d7be71886275d59b166fd)

Diff:
---
 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 5ad92332a02c..131bdc4ca47f 100644
--- a/libstdc++-v3/include/std/inplace_vector
+++ b/libstdc++-v3/include/std/inplace_vector
@@ -850,7 +850,8 @@ _GLIBCXX_BEGIN_NAMESPACE_CONTAINER
        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

Reply via email to