【问题标题】:Initializer list not working in Visual Studio 2012 Update 2 CTP 4 (March)初始化程序列表在 Visual Studio 2012 Update 2 CTP 4(3 月)中不起作用
【发布时间】:2013-02-20 17:14:22
【问题描述】:

安装 Visual Studio 2012 Update 2 CTP 4(3 月)后,此代码无法编译:

vector<int> b = {1, 2, 3};

带有以下错误消息:

'std::vector<_Ty>' : Types with a base are not aggregate

较早的帖子关于使用 initializer_list 标头提到的先前 CTP 的相同问题,但 CTP 4 没有安装它。有什么建议可以解决吗?

【问题讨论】:

  • 我看不到任何关于最近的 CTP 添加更成熟的 C++11 支持的任何信息。因此,没有理由期望 3 月的 CTP 在这方面与 11 月的 CTP 有任何不同。
  • @Nicol:除此之外,这两个 CTP 是完全分离的。 11 月的 CTP 纯粹是针对 MSVC,而更新 2 CTP 是针对更新 2。
  • @Nicol:根据this question 中接受的答案,我认为initializer_list 标头可用并解决了这个问题。
  • @PaulJurczak:是的,initializer_list 可用。但这实际上并没有将代码放在使用 initializer_liststd::vector 中。这就是 11 月 CTP 所缺少的。
  • &lt;initializer_list&gt; 可用,因此您可以编写您自己的函数,将std::initializer_list 作为参数,现有库没有t 已更新以将它们包含在现有类中。

标签: c++ visual-c++ c++11 visual-studio-2012 initializer-list


【解决方案1】:

编译器支持初始化列表,但标准库(std::vector 等)不支持。在编译行之前,您必须等待。

【讨论】:

    猜你喜欢
    • 2012-09-21
    • 1970-01-01
    • 1970-01-01
    • 2022-08-23
    • 1970-01-01
    • 2013-09-15
    • 2013-01-31
    • 1970-01-01
    • 2017-11-29
    相关资源
    最近更新 更多