https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106611
Bug ID: 106611
Summary: std::is_nothrow_copy_constructible returns wrong
result
Product: gcc
Version: 12.1.0
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: libstdc++
Assignee: unassigned at gcc dot gnu.org
Reporter: nikolasklauser at berlin dot de
Target Milestone: ---
'std::nothrow_copy_constructible' returns the wrong result with a defaulted
copy constructor makred `noexcept(false)`.
Reproducer: (Godbolt: https://godbolt.org/z/3qdf87vd3)
#include <type_traits>
struct CopyConstructible {
constexpr CopyConstructible() = default;
constexpr explicit CopyConstructible(int x) : value(x) {}
CopyConstructible(CopyConstructible const&) noexcept(false) = default;
CopyConstructible& operator=(CopyConstructible const&) = delete;
int value = -1;
};
static_assert(!std::is_nothrow_copy_constructible_v<CopyConstructible>); //
static assert fails