On Wed, Mar 21, 2012 at 02:39:04PM -0400, Jonathan M Davis wrote:
[...]
> IMHO, it's _horrible_ that C++ creates entries in a std::map when you
> ask for values that aren't there. A RangeError is _exactly_ what
> should be happening here. There's no element to increment, because it
> hasn't been added yet. I think that the current behavior is very much
> what the behavior _should_ be.
[...]

Then what about:

        int[string][int] map;
        map["abc"][30] = 123;

?

Here, you clearly intend to create a new entry, but currently this
doesn't work. It will throw a RangeError when it tries to look up "abc".
You need the ugly workaround:

        int[string][int] map;
        map["abc"] = int[int].init;
        map["abc"][30] = 123;


T

-- 
What doesn't kill me makes me stranger.

Reply via email to