当我使用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