Scott Meyers在他的《 [[有效的现代C ++:改善C ++ 11和C ++ 14使用的42种特定方法》]]中讨论了在不同上下文中使用auto
。他指出,有时auto
会推断出错误的类型,因为通常情况下,开发人员会使用(可能是在无意识的情况下)隐式转换,如下所示:std::vector<bool> vec = {true, false};
bool a = vec[0]
[像这样使用auto
时:
std::vector<bool> vec = {true, false};
auto a = vec[0]
将a
转换为std::vector<bool>::reference
,因此作者建议在分配作业之前将其转换:
auto a = static_cast<bool>(vec[0])
并且我不明白为什么如果我可以简单地依靠隐式转换,为什么要以这种方式使用auto
和static_cast<>
。我认为也许是要强调一个事实,那就是正在进行转换(要明确指出),但对我而言,这仍然显得有些过头。这种解决方案的优势是什么?
干杯!
Scott Meyers在他的“有效的现代C ++:42种改善C ++ 11和C ++ 14使用的特定方法”中讨论了在不同上下文中使用auto的问题。他指出有时自动扣除不正确的内容...