struct A {

 template <typename Args>
  struct sig
  {
   //typedef ??? type;
  };

  int operator()(int x) const;

  void operator()(int x, int y) const;

};

lambda式で使うファンクタの定義で、上のように引数の数が違い、
かつ戻り値の型も違う複数の関数呼び出し演算子を定義したい場合、
sigでどのようにtypeを表現したらいいのでしょうか?