這兩篇文章是我找出來講的比較清晰的,供大家參考討論
然後有一個問題,上面第二篇博客沒太說清楚
他這裏說的表示綁定函數 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