先说结论:
示例:
先看一个简单的示例,注意他们的输出结果
- #include <iostream>
-
- void Print(int &a) {
- std::cout << "int&: " << a << std::endl;
- }
-
- void Print(int &&a) {
- std::cout << "int&&: " << a << std::endl;
- }
-
- template<typename T>
- void move_func(T &&a) {
- Print(std::move(a));
- }
-
-
- template<typename T>
- void forward_func(T &&a) {
- Print(std::forward<T>(a));
- }
-
- int main() {
- int arg = 10;
-
- move_func(arg); /* arg is an lvalue */
- // int&&: 10
-
- move_func(25); /* 25 is an rvalue */
- // int&&: 25
-
- forward_func(arg); /* arg is an lvalue */
- // int&: 10
-
- forward_func(25); /* 25 is an rvalue */
- // int&&: 25
-
- return 0;
- }
-
-