1[section:concept_checking Concept Checking]
2
3The iterator concept checking classes provide a mechanism for a
4template to report better error messages when a user instantiates the
5template with a type that does not meet the requirements of the
6template. For an introduction to using concept checking classes, see
7the documentation for the boost::concept_check library.
8
9[h2 `iterator_concepts.hpp` Synopsis]
10
11    namespace boost_concepts {
12
13        // Iterator Access Concepts
14
15        template <typename Iterator>
16        class ReadableIteratorConcept;
17
18        template <
19            typename Iterator
20          , typename ValueType = std::iterator_traits<Iterator>::value_type
21        >
22        class WritableIteratorConcept;
23
24        template <typename Iterator>
25        class SwappableIteratorConcept;
26
27        template <typename Iterator>
28        class LvalueIteratorConcept;
29
30        // Iterator Traversal Concepts
31
32        template <typename Iterator>
33        class IncrementableIteratorConcept;
34
35        template <typename Iterator>
36        class SinglePassIteratorConcept;
37
38        template <typename Iterator>
39        class ForwardTraversalConcept;
40
41        template <typename Iterator>
42        class BidirectionalTraversalConcept;
43
44        template <typename Iterator>
45        class RandomAccessTraversalConcept;
46
47        // Interoperability
48
49        template <typename Iterator, typename ConstIterator>
50        class InteroperableIteratorConcept;
51
52    }
53
54[endsect]