ptr_vectorは便利だが、コンテナメンバをdeleteせずerase()を行いたくなったのでカスタマイズしてみた。 template struct custom_ptr_vector : public boost::ptr_vector { typedef std::pair result_pair; result_pair erase_with_not_delete(iterator& where) { BOOST_ASSERT( where != end() ); if( empty() ) throw boost::bad_ptr_container_operation ( "'release()' on empty container" ); auto_type ptr( static_cast(*where.base())); return result_pair(c_private().erase( where.base() ) ,ptr.release()); } };