如果我有如下课程:
import std.traits;
class Test(T) if(isCallable!T)
{
alias ParameterTypeTuple!T Parameters;
alias ReturnType!T delegate(Parameters) DelegateType;
DelegateType m_delegate;
void Foo(void ** arguments)
{
// I want to convert the void* array to
// the respective type of each argument
m_delegate(arguments);
}
}
如何将C
void 指针数组转换为它们各自的类型(其中定义了它们的类型,Parameters
并且长度arguments
等于 的长度Parameters
)然后调用函数?
我尝试使用如下元组来执行此操作:
void Foo(void ** arguments)
{
Tuple!(Parameters) tuple;
foreach(index; 0 .. Parameters.length)
{
// Copy each value to the tuple
tuple[index] = *(cast(Parameters[index]*) arguments[index]);
}
// Call the function using the tuple (since it expands to an argument list)
m_delegate(tuple);
}
但这不会编译,因为编译器抱怨“index
在编译时无法读取变量”。有任何想法吗?