|
Boost Users : |
Subject: [Boost-users] [bgl] depth_first_search does not compile. color_map howto?
From: Joachim Faulhaber (afojgo_at_[hidden])
Date: 2012-06-24 18:14:33
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
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