As expected, the following trivial case works:

void main() {
    auto func = delegate(int i) {};  // expects int

    func(const(int)(42));            // passes const(int)
}


The following concurrency program fails at runtime:

import core.thread;
import std.concurrency;

void foo() {
    receiveOnly!int();            // expects int
}

void main() {
    auto worker = spawn(&foo);

    // Sends const(int)
    worker.send(const(int)(42));  // sends const(int)

    thread_joinAll;
}

std.concurrency.MessageMismatch@std/concurrency.d(224): Unexpected message type: expected 'int', got 'const(int)'


Feature or bug? (receive() is worse because as it simply ignores the message.)

Ali

Reply via email to