C++訳分からなすぎワロタ (3) typename がウザい

template<typename K, typename V>
class LockedMap {
public:
    typedef std::map<K,V> Map;
    typedef typename Map::value_type value_type;
    typedef typename Map::const_iterator const_iterator;
private:
    Map map0;
    boost::mutex mtx;
public:
    const_iterator find(const value_type &p) {
        boost::scoped_lock lk(mtx);
        return map0.find(p);
    }
};

いくら依存名だからと言って typedef のところで typename が必要なのはおかしいだろ常考.どうにかしてほしい.
まぁ(C言語の時代から)文法的には typedefstatic やら volatile と同格の "storage class specifier" か何かだった気がするので,その辺の事情かな...

追記: volatile は cv-qualifier だった... 代わりに externで.あと「文法的には typename は」って書いてたのは間違い.こんな私にC/C++を使う資格は無くて,FORTRANでリスト処理を「やる (DO) 」刑に処されても文句は言えない.