Using dmd 2.058 I can compile the following pure bool has_path(string paths[], string needle) {
paths[0] = "bad"; ... do something else ... return false; } and change the passed in array "paths". Isn't this a violation of has_path's pure contract? Shouldn't all pure function parameters be passed as "in" to avoid side effects. Sorry if I missed something obvious.