https://gcc.gnu.org/bugzilla/show_bug.cgi?id=64814

--- Comment #5 from Anquietas <alex-j-a at hotmail dot co.uk> ---
(In reply to Jonathan Wakely from comment #3)
> However, I don't see any requirement in the standard that says we're
> supposed to do so. All that is required is n assignments, there is no
> guarantee that the input range is also incremented past the last element
> written to.
The closest thing I could find to an up to date copy of the C++11 standard:
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3337.pdf
copy_n is on page 851

"Effects: For each non-negative integer i < n, performs *(result + i) = *(first
+ i)."
Since it's talking about input iterators where (first + n) isn't valid I think
we can interpret this as n applications each of ++first and *first. I don't
know whether the most recent version changed the description though; perhaps if
you could provide a link?

Reply via email to