On Tuesday, May 20, 2014 11:42:48 AM Ali Çehreli via Digitalmars-d-learn wrote: > On 05/20/2014 11:38 AM, Charles Hixson via Digitalmars-d-learn wrote: > > Is it a bug that an immutable struct cannot be sent to a thread? (It > > compiles without problem if I make all elements mutable.) > > Does the struct have any mutable indirection? Then it is illegal. > Otherwise, can you demonstrate with minimal code please? > > Ali Nope. Here it is (with the immutable tags removed): /** This is the only message that one cell sends to another. */ struct Msg { /** The cell id# of the sender of the message. */ uint64_t from; /** The cell id# of the recipient of the message. */ uint64_t to; /** The kind of action the message is impelling. */ Act act; /** The tick on which the message was accepted for transmission. * This is set by std.datetime.Clock.currStdTime() */ long tick; /** Distance between cells. Not currently well defined except in * the case of two words, in which case it is the number of words of * separation, where adjacent is 1. */ float dist; /** Not currently well defined. */ int value;
this (uint64_t from, uint64_t to, Act act, float dist, int value) { this.from = from; this.to = to; this.act = act; this.tick = Clock.currStdTime; this.dist = dist; this.value = value; } }