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.

questionAnswers(4)

yourAnswerToTheQuestion