如果我想将default
- ed默认构造函数声明为constexpr
,那么Clang 3.8和GCC 5.3会出现编译错误。根据{{3}} stackoverflow问题,它应该可以正常工作:
struct A
{
constexpr A() = default;
int x;
};
但是:
Error: defaulted definition of default constructor is not constexpr
您是否知道实际发生了什么?
答案 0 :(得分:11)
目前,x仍然未初始化,因此无法在编译时构造对象。
您需要初始化x:
struct A
{
constexpr A() = default;
int x = 1;
};