C++11中的std:move是如何实现的,从哪里能看到源代码
C++11中的std::move是怎么实现的,从哪里能看到源代码?
听说是这样的实现的:
测试:
int x=1,y=2;
x=Move(y);
居然可行,那么它是怎么将一个左值转换成右值的?一个右值引用参数能捕获左值?这真奇了怪了。
------解决方案--------------------
比如我可以自己写个
namespace std
{
template <> remove_reference<int> { int type; };
}
虽然这样不合理但确实有可能会有人这么干。
听说是这样的实现的:
templateT>
T&& Move(T&& a)
{
return a;
}
测试:
int x=1,y=2;
x=Move(y);
居然可行,那么它是怎么将一个左值转换成右值的?一个右值引用参数能捕获左值?这真奇了怪了。
------解决方案--------------------
比如我可以自己写个
namespace std
{
template <> remove_reference<int> { int type; };
}
虽然这样不合理但确实有可能会有人这么干。