ここが厳しいよMinGW typename はどう付けるの?

どうも^^dです。
さて、開発環境を少しMinGWに移したわけですが・・・、何かと今まで作っていたライブラリdkutilの移植作業が難しい。
以下のようなクラスでのお話。


template<class MAP_T>
class map_ex_adapter : public MAP_T{
public:
typedef MAP_T base_type;
typedef map_ex_adapter<base_type> self_type;

/// キーの型
typedef typename base_type::key_type key_type;
///データの型
typedef typename base_type::mapped_type mapped_type;
/// キーとデータのペア
typedef typename base_type::value_type value_type;
/// キーを比較するファンクションオブジェクト
typedef typename base_type::key_compare key_compare;
///allocator type
typedef typename base_type::allocator_type allocator_type;

///value_typeのkey_typeが非const版
typedef std::pair<key_type,mapped_type> DATA_TYPE;

typedef std::pair<base_type::iterator,bool> RESULT;
//typedef std::pair<bool,void *> GET_DATA;
typedef typename base_type::iterator iterator;
typedef typename base_type::const_iterator const_iterator;
typedef typename base_type::reverse_iterator reverse_iterator;
typedef typename base_type::const_reverse_iterator const_reverse_iterator;
public:


しっかりとエラーを吐いてくれるのだ。

to
in
parse
At

と、訳のわからないものをだ・・・。*1
さて、何処が間違っているだろうか?分かった人はやっぱり凄いですねぇ〜と、私は思っちゃいます。

今まで、クラス内のものをtypedef する時はそのまんまtypedefだった。
しかし、前前からtypenameをつけようつけようと思いつつ、つけていなかった。
事実、何処でつければいいのか分からなかった。

で、参考になったサイト カレー温泉
http://ray.sakura.ne.jp/
http://ray.sakura.ne.jp/template/typename.html
これによると、クラス内にある型をtypedefする時、宣言するときはtypenameをつけなさいとの事。(VCではテンプレートクラスでないクラスにtypedefする時typenameをつけると怒られるらしい)

そうだったんだ〜。
へーへーへぇ。*2


で、間違っているところは??
あ〜、なーるねぇ。


typedef std::pair< base_type::iterator,bool> RESULT;

*1:実はDev-C++がエラー文字列のパースをミスって要るだけ^^;

*2:でも、POD(C言語でも使える型)の時 しか?typename は使っていなかったような〜。