Senza entrare nei dettagli implementativi della tua classe, ogni metodo che richiama lis all'interno di operator==, deve essere const
Codice PHP:
template<class T> bool lista<T>::operator==(lista<T> const &lis)
{
typename lista<T>::posizione p1 = this->primolista();
typename lista<T>::posizione p2 = lis.primolista(); // primolista deve essere const
bool esito = false;
bool fine = false;
while(((p1 != this.sentinella) && (p1 != lis.sentinella)) && fine == false)
{
if(this.leggilista(p1) == lis.leggilista(p2)) // leggilista deve essere const
esito = true;
else
{
esito = false;
fine = true;
}
p1 = this.succlista(p1);
p2 = lis.succlista(p2); // succlista deve essere const
}
return esito;
}
Se alcuni dei metodi che ti ho elencato non possono essere const (ripeto, non entro nei dettagli della tua implementazione, quindi devi valutare un pò tu), allora lis non può essere const.