The following script in 2.29.1 and earlier versions:
class foo {
void opCall(string) {}
}
void main() {
array<foo> bar(1);
bar[0]("");
}
causes an access violation on attempt to execute. As far as I can tell, the conditions are rather specific and it's required that opCall has at least one string or string reference (or another similar object) argument and it's also necessary for opCall to be called on an array element (or perhaps another reference) rather than a freestanding instance. If the call to opCall is made explicit, i.e.
bar[0].opCall("");
the error will not occur either.