Apache C++ Standard Library Reference Guide

## __distance_type()

    Does not inherit

- Local Index
- Summary
- Synopsis
- Description
- See Also

### Local Index

No Entries

### Summary

A function that determines the type of distance used by an iterator.

> NOTE -- This function is now obsolete. It is retained here to
> support compilers that do not include partial specialization, but
> will be dropped in a subsequent release.

### Synopsis

    #include <iterator>
    template <class Category, class T, class Distance,
              class Pointer, class Reference>
    inline Distance*
           __distance_type(const iterator<Category, T,
                             Distance, Pointer, Reference>&);
    template <class T>
    inline ptrdiff_t* __distance_type(const T*);

### Description

The `__distance_type()` family of function templates returns a pointer to a value that is of the same type as that used to represent a distance between two iterators. The first of these takes an iterator of a particular type and returns a pointer to a default value of the difference_type for that iterator. The `T*` form of the function returns `ptrdiff_t*`.

Generic algorithms use this function to create local variables of the correct type. The `__distance_type()` functions are typically used like this:

    template <class Iterator>
    void foo(Iterator start, Iterator finish)
    {
      __foo(begin,end,__distance_type(first));
    }

    template <class Iterator, class Distance>
    void __foo(Iterator start, Iterator finish, Distance*>
    {
      Distance d = Distance();
      distance(start,finish,d);
      ...
    }

The auxiliary function template allows the algorithm to extract a distance type from the first iterator and then use that type to perform some useful work.

### See Also

Other iterator primitives: `__iterator_category()`, `distance()`, `advance()`