cpp-ru / ideas

Идеи по улучшению языка C++ для обсуждения
https://cpp-ru.github.io/proposals
Creative Commons Zero v1.0 Universal
89 stars 0 forks source link

Добавить inline constexpr для std::nothrow внутри <new> #299

Open apolukhin opened 3 years ago

apolukhin commented 3 years ago

Текущая декларация имеет следующий вид:

struct nothrow_t
{
#if __cplusplus >= 201103L
  explicit nothrow_t() = default;
#endif
};

extern const nothrow_t nothrow;

При компиляции с -nostdlib выдает ошибку линковки (не находит константу std::nothrow)

Текущий workaround:

auto p1 = new (std::nothrow_t{}) foo;

или

auto mynothowconst = std::nothrow_t{};

auto p2 = new (mynothowconst) foo;
apolukhin commented 3 years ago

yndx-antoshkka, 7 мая 2018, 11:05 Завели issue на стандартную библиотеку: https://cplusplus.github.io/LWG/issue3106

Постараемся на ближайшем заседании форсировать исправление.

yndx-antoshkka, 13 июня 2018, 12:16 Разработчики стандартных библиотек перепроверят, что данная правка не ломает ABI, и скорее всего примут изменение на одном из ближайших заседаний.

apolukhin commented 3 years ago

В https://cplusplus.github.io/LWG/issue3106 говорят, что это может сломать бинарную совместимость ABI. Надо либо придумать, как это сделать без слома, либо распрощаться с идеей :(