コピーコンストラクターが削除されたクラスがあるとします。
struct NoCopy
{
NoCopy(int) {}
NoCopy(const NoCopy &) = delete;
};
このクラスを別のクラスで使用します。
struct Aggregate
{
NoCopy nc;
};
しかし、集計の初期化を使用しようとすると
int main()
{
Aggregate a{3};
}
コンパイラは次のエラーを出力します。
error: use of deleted function ‘NoCopy::NoCopy(const NoCopy&)’
集約の初期化にクラスのメンバーのコピー コンストラクターが必要なのはなぜですか? 集計の初期化は、コピー コンストラクターを使用してすべてのメンバーを初期化しますか?