
... forgot to attach the error message, here it is.
2012/6/25 Joachim Faulhaber
Hi,
When using visitors with the depth_first_search algorithm I can successfully compile and run this code:
//========================================================= template<class Graph> class Visitor: public default_dfs_visitor { public: typedef typename graph_traits<Graph>::vertex_descriptor Vertex;
void discover_vertex(Vertex v, const Graph& g)const {cout << v << " "; return;} };
void GLV_visit() { typedef adjacency_list
GraphLV; GraphLV g; add_edge(0, 1, g); add_edge(0, 2, g); add_edge(1, 2, g); add_edge(1, 3, g); Visitor<GraphLV> vis; boost::depth_first_search(g, visitor(vis)); cout << endl; }
BOOST_AUTO_TEST_CASE(graph_test) { GLV_visit(); } //=========================================================
With a slightly different graph (listS instead of vecS for vertices) the same call of depth_first_search fails to compile with msvc-10.
//========================================================= struct Int{ Int(): _value(0){} Int(int val): _value(val){} int _value; };
void GLL_visit() { typedef adjacency_list
GraphLL; typedef graph_traits<GraphLL>::vertex_descriptor VertexLL; GraphLL g; Int val(42); VertexLL v0 = boost::add_vertex(g); VertexLL v1 = boost::add_vertex(g); g[v0] = Int(0); g[v1] = Int(1); add_edge(v0, v1, g); Visitor<GraphLL> vis; boost::depth_first_search(g, visitor(vis)); //compile errors } //=========================================================
From the tiny error message of 108 long verbose lines of internal graph template instantiations (see attachment) it seems that the compiler is unable to create a default color_map (but I might be wrong with this interpretation of the template jungle).
1. Do I need to provide a color_map parameter here? 2. If so, what is the simplest way to do that and provide an object of the appropriate type?
I'd greatly appreciate a working code example. Examples and best practices for defining and handling external propery maps in general would be helpful.
TIA, Joachim
-- Interval Container Library [Boost.Icl] http://www.joachim-faulhaber.de
-- Interval Container Library [Boost.Icl] http://www.joachim-faulhaber.de