我认为问题很清楚.将auto关键字自动检测常量性,或总是返回一个非const类型,即使有如.函数的两个版本(一个返回const,另一个不返回).
仅仅为了记录,我确实const auto end = some_container.end()在我的for循环之前使用,但我不知道这是否必要或甚至与正常情况不同auto.
ant*_*kos 89
const auto x = expr;
Run Code Online (Sandbox Code Playgroud)
不同于
auto x = expr;
Run Code Online (Sandbox Code Playgroud)
如
const X x = expr;
Run Code Online (Sandbox Code Playgroud)
不同于
X x = expr;
Run Code Online (Sandbox Code Playgroud)
所以使用const auto和const auto&很多,就像你没有的那样auto.
重载决策不受返回类型的影响:const或者const左值上的no x不会影响调用的函数expr.
Ben*_*oit 28
也许你是混乱const_iterator和const iterator.第一个迭代const元素,第二个不能迭代,因为你不能使用operators++和 - .
请注意,你很少从迭代中迭代container.end().通常你会使用:
const auto end = container.end();
for (auto i = container.begin(); i != end; ++i) { ... }
Run Code Online (Sandbox Code Playgroud)
考虑您有两个模板:
template<class U> void f1( U& u ); // 1
template<class U> void f2( const U& u ); // 2
Run Code Online (Sandbox Code Playgroud)
auto将推断类型和变量将具有相同类型作为参数u(如在// 1情况),const auto将会使变量相同类型作为参数u已在// 2情况.所以const auto只需强制const限定符.
| 归档时间: |
|
| 查看次数: |
50784 次 |
| 最近记录: |