1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
// Rvalue reference
void rvalueRef(int&& param) {
std::cout << "Rvalue reference\n";
}
// Universal reference
template<typename T>
void universalRef(T&& param) {
std::cout << "Universal reference\n";
}
int main() {
int x = 42;
// rvalueRef(x); // Error: x is an lvalue
rvalueRef(42); // OK: 42 is an rvalue
universalRef(x); // OK: x is an lvalue
universalRef(42); // OK: 42 is an rvalue
return 0;
}
Back to universal_reference