【发布时间】:2013-04-16 09:32:10
【问题描述】:
我在玩 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 的实现让我迷失在无法阅读的宏的海洋中。所以这就是我在这里问这个问题的原因。
【问题讨论】:
-
我用的是vs2012 Express版。
-
你能推荐这样一个网站吗?
-
用 clang 和 g++ 编译。 +1,有趣的情况。
-
@KerrekSB:这是正确的行为——我更想知道 you 用哪个 stdlib 测试了
std::bind(fun)版本,因为那个有问题。 :)
标签: c++ c++11 std-function stdbind