template<typename T>
void print(T& t)
{
cout << "lvalue" << endl;
}
template<typename T>
void print(T&& t)
{
cout << "rvalue" << endl;
}
template<typename T>
void TestForward(T&& v)
{
print(v);
print(std::forward<T>(v));
print(std::move(v));
}
int main()
{
int x = 1;
TestForward(1);
TestForward(x);
TestForward(std::forward<int>(x));
std::cout << "Hello World!\n";
}
lvalue
rvalue
rvalue
lvalue
lvalue
rvalue
lvalue
rvalue
rvalue
Hello World!
原文:https://www.cnblogs.com/manongdashu/p/11250587.html