**Section:** 28.6.1 [alg.copy], 28.6.10 [alg.reverse] **Status:** C++14
**Submitter:** Nikolay Ivchenkov **Opened:** 2011-03-02 **Last modified:** 2016-02-10

**Priority: **Not Prioritized

**View all other** issues in [alg.copy].

**View all issues with** C++14 status.

**Discussion:**

In the description of

`std::reverse`*Effects*: For each non-negative integer`i <= (last - first)/2`, applies`iter_swap`to all pairs of iterators`first + i`,`(last - i) - 1`.should be changed to

*Effects*: For each non-negative integer`i`, applies**<**(last - first)/2`iter_swap`to all pairs of iterators`first + i`,`(last - i) - 1`.Here

`i`shall be strictly less than`(last - first)/2`.In the description of

`std::copy_if`*Returns*paragraph is missing.

*[2011-03-02: Daniel drafts wording]*

**Proposed resolution:**

Modify 28.6.10 [alg.reverse] p. 1 as indicated:

1

*Effects*: For each non-negative integer`i <`, applies~~=~~(last - first)/2`iter_swap`to all pairs of iterators`first + i`,`(last - i) - 1`.Add the following

*Returns*element after 28.6.1 [alg.copy] p. 9:template<class InputIterator, class OutputIterator, class Predicate> OutputIterator copy_if(InputIterator first, InputIterator last, OutputIterator result, Predicate pred);

8

*Requires*: The ranges`[first,last)`and`[result,result + (last - first))`shall not overlap.9

*Effects*: Copies all of the elements referred to by the iterator`i`in the range`[first,last)`for which`pred(*i)`is true.??

*Returns*: The end of the resulting range.10

*Complexity*: Exactly`last - first`applications of the corresponding predicate.11

*Remarks*: Stable.