为什么std :: allocator :: deallocate不是noexcept?

时间:2018-10-24 22:06:08

标签: c++ c++11 c++14 c++17

C ++规范(ISO / IEC 14882:2011 + ISO / IEC 14882:2014)在Table 28中定义-分配器的分配要求:

  

由p指向的区域中的所有n个T对象应事先销毁   这个电话。 n应匹配传递给分配以获得的值   这个记忆。不抛出异常。

但是为什么取消分配仍然除外?

1 个答案:

答案 0 :(得分:4)

这是一种狭义的契约(例如,如果将它传递给allocate未返回的指针,则会导致未定义的行为),因此,根据标准库的通常策略,该标记不会标记为noexcept。