<p><ttclass="literal"><spanclass="pre">std::iterator_traits</span></tt> provides access to five associated types
of any iterator: its <ttclass="literal"><spanclass="pre">value_type</span></tt>, <ttclass="literal"><spanclass="pre">reference</span></tt>, <ttclass="literal"><spanclass="pre">pointer</span></tt>,
<ttclass="literal"><spanclass="pre">iterator_category</span></tt>, and <ttclass="literal"><spanclass="pre">difference_type</span></tt>. Unfortunately,
such a "multi-valued" traits template can be difficult to use in a
<p>Because of workarounds in Boost, you may find that these
<aclass="reference"href="../../mpl/doc/index.html#metafunctions">metafunctions</a> actually work better than the facilities provided by
your compiler's standard library.</p>
<p>On compilers that don't support partial specialization, such as
Microsoft Visual C++ 6.0 or 7.0, you may need to manually invoke
<aclass="reference"href="../../type_traits/index.html#transformations">BOOST_BROKEN_COMPILER_TYPE_TRAITS_SPECIALIZATION</a> on the
<ttclass="literal"><spanclass="pre">value_type</span></tt> of pointers that are passed to these metafunctions.</p>
<p>Because of bugs in the implementation of GCC-2.9x, the name of
<ttclass="literal"><spanclass="pre">iterator_category</span></tt> is changed to <ttclass="literal"><spanclass="pre">iterator_category_</span></tt> on that
compiler. A macro, <ttclass="literal"><spanclass="pre">BOOST_ITERATOR_CATEGORY</span></tt>, that expands to
either <ttclass="literal"><spanclass="pre">iterator_category</span></tt> or <ttclass="literal"><spanclass="pre">iterator_category_</span></tt>, as
appropriate to the platform, is provided for portability.</p>
Generated by <aclass="reference"href="http://docutils.sourceforge.net/">Docutils</a> from <aclass="reference"href="http://docutils.sourceforge.net/rst.html">reStructuredText</a> source.