Динамическое создание структур во время компиляции
Я должен создать структуру данных, которая содержит определенные поля только при определенных условиях. Обычно это всегда означает что-то вроде следующего
struct MyStruct {
int alwaysHere;
#ifdef WHATEVER
bool mightBeHere;
#endif
char somethingElse;
#if SOME_CONSTANT > SOME_VALUE
uint8_t alywasHereButDifferentSize;
#else
uint16_t alywasHereButDifferentSize;
#endif
...
};
С моей точки зрения, на это легко смотреть безобразно и нечитаемо. Даже не говоря о коде, который обрабатывает эти поля, обычно под ifdefs тоже.
Я ищу элегантный способ достижения того же результата без каких-либо дополнительных затрат, но с большим количеством кода. более читабельным. Шаблонная специализация кажется немного излишней, но мне кажется быть единственной альтернативой.
Добавляет ли C ++ 11 что-нибудь для решения этой ситуации?
Любое предложение будет оценено.