Scusa, ma continuo a non capire: che tipo di errore è? Un assert? Un errore di compilazione? Una eccezione?
Perché nel 90% dei casi problemi di questo genere vengono da un operatore di confronto che non definisce un ordine totale stretto, ma così ad occhio il tuo mi pare giusto...