我想将bind1st(mem_fun(&my_class::f), this)函数传递给for_each。不幸的是,这很难读,所以我想给它一个更易读的名称,如下所示:

(the type I am looking for) meaningful_name = bind1st(mem_fun(&my_class::f), this);

for_each(v.begin(), v.end(), meaningful_name);

有没有一种简单的方法可以推断函子的类型? (正是因为这个原因,我知道mem_fun为我们节省了很多痛苦。)

最佳答案

这取决于my_class:f的参数和返回类型。如果功能是

T my_class::f(A arg)

那你需要
binder1st<mem_fun1_t<T,my_class,A> > meaningful_name = bind1st(mem_fun(&my_class::f), this);

这种情况在C++ 0x中会更好:
auto meaningful_name = bind1st(mem_fun(&my_class::f), this);

09-05 06:50