>>482
ってことは、
 map<int,value_type> const m;
 value_type const& v1 = m[0];
 value_type const& v2 = m[0];
としたとき、 &v1 != &v2 なわけだな。ちょっと気になるな。

operator [] でプロキシを返すと、
 map<int,map<int,int> > const m;
 int n = m[0].size();
こんなんできなくなりそう。

> const [] に対応することもできたはずなんだが……なぜそうならなかったのかは知らない。
要素が無かった場合への対応がいろいろ考えられるし、
std::map自身の立場ではどれが一般的とも言えないからでしょ。
たとえば>>482のような対応が常に正解とは言えないし、
そういう対応が適している場合には、std::mapを拡張して実装すればいい。

こんなこというと、 operator [] 自体がダメだったとも言えるけど、
実際のところダメだったんじゃないかと思う。