|
Boost : |
From: Gennaro Prota (gennaro_prota_at_[hidden])
Date: 2003-06-16 13:00:57
Is this of any interest for boost? Some library implementations (for
instance STLport) return a value of container::max_size that doesn't
depend on the corresponding allocator. For instance, for vector<T>
STLport returns:
size_type(-1) / sizeof(T)
As a result, if one uses his own allocator which has, say, a maximum
size = 255, there's no hope that the user of vector can see the limit.
Would something like this be ok?
template <typename T>
typename T::size_type max_size(const T& t)
{
// Note that there's no requirement for a container's
// size_type to match its allocator size_type.
// There is for basic_string.
//
typedef typename T::allocator_type allocator_type;
const typename allocator_type::size_type max_alloc =
t.get_allocator().max_size();
const typename T::size_type max_cont = t.max_size();
return max_alloc < max_cont? max_alloc : max_cont;
}
Genny.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk