x& &=x&
x& && = x&
x&& & = x&
x&& && = x&&
例子:
template<typename _Tp>
constexpr typename std::remove_reference<_Tp>::type&&
move(_Tp&& __t) noexcept
{ return static_cast<typename std::remove_reference<_Tp>::type&&>(__t); }
传入的是右值,假设T&&
1.move(T&& && __t) -> move(T&&) 所以模板实例化为T&&右值参数
2.std::remove_reference<_Tp>::type&& ->T&&
3.方法为T&& move(T&&) { return static_cast<T&&>(__T);}
扫描二维码关注公众号,回复:
9958665 查看本文章
传入的是左值,T&
1.move(T& &&__T) -> move(T&) 所以模板实例化为T&左值参数
2.std::remove_reference<_Tp>::type&& ->T&&
3方法为T&& move(T&) { return static_cast<T&&>(__T);}
参考c++ primer 第五版