Предположим, у меня есть что-то вроде этого:
struct EmptyClass{};
template<typename T1, typename T2 = EmptyClass,
typename T3 = EmptyClass, typename T4 = EmptyClass,
..., typename T20> class PoorMansTuple {
T1 t1;
T2 t2;
...
T20 t20;
};
Теперь я могу тратить до 19 байт на каждый PoorMansTuple.
Вопрос:
1) Есть ли способ создать класс размером 0?
2) Есть ли способ условно определить varaible? Что-то вроде:
T1 t1;
if (T2 != EmptyClass) T2 t2; // pseudo code
if (T3 != EmptyClass) T3 t3; // ...
Спасибо!
Допускается использование макросов черной магии.
Я использую g ++ на MacOSX.