https://gcc.gnu.org/bugzilla/show_bug.cgi?id=107600
--- Comment #1 from Jonathan Wakely <redi at gcc dot gnu.org> --- And as with the others, __is_nothrow_destructible, which is what the concepts depend on specifically: /// [concept.destructible], concept destructible template<typename _Tp> concept destructible = is_nothrow_destructible_v<_Tp>; /// [concept.constructible], concept constructible_from template<typename _Tp, typename... _Args> concept constructible_from = destructible<_Tp> && is_constructible_v<_Tp, _Args...>; And so that gets used by every one of std::default_initializable, std::move_constructible, std::copy_constructible, std::movable, std::copyable, std::semiregular etc.