On Tuesday, December 10, 2013 09:13:12 Joseph Rushton Wakeling wrote: > On 10/12/13 08:44, Jonathan M Davis wrote: > > It's a matter of what you can directly initialize a non-local variable > > with. Module-level variables, static variables, and member variables all > > have to be known at compile time, and you can't have a mutable class > > instance being constructed at compile time and then kept around until > > runtime. > > That's obvious in retrospect but not on the basis of the error message: > > Error: variable std.random2.generator.rndGen.result is mutable. Only > const or immutable class thread local variable are allowed, not > std.random2.generator.MersenneTwisterEngine!(uint, 32, 624, 397, 31, > 2567483615u, 11, 4294967295u, 7, 2636928640u, 15, 4022730752u, 18, > 1812433253u).MersenneTwisterEngine
A lot of dmd's error messages aren't great. > Would this be better? > > Cannot initialize thread-local class variable %s with a mutable value. > Only const or immutable initial values are allowed (e.g. null). That would be better. - Jonathan M Davis