There is a manual way to check this out. It's of course displaying the contents of the vector before and after the sort. That should.. sort it out.
Searching interweb revealed that the bug was caused by something called Strict Weak Ordering. I have no idea what it is, but changing if (o<=co) return true; to if (o<co) return true; in the comparator functor seemed to fix it. Oh well, yet again one of those cryptic programming finesses that escape my limited intelligence.