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