Implementar operadores de comparação via 'tupla' e 'empate', uma boa ideia?

(Nota:tuple etie pode ser obtido no Boost ou no C ++ 11.)
Ao escrever pequenas estruturas com apenas dois elementos, às vezes tento escolher umstd::pair, como todas as coisas importantes já foram feitas para esse tipo de dados, comooperator< para pedidos estritamente fracos.
As desvantagens são os nomes de variáveis praticamente inúteis. Mesmo se eu tivesse criado essetypedef, Não me lembrarei 2 dias depois do quefirst e o quesecond exatamente era, especialmente se eles são do mesmo tipo. Isso fica ainda pior para mais de dois membros, pois aninharpair é uma merd
A outra opção para isso é umtuple, seja do Boost ou do C ++ 11, mas isso realmente não parece mais agradável e claro. Então, volto a escrever as estruturas, incluindo todos os operadores de comparação necessário
Desde especialmente ooperator< pode ser bastante complicado, pensei em contornar toda essa bagunça apenas confiando nas operações definidas paratuple:

Exemplo deoperator<, por exemplo. para pedidos estritamente fracos:

bool operator<(MyStruct const& lhs, MyStruct const& rhs){
  return std::tie(lhs.one_member, lhs.another, lhs.yet_more) <
         std::tie(rhs.one_member, rhs.another, rhs.yet_more);
}

(tie faz umtuple doT& referências dos argumentos passados.)

Edita: Sugestão de @DeadMG para herdar privadamente detuple não é ruim, mas tem algumas desvantagens:

Se os operadores forem independentes (possivelmente amigos), preciso herdar publicamente Com elenco, minhas funções / operadores operator= especificamente) pode ser facilmente ignoradoCom otie solução, posso deixar de fora certos membros, se eles não importam para o pedido

Há alguma desvantagem nesta implementação que eu preciso considerar?

questionAnswers(4)

yourAnswerToTheQuestion