Twi*_*ard 8 c++ initializer-list language-lawyer
我问是因为auto推断{}是initializer_list。我不知道核心语言像这样依赖标准库中的任何其他类。你可以去掉vectoror array,C++ 仍然可以运行,但是去掉initializer_list它就会崩溃。
你所说的{}(具体来说= {...})是标准所说的复制列表初始化。
是的,在标准的措辞中得到了特别std::initializer_list考虑。
\n\n如果占位符类型说明符的形式为type-constraint ,则使用模板参数推导规则确定替换 T 的
\nauto推导类型。T如果初始化是复制列表初始化,则 的声明std\xe2\x80\x8b::\xe2\x80\x8binitializer_\xc2\xadlist应位于 ([basic.lookup.general])占位符类型说明符之前。
[Example 1:\nauto x1 = { 1, 2 }; // decltype(x1) is std\xe2\x80\x8b::\xe2\x80\x8binitializer_\xc2\xadlist<int>\nauto x2 = { 1, 2.0 }; // error: cannot deduce element type\nauto x3{ 1, 2 }; // error: not a single element\nauto x4 = { 3 }; // decltype(x4) is std\xe2\x80\x8b::\xe2\x80\x8binitializer_\xc2\xadlist<int>\nauto x5{ 3 }; // decltype(x5) is int\nRun Code Online (Sandbox Code Playgroud)\n
| 归档时间: |
|
| 查看次数: |
269 次 |
| 最近记录: |