- 产生条件:一个右值引用参数作为函数的形参,在函数内部再转发该参数的时候它已经变成一个左值------>std::move和std::forward应运而生;
- move vs forward:move----->无条件转换为右值;forward----->保持原参数属性,即完美转发;
- 举例说明:
#ifndef _TRANS_H__
#define _TRANS_H__
#include "stdafx.h"
class CTrans
{
public:
template<typename T>
void Print(T& t)
{
printf("lVaule\n");
}
template<typename T>
void Print(T&& t)
{
printf("rValue\n");
}
template<typename T>
void Forward(T&& t)
{
Print(t);//左值(规则)
Print(std::move(t));//右值
Print(std::forward<T>(t));//保持原属性
}
public:
CTrans() = default;
~CTrans() = default;
};
#end