c++ - 为什么他们会对某些初始化列表进行特殊处理,而不是对它们一视同仁?

标签 c++ c++11 auto list-initialization

假设我有一个变量 auto x,我想使用大括号初始化将其初始化为 7,很简单:

auto x {7};

除了我了解到 x 不是一个整数,而是一个初始化列表本身。为什么?委员会决定 auto 应该在单个 auto 值的情况下获取初始化列表的具体原因是什么,或者他们是否希望我们只是意识到这些不应该一起使用。 我似乎想不出我希望将初始化列表存储到 auto 而不是值的可能原因

最佳答案

一个非常实际的答案是,“为什么要选择 int?”或者 double,或者任何带有 int 单参数构造函数的 UDT?通过拒绝推导具体类型,编译器保留了更通用的初始化列表的任何可能应用。

关于c++ - 为什么他们会对某些初始化列表进行特殊处理,而不是对它们一视同仁?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16571725/

相关文章:

c++ - sf::Drawable 和 sf::Transformable 包含 Sprite 、文本和形状的数组

c++ - Boost Program Options 依赖选项

c++ - 初始化并将 map 作为参数传递

c++ - SFINAE 检测类型是否被定义

c++ - 跳过 unordered_map 的第一次迭代

具有多个输出端口的 C++ 管道段 - 类型匹配

c++ - 在 C++ 中使用具有不同数量参数的嵌套宏

c++ - 在 G++ 4.7 的内联函数中定义时找不到 Lambda

c++ - 具有默认值的模板特化

c++ - 当在 C++11 中使用带有两个声明的 auto 时会发生什么?