forward
Podmíněně přetypuje svůj argument na odkaz rvalue, pokud je argument hodnota rvalue nebo odkaz rvalue.Tím se období hodnota rvalue argumentu na funkci předání za účelem maximální podpory předávání.
template<class Type> // accepts lvalues
Type&& forward(typename remove_reference<Type>::type& Arg)
template<class Type> // accepts everything else
Type&& forward(typename remove_reference<Type>::type&& Arg) noexcept
Parametry
Parametr |
Popis |
---|---|
Type |
Typ hodnoty předané v Arg, který může být jiný než typ Arg.Obvykle určeno argumentem šablony funkce předávání. |
Arg |
Argument, který chcete přetypovat. |
Vrácená hodnota
Vrátí odkaz rvalue na Arg, pokud hodnota předaná v Arg byla původně rvalue nebo odkaz na hodnotu rvalue; v opačném případě vrátí Arg bez změny jeho typu.
Poznámky
Je nutné zadat explicitní argument šablony pro volání forward.
forward nepředává svůj argument.Místo toho forward podmíněně přetypuje svůj argument na odkaz rvalue a umožňuje kompilátoru provést řešení přetížení se znalostí původního typu předaného argumentu.Viditelný typ argumentu pro funkci předání může být jiný než jeho původní typ, například pokud je jako argument pro funkci použita hodnota rvalue a je navázána na název parametru. S názvem se z ní stává hodnota lvalue bez ohledu na to, zda daná hodnota skutečně existuje jako hodnota rvalue. forward následně obnoví vlastnost rvalue argumentu.
Obnovení vlastnosti rvalue původní hodnoty argumentu za účelem řešení přetížení se označuje jako dokonalé předávání.Dokonalé předávání umožňuje funkci šablony přijmout argument některého typu odkazu a obnovit jeho vlastnost rvalue, když je nezbytná pro správné řešení přetížení.Pomocí dokonalého předávání můžete zachovat sémantiku přesunu pro hodnoty rvalue. Nebude tak nutné poskytovat přetížení pro funkce, které se liší pouze typem odkazu svých argumentů.
Požadavky
Hlavička: <utility>
Obor názvů: std