720得票9回答
什么时候应该真正使用noexcept?

noexcept关键字可以适用于许多函数签名,但我不确定在实践中何时应考虑使用它。根据我目前所了解的内容,noexcept的最后一分钟添加似乎解决了移动构造函数抛出异常时出现的一些重要问题。然而,我仍然无法对一些实际问题提供令人满意的答案,这些问题导致我首先阅读更多关于noexcept的内容。...

113得票3回答
C++03的`throw()`说明符和C++11的`noexcept`有什么区别?

throw()和noexcept除了分别在运行时和编译时进行检查之外,还有什么区别吗? 这篇维基百科的C++11文章建议C++03的抛出限定符已经过时。 为什么会这样...noexcept是否足够在编译时覆盖所有内容? 注意:我检查了这个问题和这篇文章,但无法确定它被弃用的确切原因。

54得票3回答
为什么向量访问运算符没有被指定为noexcept?

为什么 std::vector 的 operator[]、front 和 back 成员函数没有被指定为 noexcept?

48得票11回答
如何在Visual Studio中处理noexcept

我正在尝试创建一个从std::exception派生并覆盖what()的自定义异常。起初,我像这样编写了它:class UserException : public std::exception { private: const std::string message; public:...

47得票4回答
不抛异常、堆栈展开和性能

下面是来自Scott Meyers的新C++11书籍中的draft(第2页,第7-21行): 在展开调用堆栈和可能展开调用堆栈之间的区别对代码生成有着惊人的影响。在一个noexcept函数中,如果异常会传播出函数,则优化器不需要保持运行时堆栈处于可展开状态,也不必确保在异常离开函数时以相反...

46得票4回答
如何编写支持ADL的尾返回类型或noexcept规范?

假设我正在编写一些容器模板或其他内容。当需要为其特化std::swap时,作为一个好的开发者,我会通过以下方式启用ADL: template <typename T> void swap(my_template<T>& x, my_template<T&...

45得票4回答
constexpr是否意味着noexcept?

对于一个函数,constexpr说明符是否意味着noexcept说明符?答案到类似的问题表示在inline说明符方面是肯定的,但Eric Niebler的文章让我想知道当前问题的可能答案。在我看来,答案取决于使用constexpr函数的上下文:它是常量表达式上下文还是运行时上下文,即函数的所有...

44得票1回答
将空指针传递给放置 new

在18.6 [support.dynamic] ¶1中,默认的 new 运算符被声明为一个非抛出异常规定:void* operator new (std::size_t size, void* ptr) noexcept; 该函数除了return ptr;以外什么也不做,因此它被声明为noex...

41得票1回答
在常量表达式中调用的`static constexpr`函数是...一个错误吗?

我有以下的代码:class MyClass { static constexpr bool foo() { return true; } void bar() noexcept(foo()) { } }; 我原以为由于foo()是一个static constexpr函数,并且它...

40得票1回答
是否存在自动的noexcept指示符?

我听说 noexcept 关键字更像是“绝不应该抛出异常”而不是“它不会抛出异常”。 如果我不确定代码是否会抛出异常,使用 noexcept 关键字可能不是一个好的选择,但在某些情况下,noexcept 关键字与性能有关,比如移动构造函数。 因此,我尝试使用 noexcept 限定符,但如...