Sdílet prostřednictvím


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

Viz také

Referenční dokumentace

<utility>

Hodnoty Lvalue a Rvalue