提升有向图 - add_edge - stored_edge_property

Boost Directed Graph - add_edge - stored_edge_property

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

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

错误: 使用删除的函数 'boost::detail::stored_edge_property

将 "undirected" 更改为 "directed" 会在 linux (gcc/4.9.2) 下导致错误,而在 windows visual studio express 2013 上编译正常. 提升:1.59.0.

罪魁祸首似乎是add_edge

有快速修复方法吗?

一些论坛指出 BGL 与 C++11 不兼容,要求编码人员恢复到 C++03。有替代方案吗?

谢谢

我看没问题:

配以下图表:

#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 可能比标准要求更宽松(它们通常在名称查找和引用绑定领域)。