std::move 和 std::forward

std::move

C++11引入了名为move的库函数,该函数可以获得绑定到左值上的右值引用,定义在头文件<utility>中。

该函数的定义如下:

template <typename T>
typename remove_reference<T>::type&& move(T&& t)
{
    return static_cast<typename remove_reference<T>::type&&>(t);
}

由代码可以看出,move是一个模板函数,模板函数的模板参数由编译器根据函数实参来进行推导,因此接下来我们从不同类型函数参数来推断一下模板函数的实例化结果。

1、实参为左值

int i = 0;
std::move(i);
可知,传递给move的实参是一个左值,因此推断出T的类型为 int&,模板函数实例化为

remove_reference<int&>::type&& move(int& && t)
{
    return static_cast<remo
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值