Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/157.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 论无例外论点_C++_C++11_C++14 - Fatal编程技术网

C++ 论无例外论点

C++ 论无例外论点,c++,c++11,c++14,C++,C++11,C++14,对我来说,noexcept的使用是非常清楚的,它是一种现代的优化方法,用于标记具有无抛出异常保证的函数 struct A { A() noexcept; }; 在有效现代c++的第14项中,我计算了以下语法,有条件地称为无例外 template<class T, size_t N> void swap(T (&a)[N], T (&b)[N]) noexcept(noexcept(swap(*a, *b))); 模板 无效掉期(T&a)[N],T&b

对我来说,
noexcept
的使用是非常清楚的,它是一种现代的优化方法,用于标记具有无抛出异常保证的函数

struct A {
    A() noexcept; 
}; 
有效现代c++第14项中,我计算了以下语法,有条件地称为无例外

template<class T, size_t N>
void swap(T (&a)[N], T (&b)[N]) noexcept(noexcept(swap(*a, *b))); 
模板
无效掉期(T&a)[N],T&b[N])无例外(无例外掉期(*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)
模板
无效掉期(T&a)[N],T&b[N])无例外(无例外掉期(*a,*b));
(1)      (2)
  • (1) 是一个
  • (2) 是一个

关键字
noexcept
可在两种上下文中使用:

  • 将表达式作为参数并返回一个
    bool
    ,指示该表达式是否为非抛出表达式
  • 用于指定函数是否抛出的。此表单可选地采用一个
    bool
    常量表达式,该表达式确定函数是否为
    noexcept
  • 在您粘贴的代码中

    noexcept    ( noexcept(swap(*a, *b)))
    ^^^^^^^^      ^^^^^^^^
    specifier     operator
    

    因此,运算符返回bool,说明符可以使用它。Thnx J