我正在尝试迭代不同类型的数组元组,使用每个元素调用一个函数。我目前的实现是这样的:
// 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
传递委托模板。有关使用堆栈指针支持模板函数的实现的任何建议吗?
答案 0 :(得分:1)
委托参数的类型是什么?您不能获取方法模板的地址并获取委托 - 您需要使用类型对其进行实例化。