Следующий код компилируется и работает правильно с GCC 8.2.0 (используя -std=c++17
).Он также компилируется с Intel ICC 19.0.1.144, но выдает «исключение с плавающей точкой» при попытке получить доступ к «карте» в конструкторе.
#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 ', кажется, работает.
Это проблема с компилятором Intel?Он должен поддерживать встроенные переменные, в соответствии с this .