迭代数组的元组

时间:2011-08-07 20:14:44

标签: templates d

我正在尝试迭代不同类型的数组元组,使用每个元素调用一个函数。我目前的实现是这样的:

// 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 个答案:

答案 0 :(得分:1)

委托参数的类型是什么?您不能获取方法模板的地址并获取委托 - 您需要使用类型对其进行实例化。