下面是演示问题的代码:
class X {};
X x;
X&& rvalue_ref = std::move(x);
static_assert(std::is_same<decltype(rvalue_ref), X&&>::value, "Different types"); //To be sure that type is X&&
void func(X&) {
cout << "lvalue reference";
}
void func(X&&) {
cout << "rvalue reference";
}
int main() {
func(rvalue_ref);
}
输出:
lvalue reference
你能解释一下原因吗?我们有一个 X&& 类型的变量和这个类型的重载,但是这个重载没有被调用。