1

mem_funmem_fun_ref许多其他成员函数适配器可以使成员函数像普通函数一样工作。但是有一个限制,他们调用的成员函数必须是const的。我开始知道如何使用它们,但对其背后的原因感到困惑和困惑。为什么要这样设计?

更新:抱歉含糊不清。下面写一个例子。

class A
{
    ...
    //void fun(){cout<<"Fun";} This is not const and the compiler would complain
    void fun() const {cout<<"Not fun";}
    ...
}
vector<A> avec;
...
for_each(avec.begin(),avec.end(),mem_fun_ref(&A::fun));
...
4

1 回答 1

2

没有这样的限制。这些模板函数为 const 和非 const 成员函数重载。

例如

template<class S, class T>
mem_fun_t<S,T> mem_fun(S (T::*f)());

template <class S, class T>
const_mem_fun_t<S,T> mem_fun(S (T::*f)() const);
于 2013-12-15T15:21:22.420 回答