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

Reply via email to