Matching with std.concurrency receive

Adam Adam at
Fri Dec 9 22:38:19 PST 2011

Okie, having some trouble trying to do matches against classes /
interfaces with templates using the std.concurrency's receive()

Here's a simple use case I have:

import std.stdio;
import std.concurrency;
import std.variant;

immutable interface BasicType {

immutable class SubType : BasicType {

immutable class A(T : BasicType) {

void main() {
    Tid tid = spawn(&thread);
    immutable A!(SubType) instance = new immutable(A!(SubType))();
    send(tid, instance);
    while (true) {}

void thread() {
            (A!(BasicType) message)
            (Variant ant)

Running this outputs the Variant ant's type, so we see that it
"falls through" to that pattern. However, if I switch the match from
BasicType to SubType... it just hangs on me.

What horribly stupid thing am I doing here?

More information about the Digitalmars-d-learn mailing list