Исправление Siborgium, (текущая версия) :
не может быть мономорфной
impl<T, U: Zip> Zip for (T, U) {
Ну конечно она мономорфная. Ты можешь без потери смысла переписать код на
struct Zippable {
void (*zip)(void*, void*);
void* data;
};
struct Zippable zip(void*, struct Zippable*) { /* ... */ }
или на джавовский Object
.
принимающая типы
Она принимает тип T и U: Zip, больше никаких типов она не принимает. Все, что вы перечислили – инстансы этих типов. Вы написали функцию от двух аргументов. Я прошу: сделайте мне zip произвольного числа типов и аргументов. Не двух типов, рекурсивно построенных, а произвольного их числа.
Исходная версия Siborgium, :
не может быть мономорфной
impl<T, U: Zip> Zip for (T, U) {
Ну конечно она мономорфная. Ты можешь без потери смысла переписать код на
struct Zippable {
void (*zip)(void*, void*);
void* data;
};
struct Zippable zip(void*, struct Zippable*) { /* ... */ }
или на джавовский Object
.
принимающая типы
Она принимает тип T и U: Zip, больше никаких типов она не принимает. Все, чтобы перечислили – инстансы этих типов. Вы написали функцию от двух аргументов. Я прошу: сделайте мне zip произвольного числа типов и аргументов. Не двух типов, рекурсивно построенных, а произвольного их числа.