【发布时间】:2013-06-15 18:09:23
【问题描述】:
我试图了解左值如何绑定到右值引用。考虑这段代码:
#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() 会产生编译时错误。这种绑定仅适用于模板吗?为什么?我们可以在没有模板的情况下以某种方式做到这一点吗?
【问题讨论】: