コピー コンストラクターを削除した型がありvector
、この型が必要なため、 を介してすべての要素を作成する必要がありますemplace_back
。ただし、コピー コンストラクターが削除されたためemplace_back
にインスタンス化できないという警告がコンパイラによって表示されるため、コピー コンストラクターが必要なようです。emplace_back
なぜコピーコンストラクターが必要なのですか? 何もコピーせずemplace_back
に を構築することが全体のポイントだと思いました。コピー コンストラクターを持たないオブジェクトを作成することはできますかvector
?vector
class MyType {
public:
MyType(std::array<double, 6> a) {}
MyType(const MyType& that) = delete;
};
int main() {
std::vector<MyType> v;
std::array<double, 6> a = {1,2,3,4,5,6};
v.emplace_back(a);
}
コンパイラは clang/llvm です。