指定されたパラメーターを使用して、ベクター内の各オブジェクトでメンバー関数を呼び出そうとしていますが、呼び出しをポリモーフィックにしたいと考えています。以下に示す関数vstuffがこれを達成すると思います。しかし、vstuff を変更して、boost::bind を使用せずに vector< shared_ptr < Base> > を取ることはできますか?
class Base{
virtual double stuff(double t);
}
//and some derived classes overriding stuff
//then in some code
vector<double> vstuff(double t, vector<Base*> things)
{
vector<double> vals;
vals.resize(things.size());
transform(things.begin(), things.end(), vals.begin(), std::bind2nd(std::mem_fun(&Base::stuff),t));
return vals;
}
shared_ptr には mem_fun ではなく mem_fn が必要であることはわかっていますが、パラメーター t で渡す必要がある bind2nd で mem_fn を機能させることに成功していないので、実現可能かどうか疑問に思っています..?