
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()
Copyright (c) 1994-2006 Rogue Wave Software, a Quovadx Division.
Licensed under the Apache License, Version 2.0.
Contact Rogue Wave about documentation or support issues. You can also seek help from other developers through the Apache stdcxx community (see below).