Visual Studio中的C ++ 17内联静态地图错误

时间:2018-09-25 22:51:05

标签: c++ c++17

我有类似的东西:

//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,但我不知道可能发生访问冲突。

0 个答案:

没有答案