25 Iterators library [iterators]

25.5 Iterator adaptors [predef.iterators]

25.5.5 Common iterators [iterators.common]

25.5.5.2 Associated types [common.iter.types]

The nested typedef-names of the specialization of iterator_traits for common_iterator<I, S> are defined as follows.
  • iterator_concept denotes forward_iterator_tag if I models forward_iterator; otherwise it denotes input_iterator_tag.
  • iterator_category denotes forward_iterator_tag if the qualified-id iterator_traits<I>​::​iterator_category is valid and denotes a type that models derived_from<forward_iterator_tag>; otherwise it denotes input_iterator_tag.
  • Let a denote an lvalue of type const common_iterator<I, S>.
    If the expression a.operator->() is well-formed, then pointer denotes decltype(a.operator->()).
    Otherwise, pointer denotes void.