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.