Ich habe in Delphi mit Templates keine Erfahrung, aber ich würde das so machen, wenn das geht (eher Pseudocode, da ich wie gesagt die Einzelheiten nicht kenne):
Delphi-Quellcode:
TPair<A, B> = class
private
a: A;
b: B;
public
function Hash: THash;
end;
function TPair.Hash: THash;
begin
Result := a.Hash xor b.Hash;
end;
Delphi-Quellcode:
TTriple<A, B, C> = class
private
a: A;
b: B;
c: C;
public
function Hash: THash;
end;
function TTriple.Hash: THash;
begin
Result := a.Hash xor b.Hash xor c.Hash;
end;
usw. je nachdem, wie viele Dimensionen man braucht.
Und dann z.B.
TDictionary<TTriple<string, integer, integer>, string>
verwenden.