如何将ref / out函数指针传递给函数?

时间:2012-01-10 15:32:47

标签: d dmd

我想实例化一个函数指针:

static void GetProc (out function f) {
    auto full = demangle(f.mangleof);
    auto name = full[full.lastIndexOf('.')+1..$];

    f = cast(typeof(f)) GetProcAddress(hModule,name.toStringz);
}

但编译器不允许我使用函数类型变量(out function f)。我尝试使用Object,但显然function不是Object(怎么来?)。那么,如何将function作为ref / out变量传递(不使用template / mixin,这会模糊代码并强制我添加许多typeof陈述......)?

1 个答案:

答案 0 :(得分:7)

没有名为function的类型。函数必须指定返回类型和参数类型,如int function(double, string)。如果您想支持任何类型的功能,请使用template

static void GetProc(T)(out T f) if (isFunctionPointer!T) 
  ...