c++ - 符合标准的自定义分配器

标签 c++ allocator

allocate 方法传入 0 是否可以抛出异常?

谢谢。

附言

If n == 0, the return value is unspecified.

这是否意味着 allocate 不应该抛出异常?我倾向于认为,如果 n==0 不允许抛出,那么标准会清楚地说明这一点。

最佳答案

所有标准必须说明的 (§20.1.5/2) 都是给定的

  • T – 任何类型
  • X – 类型 T
  • Allocator
  • aX&
  • 类型的值
  • nX::size_type 类型的值,

如果 n 等于 0,则表达式 a.allocate(n) 的返回值未指定

一方面,考虑到 X::allocate 没有任何强制性异常规范并且显式可能抛出 std::bad_alloc ,我不明白为什么它也不能抛出其他类型的异常。另一方面,该措辞特别指出了 n 等于零的条件,并直接暗示有一个返回值,这意味着您不应该 扔。我认为它可能有一些解释,但我个人倾向于后者并认为它是一个普通的代码路径。

关于c++ - 符合标准的自定义分配器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6065814/

相关文章:

c++ - 模板转换运算符

c++ - 当用户按下某些键时,如何制作一个改变颜色的正方形?

c++ - OpenGL GLSL - 投影矩阵不工作

c++ - 我应该使用什么 IDE 来试验 Chromium 源代码

c++ - std::map 是否通过引用、按值获取分配器或纯粹将其用作类型?

c++ - std::containers 的日志分配器?

c++ - 如何在没有容器的情况下在迭代器中创建运算符->?

c++ - 使 std::vector 分配对齐的内存

c++ - 如何获得 std::map 的真正分配器?

c++ - 嵌套容器的自定义分配器