mem_fun
またmem_fun_ref
、他の多くのメンバー関数アダプターは、メンバー関数を通常の関数のように動作させることができます。ただし、呼び出すメンバー関数はconstでなければならないという制限が 1 つあります。私はそれらの使用方法を知っていますが、その背後にある理由に混乱し、困惑しています. なぜこのように設計されているのですか?
更新:あいまいで申し訳ありません。以下に例を書きます。
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));
...