这段代码在 gcc 8.1 和 clang 6.0 上编译良好,但在 MSVC(2017 和 2018 预发行版)上提供了 ICE:
#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++,或者我也犯了错误?