I'm trying to implement the IncidenceGraph concept for an non-BGL
undirected graph like datastructure. Following the boost documentation the
target function used with edges from out_edges(u,g) must give vertices != u.

Can somebody please explain me why this requirement is in BGL! I think it
can make the adaption very difficult as it requieres to artificially
orientate undirected edges for each call to out_edges. Any help would be
much appreciated!

I'm not entirely sure. The constraint makes sense if you're building graphs that don't allow loops, but otherwise, it would not seem to be necessary. There's a small possibility that the requirement actually stemmed from an adjacency_list bug that caused problems when deleting loop edges, but the bug has since been fixed.

I would say: do what you think is right for your own graph structure.

Andrew Sutton
andrew.n.sutton@gmail.com