<分区>
Possible Duplicate:
Where and why do I have to put the “template” and “typename” keywords?
我正在阅读 this所以我现在正在查看 std::forward
的实现和 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<...>
)。在这种情况下,这意味着什么?