$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
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.