
What I was needing was a map of sets, then it wasnt compiling because of the operator[]. I modified the ptr_set for my imediate need, but I think Ill do as you said, use a pointer container. Now it really seems to me more obvious why not allow copy construction. The same as you cant push_front in a vector, I think it shouldnt be possible to copy construct a pointer container. Thorsten Ottosen wrote:
"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
_______________________________________________ Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
-- Felipe Magno de Almeida UIN: 2113442 email: felipe.almeida at ic unicamp br, felipe.m.almeida at gmail com, felipe at synergy com I am a C, modern C++, MFC, ODBC, Windows Services, MAPI developer from synergy, and Computer Science student from State University of Campinas(UNICAMP). To know more about: Unicamp: http://www.ic.unicamp.br Synergy: http://www.synergy.com.br current work: http://www.mintercept.com