Компилятор C ++ 11 автоматически знает, когда использовать перемещение и когда использовать обычное назначение. Если в приложении уже определены как обычные операторы присваивания, так и операторы присваивания перемещения, имеет ли смысл / различие явно писать std :: move.
Класс CMyVehicleList имеет функции перемещения и обычного копирования и назначения
class CMyVehicleList
{
public :
CMyVehicleList() {// some code}
CMyVehicleList(const CMyVehicleList& rhs) {// some code}
CMyVehicleList(CMyVehicleList&& rhs) {// some code}
CMyVehicleList operator = (const CMyVehicleList& rhs) {// some code}
CMyVehicleList operator = (CMyVehicleList&& rhs) {// some code}
};
Глобальная функция возвращает объект CMyVehicleList в зависимости от владельца, переданного функции.
MyVehicleList GetVehicleLists(const string& owner)
{
MyVehicleList Temp;
if (owner == "mark")
{
// pupulate MyVehicleList with marks details...
}
else if (owner == "daniel")
{
// pupulate MyVehicleList with daniel details...
}
return Temp
}
В данном сценарии, в чем разница между двумя вызовами
MyVenicalList userlist;
userlist = GetVehicleList("mark");
userlist = std::move(GetVehicleList("mark"));