forward<T>和forward<T&&>一样吗?
Is forward<T> the same as forward<T&&>?
正在查看 the documentation for std::forward
、
template< class T >
constexpr T&& forward( typename std::remove_reference<T>::type& t ) noexcept;
template< class T >
constexpr T&& forward( typename std::remove_reference<T>::type&& t ) noexcept;
两个函数 return T&&
,其中(如果我错了请纠正我)collapses 到
T&
如果 T
是左值引用
T&&
如果 T
是右值引用,或者如果 T
不是引用
对于可能是引用的任意类型 T
,引用折叠是否总是导致 forward<T>
执行与 forward<T&&>
相同的操作?
如果是这样,是否有任何理由使用 forward<T&&>
?
Does reference collapsing always cause forward<T>
to do the same as forward<T&&>
?
是的。
[I]s there any reason to use forward<T&&>
?
没有
请注意,这是假设视图中仅有的 forward
是您在 std::
中显示的两个重载。
正在查看 the documentation for std::forward
、
template< class T >
constexpr T&& forward( typename std::remove_reference<T>::type& t ) noexcept;
template< class T >
constexpr T&& forward( typename std::remove_reference<T>::type&& t ) noexcept;
两个函数 return T&&
,其中(如果我错了请纠正我)collapses 到
T&
如果T
是左值引用T&&
如果T
是右值引用,或者如果T
不是引用
对于可能是引用的任意类型 T
,引用折叠是否总是导致 forward<T>
执行与 forward<T&&>
相同的操作?
如果是这样,是否有任何理由使用 forward<T&&>
?
Does reference collapsing always cause
forward<T>
to do the same asforward<T&&>
?
是的。
[I]s there any reason to use
forward<T&&>
?
没有
请注意,这是假设视图中仅有的 forward
是您在 std::
中显示的两个重载。