Dynamisches Generieren von Strukturen zur Kompilierungszeit

Ich muss eine Datenstruktur generieren, die bestimmte Felder nur unter bestimmten Bedingungen enthält. Dies bedeutet normalerweise immer Folgendes

struct MyStruct {
    int     alwaysHere;

#ifdef WHATEVER
    bool    mightBeHere;
#endif

    char    somethingElse;

#if SOME_CONSTANT > SOME_VALUE
    uint8_t alywasHereButDifferentSize;
#else
    uint16_t alywasHereButDifferentSize;
#endif
...
};

Aus meiner Sicht wird dies leicht hässlich und unleserlich. Ohne auch nur über den Code zu sprechen, der diese Felder behandelt, normalerweise auch unter ifdefs.

Ich bin auf der Suche nach einem eleganten Weg, um das gleiche Ergebnis zu erzielen, ohne irgendwelche zusätzlichen Kosten zu verursachen, aber mit einem Code, der viel besser lesbar ist. Template-Spezialisierung scheint ein bisschen übertrieben, aber es scheint mir die einzige Alternative zu sein.

Fügt C ++ 11 überhaupt etwas hinzu, um mit dieser Situation fertig zu werden?

Jeder Vorschlag wäre dankbar.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage