On Wednesday, 27 August 2014 at 21:43:40 UTC, bearophile wrote:
rcor:
I've tried to express my problem in a mostly minimal example
here:
https://gist.github.com/murphyslaw480/d4a5f857a104bcf62de1
The class Point has an alias this to its own property
'feature()', which returns a reference to a private member.
When I try to sort a Point[], DMD fails with "mutable method
feature is not callable on const object". I'm not actually
using the property 'feature()' or the alias this in the
sorting, so it seems like it shouldn't interfere. That being
said, I'm still slightly const-challenged so maybe its an
error on my part. However, the above example compiles fine
with DMD 2.065.0-3.
It compiles if you use:
@property auto feature() const pure nothrow { return _feature; }
Otherwise I get strange errors like:
...\dmd2\src\phobos\std\exception.d(986,31): Error: pure
function 'std.exception.doesPointTo!(Point, Point,
void).doesPointTo' cannot call impure function
'temp.Point.feature'
Bye,
bearophile
Seems like a library bug. Unsure if DMD or phobos for this one,
but there is definitely a phobos bug to be fixed anyways. I'll
investigate both.