除了论点

On noexcept arguments

本文关键字:      更新时间:2023-10-16

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可以在两个上下文中使用:

  1. noexcept运算符,它将表达式作为参数并返回一个bool,指示表达式是否为非抛出。
  2. noexcept说明符,用于指定函数是否引发。此形式可以选择采用一个常量表达式bool该表达式确定函数是否noexcept

在您粘贴的代码中,

noexcept    ( noexcept(swap(*a, *b)))
^^^^^^^^      ^^^^^^^^
specifier     operator
相关文章:
  • 没有找到相关文章