C++ 我可以将boost::bind()与mem\u fun\u ref()一起使用吗?

C++ 我可以将boost::bind()与mem\u fun\u ref()一起使用吗?,c++,boost-bind,mem-fun,C++,Boost Bind,Mem Fun,我的问题很简单:我能做这样的事情吗 假设类foo包含以下成员函数: foo foo::DoSomething(input_type1 input1, input_type2 input2) { ... // Adjust private datamembers return *this; } 使用foo: std::vector<foo> foovec; input_type1 in1; input_type2 in2; ... std::transform(foo

我的问题很简单:我能做这样的事情吗

假设类foo包含以下成员函数:

foo foo::DoSomething(input_type1 input1, input_type2 input2)
{
    ... // Adjust private datamembers
    return *this;
}
使用foo:

std::vector<foo> foovec;
input_type1 in1;
input_type2 in2;
...
std::transform(foovec.begin(), foovec.end(), foovec.begin(), std::mem_fun_ref(boost::bind(&foo::DoSomething, in1, in2)));

因为
std::mem\u-fun\u-ref()
接受一元或空函数,并且
DoSomething()
是二进制的。

您不需要
std::mem\u-fun\u-ref
,只需使用:

std::transform(foovec.begin(),
               foovec.end(),
               foovec.begin(),
               boost::bind(&foo::DoSomething, _1, in1, in2));
或者,您可以将
boost::bind
替换为

std::bind(&foo::DoSomething, std::placeholders::_1, in1, in2)

如果你要使用boostbind,你不想和它一起使用吗?你使用的是什么版本的Boost<代码>boost::bind(&foo::DoSomething,_1,in1,in2)应该是现成的。这同样适用于boost::phoenix::bind(因为boost.phoenix应该是boost.Lambda的最佳替代品,而boost.Lambda应该是boost.bind的最佳替代品)等等。很酷,我想我仍然只知道boost库的威力。谢谢
std::bind(&foo::DoSomething, std::placeholders::_1, in1, in2)