3

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

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(怎么来的??)。那么,如何传递一个functionas ref/out变量(不使用template/ mixin,这会掩盖代码并迫使我添加许多typeof语句......)?

4

1 回答 1

7

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

static void GetProc(T)(out T f) if (isFunctionPointer!T) 
  ...
于 2012-01-10T15:48:30.407 回答