Boost logo

Boost Users :

From: Jeff Flinn (TriumphSprint2000_at_[hidden])
Date: 2008-03-28 07:35:31


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


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net