why do you want to take iterators as arguments here? Taking a vector of MeshSubset* looks more understandable for me.