【发布时间】: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_list的std::vector中。这就是 11 月 CTP 所缺少的。 -
<initializer_list>可用,因此您可以编写您自己的函数,将std::initializer_list作为参数,但现有库没有t 已更新以将它们包含在现有类中。
标签: c++ visual-c++ c++11 visual-studio-2012 initializer-list