我正在尝试使用std::function和std::bind,但是我发现了一些不直观的事情,我希望更好地理解它。
举个例子:
void fun()
{
}
void hun(std::string)
{
}
int main()
{
function<void(int)> g = &fun; //This fails as it should in my understanding.
function<void(int)> f = std::bind(fun); //This works for reasons unknown to me
function<void(int, std::string)> h = std::bind(hun); //this doesn't work
return 0;
}
如何将 function<void(int)>
绑定到一个返回类型为 void() 的函数中。
然后我可以调用 f(1) 并获得 fun()。
我想了解这是如何实现的。
进入 Microsoft Visual Studio 2012 的实现让我陷入了一片难以阅读的宏定义海洋,所以我在这里提出了这个问题。
std::bind(fun)
版本,因为那个有bug。 :) - Xeo