[Issue 4441] New: TDPL Example on P401 & 402 doesn't compile on D2.047, 2.046, 2.045, 2.044. Seems to be a problem involves tuples and []
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Fri Jul 9 14:52:13 PDT 2010
http://d.puremagic.com/issues/show_bug.cgi?id=4441
Summary: TDPL Example on P401 & 402 doesn't compile on D2.047,
2.046, 2.045, 2.044. Seems to be a problem involves
tuples and []
Product: D
Version: D2
Platform: x86
OS/Version: Linux
Status: NEW
Severity: major
Priority: P2
Component: DMD
AssignedTo: nobody at puremagic.com
ReportedBy: gareth.tpc at gmail.com
--- Comment #0 from gareth.tpc at gmail.com 2010-07-09 14:52:07 PDT ---
The example:
import std.concurrency, std.stdio, std.contracts; /*std.contracts was missing
in the book, but this is fairly trivial change*/
void main() {
auto low = 0, high = 100;
auto tid = spawn(&writer);
foreach(i; low .. high) {
writeln("Main thread: ",i);
tid.send(thisTid,i);
enforce(receiveOnly!Tid() == tid);
}
}
void writer() {
for(;;) {
auto msg = receiveOnly!(Tid,int)();
writeln("Secondary thread: ", msg[1]); //Line 17
msg[0].send(thisTid); //Line 18
}
}
thread_test.d(17): Error: no [] operator overload for type Tuple!(Tid,int)
thread_test.d(18): Error: no [] operator overload for type Tuple!(Tid,int)
Trying to compile with version 2.044-2.046 produces these errors
thread_test.d(10): Error: template std.typecons.Tuple!(Tid).Tuple.opEquals(T)
if (is(typeof(T.field))) does not match any function template declaration
thread_test.d(10): Error: template std.typecons.Tuple!(Tid).Tuple.opEquals(T)
if (is(typeof(T.field))) cannot deduce template function from argument types
!()(Tid)
--
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
More information about the Digitalmars-d-bugs
mailing list