#include <iostream> #include <boost/shared_ptr.hpp> using namespace std; class A { public: const shared_ptr<const int> getField () const { return field_; } private: shared_ptr<int> field_; }; void f(const A& a) { auto v = a.getField(); //why auto doesn't a const shared_ptr<const int> here ? v.reset(); //OK: no compile error } int main() { A a; f(a); std::cin.ignore(); } In the above code why does the compiler deduce v's type as shared_ptr<int> and not as const shared_ptr<const int> the type returned by getField?
EDIT: MSVC2010