相关疑难解决方法(0)

可选的嵌套类和 is_constructible 之间奇怪的交互

在处理现实项目时,我偶然发现了某些(某些版本)编译器的奇怪行为。考虑以下类声明:

struct OptionalsStruct {
    struct InnerType {
        bool b{};
    };

    OptionalsStruct() = default;

    std::optional<InnerType> oInnerType;
};
Run Code Online (Sandbox Code Playgroud)

对于某些编译器,它OptionalStruct::InnerType不可构造的,但不可构造默认可构造的clang 1116GCC 10),对于其他一些编译器,它既不是不可构造的clang 910),更不用说clang 8如何看待整体事物。

我的问题是:这些行为是编译器错误,还是标准中的漏洞(我使用的是 C++17)?我在这里错过了什么吗?

c++ inner-classes type-traits c++17

4
推荐指数
1
解决办法
192
查看次数

标签 统计

c++ ×1

c++17 ×1

inner-classes ×1

type-traits ×1