確かにそうでした…

http://d.hatena.ne.jp/odz/20070613/1181761475

template<typename T>
class Factor{
private:
  T t_;
  T prev_;
  T succ_;

public:
  Factor(T t,T p,T s):t_(t),prev_(p),succ_(s){}
  operator T() const { return t_; }
  T prev() const { return prev_; }
  T succ() const { return succ_; }
};

何とかして出来ないかなと考えてみたけれどダメだった。
RubyC++みたいな 変な 素晴らしい 言語じゃありません ><;