Я хочу переместить определенный элемент из 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()
, который предоставляет необработанный указатель (который также может привести к некоторым проблемам безопасности исключений). Однако я предпочел бы не полагаться на недокументированные внутренние функции, поэтому не стесняйтесь делиться лучшими решениями ...