https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88453

            Bug ID: 88453
           Summary: GCC pretends that constexpr default-constructible type
                    is nothrow constructible
           Product: gcc
           Version: unknown
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: ldionne.2 at gmail dot com
  Target Milestone: ---

The following code does not compile with GCC trunk:

------------------------------------------------------------
#include <type_traits>

struct Throwing {
  constexpr Throwing() {}
};

static_assert(!std::is_nothrow_default_constructible<Throwing>::value, "");
------------------------------------------------------------

It seems like GCC assumes that the default constructor is noexcept since it is
constexpr. Clang does not have this behaviour, and I believe Clang to be
correct in this case.

Live example: https://wandbox.org/permlink/1z1qYQSUDWsYJda1

Reply via email to