#include <iostream>
class Foo { };
Foo createFoo() { return Foo(); }
void bar(Foo &&) { std::cout << "in bar(Foo &&)\n"; }
void bar(Foo const &) { std::cout << "in bar(Foo const &)\n"; }
void baz(Foo &&f) {
std::cout << "in baz, ";
bar(f);
// bar(std::move(f));
}
int main()
{
baz(createFoo());
return 0;
}
我的预期输出是:in baz, in bar(Foo &&)
,但我得到:in baz, in bar(Foo const &)
。如果我将调用切换到bar
(参见评论),我会得到预期的输出,但这对我来说似乎是错误的。bar(Foo &&)
如果没有我将 a 转换Foo&&
为 a ,编译器是否无法调用Foo&&
?
提前致谢!