相关疑难解决方法(0)

为什么从bind返回的对象会忽略额外的参数?

假设我有一个带两个参数的函数,

void f(int x, int y);
Run Code Online (Sandbox Code Playgroud)

我想绑定其中一个.我可以使用std::bind如下:

auto partiallyBoundF = std::bind(f, 10, _1);
Run Code Online (Sandbox Code Playgroud)

partiallyBoundF只需要一个参数,但我可以用多个参数调用它.超越第一个的论点甚至不必是一个有意义的类型:

partiallyBoundF(20, 0);
partiallyBoundF(0, 44, -99, "Hello", 4.5, true, []{});
Run Code Online (Sandbox Code Playgroud)

允许返回的对象bind传递额外参数的目的是什么?它允许编译调用错误,否则将被拒绝.

c++ stdbind c++11

19
推荐指数
1
解决办法
1600
查看次数

了解std :: function和std :: bind

我正在玩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;
}
Run Code Online (Sandbox Code Playgroud)

如何function<void(int)>将一个函数绑定到void().然后我可以调用f(1)并获得乐趣().我想了解这是如何完成的.进入微软Visual Studio 2012的实现,让我迷失在无法理解的宏观之中.所以这就是我在这里问这个问题的原因.

c++ stdbind c++11 std-function

9
推荐指数
2
解决办法
1778
查看次数

标签 统计

c++ ×2

c++11 ×2

stdbind ×2

std-function ×1