mem_fun(2)

結局、


class CInt {
int n;
public:
CInt(int m) { n = m; }
void print() const { cout << n << endl; }
void print(int k) const { cout << n * k << endl; }
};

となっていると、


CInt::print

がどちらを指すのかわからないためにうまくいかないのだった。
しかし、こうするとわかるようである。


void (CInt::*f)() const = &CInt::print;
for_each(v.begin(), v.end(), mem_fun(f));

ただし、2行になってしまった。