繁体   English   中英

std :: vector展示台无法在std :: vector上正常工作<boost::variant>

[英]std::vector visualizer doesn't work properly on std::vector<boost::variant>

如果我有std::vector<boost::variant<...>> ,则VS2008 autoexp.dat文件中的visual studio std :: vector可视化工具似乎不起作用。 它确实适用于我尝试过的其他类型的向量(例如std::vector<int>std::vector<boost::shared_ptr<..>>

这是可视化工具代码:

std::vector<*>{
children
(
    #array
    (
        expr :      ($e._Myfirst)[$i],
        size :      $e._Mylast-$e._Myfirst
    )
)
preview
(
    #(
        "[", $e._Mylast - $e._Myfirst , "](",
        #array
        (
            expr :  ($e._Myfirst)[$i],
            size :  $e._Mylast-$e._Myfirst
        ),
        ")"
    )

)
}

预览不显示项目数量和项目值,而是显示

{_Myfirst= _Mylast= _Myend= }

而应该作为向量项的子代是实际的向量成员。 好像std :: vector可视化工具不存在。

我拍摄了监视窗口的屏幕截图。 您会看到它如何错误地显示std::vector<boost::variant<int, std::string>> ,然后正确显示接下来的两个向量: 超链接至屏幕截图

有谁知道这是什么原因以及如何阻止它发生?

谢谢!

这似乎是与您的类型名称大小有关的错误... boost :: variant生成具有很长名称的类型。

我进行了一些测试,似乎限制是名称大小为497个字符的结构。 以下代码重现该错误...采用结构名称的最后一个字符,它可以正常工作!

struct abcdefghijklmnopqrstuvwxyz012345abcdefghijklmnopqrstuvwxyz012345abcdefghijklmnopqrstuvwxyz012345abcdefghijklmnopqrstuvwxyz012345abcdefghijklmnopqrstuvwxyz012345abcdefghijklmnopqrstuvwxyz012345abcdefghijklmnopqrstuvwxyz012345abcdefghijklmnopqrstuvwxyz012345abcdefghijklmnopqrstuvwxyz012345abcdefghijklmnopqrstuvwxyz012345abcdefghijklmnopqrstuvwxyz012345abcdefghijklmnopqrstuvwxyz012345abcdefghijklmnopqrstuvwxyz012345abcdefghijklmnopqrstuvwxyz012345abcdefghijklmnopqrstuvwxyz012345abcdefghijklmnopq
{
};

int main()
{
    std::vector< abcdefghijklmnopqrstuvwxyz012345abcdefghijklmnopqrstuvwxyz012345abcdefghijklmnopqrstuvwxyz012345abcdefghijklmnopqrstuvwxyz012345abcdefghijklmnopqrstuvwxyz012345abcdefghijklmnopqrstuvwxyz012345abcdefghijklmnopqrstuvwxyz012345abcdefghijklmnopqrstuvwxyz012345abcdefghijklmnopqrstuvwxyz012345abcdefghijklmnopqrstuvwxyz012345abcdefghijklmnopqrstuvwxyz012345abcdefghijklmnopqrstuvwxyz012345abcdefghijklmnopqrstuvwxyz012345abcdefghijklmnopqrstuvwxyz012345abcdefghijklmnopqrstuvwxyz012345abcdefghijklmnopq > test2;

    test2.resize(10);

    return 0;
}

随时在http://connect.microsoft.com/上报告该错误。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM