请看下面的简单代码:
class Foo
{
public:
Foo(){}
~Foo(){}
Foo(const Foo&){}
Foo& operator=(const Foo&) { return *this; }
};
static Foo g_temp;
const Foo& GetFoo() { return g_temp; }
我试图这样使用auto
:
auto my_foo = GetFoo();
我希望这my_foo
将是对的常量引用Foo
,这是函数的返回类型。但是,类型auto
为Foo
,而不是引用。此外,my_foo
通过复制创建g_temp
。这种行为对我而言并不那么明显。
为了获得对的引用Foo
,我需要这样编写:
const auto& my_foo2 = GetFoo();
auto& my_foo3 = GetFoo();
问题:为什么auto
推断出GetFoo
作为对象而不是引用的返回类型?