結局、
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行になってしまった。