来自 const std::vector<>& 的 auto对象还是参考?
假设我们有一个具有以下接口的对象:
struct Node_t {
... const std::vector< something >& getChilds() const;
} node;
现在,我使用 auto
变量访问该属性,如下所示:
auto childs = node->getChilds();
childs
的类型是什么? a std::vector<某事>
或对某物的引用?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
childs
的类型将为std::vector
。auto
由与模板类型推导。此处选择的类型与为template 选择的类型相同。 f(T t);
在像f(node->getChilds())
这样的调用中。类似地,
auto&
将为您提供与template 选择的类型相同的类型。 f(T& t);
和auto&&
将为您提供与template 选择的类型相同的类型f(T&&t);
。这同样适用于所有其他组合,例如
auto const&
或auto*
。The type of
childs
will bestd::vector<something>
.auto
is powered by the same rules as template type deduction. The type picked here is the same that would get picked fortemplate <typename T> f(T t);
in a call likef(node->getChilds())
.Similarly,
auto&
would get you the same type that would get picked bytemplate <typename T> f(T& t);
, andauto&&
would get you the same type that would get picked bytemplate <typename T> f(T&& t);
.The same applies for all other combinations, like
auto const&
orauto*
.它是一个
std::vector
。如果你想要一个引用,你可以这样做:那当然是一个常量引用。
It's an
std::vector<something>
. If you want a reference, you can do this:That will of course be a const reference.
auto
为您提供std::vector
。您可以指定引用限定符auto &
,也可以使用decltype
:auto
gives youstd::vector<something>
. You can either specify reference qualifierauto &
or, alternatively, you can usedecltype
: