
Am Tuesday 10 November 2009 16:13:11 schrieb Cosimo Calabrese:
Hi to all,
I've the same problem. I've created a union graph adaptor, that provides a "union view" of two graphs; in that adaptor, the edge_descriptor is defined like this:
typedef boost::variant< WR1<typename graph_traits<Graph1>::edge_descriptor>, WR2<typename graph_traits<Graph2>::edge_descriptor>
> edge_descriptor;
Now I would to use that graph to the Dijkstra's algorithm, that requires that the edge_descriptor models the EqualityComparable concept:
http://www.sgi.com/tech/stl/EqualityComparable.html
But as we know, boost::variant doesn't support the inequality expression.
if that's the case then I think the error is to be found in the graph library. EqualityComparable does not require operator !=, the SGI link above is probably outdated. the standard (at least a draft from around 2005, I haven't bought the official document) doesn't state that requirement. using namespace std::rel_ops; should fix these problems though.