With dmd 2.017: import std.stdio; void main() { string[string] foobar = [ "foo" : "bar" ]; foreach (key, value; foobar) writefln(key, value); // prints foobar assert(foobar["foo"] == "bar"); // arraybounds error } Could somebody verify this as a bug or not? I'm not sure because I just started with D2 a bit.