La mayoría de las veces que veo std::move
publicado aquí, es hacer referencia a la <utility>
versión.
El std::move
en<algorithm>
realidad hace lo que su nombre sugiere, movimiento , mientras que el std::move
en<utility>
proyecta su argumento a una xValue, que es básicamente un paso de preprocesamiento para finalmente mover el xValue en un valor-I. Así que no es algo confuso para ambos ser identificado move
cuando la funcionalidad de cada uno es diferente?
Así que no es algo confuso para ambos de estos para ser nombrado movimiento?
Puede ser confuso, especialmente aquellos que no están acostumbrados a los idiomas que soporta la sobrecarga. Es cierto que las directrices de programación por lo general desalientan sobrecargas con significados distintos.
Pero también no es muy difícil de aprender que hay dos funciones con el mismo nombre, aunque esto es subjetivo. Las diferentes listas de argumentos proporcionan un contexto suficiente para reconocer fácilmente el uno del otro.
¿Por qué hay un std :: movimiento en ambos y
Debido a que los diseñadores del lenguaje optó por utilizar el mismo nombre para ambas funciones.
std::move
es una manera muy concisa de expresar ambas funciones. El de <algorithm>
es complementaria a std::copy
partir de la misma cabecera.
mientras que el std :: calientes y los yesos su argumento a una xValue, que es básicamente un paso de preprocesamiento para finalmente mover
Al describir lo que hace la función no es la única cosa que el nombre de la función se puede expresar. En este caso, el nombre expresa la intención del programador que utiliza la función: El programador tiene la intención de pasar de la lvalue argumento - si es posible.
Esto es algo que los programadores pueden potencialmente tenga que escribir con bastante frecuencia; por lo tanto hay una necesidad de nombre muy corto.