Dynamiczne generowanie struktur w czasie kompilacji
Muszę wygenerować strukturę danych, która zawiera pewne pola tylko pod pewnymi warunkami. Zwykle zawsze przekłada się to na coś takiego
struct MyStruct {
int alwaysHere;
#ifdef WHATEVER
bool mightBeHere;
#endif
char somethingElse;
#if SOME_CONSTANT > SOME_VALUE
uint8_t alywasHereButDifferentSize;
#else
uint16_t alywasHereButDifferentSize;
#endif
...
};
Z mojego punktu widzenia wygląda to na brzydkie i nieczytelne. Nawet nie mówiąc o kodzie, który obsługuje te pola, zwykle również w ifdefs.
Szukam eleganckiego sposobu na osiągnięcie tego samego rezultatu bez dodawania jakichkolwiek kosztów ogólnych, ale z kodem o wiele bardziej czytelnym. Specjalizacja szablonów wydaje się nieco nadmierna, ale wydaje mi się, że jest to jedyna alternatywa.
Czy C ++ 11 dodaje cokolwiek, aby poradzić sobie z tą sytuacją?
Wszelkie sugestie będą mile widziane.