Gerando Estruturas Dinamicamente em Tempo de Compilação

Eu tenho que gerar uma estrutura de dados que contém determinados campos somente sob certas condições. Isso geralmente sempre se traduz em algo como o seguinte

struct MyStruct {
    int     alwaysHere;

#ifdef WHATEVER
    bool    mightBeHere;
#endif

    char    somethingElse;

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

Do meu ponto de vista, isso fica feio de se ver e ilegível. Sem sequer falar sobre o código que lida com esses campos, geralmente sob ifdefs também.

Eu estou procurando uma maneira elegante de alcançar o mesmo resultado sem adicionar qualquer sobrecarga, mas com um código muito mais legível. A especialização em modelos parece um pouco excessiva, mas parece-me ser a única alternativa.

O C ++ 11 está adicionando alguma coisa para lidar com essa situação?

Qualquer sugestão será apreciada.

questionAnswers(4)

yourAnswerToTheQuestion