Thorsten Ottosen wrote:
Jeff Flinn skrev:
Are pointer_container's intended to be compatible with std::back_inserter? I've also tried calling insert and assign.
no, that would be a pure co-incidence.
In the trunk you can find equivalents in ptr_inserter.hpp (attached)
Will this be in 1.35.0?
I've tried:
#include <boost/ptr_container/ptr_vector.hpp>
#include <iterator> #include <vector> #include <memory>
int main() { boost::ptr_vector<int> int_ptrs;
*std::back_inserter(int_ptrs) = new int(123); *std::back_inserter(int_ptrs) = std::auto_ptr<int>(new int(456));
std::vector<int*> ptrs(1, new int(123));
int_ptrs.insert(int_ptrs.end(), ptrs.begin(), ptrs.end());
Is it this last line that bothers you? Or do you want to go in the other direction?
The last line does not bother me, it bothers VC8: 1>f:\boost\boost_1_34_1\boost\ptr_container\ptr_sequence_adapter.hpp(112) : error C2440: 'return' : cannot convert from 'int **' to 'const int *' 1> Types pointed to are unrelated; conversion requires reinterpret_cast, C-style cast or function-style cast 1> f:\boost\boost_1_34_1\boost\ptr_container\detail\reversible_ptr_container.hpp(99) : see reference to function template instantiation 'const int *boost::ptr_container_detail::sequence_config<T,VoidPtrSeq>::get_const_pointer<Iter>(Iter)' being compiled 1> with 1> [ 1> T=int, 1> VoidPtrSeq=std::vector<void *,std::allocator<void *>>, 1> Iter=std::_Vector_iterator<int *,std::allocator<int *>> 1> ] ... Thanks, Jeff