constexpr默认构造函数
问题描述:
如果我想将我的default
默认构造函数声明为constexpr
,我会在Clang 3.8和GCC 5.3中得到编译器错误。据this计算器问题,它只是应该很好地工作:constexpr默认构造函数
struct A
{
constexpr A() = default;
int x;
};
但是:
Error: defaulted definition of default constructor is not constexpr
你有任何线索,什么是真正回事?
答
就目前而言,x仍未初始化,所以无法在编译时构造该对象。
需要初始化X:
struct A
{
constexpr A() = default;
int x = 1;
};
是啊,我也想通了在此期间。所引用的SO问题/答案相当不完整且具有误导性。 – plasmacel
@plasmacel接受的答案覆盖了所需的信息...在最后以粗体显示,它解释了如果您不写'constexpr',那么函数是constexpr当且仅当它符合constexpr的标准;然后最后一段说明,如果你想在你的函数不符合条件时得到一个编译错误,你自己就可以编写'constexpr'(因为你的函数不符合标准) –