すでにベクトルに入っているオブジェクトは、ベクトルの再割り当て時にコピーされています。ベクトルのすべてのオブジェクトにコピーコンストラクタが必要ですか?
これはなぜですか?彼らはただ動かされてはいけませんか?また、これは、ベクトルに格納されたオブジェクトのコピーコンストラクタを記述することが期待されることを意味しますか? C++ referenceから
すでにベクトルに入っているオブジェクトは、ベクトルの再割り当て時にコピーされています。ベクトルのすべてのオブジェクトにコピーコンストラクタが必要ですか?
これはなぜですか?彼らはただ動かされてはいけませんか?また、これは、ベクトルに格納されたオブジェクトのコピーコンストラクタを記述することが期待されることを意味しますか? C++ referenceから
:C++ 11の登場までは
は、ベクトルの要素は、CopyAssignableとCopyConstructibleの要件を満たしている必要があります。
C++ 11からC++ 17まで、要素に課される要件は、コンテナに対して実行される実際の操作によって異なります。一般に、要素型は完全型であり、Erasableという要件を満たしている必要がありますが、多くのメンバ関数は厳しい要件を課しています。
C++ 17以降では、要素に課される要件は、コンテナで実行される実際の操作によって異なります。一般に、要素タイプはErasableの要件を満たしている必要がありますが、多くのメンバー関数は厳しい要件を課しています。アロケータがアロケータの完全性要件を満たす場合、このコンテナ(メンバーではない)は不完全な要素型でインスタンス化できます。
これはかなり明確に[ここ](http://en.cppreference.com/w/cpp/container/vector)に記載されています。 C++ 11以降、要素は「消去可能」という概念を満たしています。 –