LINUX.ORG.RU

История изменений

Исправление 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 произвольного числа типов и аргументов. Не двух типов, рекурсивно построенных, а произвольного их числа.