我不记得用于此和其他相关属性的术语。

编辑 - 也许这样的概念不存在,但我记得在有效的C ++(或更有效的C ++)中阅读了一些内容,他主张使用交换在函数的最后提交更改,因为向量交换函数保证不会抛出异常。

有帮助吗?

解决方案

我认为你的意思是说该功能是“异常安全的”。参见例如 http://en.wikipedia.org/wiki/Exception_safety

维基百科文章进一步将安全分为不同层次。这是与此相关的内容:

  

2。提交或回滚语义,也称为强异常安全或无变更保证:操作可能失败,但失败的操作保证没有副作用,因此所有数据都保留原始值。

引用了一个引入异常安全性和提交或回滚语义的STL设计文档: http://www.open-std.org/jtc1/sc22/wg21/docs/papers/1997/N1077.asc

其他提示

您可能会想到例外保证,特别是“强”保证"

阅读完编辑后,我怀疑你的标题有点不正确。你是否真的意味着它没有副作用是否抛出异常(根据当前的措辞)或抛出异常时没有副作用,但是如果方法完成而没有抛出一个例外,它会/可能有副作用?有一个很大的区别:)

后者在Accelerated C#2008中描述为“异常中立”。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top