If I am not wrong, then the vertex(std::size_t i, Graph) function is required in no graph concept at all. However, adjacency_list
defines it and csr-graphs use it ...

Did I overlook something or shouldn't the function belong to some graph concept?

I have now made the CSR graphs not use it for other graphs being copied into CSR format.  There should not be any other algorithms that use it; however, it is provided by almost all graphs.  It is the inverse function to the vertex_index property map.  Some graphs also have edge_from_index which is the inverse of the edge_index property map.

I think this function falls into the same category as edge(), which I'm starting to believe is exactly like iterator operations distance(), advance(), next() and prev(). Not part of a concept, not a full-fledged algorithm, but nonetheless an operation that can be implemented for every graph, with varying degrees of efficiency.
 
Andrew Sutton
andrew.n.sutton@gmail.com