[Graph] edge() not working
[Apologies if this has been asked before. Gmane is down and Google didn't return anything interesting.] I have a Boost (1.34.1) Graph declared like this: typedef boost::adjacency_list<boost::setS, // Out edge list type boost::listS, // Vertex list type boost::undirectedS, vertex_property_bundle // Vertex properties // Edge properties > my_graph_type; I want to find out if an edge is in the graph: typedef typename boost::graph_traits<my_graph_type>:: edge_descriptor_type edge; edge e; bool present; boost::tie(e, present) = edge(v1, v2, my_graph); Unfortunately, g++ 4.1.2 doesn't like it: error: no matching function for call to boost::detail::edge_desc_impl<boost::undirected_tag, void*>::edge_desc_impl(void* const&, void* const&, boost::adjacency_list<boost::setS, boost::listS, boost::undirectedS, vertex_property_bundle, boost::no_property, boost::no_property, boost::listS>&) boost-1_34_1/boost/graph/detail/edge.hpp:43: note: candidates are: boost::detail::edge_desc_impl<Directed, Vertex>::edge_desc_impl(Vertex, Vertex, const void*) [with Directed = boost::undirected_tag, Vertex = void*] boost-1_34_1/boost/graph/detail/edge.hpp:41: note: boost::detail::edge_desc_impl<Directed, Vertex>::edge_desc_impl() [with Directed = boost::undirected_tag, Vertex = void*] boost/graph/detail/edge.hpp:35: note: boost::detail::edge_desc_impl<boost::undirected_tag, void*>::edge_desc_impl(const boost::detail::edge_desc_impl<boost::undirected_tag, void*>&) Has anyone else run into this problem before? How does a reference to the graph get passed to edge_desc_impl's constructor? Thanks. -Dave
David A. Greene wrote:
[Apologies if this has been asked before. Gmane is down and Google didn't return anything interesting.]
I have a Boost (1.34.1) Graph declared like this:
typedef boost::adjacency_list<boost::setS, // Out edge list type boost::listS, // Vertex list type boost::undirectedS, vertex_property_bundle // Vertex properties // Edge properties > my_graph_type;
I want to find out if an edge is in the graph:
typedef typename boost::graph_traits<my_graph_type>:: edge_descriptor_type edge;
edge e; bool present; boost::tie(e, present) = edge(v1, v2, my_graph); ^^^^
I think you want to use boost::edge() here, rather than creating an edge_descriptor. -- Daniel Wallin Boost Consulting www.boost-consulting.com
On Friday 31 August 2007 14:50, Daniel Wallin wrote:
I want to find out if an edge is in the graph:
typedef typename boost::graph_traits<my_graph_type>:: edge_descriptor_type edge;
edge e; bool present; boost::tie(e, present) = edge(v1, v2, my_graph);
^^^^
I think you want to use boost::edge() here, rather than creating an edge_descriptor.
Ha! Scoping strikes again! Don't you just hate Thursdays? Thank goodness for Labor Day... -Dave
participants (2)
-
Daniel Wallin
-
David A. Greene