cpp/experimental/ranges/algorithm/copy

Copies elements in the source range ( or ) into the destination range beginning at, starting from the first element in the source range and proceeding to the last one.

@1@ Copies all elements in the range. For each non-negative integer, performs. The behavior is undefined if is within the range. In this case, ranges may be used instead. @2@ Same as, but uses as the source range, as if by  except that  may not be copied. @3@ Only copies the elements for which the predicate returns  when applied to the element's value as projected by the projection. The order of the elements that are copied is preserved. The behavior is undefined if the source and the destination ranges overlap. @4@ Same as, but uses as the source range, as if by  except that ,  and  may not be copied.

Return value
A object containing the following two members:
 * The first member, with the tag, is the past-the-end iterator of the source range (that is, an iterator of type that compares equal to the sentinel ).
 * The second member, with the tag, is the past-the-end iterator of the result range.

Complexity
@1@ Exactly assignments. @2@ Exactly assignments. @3@ Exactly applications of the corresponding projection and predicate. @4@ Exactly applications of the corresponding projection and predicate.