据我所知,将左值绑定到右值引用是无效的。其次,左值表达式可以通过地址运算符 (&) 作为前缀来识别
如果这两个句子在以下代码中是正确的,我有点麻烦:
#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();
}
我哪里错了?