C ++ 17 встроенная ошибка статической карты в Visual Studio - PullRequest
0 голосов
/ 26 сентября 2018

У меня есть что-то похожее на это:

//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.Экран:

enter image description here

Диалоговое окно вывода:

Выход из потока 0x3790 с кодом 0 (0x0).Исключение: нарушение прав на чтение. _Pnode был 0xDDDDDDDD.

Код выхода равен 0, но я не понимаю, где могло произойти нарушение доступа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...