如何解决当不抛出零成本时,noexcept没用吗?
如果您的实现具有零成本(如果未抛出任何异常)异常模型,那么noexcept
指定符是否无用?缺少noexcept
会导致后果的例子是什么?
解决方法
如果您的实现具有零成本(如果未抛出任何异常)异常模型,那么
noexcept
指定符是否无用?
不,即使异常对性能完全没有影响,noexcept
还是有用的。
一个例子是noexcept
可以表示可以使用哪种算法。例如,使用std::move_if_noexcept
或许多标准type_traits的算法可能会根据noexcept
的存在而表现不同。
这可能对诸如std::vector
之类的常用功能产生重大影响,如果您元素的move构造函数不是noexcept
,则这些功能会慢得多。如果移动构造函数不是std::vector
,noexcept
将在重新分配时复制所有元素,而不是移动它们,以保留强异常保证。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。