
I'm using gcc v3.4.1 and boost_CVS captured on Tue Jun 29 05:25:17 EDT 2004. I'm developing a boost.graph application that must deal with multiple graphs. The following typedefs describe how its using boost.graph: typedef boost::adjacency_list<boost::vecS,boost::vecS,boost::bidirectionalS> GraphT; typedef boost::shared_ptr<GraphT> GraphPtr; typedef boost::graph_traits <GraphT>::vertex_descriptor Vertex; typedef boost::graph_traits <GraphT>::edge_descriptor Edge; In addition, I have various maps that must act as a "bridge" between these graphs. I'm using the following typedefs as keys in such maps: typedef std::pair<GraphPtr,Vertex> ExternalVertex; typedef std::pair<GraphPtr,Edge> ExternalEdge; I've used ExternalVertex successfully in two different maps. Now I'm having trouble populating the first map that uses ExternalEdge. The compiler warnings that I'm getting sugguest that Edge does have an "operator<" method. Specifically its: error: no match for 'operator<' in '__x->std::pair<GraphPtr, Edge>::second < __y->std::pair<GraphPtr, Edge>::second' I'm wondering why Edge is different from Vertex. As you can see, as I've defined GraphT, both edge and vertex properties should be no_property. Any guidance that assists me to, at worst case, write a Compare operator for my "map<ExternalEdge,...>" containers would be appreciated.