我试图了解左值如何绑定到右值引用。考虑这段代码:
#include <iostream>
template<typename T>
void f(T&& x) {
std::cout << x;
}
void g(int&& x) {
std::cout << x;
}
int main() {
int x = 4;
f(x);
g(x);
return 0;
}
虽然对 f() 的调用很好,但对 g() 的调用会产生编译时错误。这种绑定仅适用于模板吗?为什么?我们可以在没有模板的情况下以某种方式做到这一点吗?