#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
(請參閱評論),我會得到預期的輸出,但這對我來說似乎是錯誤的。如果沒有我將Foo&&
轉換爲Foo&&
,編譯器是否有某些原因不能調用bar(Foo &&)
?關於r值參考的困惑
在此先感謝!
'Foo && f'中的'f'是一個左值,因爲它被命名,所以它不會直接綁定到右值引用。 – ildjarn