
I'd like to stay compatible and I'm also curious what was found lacking in the old graph concepts. The unifying graph concepts in BGLv1 are really impressive for making all graph libraries adaptable to its interface & algos.
The BGL concept hierarchy didn't address graph mutability very well. There aren't a lot of algorithms in the library that require a lot of add/remove functions, so it's not terribly surprising. I would also have liked to see more semantic concepts: directed and undirected graphs, weighted graphs, simple graphs, multigraphs. All of these concepts show up as requirements in various places in the library, but aren't expressed conceptually. I disagree with the statement that the *concepts* make other graph libraries adaptable to its interface. Specializations of the graph_traits class and a ton of overloaded functions accomplish that adaptation. I suspect that you can achieve exactly the same effect using wrapper classes (and tons of overloaded functions). The concepts give the requirements for adaptation. Andrew