|
Boost Users : |
From: Cyrille Damez (damez_at_[hidden])
Date: 2004-05-11 07:29:30
Hi all,
I'm currently trying to write a wrapper in order to use the BGL algorithms
and visitors on a home-made graph class. If I'm not mistaken, this requires me
to write (amongst other things) a couple functions that will return iterators
over my graph edges and vertices, eg:
std::pair<graph_traits<MyGraph>::out_edge_iterator,
graph_traits<MyGraph>::out_edge_iterator >
out_edges(graph_traits<MyGraph>::vertex_descriptor u,
const MyGraph& g)
and similarly in_edges(...) , vertices(...) and edges(...) functions. However,
it seems that this function profile forces me to do a const_cast on g when
implementing the function body since the out_edge_iterators are not const
iterators, though they point to internal elements of g.
I had a look at the example given in the documentation (dealing with
converting LEDA graphs to the BGL), but I didn't see anything helping me on
this particular issue (also, the example in the doc is a bit outdated since it
uses the deprecated Boost iterator adaptors).
Am I forced to rely on const_cast in these functions, or is there a way to
declare my graph edges, vertices and the corresponding iterators as
const in my graph_traits class ?
I'm a newbie with the BGL, and more generally with this whole traits/template
specialization style of programming, so please excuse me if I overlooked
something obvious.
Cheers.
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