I'm trying to sort shared data with a predicate. Buy that causes 'unable to format shared objects'. Here's an example reproducing the issue without any threading code:

shared class SomeClass {
   immutable int value;

   this(const int value) {
      this.value = value;
   }
}

void main() {
    auto n = 10;
    auto data = new shared SomeClass[n];

    foreach (i; 0..n) data[i] = new shared SomeClass(i);
    auto sorted = sort!((a, b) => a.value < b.value)(data);
}

Causes:

/usr/include/dmd/phobos/std/format.d(2616): Error: static assert "unable to format shared objects" /usr/include/dmd/phobos/std/conv.d(108): instantiated from here: formatValue!(Appender!string, shared(SomeClass), char) /usr/include/dmd/phobos/std/conv.d(879): instantiated from here: toStr!(string, shared(SomeClass)) /usr/include/dmd/phobos/std/conv.d(282): instantiated from here: toImpl!(string, shared(SomeClass)) /usr/include/dmd/phobos/std/conv.d(3332): instantiated from here: to!(shared(SomeClass)) /usr/include/dmd/phobos/std/conv.d(3316): instantiated from here: textImpl!(string, string, shared(SomeClass), string, shared(SomeClass), string, ulong, string, ulong) /usr/include/dmd/phobos/std/algorithm.d(10352): instantiated from here: text!(string, shared(SomeClass), string, shared(SomeClass), string, ulong, string, ulong) /usr/include/dmd/phobos/std/algorithm.d(9068): instantiated from here: isSorted!(__lambda1, shared(SomeClass)[]) sort.d(16): instantiated from here: sort!((a, b) => a.value < b.value, cast(SwapStrategy)0, shared(SomeClass)[])

I'm using DMD64 2.065 on Fedora 20.

Any ideas what I'm doing wrong? Thanks.

Reply via email to