这两篇文章是我找出来讲的比较清晰的,供大家参考讨论
然后有一个问题,上面第二篇博客没太说清楚
他这里说的表示绑定函数 fun 的第三个参数为 3,而fun 的第一,二个参数分别有调用 f3 的第二,一个参数指定的意思是:
将常量3在bind时放到了第三个参数的位置,然后对于fun函数来说就只剩了前两个参数没有指定,采用了placeholders::_n的写法,然后在进行调用的时候,传入了1和2,这里的2就对应placeholders::_1,1则对应placeholders::_2,所以如果把3写在最前面,那么输出的结果就是3,2,1了
同理,在下面的
auto f4 = std::bind(fun_2, n, placeholders::_1);
f4(m);
在这个例子中,由于bind时把n写在了第一位,所以n就是实际传入的参数a,然后剩下的参数由调用时指定,剩下的参数只剩了一个,所以自然而然的对应了placeholders::_1,并不是说与placeholders::_1对应位置的就一定是整个函数的第一个参数,而是剩余参数的第一个参数,这里bind时就指定了一个m进去,所以剩余的参数就成了一个 int &b