我有这种情况:
struct A {};
void foo(A& a) {};
void boo(const A& a) {};
void foo(int& a) {};
void boo(const int& a) {};
int main() {
foo(A()); //ok... but why?
boo(A()); //ok
foo(5); //error
boo(5); //ok
return 0;
}
为什么foo(A())
起作用而foo(5)
不起作用?会不会是同样的情况? A()
上的foo(A())
是rvalue
吗?我可以在这种情况下将A()
视为临时对象吗?