符合标准的自定义分配器
|
将0传递给
allocate
方法时可以抛出异常吗?
谢谢。
附言
如果n == 0,则返回值为
未指定。
这是否意味着allocate
不应抛出异常?我倾向于认为,如果在n == 0的情况下不允许抛出,则该标准将清楚地说明这一点。
没有找到相关结果
已邀请:
2 个回复
穗揣
–任何类型
–
类型的分配器类
–
类型的值
–
类型的值, 如果
等于0,则未指定表达式
的返回值。 一方面,鉴于
没有任何强制性的异常规范,并且明确地可能抛出
,所以我不明白为什么它也不能抛出其他类型的异常。另一方面,该措词专门指出了条件,其中
等于零,并直接暗示有返回值,这意味着您不应该抛出该值。我认为这可能需要一些解释,但我个人愿意支持后者,并认为它是非例外的代码路径。
古擅坛犯
的注释中在ments17ѭ[allocator.requirements]下说:
已为类型为“ 2”的“ 7”个对象分配了内存,但未构造对象。
可能会引起适当的异常。 [注意:如果n == 0,则未指定返回值。 —尾注] (强调我的。) 因此,您不应该抛出该提示,因为这暗示了某些东西的返回。但是,不需要返回“ 15”字节大小的存储块。因此,回答您的问题:不,在实现标准兼容分配器时,如果大小请求为
,则不允许抛出
。