Здравствуйте, B0FEE664, Вы писали:
BFE>Да, это так. Используется std::move_backward. Об этом я узнал только сейчас (или я забыл о том, что это знал), когда полез в исходники и посмотрел. В работе я этого не замечал, что, кстати, говорит в пользу move семантики.
Конечно, перемудрили они с этими мувами. Теперь в стандарной библиотеке присутствуют два совершенно разных мува: один в алгоритмах:
https://en.cppreference.com/w/cpp/algorithm/move, другой — в утилитах:
https://en.cppreference.com/w/cpp/utility/move. С одинаковм, именем, в одном и том же пространстве имен — оба std::move — но совершенно разной семантикой.
Я бы на их месте постарался для вот этого второго move подобрать какое-нибудь более подходящее название. Например, make_rvalue, или rvalue_cast. С учетом того, что на самом деле эта функция ничего никуда не перемещает. Что часто вводит в заблуждение тех, кто только начинает вникать в имплементацию мув семантики.