OK, so the user comes in with a comparer
parameter (to the constructor) of type:
IEqualityComparer<MyTriple<FirstG, SecondG, ThirdG>>
Now, that could be any crazy comparer in "3D". No-one can guarantte that this comparer
works in a coordinate-wise or lexicographic way. Therefore there's absolutely no way you can "factor" out a comparer of only FirstG
, for example.
Suppose you have two instances firstG_X
and firstG_Y
, say. Then from comparer
you cannot tell whether these two are equal. You can ask comparer
to compare two triples only. If you "extend" firstG_X
to some triple, and firstG_Y
to some other triple, you have to make an arbitrary choice, and the answer from the oraculous comparer
might very well depend on that choice.
Hoping what I'm saying makes sense.