## __distance_type

    Iterator primitive

- Summary
- Data Type and Member Function Indexes
- Synopsis
- Description
- See Also

### Summary

Determines the type of distance used by an iterator. This function is now obsolete. It is retained in order to include backward compatibility and support compilers that do not include partial specialization.

### Data Type and Member Function Indexes
(exclusive of constructors and destructors)

None

### 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 return 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 take an iterator of a particular type and return 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 first, Iterator last)
    {
      __foo(begin,end,__distance_type(first));
    }

    template <class Iterator, class Distance>
    void __foo(Iterator first, Iterator last, Distance*>
    {
      Distance d = Distance();
      distance(first,last,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: __value_type, __iterator_category, distance, advance

Copyright (c) 1998, Rogue Wave Software, Inc.
Send mail to report errors or comment on the documentation.
OEM Release, June 1998