Does not inherit
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.
#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*);
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.
Other iterator primitives: __iterator_category(), distance(), advance()