コピーできないクラスがあります(つまり、コピーコンストラクターと代入演算子は「削除」としてマークされています)。これらをstd :: vectorに保存したいと思います。
これはRAIIクラスであるため、ポインターまたは参照を格納するだけでは、私が探しているものではありません。
新しいイニシャライザーリストと移動コンストラクターに関する私の知識は多少制限されていますが、これは可能ですか?
はい、NotCopyable
が移動可能な場合は、std::vector<NotCopyable>
を使用できます。
struct NotCopyable
{
NotCopyable() = default;
NotCopyable(const NotCopyable&) = delete;
NotCopyable& operator = (const NotCopyable&) = delete;
NotCopyable(NotCopyable&&) = default;
NotCopyable& operator = (NotCopyable&&) = default;
};
int main()
{
std::vector<NotCopyable> v;
NotCopyable nc;
v.Push_back(NotCopyable{});
v.emplace_back();
v.Push_back(std::move(nc));
}
実例 。
要素が移動可能である限り、はい、単にそれらをベクトルに格納します。