Семантика "auto" в C++11

Когда я использую в C++11 auto, каковы правила вычитания типов в отношении того, будет ли он разрешаться в значение или ссылку?

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?
70
задан Alex B 17 December 2011 в 05:55
поделиться