【发布时间】:2013-06-10 15:20:23
【问题描述】:
考虑代码:
#include <iostream>
#include <vector>
#include <string>
int main()
{
std::vector<std::string> v{{"awe", "kjh"}}; // not v{"awe", "kjh"}
std::cout << v.size() << std::endl;
return 0;
}
此代码是否错误?或者在初始化向量时使用双精度
{}是否有效?我在 gcc 和 MSVC 上试过这段代码。 MSVC 2012 + 编译器 Nov 2012 只是无法编译它,这并不奇怪。 使用 gcc 4.7 或 4.8 编译的这段代码在程序执行期间会出现运行时错误。这种行为正确吗?
不幸的是,无法使用其他编译器对其进行测试。
【问题讨论】:
-
见stackoverflow.com/questions/14587436/… 和cplusplus.github.io/LWG/lwg-active.html#2238(他们关注的不是这个,但非常相似)。
标签: c++ c++11 compiler-construction initializer-list