Non è possibile creare una versione "prefissa" dell'operatore con una funzione membro.
E comunque non ne hai bisogno.
Con:
codice:
iterator operator+(const int &n)const {return iterator(ptr+n);} // ptr è un puntatore
hai definito l'operazione base da fare.
Con:
codice:
template<typename T,typename Functor> 
typename DVector<T,Functor>::iterator operator+(const typename  DVector<T,Functor>::iterator &ma, const int& n){
	return ma+n;	
}

template<typename T,typename Functor> 
typename DVector<T,Functor>::iterator operator+(const int &n,const typename  DVector<T,Functor>::iterator &ma){
	return ma+n;	
}
ti crei le astrazioni che ti servono.