constexpr默认默认构造函数

时间:2016-04-03 23:02:15

标签: c++ c++11 compiler-errors c++14

如果我想将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

您是否知道实际发生了什么?

1 个答案:

答案 0 :(得分:11)

目前,x仍然未初始化,因此无法在编译时构造对象。

您需要初始化x:

struct A
{
    constexpr A() = default;

    int x = 1;
};