一:概述
noexcept
是 C++11 引入的一个关键字,用来指明一个函数在运行时是否不会抛出异常。它主要用于提高代码的安全性和性能,在某些场合可以帮助编译器进行优化。
1. noexcept
的语法
//1. 标记函数为 noexcept, 在这种情况下,func 承诺不会抛出异常
void func() noexcept {
// 函数体
}
//2. 带条件的 noexcept
//noexcept 关键字也可以根据条件来动态判断一个函数是否是 noexcept。其条件必须是编译时常量表达式:
void func() noexcept(true); // 一定不会抛出异常
void func() noexcept(false); // 可能会抛出异常
//在下面例子中,func 是否是 noexcept 取决于 some_other_func 是否是 noexcept 的。如果 some_other_func 是 noexcept,那么 func 也是 noexcept。
template <typename T>
void func(T&& t) noexcept(noexcept(some_other_func(std::forward<T>(t)))) {
some_other_func(std::forward<T>(t));
}
//3. noexcept 运算符
/