On Friday, 22 February 2013 at 20:32:59 UTC, Jonathan M Davis wrote:
On Friday, February 22, 2013 14:31:55 Steven Schveighoffer wrote:
It is probably rare to have both a const and non-const overload, that is true, but it is not up to D to decide what design is best. We should take the most flexible approach, and allow designers to come up with whatever ideas they like. I don't think there is any significant extra work required to support const method overloads in the compiler, in fact it
would be a more significant change to make that an exception.

A prime example of where overloading on const can be useful is caching. You can write a function which caches its result for efficiency purposes, but the const version can't cache, whereas the non-const one can. So, you can do
something like

auto calculate()
{
 if(_dirty)
 _cache = _doCalculation();
 return _cache;
}

auto calculate() const
{
 if(_dirty)
 return _doCalculation();
 return _cache;
}

If you couldn't overload on const, then that wouldn't be possible. You'd be forced either to forgoe const and make it cache or to make it const and forgoe
the caching.


Nothing prevent you from putting the cache outside the object.

Reply via email to