"Ola Fosheim Grøstad" " wrote in message
news:[email protected]...
Yes, but my point was that making all value parameters mutable is at odds
with correctness when you later edit it since you no longer know whether
it has been modified or not.
Modifying parameters usually falls into one of three classes: (in my code at
least)
1. 'fixing' the value (eg removing invalid characters from a string,
rounding)
2. reusing the variable
3. consuming the variable (eg popFront on a range)
3 can't be const/immutable, 2 should probably use different variables, but I
don't have a problem with 1 being mutable.
E.g.
int myfunc(int n){
...lotsofstuff...
x = mayormaynotchange(n);
...lotsofstuff...
return n>0 ? x : 0; // modified from "return x"
}
I see this as more of an argument for avoiding long functions. Marking
every possible parameter as const/immutable has a cost, and I don't think
the number of bugs it prevents justifies it. If it was the default the cost
wouldn't exist.