move
Bezwarunkowo rzutuje swój argument na odwołanie rvalue, a tym samym sygnalizuje, że może być przeniesione, jeśli jego typ umożliwia przenoszenie.
template<class Type>
typename remove_reference<Type>::type&& move(Type&& Arg) noexcept;
Parametry
Parametr |
Opis |
---|---|
Type |
Typ wywnioskowany z typu argumentu przekazanego w Arg, wraz z regułami zwijania odwołania. |
Arg |
Argument do rzutowania.Chociaż typ Arg wydaje się być określony jako odwołanie rvalue, move również akceptuje argumenty lvalue, ponieważ odwołania lvalue można powiązać z odwołaniami rvalue. |
Wartość zwracana
Arg jako odwołanie rvalue, niezależnie od tego, czy jego typ jest typem odwołania.
Uwagi
Argument szablonu Type nie ma być jawnie określony, ale wnioskowany z typu wartości przekazanej w Arg.Typ Type jest następnie korygowany według reguł zwijania odniesienia.
move nie przenosi swojego argumentu.Zamiast tego, rzutując bezwarunkowo swój argument — który może być lvalue — na odwołanie rvalue, pozwala następnie kompilatorowi przenieść, zamiast kopiować, wartość przekazywaną w Arg, jeśli jego typ umożliwia przenoszenie.Jeżeli jego typ nie umożliwia przenoszenia, jest on zamiast tego kopiowany.
Jeśli wartość przekazywana w Arg to lvalue — to znaczy, że ma on nazwę lub można pobrać jego adres — zostaje unieważniony po przeniesieniu.Nie odwołuj się do wartości przekazanej w Arg przez jego nazwę lub adres po przeniesieniu.
Wymagania
Nagłówek: <utility>
Przestrzeń nazw: std