我正在阅读这篇文章,所以我现在正在研究std::forward
and的实现std::move
:
// TEMPLATE FUNCTION forward
template<class _Ty> inline
_Ty&& forward(typename identity<_Ty>::type& _Arg)
{ // forward _Arg, given explicitly specified type parameter
return ((_Ty&&)_Arg);
}
// TEMPLATE FUNCTION move
template<class _Ty> inline
typename tr1::_Remove_reference<_Ty>::_Type&&
move(_Ty&& _Arg)
{ // forward _Arg as movable
return ((typename tr1::_Remove_reference<_Ty>::_Type&&)_Arg);
}
我想我明白了整个故事,但我不明白typename
模板定义外部的使用(template<...>
)。在这种情况下是什么意思?