And I'm getting compiler errors that vertex_index is not a member of my class RegionProperties. I suppose this means that filtered_graph hides the vertex_index attribute of the underlying graph, even though I'm not filtering the vertexes at all? Can I use the returns of source and target as *if* they were indexes?

It's not a member of your class. It's a member of the vertex stored by the graph, which is only accessible via the get() accessor. You could write, for example:

typedef property_map<Graph, vertex_index_t>::type IndexMap;
IndexMap indices = get(vertex_index, g);
...
size_t v1 = get(indices, source(*ei, g));
size_t v2 = get(indices, target(*ei, g));
 

Also, do source and target refer to the two different ends of an undirected edge? That's another thing I wasn't sure about from the docs. Seemed reasonable, but I wish it were stated.

Yes. It's written somewhere in the documentation, but it isn't obvious, and I forget where exactly.
 
Andrew Sutton
andrew.n.sutton@gmail.com