Tengo un poco de curiosidad acerca de la nueva función std :: move() que acaba de agregarse al nuevo estándar de C++.La diferencia entre el tipo de fundición y el uso de std :: move()?
terminado de leer un artículo sobre él, y se informó que la definición de la función es
namespace std {
template <class T>
inline typename remove_reference<T>::type&& move(T&& x)
{
return x;
}
}
esto parece que no tiene ninguna diferencia entre llamar std :: viaje y necesita usar la fundición.
Por ejemplo aquí,
class NPC{
int m_number1;
int m_number2;
public:
NPC() : m_number1(1), m_number2(2) {
cout << "NPC Constructor called!" << endl;
}
NPC(NPC&& _npc) : m_number1(_npc.m_number1), m_number2(_npc.m_number2) {
_npc.m_number1 = 0;
_npc.m_number2 = 0;
cout << "NPC Move Constructor called!" << endl;
}
};
int main() {
NPC n1;
NPC n2 = std::move(n1);
cout << "----------------" << endl;
NPC n3;
NPC n4 = (NPC&&)n3;
return 0;
}
Es correcto pensar que prácticamente no hay diferencia? Bueno, estoy bastante seguro de que estoy en lo correcto, pero también sé que tener demasiada confianza siempre es contraproducente.
¡Gracias de antemano!
Gracias! esto me ayuda mucho! –