當我使用C++ 11 auto
時,關於是否將解析爲值或引用的類型推導規則是什麼?C++ 11「auto」semantics
E.g,有時是明確的:
auto i = v.begin(); // Copy, begin() returns an iterator by value
這些都是不太清楚:
const std::shared_ptr<Foo>& get_foo();
auto p = get_foo(); // Copy or reference?
static std::shared_ptr<Foo> s_foo;
auto sp = s_foo; // Copy or reference?
std::vector<std::shared_ptr<Foo>> c;
for (auto foo: c) { // Copy for every loop iteration?
請注意,//指針並不是真的必要。另外,僅僅因爲一個編譯器給出這個輸出並不意味着它符合標準。 ;)在這種情況下,它是正確的,儘管可以給出更準確的解釋(推導的類型是「衰減的」)。 – Xeo 2011-12-17 11:22:38