El ejemplo que has pasado no sirve porque:
Código C++:
Ver originalpair<const Key, Def> * it_v2 = (pair<const Key,Def> *) &dic2[0];
Aunque sea una clase anidada, "iterator" no sabe sobre qué instancia de "diccionario" está trabajando. Otra cosa es que "dic2" sea un método estático de "diccionario", pero salvo que a "iterator" le facilites un puntero o una referencia a una instancia de "diccionario" me temo que no vas a ser capaz de acceder de forma satisfactoria a los miembros de "diccionario" desde "iterator"