...  No fundamental type --
no standard library type either, that I can think of -- has T() !=
T(), yet you want uuid() != uuid().

I totally agree. Sometimes it "feels" that you must implement something the "practical" way, but the theory behind it that makes the building blocks possible has to be respected at all times to remain mathematically consistent and somewhat predictable for future uses to come.

IMHO, it should always be true that T() == T(), and uuid should not be the exception: uuid() == uuid().

Rodrigo