提升有向图 - 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。有替代方案吗?
谢谢
我看没问题:
- Live On Coliru: gcc 4.9
- Live On Coliru: gcc 4.8
- Live On Coliru: gcc 5.2
- Live On Coliru: gcc 5.2
- Live On Coliru: clang 3.7
配以下图表:
#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 可能比标准要求更宽松(它们通常在名称查找和引用绑定领域)。
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。有替代方案吗?
谢谢
我看没问题:
- Live On Coliru: gcc 4.9
- Live On Coliru: gcc 4.8
- Live On Coliru: gcc 5.2
- Live On Coliru: gcc 5.2
- Live On Coliru: clang 3.7
配以下图表:
#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 可能比标准要求更宽松(它们通常在名称查找和引用绑定领域)。