Boost logo

Boost :

Subject: [boost] [graph] depth_first_visit_impl
From: Michael Marcin (mike.marcin_at_[hidden])
Date: 2015-06-24 00:22:27


I was doing some work with depth_first_search and came across some
issues that seem surprising with the implementation.

First vis.finish_edge doesn't seem to ever get called on msvc.

Second changing the code to call finish_edge directly instead of through
the call_finish_edge machinery seems to result in incorrect edges being
finished.

Third the implementation of depth_first_visit_impl pushes into a
std::vector stack even for vertices with no out_edges. If I have a graph
with a large number of vertices but few or no edges this seems bad. This
seems to force a dependency on optional as well. Finally the loop as
written should probably be a do..while since the stack will never be
empty on the first test.

I attached a patch that addresses the second and third issues.
The tests continue to pass for me with this change.




Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk