クラスが集約クラスの優れたプロパティを失うことになる集約パブリック基本クラス (または複数の集約パブリック基本クラス) を持つことについてはどうですか?
http://en.cppreference.com/w/cpp/language/aggregate_initialization http://en.wikipedia.org/wiki/C++_classes#Aggregate_classesからの「集約基本クラス」の定義
集約クラスの優れた特性:
- コンストラクターを定義せずに、中括弧で囲まれた値のリストを渡してメンバー (許可されている場合は基底クラス) を初期化することで、集約型を初期化できます。
- 集約型は「単純」( PODの一般化) と見なされ、
constexpr
sの目的でリテラル型として使用できます。
http://en.cppreference.com/w/cpp/language/aggregate_initialization#Exampleからの初期化の要約例:
#include <string>
#include <array>
struct S {
int x;
struct Foo {
int i;
int j;
int a[3];
} b;
};
int main()
{
S s1 = { 1, { 2, 3, {4, 5, 6} } };
S s2 = { 1, 2, 3, 4, 5, 6}; // same, but with brace elision
}