我想學習如何使用用戶定義的類使用bind2nd,但我發現了一個錯誤,我想不通,儘管我的尋找到其他的努力如何解決資源以獲得援助。Bind2nd問題與用戶定義的類
幫助將不勝感激,謝謝。
的main.cpp
#include <algorithm>
#include <vector>
class F
{
public:
int operator()(int a, int b)
{
return a * b;
}
};
int main(void)
{
std::vector<int> bases;
for(int i = 0; i < 5; ++i)
bases.push_back(i);
std::transform(bases.begin(), bases.end(), bases.begin(), std::bind2nd(F(), 2));
// Error C2664: '_OutIt std::transform<std::_Vector_iterator<_Myvec>,std::_Vector_iterator<_Myvec>,
// std::binder2nd<_Fn2>>(_InIt,_InIt,_OutIt,_Fn1)' : cannot convert parameter 4 from
// 'std::binder2nd<_Fn2>' to 'std::binder2nd<_Fn2>'
}
注意,'的std :: bind2nd'已被棄用在C++ 11更通用的和靈活的解決方案。 – juanchopanza