相关疑难解决方法(0)

理论上,但不是实际上,抛出函数应该被声明为noexcept吗?

声明以下函数是否安全,noexcept即使v.at(idx)理论上可以抛出out_of_range异常,但实际上不是由于边界检查?

int get_value_or_default(const std::vector<int>& v, size_t idx) noexcept {
    if (idx >= v.size()) {
        return -1;
    }
    return v.at(idx);
}
Run Code Online (Sandbox Code Playgroud)

c++ function noexcept

21
推荐指数
3
解决办法
1251
查看次数

如果我故意标记一个函数[我知道可能会抛出] noexcept 以在发生异常时立即终止,我的代码是否格式不正确?

我知道,标记一个函数noexcept可能有助于[在某些情况下]获得许多很棒的优化,例如移动语义。但是假设,我的代码中有一个函数执行非常关键的操作,如果该函数失败,则意味着发生了非常糟糕的事情以至于无法恢复,并且该程序应该立即终止。如果我故意标记这样一个函数,noexcept即使我承认有异常的可能性,只是为了在发生异常时杀死程序怎么办?

有些东西告诉我这不是它应该使用的用途,但它是 的有效用途吗noexcept

c++ noexcept

14
推荐指数
2
解决办法
302
查看次数

标签 统计

c++ ×2

noexcept ×2

function ×1