| 8 | // Precondition: incrementing first eventually leads to last |
| 9 | template <std::input_or_output_iterator Iter> requires std::equality_comparable<Iter> |
| 10 | auto distanceBetween(Iter first, Iter last) |
| 11 | { |
| 12 | std::cout << "Distance determined by linear traversal: "; |
| 13 | std::iter_difference_t<Iter> result{}; |
| 14 | while (first != last) { ++first; ++result; } |
| 15 | return result; |
| 16 | } |
| 17 | |
| 18 | template <std::random_access_iterator Iter> |
| 19 | auto distanceBetween(Iter first, Iter last) |