首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++ ISO noexcept of noexcept

C++ ISO noexcept of noexcept
EN

Stack Overflow用户
提问于 2018-02-09 18:39:31
回答 1查看 1.9K关注 0票数 32

the C++ standard中有以下定义:

代码语言:javascript
复制
template <class T, size_t N> void swap(T (&a)[N], T (&b)[N])
      noexcept(noexcept(swap(*a, *b)));

noexcept(noexcept(swap(*a, *b)))是做什么的?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-02-09 18:44:51

在函数声明中包含noexcept(x) specifier意味着当且仅当x的计算结果为true时,该函数才是非抛出的。

noexcept(y)也可以用作operator,如果y是非抛出表达式,则计算结果为true,如果y可能会抛出,则计算结果为false

结合在一起,这意味着void foo() noexcept(noexcept(y));意味着:foo是非抛出的,而y是非抛出的。

在问题中的情况下,当且仅当交换数组的单个成员是非抛出的时,数组的函数模板swap被声明为非抛出的,这是有意义的。

票数 51
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48703988

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档