Определение оператора <для структуры

Я иногда использую маленькийstructs&nbsp;как ключи в картах, и поэтому я должен определитьoperator<&nbsp;для них. Обычно это выглядит примерно так:

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

Это кажется ужасно многословным и подверженным ошибкам. Есть ли лучший способ, или какой-то простой способ автоматизировать определениеoperator<&nbsp;дляstruct&nbsp;или жеclass?

Я знаю, что некоторые люди любят просто использовать что-то вродеmemcmp(this, &rhs, sizeof(MyStruct)) < 0, но это может работать некорректно, если между членами есть байты заполнения, или если естьchar&nbsp;строковые массивы, которые могут содержать мусор после нулевых терминаторов.