История изменений
Исправление ival, (текущая версия) :
template <typename T1, typename T2>
class multi {
...
}
template<typename T1, typename T2>
multi<T1, T2> mk_multi (T1 v1, T2 v2) {return multi<T1, T2> (v1, v2);}
template multi <>
class multi <void> {...}
typedef multi <T1,
multi <T2,
...
multi <T6,
multi <void>
>
...
>
>
big_one;
template <typename t1, ..., typename t6>
big_one mk_big_one (t1 v1, ...t6 v6) {
mk_multi (v1, mk_multi (v2, ... (mk_multi (v6, multi<void> ())) ... ))
}
Исправление ival, :
template <typename T1, typename T2>
class multi {
...
}
template<typename T1, typename T2>
mk_multi (T1 v1, T2 v2) {return multi<T1, T2> (v1, v2);}
template multi <>
class multi <void> {...}
typedef multi <T1,
multi <T2,
...
multi <T6,
multi <void>
>
...
>
>
big_one;
template <typename t1, ..., typename t6>
big_one mk_big_one (t1 v1, ...t6 v6) {
mk_multi (v1, mk_multi (v2, ... (mk_multi (v6, multi<void> ())) ... ))
}
Исходная версия ival, :
template <typename T1, typename T2>
class multi {
...
}
template<typename T1, typename T2>
mk_multi (T1 v1, T2 v2) {return multi<T1, T2> (v1, v2);}
template multi <>
class multi <void> {...}
typedef multi <T1,
multi <T2,
...
multi <T6,
multi <void>
>
>
>
>
big_one;
template <typename t1, ..., typename t6>
big_one mk_big_one (t1 v1, ...t6 v6) {
mk_multi (v1, mk_multi (v2, ... (mk_multi (v6, multi<void> ())) ... ))
}