Neil Groves wrote:
The mixing of differing integer types makes the search algorithms defective.
The int type is signed, and typically <= the size of std::size_t yet these
are mixed. The skip table uses ints, but std::size_t values are inserted.
Certainly there should not be any c style casts. It would seem logical to
use the boost::iterator_difference::type instead. Currently these
algorithms are defective albeit under unusual conditions.
There are numerous invocations of non-member functions that should use
qualified calls to avoid accidental argument-dependent lookup.
range_const_iterator has been deprecated in favour of
range_iterator
The Range versions of the functions should provide a non-const reference
version since there are no requirements for the interoperability of
range_iterator and range_iterator although they normally
exist..