https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87603
Bug ID: 87603 Summary: [C++17] noexcept isn't special cased for constant expressions anymore Product: gcc Version: 8.2.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: miguel.ojeda.sandonis at gmail dot com Target Milestone: --- CWG 1129 (which ended up in C++11) added a special case to noexcept for constant expressions, so that: constexpr void f() {} static_assert(noexcept(f())); CWG 1351 (which ended up in C++14) changed the wording significantly, but the special case remained, in a different form. P0003R5 (which ended up in C++17) changed the wording again, but the special case was removed (by accident), so now: constexpr void f() {} static_assert(!noexcept(f())); According to Richard Smith in LLVM 15481, CWG discussed this but decided to keep the behavior as-is. Currently, clang does the right thing for C++17 (and fails for C++14 and C++11, on purpose). g++, however, implemented the special case for C++11 already, but not the change for C++17. Currently, icc and msvc seem to behave like g++.