On Sunday, 9 June 2013 at 10:49:17 UTC, Jonathan M Davis wrote:
On Sunday, June 09, 2013 12:33:39 Peter Alexander wrote:
It looks like the core issue here is that it's simply not
possible to create a mutable copy of a const object with
indirection:
Part of my point here (that you seem to have missed) is that
there is a cost
to making it so that const is stripped from the type even if
you can do so. It
_forces_ a copy if the value being passed in isn't mutable,
whereas if the
constness were the same, then the value being passed in could
potentially be
moved rather than copied. As such, I don't know if we even want
to strip the
constness even if we can.
- Jonathan M Davis
Well, these are primitives we are talking about. I'm not sure
passing an int by value instead of by ref is much more expansive.
We already do the same for slices/pointers, so really, all we are
doing is making things consistent.
I agree with your point for structs though. Given any struct,
even if POD without indirections, const means const.
But for built-in primitives, I don't think it is a problem.