本文共 708 字,大约阅读时间需要 2 分钟。
std::forward
右值引用类型是独立于值的,一个右值引用参数作为函数的形参,在函数内部再转发该参数的时候它已经变成一个左值
,并不是他原来的类型。 如果我们需要一种方法能够按照参数原来的类型转发到另一个函数,这种转发类型称为完美转发。
templatevoid print(T& t){ cout << "lvalue" << endl;}template void print(T&& t){ cout << "rvalue" << endl;}template void TestForward(T && v){ cout<<"TestForward &&"< (v)); print(std::move(v));}template void TestForward(T & v){ cout<<"TestForward &"< (v)); print(std::move(v));}int main(){ TestForward(1); int x = 1; TestForward(x); TestForward(std::forward (x)); return 0;}
输出:
TestForward && lvalue rvalue rvalue TestForward & lvalue rvalue rvalue TestForward && lvalue rvalue rvalue转载地址:http://fbwmi.baihongyu.com/