C++ 在visualc+中使用std::initializer_list+;2012年11月CTP

C++ 在visualc+中使用std::initializer_list+;2012年11月CTP,c++,visual-c++,c++11,visual-studio-2012,initializer-list,C++,Visual C++,C++11,Visual Studio 2012,Initializer List,我想在VisualStudio2012中使用std::initializer\u lists,就像在中的一个家伙一样。我的操作系统是Windows 8 x64 因此,我最近安装了,正如Microsoft提到的,我更改了项目的平台工具集,以使用新更新的编译器 但即使这样做,也没有可用的std::initializer\u列表或头。但是微软的链接网站告诉我(标题为“概述”),初始值设定项列表将随更新一起提供。我重新启动了IDE和我的电脑。我不确定这是否是因为我(遗憾地)使用了Visual Studi

我想在VisualStudio2012中使用std::initializer\u lists,就像在中的一个家伙一样。我的操作系统是Windows 8 x64

因此,我最近安装了,正如Microsoft提到的,我更改了项目的平台工具集,以使用新更新的编译器

但即使这样做,也没有可用的
std::initializer\u列表
头。但是微软的链接网站告诉我(标题为“概述”),初始值设定项列表将随更新一起提供。我重新启动了IDE和我的电脑。我不确定这是否是因为我(遗憾地)使用了Visual Studio的德语版,并且编译器更新是英语的。我做错了什么


更新:尝试编译行
autoa={0}智能编译器批评,编译器输出显示“代码>”MyVisualVisual C++编译器NOV 2012 CTP只用于测试。 >然后编译器崩溃,出现错误窗口,读取代码<微软(R)C/C++编译器驱动程序已停止工作< /C>。如果没有任何新的语法,所有的东西都可以在选定的新编译器中编译并正常工作。

正如您所注意到的,十一月CTP的可用性非常有限,至少有两个原因:

  • 编译器有许多导致崩溃的bug,比如您发现的那个

  • >p>没有用编译器更新C++标准库,不给您留下正确的代码< >代码> >代码> <代码>(这包括省略所有标准容器的支持init列表构造器)

    另外:链接的示例是非常难看的代码。如果要使用此功能,请使用支持此语法的编译器,如GCC或Clang。它们都可用于Windows。通过编写额外的代码来破解一个半实现的语言特性简直是愚蠢的行为。

    (我为微软工作,并与Dinkumware一起维护VC的标准库实现。)

    [danijar]

    我不确定这是否是因为我(遗憾地)正在使用Visual Studio的德语版,并且编译器更新是英语的

    不幸的是,只有英语的CTP不支持德语VS

    “编译器驱动程序”cl.exe调用编译器前端c1x.dll、编译器后端c2.dll和链接器link.exe。编译器驱动程序崩溃是非常罕见的。我推测它试图显示CTP添加的一条错误消息,但由于CTP没有更新德国资源,编译器驱动程序无法加载错误消息并继续崩溃

    请注意,这不同于前端或后端的内部编译器错误,或者碰巧错误发出的正常编译器错误。(在CTP发布后,许多ICE和伪错误已经修复。)

    但即使这样做了,也没有std::initializer\u列表或可用的标题

    CTP安装在特殊位置。(它实际上是由编译器团队编写的。)

    在命令行上,使用CTP并放在包含路径上的咒语是(假定为默认位置):

    正在尝试编译行auto a={0};这受到了IntelliSense的批评

    这是有文件记录的——CTP没有更新Intellisense,因此它不会识别任何新功能

    [rubenvb]

    C++标准库没有用编译器更新,不给您留下正确的格式(这包括省略了所有标准容器的支持的init列表构造器)


    您可能有兴趣了解我们已经更新了标准库,以完全支持作用域枚举和初始值设定项列表。这包括当前工作文件(N3485)强制要求的所有初始值设定项列表重载,以及与所有其他标准标题一起安装在常用位置。(这也是Dinkumware的官方版本,尽管它与编译器团队的“假”版本之间的差异主要是表面上的。)这些东西将在下一次公开发行时提供,无论何时何地。我们的下一个任务是用显式转换运算符和可变模板更新标准库,以取代我们的脆性模拟。

    由于MSVS2012有两次更新,我想知道11月CTP编译器的更新结果如何。如果您已经实施了STL修改,为什么还没有发布给我们?
    "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%