Так не смешивает ли их имя с именем move?
Это может сбивать с толку, особенно тех, кто не привык к языкам, поддерживающим перегрузку. Это правда, что руководящие указания по программированию обычно препятствуют перегрузкам с разными значениями.
Но также не очень трудно понять, что есть две функции с одинаковым именем, хотя это и субъективно. Различные списки аргументов предоставляют достаточный контекст для легкого распознавания одного из другого.
Почему в обоих случаях есть std :: move и
Поскольку разработчики языка выбрал использование одного и того же имени для обеих функций.
std::move
- очень краткий способ express обеих функций. Тот, что в <algorithm>
, дополняет std::copy
из того же заголовка.
, тогда как std :: move in переводит свой аргумент в значение xvalue, которое в основном является просто шагом предварительной обработки для последующего перемещения
Описание того, что делает функция, не единственное, что может дать название функции express. В этом случае имя выражает намерение программиста, использовавшего функцию: программист намеревается перейти от аргумента lvalue - если это возможно.
Это то, что программистам может понадобиться писать довольно часто; при этом возникает необходимость в очень коротком имени.