Ora voglio definire l'operatore in versione prefissa (numero + iteratore) e ho letto in giro che in questo caso non è possibile definire l'operatore direttamente la classe iterator ma va definito come operatore globale.
Fai così:

codice:
friend iterator operator+(const int& n, iterator& i)
{
    return iterator(i.ptr+n);
}