auto from const std::vector<>&; object or reference?

前端 未结 3 1445
没有蜡笔的小新
没有蜡笔的小新 2020-12-18 19:01

suppose we have an object with the following interface:

struct Node_t {
 ... const std::vector< something >& getChilds() const;
 } node;

相关标签:
3条回答
  • 2020-12-18 19:24

    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*.

    0 讨论(0)
  • 2020-12-18 19:26

    It's an std::vector<something>. If you want a reference, you can do this:

    auto & childs = node->getChilds();
    

    That will of course be a const reference.

    0 讨论(0)
  • 2020-12-18 19:41

    auto gives you std::vector<something>. You can either specify reference qualifier auto & or, alternatively, you can use decltype:

    decltype( node->getChilds() ) childs = node->getChilds();
    
    0 讨论(0)
提交回复
热议问题