On Thu, 20 Jan 2011 21:14:06 -0500, Adam Conner-Sax
<adam_conner_...@yahoo.com> wrote:
The following code:
import std.algorithm;
class Foo {
private:
int id_;
public:
shared int id() const { return id_; }
}
static bool compare(in shared(Foo) a, in shared(Foo) b)
{
return (a.id() < b.id());
}
void main()
{
shared Foo a,b,c;
shared(Foo)[] uFooArray = [a,b,c];
sort!(compare)(uFooArray);
}
fails to compile with
usr/local/src/dmd2/src/phobos/std/conv.d(295): Error: function
object.Object.toString () is not callable using argument types ()
whereas if I just take all the shared away it compiles fine. I imagine
that
this is somewhere to do with a string function being called on an
element of
the array and then there's no shared version of that method.
Is there a fix? Or a different way to call sort? I can cast away shared
for
the sort but since in the actual application I have a reason for it,
that's a
bit worrisome.
Thanks!
This should be fixed in svn. I encountered a very similar issue, and
implemented a fix. This will be fixed in the next release:
http://d.puremagic.com/issues/show_bug.cgi?id=4901
-Steve