Как передать указатель на функцию ref / out в функцию? - PullRequest
3 голосов
/ 10 января 2012

Я хочу создать указатель на функцию:

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 Ответ

7 голосов
/ 10 января 2012

Нет типа с именем function. Функция должна указывать тип возвращаемого значения и тип аргумента, например int function(double, string). Если вы хотите поддерживать какую-либо функцию, используйте шаблон

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