【发布时间】:2019-12-01 17:25:12
【问题描述】:
如果我有这样的事情
struct A{
int x;
constexpr A() : x(0){}
constexpr void set(){ x = 0; }
constexpr bool check()const{ return x == 5; }
};
将set 和check 写成noexcept 有什么好处/区别吗?
概括地说:我是否需要编写只对整数类型执行操作的函数,如noexcept?
【问题讨论】:
-
取决于你打算如何使用你的数据结构和那些函数。声明这些函数
noexcept如果它们是从一个也指定为noexcept的大型复杂函数调用的,那么生活会更轻松。如果不从此类函数中调用它们,则由您决定。 -
@Peter,我想,既然它们都将被内联,编译器会检查函数内部的操作是否有
noexcept,因为无论如何它都会这样做;如果对整数类型进行操作,它们将被推导出noexcept,使我的noexcept多余 -
您正在对编译器将进行的分析做出一些宏大的假设。
-
我一直认为这个关键字更像是对人类维护者的暗示。
标签: c++