Definindo operador <para uma estrutura

Às vezes uso pequenasstructs como chaves nos mapas, e por isso tenho que definir umoperator< para eles. Normalmente, isso acaba parecendo algo assim:

struct MyStruct
{
    A a;
    B b;
    C c;

    bool operator<(const MyStruct& rhs) const
    {
        if (a < rhs.a)
        {
           return true;
        }
        else if (a == rhs.a)
        {
            if (b < rhs.b)
            {
                return true;
            }
            else if (b == rhs.b)
            {
                return c < rhs.c;
            }
        }

        return false;
    }
};

Isso parece muito detalhado e propenso a erros. Existe uma maneira melhor ou alguma maneira fácil de automatizar a definição deoperator< parastruct ouclass?

Eu sei que algumas pessoas gostam de usar algo comomemcmp(this, &rhs, sizeof(MyStruct)) < 0, mas isso pode não funcionar corretamente se houver bytes de preenchimento entre os membros ou se houverchar matrizes de string que podem conter lixo após os terminadores nulos.

questionAnswers(14)

yourAnswerToTheQuestion