代码之家  ›  专栏  ›  技术社区  ›  AOK

Eigen::Map的Eigen.natvis加法

  •  0
  • AOK  · 技术社区  · 5 年前

    我在试着增加特征纳特维斯,发现 here ,所以 Eigen::Map here .

    以下是我的总结:

    <Type Name="Eigen::Map&lt;Eigen::Matrix&lt;*,-1,-1,*,*,*&gt;,*,*&gt;">
    <DisplayString Condition="m_data == 0">empty</DisplayString>
    <DisplayString Condition="m_data != 0">Map[{m_rows.m_value}, {m_cols.m_value}] (dynamic matrix)</DisplayString>
    <Expand>
      <ArrayItems Condition="Flags%2"> <!-- row major layout -->
        <Rank>2</Rank>
        <Size>$i==0 ? m_rows.m_value : m_cols.m_value</Size>
        <ValuePointer>m_data</ValuePointer>
      </ArrayItems>
      <ArrayItems Condition="!(Flags%2)"> <!-- column major layout -->
        <Direction>Backward</Direction>
        <Rank>2</Rank>
        <Size>$i==0 ? m_rows.m_value : m_cols.m_value</Size>
        <ValuePointer>m_data</ValuePointer>
      </ArrayItems>
    </Expand>
    </Type>
    

    <Size>$i==0 ? m_rows.m_value : m_cols.m_value</Size>
    

    相反,如果我使用以下任何一种方法,那么它就可以工作,但当然是错误的(具体的数字常数是不相关的):

    <Size>$i==0 ? 4 : 2</Size>
    <Size>$i==0 ? 3 : m_cols.m_value</Size>
    <Size>$i==0 ? m_rows.m_value : 5</Size>
    

    我错过了什么?我怎样才能让它正常运行?另外,纳特维斯 Eigen::Matrix 做一些类似的事情,在那里确实有效。

    0 回复  |  直到 5 年前
    推荐文章