I just read through the specs about operators and found a strangeness in the definition of opCmp: http://www.digitalmars.com/d/2.0/operatoroverloading.html#compare Mathematically the following are equivalent a < b <=> b > a But the definition seems to swap a < b into b >= a I have not tested the compiler about this yet...