https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107600
Jonathan Wakely <redi at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Last reconfirmed|2022-11-10 00:00:00 |2025-5-28 --- Comment #3 from Jonathan Wakely <redi at gcc dot gnu.org> --- I was reminded recently that the library currently uses __has_trivial_destructor as part of std::is_trivially_destructible, which is not an exact match for the semantics of the standard trait: #include <type_traits> struct D { ~D() = delete; }; static_assert( __has_trivial_destructor(D) ); static_assert( not std::is_trivially_destructible_v<D> ); Also, Clang has deprecated __has_trivial_destructor in favour of their newer __is_trivially_destructible built-in: dest.cc:7:16: warning: builtin __has_trivial_destructor is deprecated; use __is_trivially_destructible instead [-Wdeprecated-builtins] 7 | static_assert( __has_trivial_destructor(D) ); | ^ 1 warning generated. So it would be nice if we had __is_trivially_destructible too, in addition to __is_destructible and __is_nothrow_destructible.