"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.

Reply via email to