Boost logo

Boost Users :

Subject: Re: [Boost-users] [bgl] depth_first_search does not compile. color_map howto?
From: Joachim Faulhaber (afojgo_at_[hidden])
Date: 2012-06-24 18:21:07


... forgot to attach the error message, here it is.

2012/6/25 Joachim Faulhaber <afojgo_at_[hidden]>:
> 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<listS, vecS, directedS> 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<listS, listS, directedS, Int> 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



Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net