У меня есть что-то похожее на это:
//file1.h
class Base {
private:
static std::unordered_map<int, std::unordered_map<int, std::string>> table;
}
И чтобы все работало как положено, я пишу это:
//file1.cpp
std::unordered_map<int, std::unordered_map<int, std::string>> Base::table = {
{
1, std::unordered_map<int, std::string> {
{12, "asset:12/"},
{-3, "asset:24/"},
//...
}
},
//...
};
Я использую последнее обновление Visual Studio 2017 (15.8.5) и этот код завершается ошибкой:
//file1.h
class Base {
private:
inline static std::unordered_map<int, std::unordered_map<int, std::string>> table = {
{
1, std::unordered_map<int, std::string> {
{12, "asset:12/"},
{-3, "asset:24/"},
//...
}
},
//...
};
Почему это встроенное объявление не выполняется?Я видел, что с C++17
вы можете иметь встроенные статические объявления.Проблема в заголовке списка, в котором говорится:
**_Pnode** was 0xDDDDDDDD.
Это проблема с картами?Я запустил код в Coliru, и у меня не было проблемы, которую я нашел в VS.Экран:
Диалоговое окно вывода:
Выход из потока 0x3790 с кодом 0 (0x0).Исключение: нарушение прав на чтение. _Pnode был 0xDDDDDDDD.
Код выхода равен 0, но я не понимаю, где могло произойти нарушение доступа.