Итерация по кортежу массивов - PullRequest
3 голосов
/ 08 августа 2011

Я пытаюсь перебрать кортеж массивов разных типов, вызывая функцию с каждым элементом.Моя текущая реализация выглядит следующим образом:

// Some T... is defined up here.

// ArrayTuple!(T) is a TypeTuple of arrays of each type in T.
ArrayTuple!(T) data;
void iterate(alias func, uint n = 0)()
{
    static if(n < T.length)
    {
        foreach(elem; data[n])
            func(elem);

        iterate!(func, n + 1)();
    }
}

И используется так:

void foo(T)(T elem)
{
    ...
}

iterate!(foo)();

Работает отлично по большей части, но шаблон делегата не может быть передан для func.Любые предложения по реализации, которая поддерживает функции шаблона с указателями стека?

1 Ответ

1 голос
/ 08 августа 2011

Каким будет тип параметра делегата? Вы не можете взять адрес шаблона метода и получить делегата - вам нужно создать его экземпляр с типом.

...