Genericプログラミングマニアのみなさま。汎用シーケンスコンテナを作れませんか。

Effective STLの第2項、「コンテナに依存しないコードという幻想に注意しよう」を
読んだ上で言ってます。
vector,deque,listってのは、しょせん実装の詳細なわけですから、最初っから
「汎用シーケンスコンテナ」ってのがあって、その実装を、vector,deque,listなどの中から
ポリシーで選べたら便利なんじゃないかと思うわけですが。
Effective STLには、たとえば「vectorをサポートしようとすると、push_frontとpop_frontを
使用できない」とか書いてあります。要するに、「全部に共通するメンバ関数がないから、無理」
ってなことに過ぎないわけでして。全部ラップして作り直せば問題解決なんでは、と思った
わけです。どうでしょう?

// ポリシークラスその1。vectorによる実装。
template<class T>
class ImplVector
{
public:
  typedef std::vector<T> cont_t;
  typedef cont_t::iterator Iter;
  typedef cont_t::size_type SizeType;
private:
  cont_t c_;
public:
  void PushFront(T val){
    c_.insert(c_.begin(),T);
  }
  void PushBack(T val){
    c_.push_back(T);
  }
  void Erase(T val){
    // eraseとremoveの慣用的用法ってやつ。
    c_.erase(remove(c_.begin(),c_.end(),val),c_.end());
  }
  T& operator[](SizeType n){
    return c_[n];
  }
};