template<typename T> class A
{
typedef std::list<T> List;
typedef std::map<int, List::iterator> Map;
};

List::iteratorにtypenameを付けないとコンパイルエラーになるのですが
List::iteratorと書いてあるところが多数あり、全てにtypenameを付けるのは冗長な気がして
できれば避けたいです。
typedef typename List::iterator ほにゃらら;
としてしまえばいいんでしょうが、List::iteratorの方がわかりやすいのでこのまま使いたいのです。
何か方法はありませんか?