Effective Modern C++ 笔记 - auto
从概念上来说,auto简单明了,但是它比看起来要微妙一些。
当然,使用它可以节省输入,也可以防止困扰手动类型声明的正确性和性能问题。
但从一个程序员的角度来看,auto的一些类型推断结果,虽然忠实地遵守了规定的算法,但却是错误的。在这种情况下,知道auto推导的结果是很重要的。
5. 尽量用auto
代替显式声明
理由:
- 用
auto
声明的变量一定会被初始化。 lambda
代码可以用auto
或std::function
来保存,用auto
保存的开销更小, 同样道理, 尽量用Lambda
代替std::bind
。
6. 用auto
时小心类型转换问题
比如下面的代码
1 | std::vector<bool> v{true, false, false, true}; |
vector<bool>
通过代理对象来操控指定的位, 用auto时拿到的是代理对象本身而不是bool值.