STLアルゴリズムの関数オブジェクトってunary_functionとかbinary_functionの継承って必須ですか?

struct MyFunc : ??? {
  template <class Object> void operator (Object const & object) const {
    DoSomething(object);
  }
};

MyFuncのようにオーバーライドされた関数オブジェクトの場合
ベースとなる関数オブジェクトアダプタをどう書けばいいのかわかりません