特定の条件下でのみ特定のフィールドを含むデータ構造を生成する必要があります。通常、これは常に次のように変換されます。
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 は、この状況に対処するために何かを追加していますか?
任意の提案をいただければ幸いです。