私はこれらを持っている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 RGBastruct HSVとdefaulted のデフォルト コンストラクターをビルドすると、集計の初期化が機能しなくなります。
ただし、手元に 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、少なくともそれが可能かどうかはまだ疑問です。