这段代码可以在gcc 8.1和clang 6.0上很好地编译,但是可以在MSVC上提供ICE(2017和2018的预发布版本):
#include <vector>
#include <string>
struct Data {
unsigned char data;
};
struct A {
std::string x;
Data y{255};
};
void f(std::vector<A> arg) {
}
int main() {
f(std::vector<A>{{"Test"}});
}
很显然,我遇到了另一个MSVC编译器错误。
但是要确定一点:上面的代码是否符合标准C ++,还是我也出错了?