Daily bit(e) of C++ | std::copy, std::copy_backward
Daily bit(e) of C++ #367, Copying overlapping ranges using std::copy and std::copy_backward.
When copying ranges, we need to take care when the input and output ranges overlap.
For std::copy, only the tail of the destination range can overlap the source range; for std::copy_backward, only the head of the destination range can overlap the source range.