我想实例化一个函数指针:
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
陈述......)?
答案 0 :(得分:7)
没有名为function
的类型。函数必须指定返回类型和参数类型,如int function(double, string)
。如果您想支持任何类型的功能,请使用template
static void GetProc(T)(out T f) if (isFunctionPointer!T)
...