Hello. I am working through Alexandrescu's "The D Programming Language". He has an example in his concurrency chapter which I can't compile. It looks to be missing a few import packages, but getting over that, I still can't get the example to work:
import std.concurrency, std.stdio; import std.contracts, std.typecons; /* I added this */ void main() { auto low = 0, high = 25; auto tid = spawn(&writer); foreach( i; low .. high) { writeln("Main thread: ", i); tid.send(thisTid, i); enforce( receiveOnly!Tid() == tid); } return; } void writer() { for( ;; ) { auto msg = receiveOnly!(Tid, int)(); writeln( "Secondary thread: ", msg[1]); msg[0].send(thisTid); } return; } I get the following compiler error: $ dmd Thread2.d Thread2.d(10): Error: template std.typecons.Tuple!(Tid).Tuple.opEquals(T) if (is(typeof(T.field))) does not match any function template declaration Thread2.d(10): Error: template std.typecons.Tuple!(Tid).Tuple.opEquals(T) if (is(typeof(T.field))) cannot deduce template function from argument types !()(Tid) $ dmd --help Digital Mars D Compiler v2.042 Copyright (c) 1999-2010 by Digital Mars written by Walter Bright Documentation: http://www.digitalmars.com/d/2.0/index.html So, what am I doing wrong here? thanks.