下面这段代码使用vc++编译时输出
0
,使用g++或者clang++编译时输出1
:#include <iostream>
#include <vector>
struct S
{
S() = default;
std::vector<int> v{0};
};
int main()
{
std::vector<S> s{{}};
std::cout << s.front().v.size() << std::endl;
}
这是vc++的一个bug吗?
如果提供了用户定义的构造函数(S() {};
而不是S() = default;
),vc++也会开始打印1
。
std::vector<int> v{ 11,22 };
会产生相同的问题。 - Jabberwocky