首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >‘`const auto`有什么意义吗?

‘`const auto`有什么意义吗?
EN

Stack Overflow用户
提问于 2011-02-22 03:48:43
回答 3查看 71.2K关注 0票数 89

我认为这个问题已经足够清楚了。auto关键字是自动检测常量,还是总是返回非常量类型,即使有,例如。函数的两个版本(一个返回const,另一个不返回)。

仅供记录,我确实在我的for循环之前使用了const auto end = some_container.end(),但我不知道这是否是必要的,甚至不同于普通的auto

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-02-22 03:57:26

也许你混淆了const_iteratorconst iterator。第一个遍历const元素,第二个根本不能迭代,因为您不能在它上面使用operators ++和--。

请注意,您很少从container.end()迭代。通常,您将使用:

代码语言:javascript
复制
const auto end = container.end();
for (auto i = container.begin(); i != end; ++i) { ... }
票数 37
EN

Stack Overflow用户

发布于 2011-02-22 11:16:04

代码语言:javascript
复制
const auto x = expr;

不同于

代码语言:javascript
复制
auto x = expr;

作为

代码语言:javascript
复制
const X x = expr;

不同于

代码语言:javascript
复制
X x = expr;

所以要经常使用const autoconst auto&,就像你没有auto一样。

重载解析不受返回类型的影响:左值x上的const或no const不会影响expr中调用的函数。

票数 105
EN

Stack Overflow用户

发布于 2011-02-22 03:58:10

假设您有两个模板:

代码语言:javascript
复制
template<class U> void f1( U& u );       // 1
template<class U> void f2( const U& u ); // 2

auto将推导出类型,并且变量将具有与参数u相同的类型(如在// 1情况下),const auto将使变量具有与参数u// 2情况下相同的类型。所以const auto只是强制使用const限定符。

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5070521

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档