I have a bunch of `boost::property_map`s defining costs of edge traversal in a graph. I'm executing an algorithm with differently weighted combinations of these maps, currently by manually doing `totalcost = weight1*weight1_factor + weight2*weight2_factor + ...`. The number of property maps is rising though, and it's becoming a hassle to sum them up like this.

So, I envisioned creating an aggregation class, which contains a collection of some sort of all the maps. However, they are templated differently, as `boost::property_map<Graph, PropertyTag>`, where the `PropertyTag` differs among the maps. Since they all support `operator[](edge_escriptor)`, is there some trick I can use, or am I doomed to use `boost::any`?