https://gcc.gnu.org/bugzilla/show_bug.cgi?id=96090
Bug ID: 96090 Summary: Inconsistent querying of differring exception specifications of explicitly defaulted functions Product: gcc Version: 10.1.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: johelegp at gmail dot com Target Milestone: --- See https://godbolt.org/z/SiGMyX. ```C++ #include <type_traits> using namespace std; struct yesthrow_t { yesthrow_t() noexcept(false) = default; yesthrow_t(const yesthrow_t&) noexcept(false) = default; yesthrow_t( yesthrow_t&&) noexcept(false) = default; yesthrow_t& operator=(const yesthrow_t&) noexcept(false) = default; yesthrow_t& operator=( yesthrow_t&&) noexcept(false) = default; }; static_assert(!is_nothrow_default_constructible_v<yesthrow_t>); static_assert(!is_nothrow_copy_constructible_v< yesthrow_t>); static_assert(!is_nothrow_copy_assignable_v< yesthrow_t>); static_assert(!is_nothrow_move_constructible_v< yesthrow_t>); static_assert(!is_nothrow_move_assignable_v< yesthrow_t>); ``` https://gcc.gnu.org/ml/gcc-patches/2019-09/msg00311.html calls out a single case, but not this inconsistency.