請看看下面的簡單代碼:C++ 11 auto:如果它獲得一個常量引用呢?
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
的返回類型爲對象,而不是一個參考?
你使用什麼編譯器? –
VC++ 2010和Intel C++編譯器 – minjang