Можно предположить в неоценимом контексте, что (::new (std::declval< void * >()) T())->~T()
семантически (в смысле noexcept
, но не в смысле типа выражения), эквивалентного простому T()
? Предположим, что ни глобальная, ни классовая область operator new
не перегружены, если они много борются.Размещение нового плюс деструктор и простая инициализация значения noexcept semantic
Часто используемые типы T()
используются внутри оператора noexcept()
, чтобы определить, является ли только отдельный конструктор noexcept
или нет. Конечно, это неправильно.
Во избежание потери общности можно предположить, что T()
здесь либо является вызовом конструктора по умолчанию, либо любого другого конструктора.
. Виноват. Я хочу рассматривать только «бессмысленный» смысл. Пожалуйста, позвольте мне изменить вопрос. – Orient