为什么具有隐式定义的默认构造函数的嵌套类不满足 std::default_initializable? [重复]

问题描述 投票:0回答:0

在下面的代码中,只有 Bar3 失败了。这种静态断言失败背后的原因是什么?

#include <concepts>
struct Bar1 { Bar1() = default; bool val = false; };
static_assert(std::default_initializable<Bar1>);
struct Bar2 { Bar2() {} bool val = false; };
static_assert(std::default_initializable<Bar2>);
class Foo {
public:
    struct Bar3 { Bar3() = default; bool val = false; };
    static_assert(std::default_initializable<Bar3>);        // <-- only this one fails
    struct Bar4 { Bar4() {} bool val = false; };
    static_assert(std::default_initializable<Bar4>);
};
c++ static-assert implicit-constructor
© www.soinside.com 2019 - 2024. All rights reserved.