【发布时间】:2013-07-21 20:30:45
【问题描述】:
我正在尝试学习如何将 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 中已弃用。