I downloaded the 1_29_0 version of Boost, compiled the file_dependencies.cpp example, and when I run it, the sample program aborts after throwing negative_edge in examine_edges(...) (from dijkstra_shortest_paths.cpp).
 
After a little investigation, it looks to me like examine_edges(...) is supposed to protect against negative edge weights.  It does so by calling the user-supplied comparison function to test each edge to make sure its weight is greater than the user-supplied zero value.  But the call in examine_edges(...) is coded so that "if (EdgeWeight ? 0) then throw negative_edge()," where the example program uses the ">" operator for "?".  Seems to me that those parameters are presented in the wrong order.
 
I downloaded Boost 1_28_0 and the example compiled and ran without problems.  A quick diff showed that the code to test for negative edge weights is new in BGL 1_29_0.
 
So... is it a feature or a bug?
 
I checked through all the boost newsgroups and couldn't find anything about this, but I'm new to Boost, so forgive me (and point me to the resolution) if this is a known problem.
 
Thanks,
 
Duncan Clarke
Computer Science and Engineering
University of South Carolina