suppose we have an object with the following interface:
struct Node_t {
... const std::vector< something >& getChilds() const;
} node;
Now, i access the property with an auto
variable like this:
auto childs = node->getChilds();
what is the type of childs
? a std::vector< something >
or a reference to one?
The type of childs
will be std::vector<something>
.
auto
is powered by the same rules as template type deduction. The type picked here is the same that would get picked for template <typename T> f(T t);
in a call like f(node->getChilds())
.
Similarly, auto&
would get you the same type that would get picked by template <typename T> f(T& t);
, and auto&&
would get you the same type that would get picked by template <typename T> f(T&& t);
.
The same applies for all other combinations, like auto const&
or auto*
.