
"Felipe Magno de Almeida" <felipe.almeida@ic.unicamp.br> wrote in message news:4230A997.7090101@ic.unicamp.br... | > yes, but this is no ordinary std::vector. std::vector is for self-contained | > value types; boost::ptr_vector is for pointers whose life-time | > must be managed. | > | > | boost::vector<A> vector1, vector2; | > | vector1 = vector2; | > | > boost::ptr_vector don't have an assignment operator; it is not Assignable nor | > CopyConstructible. | > | > you must clone or release the container: | > | > vector1 = vector2.clone(); | > vector1 = vector2.release(); | > | | I see, but it makes impossible for use ptr_containers inside other | containers. Isnt this too restrictive? well, yes, you would have to use a pointer container. ptr_vector< ptr_list<Foo> > vec; vec.push_back( new ptr_list<Foo> ); when move semantics enters the langauge, they can become movable. | Cant they be implemented in terms of these? yes. | There were a discussion about this before? So that I can know the | reasons why? I can't remember any long discussion, but I know why I made the choice. The types stored in a pointer container need not be copyable; most uses will be non-copyable objects or clonable objects. Neither type of object can be copied and hence it seems wrong to allow a container of them to be copied; it kinda hides the true nature of the contained objects. Moreover, copying a whole container can be really expensive; it seems better that the distinction between copyable and clonable objects carries over to the containers as well so users are reminded of the distinction. br -Thorsten