Incidentally, I believe there was a problem with placing edge_index_t edge_index in the bundled properties----it only worked when I used the (far uglier) joint internal/bundled property approach. Something else to put on the list.
I think I've run into this before. There was a problem with the property-deducing metafunctions that was failing if you gave a formally constructed bundle (of the form property<???_bundle_t, Bundle>). It should be fixed in trunk. Relevant changes are in boost/graph/properties.hpp.
As far as options, I was think something like:
typedef property_map<G, local<int P::*> >::type LocalPropMap;
typedef property_map<G, global<int P::*> >::type GlobalPropMap;
So specializations on local/global will automatically select lookup logic. I don't think I have to change anything else.
Andrew Sutton