cpp/ranges/take view

@1@ A range adaptor that represents of the elements from an underlying sequence, starting at the beginning and ending at a given bound. @2@ is a. The expression results in a view that represents the first  elements from. The result is not necessarily a.

is expression-equivalent to (where is  and  is ):


 * , if is a, except that the evaluations of  and  are indeterminately sequenced;
 * , if is a specialization of, std, or  that models both  and , where  is
 * , if is a specialization of ;
 * , if is a specialization of std;
 * , if is a specialization of ;


 * , if is a specialization of  that models both  and ;


 * otherwise,.

In all cases, must model.

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

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