(我为 Microsoft 工作并与 Dinkumware 一起维护 VC 的标准库实现。)
[丹尼哈尔]
我不确定这是否可能是由于我(遗憾地)使用德文版的 Visual Studio 并且编译器更新是英文的。
不幸的是,只有英文的 CTP 不支持德文 VS。
“编译器驱动程序”cl.exe 调用编译器前端 c1xx.dll、编译器后端 c2.dll 和链接器 link.exe。编译器驱动程序崩溃是非常不寻常的。我推测它试图显示 CTP 添加的错误消息之一,但由于 CTP 没有更新德语资源,编译器驱动程序无法加载错误消息并继续崩溃。
请注意,这与前端或后端中的内部编译器错误或恰好被错误发出的正常编译器错误不同。(CTP 发布后,许多 ICE 和虚假错误已得到修复。)
但即使这样做了,也没有可用的 std::initializer_list 或 <initializer_list> 标头。
CTP 将 <initializer_list> 安装在特殊位置。(它实际上是由编译器团队编写的。)
在命令行上,使用 CTP 并将 <initializer_list> 放在包含路径上的咒语是(假设默认位置):
"C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\vcvarsall.bat" x86
set PATH=C:\Program Files (x86)\Microsoft Visual C++ Compiler Nov 2012 CTP\bin;%PATH%
set INCLUDE=C:\Program Files (x86)\Microsoft Visual C++ Compiler Nov 2012 CTP\include;%INCLUDE%
试图编译行 auto a = { 0 }; 被 IntelliSense 批评
这已记录在案 - CTP 未更新 Intellisense,因此它不会识别任何新功能。
[rubenvb]
C++ 标准库没有用编译器更新,让你没有像样的 <tuple> 和 <intializer_list> (这包括所有标准容器的括号初始化列表构造函数的省略)
您可能有兴趣了解我们已更新标准库以完全支持范围枚举和初始化列表。这包括当前工作文件 (N3485) 规定的所有 initializer_list 重载,以及在通常位置安装 <initializer_list> 以及所有其他标准头文件。(它也是 Dinkumware 的官方副本,尽管它与编译器团队的“假”版本之间的差异主要是装饰性的。)无论何时何地,这些东西都将在下一个公开版本中可用。我们的下一个任务是使用显式转换运算符和可变参数模板更新标准库,替换我们脆弱的模拟。