Boost Directed Graph - add_edge - stored_edge_property

时间:2016-03-23 21:07:12

标签: c++11 boost boost-graph directed-graph

    typedef  boost::adjacency_list<
    boost::vecS, boost::vecS, boost::directedS, NodeInfo, EdgeInfo> Graph;

   Graph g(10);
   EdgeInfo be;
   add_edge(0,1,be,g);

错误:  使用已删除的函数&#39; boost :: detail :: stored_edge_property

改变&#34;无向&#34;指导&#34;指导&#34;导致linux(gcc / 4.9.2)下的错误,同时在windows visual studio express 2013上编译好。提升:1.59.0。

罪魁祸首似乎是add_edge

有快速解决方法吗?

一些论坛指出BGL与C ++ 11不兼容,要求编码人员恢复到C ++ 03。还有其他选择吗?

由于

1 个答案:

答案 0 :(得分:1)

我认为没问题:

使用以下图表:

#include <boost/graph/adjacency_list.hpp>

struct NodeInfo { };
struct EdgeInfo { };

int main() {
    using namespace boost;
    {
        typedef adjacency_list<vecS, vecS, directedS, NodeInfo, EdgeInfo> Graph;
        Graph g(10);
    }
    {
        typedef adjacency_list<vecS, vecS, undirectedS, NodeInfo, EdgeInfo> Graph;
        Graph g(10);
    }
}

这告诉我你的NodeInfo / EngeInfo类型可能存在问题。如果它们不可复制等,则可能导致错误。 MSVC可能比标准要求更宽松(它们经常出现在名称查找和引用绑定区域)。