Must support comparison for equality and the hash function. Default built-ins provided appropriately.
I assume D has enough magic to pattern match on the traits of the types in the argument list?
If that's not the case, then I don't understand either.