cpp/ranges/iota view/iterator

@1@ The return type of. The name of this class (shown here as ) is unspecified.

@2@ The exposition-only alias template calculates the difference type for both iterator types and integer-like types.
 * If is not an integral type, or if it is an integral type and  is greater than, then  is.
 * Otherwise, is a signed integer type of width greater than the width of  if such a type exists.
 * Otherwise, is one of the widest integral types, and  is an unspecified signed-integer-like type of width not less than the width of . It is unspecified whether  models  in this case.

@3@ The exposition-only concept specifies that a type is, and pre- and post-  for the type have common meaning.

@4@ The exposition-only concept specifies that a type is both  and, and , , , and  among the type and its different type have common meaning.

Semantic requirements
@3@ Type models  only if  satisfies  and all concepts it subsumes are modeled, and given equal objects  and  of type :
 * If and  are in the domain of both pre- and post-  (i.e. they are decrementable), then the following are all :
 * If and  are are in the domain of both pre- and post-  (i.e. they are incrementable), then  is.
 * If and  are are in the domain of both pre- and post-  (i.e. they are incrementable), then  is.
 * If and  are are in the domain of both pre- and post-  (i.e. they are incrementable), then  is.
 * If and  are are in the domain of both pre- and post-  (i.e. they are incrementable), then  is.
 * If and  are are in the domain of both pre- and post-  (i.e. they are incrementable), then  is.

@4@ Let denote. Type models  only if  satisfies  and all concepts it subsumes are modeled, and given such that is reachable from  after  applications of, all following conditions are satisfied:
 * objects and  of type  and
 * value of type ,
 * is equal to.
 * is equal to.
 * is equal to.
 * For any two positive values and  of type, if  is well-defined, then  is equal to.
 * is equal to.
 * If is well-defined, then  is equal to.
 * is equal to.
 * is equal to.
 * is equal to.
 * is equal to.
 * is equal to.
 * is equal to.
 * is.

Member types
Notes: is
 * if models ,
 * if models ,
 * if models, and
 * otherwise.

However, it only satisfies if  models, and does not satisfy  otherwise.

Data members
Typical implementation of this iterator type holds one data member of type (shown here as ): the value used for dereferencing.