Definir operador <para una estructura

A veces uso pequeñostructs como claves en los mapas, así que tengo que definir unoperator< para ellos. Por lo general, esto termina pareciéndose a esto:

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;
    }
};

Esto parece muy detallado y propenso a errores. ¿Hay una mejor manera, o alguna manera fácil de automatizar la definición deoperator< parastruct oclass?

Sé que a algunas personas les gusta usar algo comomemcmp(this, &rhs, sizeof(MyStruct)) < 0, pero esto puede no funcionar correctamente si hay bytes de relleno entre los miembros, o si haychar matrices de cadenas que pueden contener basura después de los terminadores nulos.

Respuestas a la pregunta(14)

Su respuesta a la pregunta