Basically, this creates two tuples-of-references to the Thing members and compares the tuples lexicographically. Modern compilers optimize out all the tuple stuff and emit code basically indistinguishable from a hand-written variant like the following:
That's really nice. I haven't written C++ for a while, and certainly not since std:tie<> became widely available. But I'll keep this in mind if I have to go down that road again.