Iterador de aplanamiento

¿Existe alguna implementación de iterador existente (quizás en impulso) que implemente algún tipo de iterador de aplanamiento?

Por ejemplo:

unordered_set<vector<int> > s;

s.insert(vector<int>());
s.insert({1,2,3,4,5});
s.insert({6,7,8});
s.insert({9,10,11,12});

flattening_iterator<unordered_set<vector<int> >::iterator> it( ... ), end( ... );
for(; it != end; ++it)
{
    cout << *it << endl;
}
//would print the numbers 1 through 12

Respuestas a la pregunta(4)

Su respuesta a la pregunta