constexpr默认默认构造函数

constexpr defaulted default constructors

本文关键字:默认 构造函数 constexpr      更新时间:2023-10-16

如果我想将default-ed默认构造函数声明为constexpr,Clang 3.8和GCC 5.3会导致编译器错误。根据这个stackoverflow问题,它应该可以正常工作:

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;
};