Subject: Re: [boost] Minimizing Dependencies within Generic Classes for Faster and Smaller Programs
From: Daniel James (dnljms_at_[hidden])
Date: 2010-11-12 11:36:50
On 12 November 2010 12:42, vicente.botet <vicente.botet_at_[hidden]> wrote:
> The iterator can depend on the Allocator::pointer but this doesn't forcerly means that it depends on the Allocator. If Allocator::pointer is a typedef to a type idependent of Allocator the independency is ensured.
> In addition we could make iterator depend on Allocator::void_pointer and use pointer_traits<>::rebind.
> Am I missing something?
If the node contains a pointer to node, then to work out the type of
the pointer, you need to know the type of the node. But you can't know
that until you know the type of the pointer. For example:
template <typename NodePtr>
How do you write the node typedef? What's the ??? parameter in:
typedef typename node<
typename Allocator::template rebind<???>::other::pointer
But if you use allocator:
template <typename Allocator>
typedef node<Allocator> node_type;
IIRC C++0x is going to introduce a trait for this purpose, so we'll be
able to write something like:
template <typename VoidPtr>
convert_pointer<VoidPtr, node> node_ptr;
But we can't do that until the trait is available for current custom
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk