[用static_cast <>()声明变量时使用auto的目的是什么]

问题描述 投票:2回答:1

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])

并且我不明白为什么如果我可以简单地依靠隐式转换,为什么要以这种方式使用autostatic_cast<>。我认为也许是要强调一个事实,那就是正在进行转换(要明确指出),但对我而言,这仍然显得有些过头。这种解决方案的优势是什么?

干杯!

Scott Meyers在他的“有效的现代C ++:42种改善C ++ 11和C ++ 14使用的特定方法”中讨论了在不同上下文中使用auto的问题。他指出有时自动扣​​除不正确的内容...

c++ type-conversion auto
1个回答
0
投票
这不一定是对[[所有类型
© www.soinside.com 2019 - 2024. All rights reserved.