// ポリシークラスその2。listによる実装。
template<class T>
class ImplList
{
public:
  typedef std::list<T> cont_t;
  typedef cont_t::iterator Iter;
  typedef cont_t::size_type SizeType;
private:
  cont_t c_;
public:
  void PushFront(T val){
    c_.push_front(T);
  }
  void PushBack(T val){
    c_.push_back(T);
  }
  void Erase(T val){
    c_.remove(T);
  }
  T& operator[](SizeType n){
    Iter it = c_.begin();
    for (int i=0;i<n;++i){
      ++it;
    }
    return *it;
  }
}

// Generic Sequence Container
template
  <
    class T,
    template <class> class ImplContainer = ImplVector
  >
class GSC : public ImplContainer<T>
{
};

GSC<int> gsc;
gsc.PushBack(3);
gsc.PushFront(5);
gsc.Erase(3);
int a = gsc[0];

こんな感じで、効率の良し悪しは無視して、思いつく限りのメンバ関数を
用意しておけばいいんじゃないかなと。後で「vector実装でOKだと思ってたけど、
list実装の方がよかったな〜」ってときは、GSC<int>って定義をGSC<int,ImplList>に
変えるだけです。使ってる部分のコードは全く変更しなくていい、ってのが当然の目標。

……とかいって、どっかですでに開発されてましたー、じゃ虚しいんで、
存在を知ってる人がいたら、さっさとツッコミ入れてくださいね。