visual studio 2017 STL 可视化器因一个 std::map<MyIntrusivePtr, std::tuple<....>> 失败
Posted
技术标签:
【中文标题】visual studio 2017 STL 可视化器因一个 std::map<MyIntrusivePtr, std::tuple<....>> 失败【英文标题】:visual studio 2017 STL visualizer fails for one std::map<MyIntrusivePtr, std::tuple<....> > 【发布时间】:2018-05-31 17:28:35 【问题描述】:所有 Visual Studio 监视窗口正在显示:
std::_Tree<std::_TMap_traits<.....
所有其他数据都可以正常显示 -- 使用相同或相似的数据。
这是标题:
typedef std::set<expression::ptr> expressionSet;
//pairOfExpression2Usage m_sBool;
typedef boost::flyweights::flyweight<
expressionSet,
boost::flyweights::set_factory<>,
boost::flyweights::refcounted
> expressionSetFW;
typedef std::pair<expressionSetFW, expressionSetFW> pairOfExpressionSetFW;
// these are or-ed together
struct comparePairOfExpressionSetFW
bool operator()(
const pairOfExpressionSetFW &_r0,
const pairOfExpressionSetFW&_r1) const;
;
typedef std::set<
pairOfExpressionSetFW,
comparePairOfExpressionSetFW
> setOfPairOfExpressionSet;
struct compareSetOfPairOfExpressionSet
bool operator()(
const setOfPairOfExpressionSet &_r0,
const setOfPairOfExpressionSet&_r1) const;
;
typedef boost::flyweights::flyweight<
setOfPairOfExpressionSet,
boost::flyweights::set_factory<compareSetOfPairOfExpressionSet>,
boost::flyweights::refcounted
> setOfPairOfExpressionSetFW;
typedef std::tuple<std::size_t, double, setOfPairOfExpressionSetFW> exprData;
typedef std::map<expression::ptr, exprData> expr2Data;
我已经重新安装了可视化工具。有没有
devenv.exe /resetsettings
将 typedef 放入全局范围。 奇怪的是,所有其他东西(也使用表达式::ptr)作为索引或数据都显示正常。
【问题讨论】:
【参考方案1】:我为解决这个问题所做的就是复制转换攻击性
std::map<>
变成一个
std::map<std::string, std::string>
只是为了能够在调试器中查看它。 其他 std::map 也会出现此问题。我真的很想知道,是什么触发了这种行为。
【讨论】:
以上是关于visual studio 2017 STL 可视化器因一个 std::map<MyIntrusivePtr, std::tuple<....>> 失败的主要内容,如果未能解决你的问题,请参考以下文章
在 Visual Studio 中编写 MFC/STL 程序需要做啥?