Function Subspace :: sus :: mem :: forward
Move from non-reference values but pass through and preserve references.
Typically, passing an rvalue reference will convert it to an lvalue. Using
sus::forward<T>(t)
on an rvalue reference T&& t
will preserve the rvalue
nature of the reference. Other reference types are also forwarded unchanged.
The type argument must be provided, and should be the T
from a T&&
typename in order to properly preserve the reference type of the object of
type T&&
.
Universal references and moves
In the common case, when you want to receive a parameter that will be moved,
it should be received by value. However, library implementors sometimes with
to receive an rvalue reference. If you find yourself needing to
move()
from a universal reference instead of
forward()
, such as to construct a
value type T
from a universal reference T&&
without introducing a copy,
use IsMoveRef
to constrain the universal reference
to be an rvalue, and use move()
instead of
forward()
.