This page is a snapshot from the LWG issues list, see the Library Active Issues List for more information and the meaning of NAD status.

### 3106. `nothrow` should be `inline constexpr` rather that `extern const`

Section: 17.7.2 [new.syn] Status: NAD Submitter: Antony Polukhin Opened: 2018-04-25 Last modified: 2020-09-06

Priority: 2

View all issues with NAD status.

Discussion:

`std::nothrow` in [new.syn] is declared as '`extern const nothrow_t nothrow;`'. Unfortunately this declaration requires linking with Standard Library (which does not work well on GCC with `-nostdlib` flag). Moreover the declaration differs from other Standard Library tags that are '`inline constexpr`'.

[2018-06-18 after reflector discussion]

Priority set to 2

[2018-08-23 Batavia Issues processing]

Status to Tentatively NAD - if we had a status 'Wont Fix' that would be correct.

This is an ABI break for most implementations, and people can define their own variable of type `std::nothrow_t` if they want a constexpr one.

Proposed resolution:

This wording is relative to N4741.

1. Edit 17.7.2 [new.syn] as indicated:

   >     struct nothrow_t { explicit nothrow_t() = default; };
   >     extern constinline constexpr nothrow_t nothrow;