noexcept

    6热度

    1回答

    C++ 14标准定义了如下的std::map查找()成员功能: iterator find(const key_type& x); const_iterator find(const key_type& x) const; 为什么这些功能没有被定义为noexcept?那里面可能会出现什么问题,这需要抛出一个异常或产生未定义的行为(除了找不到元素,在这种情况下函数返回一个迭代器并且不需要异常抛

    3热度

    2回答

    我正在处理使用错误代码的项目,并且不允许执行异常处理(我们正在使用new运算符的nothrowing版本)。 是否有意义使用说明符每个函数? 哪些是可能的赞成和反对?

    0热度

    2回答

    关于此功能 int test(int a,int b) { return a/b; } 如果我打电话test(2,1),什么都不会发生。 但是,如果我打电话test(2,0),它会导致未定义的行为。 因此,我应该将其定义为noexcept? 顺便说一句,为什么std :: vector :: operator []不是noexcept?

    3热度

    2回答

    我是C++的初学者,我正在学习一些C++ 11的功能。我注意到的一件事是,在Visual C++ stdlib的某些部分,作者使用_NOEXCEPT宏而不是noexcept关键字。悬停在宏说#define _NOEXCEPT noexcept,所以我有点困惑,它的重点是什么。两者之间有什么区别,我应该更喜欢哪一个? 编辑:我只是寻找它在GitHub上,它看起来像clang使用它一样,所以它不是一个

    18热度

    4回答

    在C++ 11及更高版本中,如何确定抽象基类的构造函数是否为noexcept?下面的方法不起作用: #include <new> #include <type_traits> #include <utility> struct Base { Base() noexcept; virtual int f() = 0; }; // static assertion fails, becau

    4热度

    1回答

    Here我发现: 继承构造[...]都是noexcept(真)默认情况下,除非他们需要调用一个函数是noexcept(假),在这种情况下,这些功能noexcept(假)。 这是否意味着在下面的例子中,继承的构造是noexcept(true),尽管它在基类中被明确定义为noexcept(false),或者被认为是本身作为一个函数,noexcept(假)被称为? struct Base {

    1热度

    3回答

    当我声明condition_variable时,它可能会抛出std::system_error。 但是当我声明POD类型时(如int,double或float)怎么样? 像下面的代码: int main() { //do something int i; //will here throw exception? } 如果声明一个POD类型可能会抛出异常,我怎么保证 vo

    4热度

    3回答

    好的,如果我使用RAII语言来管理某些上下文属性*,如果我在try区块的开始处裸露地使用它,它是否会像我预期的那样工作? 换句话说,如果我有这样的: struct raii { raii() { std::cout << "Scope init" << std::endl; } ~raii() { std::cout << "Scope

    0热度

    1回答

    我正在写一个应该非常高效的迭代器,我想知道我是否可以声明运算符operator->()和operator*()为noexcept,因为它们只会调用基础指针上的相同运算符(但如果指针指向非可用内存部分,那么程序很可能会崩溃)?

    10热度

    3回答

    我无法理解在C++ 11/14中关键字noexcept的用途&的用途。我的意思是这些功能不会发出exceptions的签名。但它真的有用吗? 请看下面这段代码: #include <iostream> #include <bits/stdc++.h> using namespace std; void seev (vector<int> &v) noexcept; void seev (v