“placement new”运算符声明如下:
void* operator new (std::size_t size, void* ptr) noexcept;
但是虽然它不涉及任何实际分配,因此消除了错误的分配异常,但指针仍然有可能指向错误的位置,在这种情况下,人们会期望得到范围或上溢/下溢错误,但不会它被声明为noexcept
简单地终止执行的事实吗?
这是否也意味着在 C++11 放置之前 new 将抛出并尝试处理std::unexpected
以防万一std::set_unexpected
而不是直接崩溃?
难道不应该“以防万一”放置新的超载吗?