次のようなものがあるとします。
struct EmptyClass{};
template<typename T1, typename T2 = EmptyClass,
typename T3 = EmptyClass, typename T4 = EmptyClass,
..., typename T20> class PoorMansTuple {
T1 t1;
T2 t2;
...
T20 t20;
};
これで、PoorMansTuple ごとに最大 19 バイトを浪費する可能性があります。
質問は:
1) サイズ 0 のクラスを作成する方法はありますか?
2)変数を条件付きで定義する方法はありますか? 次のようなもの:
T1 t1;
if (T2 != EmptyClass) T2 t2; // pseudo code
if (T3 != EmptyClass) T3 t3; // ...
ありがとう!
黒魔術マクロの使用は認められています。
MacOSX で g++ を使用しています。