
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?