cpp/ranges/enumerate view

@1@ is a range adaptor that takes a  and produces a view of stds. $th$ element (the tuple) of the resulting sequence holds:
 * the value equal to, which is a zero-based index of the element of underlying sequence, and
 * the reference to the underlying element.

@2@ The name denotes a. Given a subexpression, the expression is expression-equivalent to  for any suitable subexpression.

@3@ Ensures that the reference type of the underlying type can be moved.

models the concepts, , , , , and when the underlying view  models respective concepts.

Data members
Typical implementations of hold only one non-static data member:
 * of type . The name is for exposition only.

Helper templates
This specialization of makes  satisfy  when the underlying view satisfies it.