On Sunday, 30 June 2013 at 09:24:28 UTC, Diggory wrote:
[..]
Also, the function needs to be strongly pure, not just weakly
pure, otherwise the calling code could pass in both the const
variable and a non-const reference to that variable. If the
callee modifies the non-const reference it would see the
changes to the const parameter which it shouldn't be able to do.
Good point. So, in order to elide postblit when a const variable
is passed by value as a const argument, the function would not
only need to be pure, but also all of its parameters would have
to be either const or immutable.