eaf1a48583
- Fixed multiple broken links to the documentation. Converted some of the links to internal references to the QuickBook documentation. Not all links converted because some of the QuickBook pages are not completely converted. - Renamed utilities.qbk to type_traits.qbk and removed the part duplicated by concept_checking.qbk. - Renamed traits.qbk to iterator_traits.qbk to better disambiguate with other type traits documented in type_traits.qbk. - Converted some of the headings in iterator concepts to sections to be able to give those sections ids. This allows to reference those sections from other places in the documentation. - In order to preserve the more compact pagination of the new sections (i.e. to have multiple sections on one page, like it was with headings) set chunk.section.depth=2 in the docs Jamfile.
56 lines
1.2 KiB
Plaintext
56 lines
1.2 KiB
Plaintext
|
|
[section:iterator_traits Iterator Traits]
|
|
|
|
`std::iterator_traits` provides access to five associated types
|
|
of any iterator: its `value_type`, `reference`, `pointer`,
|
|
`iterator_category`, and `difference_type`. Unfortunately,
|
|
such a "multi-valued" traits template can be difficult to use in a
|
|
metaprogramming context. `<boost/iterator/iterator_traits.hpp>`
|
|
provides access to these types using a standard metafunctions_.
|
|
|
|
[h2 Synopsis]
|
|
|
|
Header `<boost/iterator/iterator_traits.hpp>`:
|
|
|
|
template <class Iterator>
|
|
struct iterator_value
|
|
{
|
|
typedef typename
|
|
std::iterator_traits<Iterator>::value_type
|
|
type;
|
|
};
|
|
|
|
template <class Iterator>
|
|
struct iterator_reference
|
|
{
|
|
typedef typename
|
|
std::iterator_traits<Iterator>::reference
|
|
type;
|
|
};
|
|
|
|
template <class Iterator>
|
|
struct iterator_pointer
|
|
{
|
|
typedef typename
|
|
std::iterator_traits<Iterator>::pointer
|
|
type;
|
|
};
|
|
|
|
template <class Iterator>
|
|
struct iterator_difference
|
|
{
|
|
typedef typename
|
|
detail::iterator_traits<Iterator>::difference_type
|
|
type;
|
|
};
|
|
|
|
template <class Iterator>
|
|
struct iterator_category
|
|
{
|
|
typedef typename
|
|
detail::iterator_traits<Iterator>::iterator_category
|
|
type;
|
|
};
|
|
|
|
[endsect]
|