|
Boost : |
From: Thorsten Ottosen (thorsten.ottosen_at_[hidden])
Date: 2006-04-23 16:01:05
Ivan Vecerina wrote:
> "Thorsten Ottosen" <thorsten.ottosen_at_[hidden]> wrote in message
> : But it is also true that it is over encapsulated: there is no invariant
> : Here are some other examples of classes that has been designed
> : as over-encapsulated:
> : - standard containers
> In what way?
Lack of inplace-construction or construction with uninitialized dataor
or acceptance of a buffer to give to the vector.
This hurts performance in libraries such as serialization or asio.
> : > Do you think that std::string is an example that ptree wants to
> follow?
> :
> : No.
> : If the free-standing functions are not generic, there is little point
> : in not making them members. Having free-standing functions like
> : get/set is a bad bad idea with the current rules for ADL.
>
> I didn't explicitly indicate that the functions were templates,
> but they obviously would be.
They are templates, yes, but still mention basic_ptree.
> If we really want to provide member functions for ease-of-use
> purposes, then I believe that we should make this a separate
> class from the ptree "container".
> It would be pretty straightforward to do so.
In the same manner operator[]() could have been left out
of std::map<T>, yet is is one of the most convenient functions.
-Thorsten
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk