知识卡片
显式初始化惯用法
内容
auto 可能保存表达式返回的代理对象,而非程序员想要的值;如 vector 的元素引用代理,源容器销毁后可能悬垂。把 static_cast 或目标类型构造写进初始化表达式,可以明确所需值类型,再让 auto 推导,避免隐藏生命周期依赖。
参考来源
- 位置:《Effective Modern C++》第2章《auto》,条款六: auto 推导若非己愿,使用显式类型初始化惯用法(源文件:_epub-src/EPUB/text/ch003.xhtml)
- 结论依据:原文以不可见代理类说明推导类型不一定是目标值,给出显式初始化类型作为补救。
- 原始内容:不可见的代理类可能会使 auto 从表达式中推导出“错误的”类型 显式类型初始器惯用法强制 auto 推导出你想要的结果