| Home | Libraries | People | FAQ | More

### Function template `distance()`

The `boost::iterators::distance` function template is an adapted version of `std::distance` for the Boost iterator traversal concepts.

##### Header

    <boost/iterator/distance.hpp>

##### Synopsis

    template <typename Iterator>
    constexpr typename iterator_difference<Iterator>::type
    distance(Iterator first, Iterator last);

##### Description

Computes the (signed) distance from `first` to `last`.

##### Requirements

`Iterator` should model Single Pass Iterator.

##### Preconditions

If `Iterator` models Random Access Traversal Iterator, `[first, last)` or `[last, first)` should be valid; otherwise `[first, last)` should be valid.

##### Complexity

If `Iterator` models Random Access Traversal Iterator, it takes constant time; otherwise it takes linear time.

##### Notes

- This function is not a customization point and is protected against being found by argument-dependent lookup (ADL).
- This function is `constexpr` only in C++14 or later.

##### Acknowledgements

Contributed by Michel Morin.