我试图从另一个调用 GetProcAddress 的函数给出的 FARPROC 地址返回一个函数实例。想出了一个有趣的问题。这是功能:
template<class FT>
std::function<FT> to_function(FARPROC address) {
return address;
}
稍后我将创建一个没有任何问题的无输入函数:
auto try1 = to_function<int()>(addr1);
然而,当函数接受输入时,visual c++ 11 编译器会爆炸:
auto try2 = to_function<int(int)>(addr2);
它正确地返回:
错误 C2197:“int (__stdcall *)(void)”:调用参数过多
所讨论的类型等同于 FARPROC,它是 GetProcAddress 返回的内容,与函数的参数列表无关。
我的问题是,在给定 to_function 的简单函数原型的情况下,我将如何通过将 FARPROC 转换为 std::function 的适当类型来解决这个问题?提前喝彩。