c++ - std::vector 可视化工具在 std::vector<boost::variant> 上无法正常工作

标签 c++ visual-studio boost debugging

如果我有 std::vector<boost::variant<...>>,VS2008 autoexp.dat 文件中的 visual studio std::vector 可视化工具似乎不起作用.它确实适用于我尝试过的其他类型的 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= }

而 children ,应该是 vector 项,才是真正的 vector 成员。就好像 std::vector 可视化工具不存在一样。

我截取了监 window 口的屏幕截图。您可以看到它如何显示 std::vector<boost::variant<int, std::string>>错误,然后正确显示接下来的两个 vector :Hyperlink to screenshot

有谁知道造成这种情况的原因以及如何阻止它发生?

谢谢!

最佳答案

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

我做了一些测试,似乎限制是一个名称大小为 497 个字符的结构。下面的代码重现了这个错误……取结构名称的最后一个字符,它工作正常!

struct abcdefghijklmnopqrstuvwxyz012345abcdefghijklmnopqrstuvwxyz012345abcdefghijklmnopqrstuvwxyz012345abcdefghijklmnopqrstuvwxyz012345abcdefghijklmnopqrstuvwxyz012345abcdefghijklmnopqrstuvwxyz012345abcdefghijklmnopqrstuvwxyz012345abcdefghijklmnopqrstuvwxyz012345abcdefghijklmnopqrstuvwxyz012345abcdefghijklmnopqrstuvwxyz012345abcdefghijklmnopqrstuvwxyz012345abcdefghijklmnopqrstuvwxyz012345abcdefghijklmnopqrstuvwxyz012345abcdefghijklmnopqrstuvwxyz012345abcdefghijklmnopqrstuvwxyz012345abcdefghijklmnopq
{
};

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

    test2.resize(10);

    return 0;
}

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

关于c++ - std::vector 可视化工具在 std::vector<boost::variant> 上无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1087514/

相关文章:

python - 扩展 Python 时出现问题(链接错误)?

c# - WPF C# - 列内容对齐和样式取决于内容

c++ - 如何检查boost线程正在运行并杀死它

c++ - 奇怪的 mingw 链接器错误与 boost ?

c++ - 从 JSON 数组获取天气

c++ - 如何使用 OpenCV 中可用的压缩算法?

c++指针和指向引用的指针

c++ - [c++]检查文件结尾

c++ - 警告 C4180 : qualifier applied to function type has no meaning; ignored

c++ - 通过异常终止 boost 图搜索的原因是什么?