On Wed, 21 Mar 2012 14:29:14 -0400, H. S. Teoh <hst...@quickfur.ath.cx> wrote:

A question was asked on the d-learn forum about why this throws a
RangeError:

        int[string][int] map;
        map["abc"][20]++;

This is understandable, since the compiler translates the second line to:

        map.opIndex("abc").opIndexUnary!"++"(20);

Since map["abc"] doesn't exist yet, opIndex throws RangeError before we
ever get to the ++.

What about a create accessor of the map which is the same as accessing the map, except it ensures T.init is used at each level?

That is:

map.create["abc"][20]++;

Whether you want default-created elements or not is an important design decision that should not be up to the container.

-Steve

Reply via email to