Boost logo

Boost :

From: Neal Becker (ndbecker2_at_[hidden])
Date: 2007-09-25 10:35:39


Thorsten Ottosen wrote:

> Neal Becker skrev:
>> boost::size of a std::list gives:
>>
>> /usr/local/src/boost.hg/boost/range/size.hpp:28: error: no match
>> for 'operator-' in 'boost::end [with T = std::list<double,
>> std::allocator<double> >](((const std::list<double,
>> std::allocator<double>
>>> &)((const std::list<double, std::allocator<double> >*)r))) -
>>> boost::begin
>> [with T = std::list<double, std::allocator<double> >](((const
>> std::list<double, std::allocator<double> >&)((const std::list<double,
>> std::allocator<double> >*)r)))'
>>
>> I would hope that boost::size (type with member .size()) would use the
>> member .size().
>
> Use boost::distance( my_list );
>
> size() was changed to reflect O(1) complexity.
>
> -Thorsten

Sorry, I don't think that was my question. boost::size(T t) has a default
implementation using t.end()-t.begin() (in boost/range/size.hpp). I can
supply my own implementation of size(std:list<T>). I was wishing that
boost::size would implement boost::size using the member .size() if it
exists.

Perhaps this could be done with enable_if?


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk