以下代码可在GCC 8.2.0中编译并正常运行(使用-std=c++17
)。它也可以与Intel的ICC 19.0.1.144一起编译,但是在尝试访问构造函数中的“ map”时会抛出“浮点异常”。
#include <iostream>
#include <unordered_map>
struct A {
static inline std::unordered_map<int, int> map;
A(){
map[1] = 2;
}
};
int main(){
A a;
}
类似的代码用原始或“ std :: vector”代替“ std :: unordered_map”似乎起作用。
这是英特尔编译器的问题吗?根据{{3}},它应该支持内联变量。