weaselcat:
was it a conscious decision to make the AA [] operator not
work like map/etc in C++?
What do you mean?
accessing a non-existing element in C++'s map/unordered_map
inserts the default instead of raising an exception
int main(int argc, char *argv[])
{
std::unordered_map<std::string, int> test;
std::cout << test["hello"] << std::endl;
return 0;
}
prints 0
void main()
{
int[string] test;
writeln(test["hello"]);
}
core.exception.RangeError@source/main.d(9): Range violation
Yes, it was a conscious decision, because here C++ behaves in a
very bug-prone way. Sometimes C++ is a bad example to follow
(like with permutations generations, that currently is not a
Range in Phobos for the wrong reasons).
Bye,
bearophile