>>601
Baseクラスが持つ2つのコンテナを統一的なインターフェースで
処理する関数を書きたいのです。つまり

//---------------
template<typename T, typename U>
struct Base {
 std::vector<T> mTList;
 std::vector<U> mUList;

 template<typename V> struct traits {};
 struct traits<T> { typedef MyIterator<T> iterator; };
 struct traits<U> { typedef MyIterator<U> iterator; };

 MyIterator<T> begin(T) { return mTList.begin(); }
 MyIterator<T> end(T) { return mTList.end(); }
 MyIterator<U> begin(U) { return mUList.begin(); }
 MyIterator<U> end(U) { return mUList.end(); }

 template<typename V, typename W)
 void func(void) {
  for (traits<V>::iterator i=begin(V); i!=end(V); ++i) {
   W()(i); // 処理
  }
 }
};

Base<TypeA,TypeB> x;

x.func<TypeA,MyOperation>();
x.func<TypeB,MyOperation>();
//---------------

こんな感じで…。

>>602
4-5行目のstruct traits<T>をstruct traits<typename T>にせよということでしょうか?
文法エラーが出ました…。