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.