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.