引用折叠

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 第五版

发布了140 篇原创文章 · 获赞 28 · 访问量 18万+

猜你喜欢

转载自blog.csdn.net/qq_16097611/article/details/78944026