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