除了论点
On noexcept arguments
noexcept
的使用对我来说很清楚,因为现代优化的标记函数的方式具有无抛掷异常保证
struct A {
A() noexcept;
};
在有效的现代 c++ 的第 14 项中,我反驳了以下语法,称为有条件noexcept
template<class T, size_t N>
void swap(T (&a)[N], T (&b)[N]) noexcept(noexcept(swap(*a, *b)));
我理解的方式是,noexcept
可以引入一个真理值上下文,但话又说回来,另一个 noexcept 怎么可能是一个论点?
有人可以详细说明这种noexcept
使用的语法和语义吗?
与:
template<class T, size_t N>
void swap(T (&a)[N], T (&b)[N]) noexcept(noexcept(swap(*a, *b)));
(1) (2)
- (1) 是无异常说明符
- (2) 是无例外运算符
关键字noexcept
可以在两个上下文中使用:
noexcept
运算符,它将表达式作为参数并返回一个bool
,指示表达式是否为非抛出。noexcept
说明符,用于指定函数是否引发。此形式可以选择采用一个常量表达式bool
该表达式确定函数是否noexcept
。
在您粘贴的代码中,
noexcept ( noexcept(swap(*a, *b)))
^^^^^^^^ ^^^^^^^^
specifier operator
相关文章:
- 没有找到相关文章