--- Peter Dimov <[EMAIL PROTECTED]> wrote:
> E. Gladyshev wrote:
> >
> > I guess my question is that, is boost redefining the
> > memory management concepts that have been established by STL?
> 
> Yes and no. The STL uses allocators for containers. Most non-containers do
> not have an allocator parameter, although many standard classes do allocate
> memory.

I agree. It means the STL is not consistent either.

So what are the boost recomendations for using STL containers and boost
in the same class?

I am using STL and trying to use boost in my daily 
development. What can I do to implement consistent classes in terms 
of memory management.  For example, if I need to implement a class A
that has a container and pointer to a data type. I have two options:

template< typename T >
struct A
{
   shared_ptr<T> _data;
   std::list<T>  _list;
};

template< typename T, template A = std::allocator<T> >
struct A
{
   shared_ptr<T> _data;
   std::list<T, A>  _list;
   A : _data( new T() ) {...}
};

The problem with the first defenition is that I am limiting the built-in STL 
functionality in
terms of memory management.

The problem with the second definition is that if I expose the allocator template 
parameter, the
user of my class will expect that all memory allocations of type T are going to be 
using her
allocator but boost::shared_ptr doesn't support it.

Could you please advise me?

Eugene



__________________________________
Do you Yahoo!?
Yahoo! SiteBuilder - Free, easy-to-use web site design software
http://sitebuilder.yahoo.com
_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost

Reply via email to