我对 C++ 中的 POD 类型感到困惑我有这些struct HSV
,struct RGB
这是构建颜色的值的累积:
struct HSV
{
int hue;
int saturation;
int value;
};
struct RGB
{
// RGB(void) = default;
// RGB(HSV const& hsv) { };
int red;
int green;
int blue;
};
我可以struct RGB
使用类似 C 的聚合初始化来初始化 a,如下所示:
RGB a = {.red=55, .green=125};
但是,当我取消注释附加构造函数以struct RGB
使用 astruct HSV
和default
ed 默认构造函数构建 a 时,聚合初始化不再起作用
它仍然会告诉我我手上有一个 POD:
std::cout << std::boolalpha;
std::cout << std::is_standard_layout<RGB>::value << '\n'; // true
std::cout << std::is_trivial<RGB>::value << '\n'; // true
std::cout << std::is_pod<RGB>::value << '\n'; // true
我可以在拥有像我这样的转换构造函数的同时使用 C 风格的聚合初始化,还是那不可能?
编辑:我刚刚被告知这是一个clang
扩展(并且似乎也可以使用 VS 编译器)。但我仍然想知道这是否可能,clang
至少。