|
Boost : |
From: Tobias Schwinger (tschwinger_at_[hidden])
Date: 2006-05-18 12:38:06
Asger Mangaard wrote:
> Tobias Schwinger wrote:
>
>>o save a few lines for "deep compare" (it seems unlikely to me that this
>>feature will be very useful)
Unfortunately the context got lost, here:
That point is from my summary of what the library seems to buy me in its current state.
> Would you rather compare on the pointers themselves, or?
Not neccessarily (but it seems a more approriate default to me, while we're at it).
Why bother with comparison in the first place?
>>o stack allocation using SBO
>
> Could be interresting.
>
...and can probably done with STL-style allocator support. Something like that
namespace my_project
{
// customize boost::body_ptr for my_project's memory management
template<typename T>
struct body_ptr
: boost::body_ptr<T, my_custom_allocator<T> >
{ };
}
should work, however, so the user does not have to repeat the parametrization all over the place.
>
>>o COW (copy on non const access)
>
> Could you give an example?
>
Let's see (untested and incomplete code for illustration only):
class my_class
{
struct heavy_body;
body_ptr< heavy_body > ptr_body;
public:
state get_state() const;
void set_state(state);
};
// ...
my_class my_instance;
// ...
my_class my_second_instance(my_instance);
// no copy, both instances share the same body
#if case1
my_second_instance.set_state(some_state);
// non-const access of shared body ==> need a copy
// my_second_instance gets a brand new copy
#elif case2
my_instance.set_state(some_state);
// non-const access of shared body ==> need a copy
// my_instance gets a brand new copy
#endif
Works for you?
Note that you have to synchronize the reference counter and also the copy operation in a multithreaded environment.
Regards,
Tobias
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk