私が知っていることによると、左辺値を右辺値参照にバインドすることは無効です。そして第二に、左辺値式は、アドレス-of演算子(&)によって接頭辞を付けることができるという事実によって認識できます。
この2つの文が次のコードで正しい場合、私は少し困っています。
#include<iostream>
struct Foo
{
Foo(Foo&& other)
{
std::cout << "move ctor called";
}
Foo(const Foo& other)
{
std::cout << "copy ctor called";
}
Foo(){}
};
Foo return_foo()
{
Foo f;
return f;
}
void main()
{
Foo f = return_foo(); // Move ctor is called, but return_foo() is a lvalue ??
std::cin.ignore();
}
私が間違っているところは?