特定の要素を a から b に移動したい:
boost::ptr_vector<Foo> a, b;
// ...
b.push_back(a.release(a.begin() + i)));
release 関数が を返すため、上記のコードはコンパイルされませんboost::ptr_container_detail::static_move_ptr<...>
。これはプッシュバックには適していません。
どのように進めればよいですか?
編集:返されたオブジェクトには、生のポインターを提供する.get() .release()
があることがわかりました(これは、例外の安全性の問題にもつながる可能性があります)。ただし、文書化されていない内部機能に依存したくないので、より良い解決策を自由に共有してください...