cpp/ranges/slide view

@1@ is a range adaptor that takes a  and a number  and produces a view whose m$th$ element (a "window") is a view over the m$th$ through (m + n - 1)$th$ elements of the original view.

@@ Let be the size of the original view. Then the size of produced view is:
 * , if ,
 * otherwise, and the resulting view is empty.

@2@ The name denotes a. Given subexpressions and, the expression  is expression-equivalent to.

If is not greater than, the behavior is undefined.

always models, and models , , or if adapted  type models the corresponding concept.

Data members
Typical implementations of hold from two to four non-static data members:
 * the underlying of type  (shown here as  for exposition only),
 * the "window size" of type (shown here as  for exposition only).
 * the std-like object (shown here as for exposition only). May be present only if  models the  helper concept.
 * the std-like object (shown here as for exposition only). May be present only if  models the  helper concept.

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