c++0x增加了右值引用,有些疑问
比如:
template< class T >
T&& move( T&& t ) // typename std::remove_reference<T>::type
{
return t;
}
template <class T> swap(T& a, T& b)
{
T tmp(std::move(a));
a = std::move(b);
b = std::move(tmp);
}
问:
1、右值引用变量初始化的时候,只能是右值(表达式),但是move函数的参数也声明T&& t,确可以接受左值(引用)和右值,[color=#FF0000]如果实参是左值传入[/color],t是怎样完成初始化的过程?
2、还有move返回的是右值引用,
int a = move(5); 与 int&& a = move(5); 有什么区别?
请高手指点下关于右值引用的本质。