std.random question

Dennis Ritchie via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sun May 3 02:28:39 PDT 2015


On Sunday, 3 May 2015 at 09:04:07 UTC, tired_eyes wrote:
> On Sunday, 3 May 2015 at 08:48:52 UTC, Dennis Ritchie wrote:
>> On Sunday, 3 May 2015 at 08:42:57 UTC, tired_eyes wrote:
>>> Feels pretty silly, but I can't compile this:
>>>
>>>
>>> import std.random;
>>> auto i = uniform(0, 10);
>>>
>>>
>>> DMD spits this:
>>>
>>> /usr/include/dmd/phobos/std/random.d(1188): Error: static 
>>> variable initialized cannot be read at compile time
>>> /usr/include/dmd/phobos/std/random.d(1231):        called 
>>> from here: rndGen()
>>> /usr/include/dmd/phobos/std/random.d(1231):        called 
>>> from here: uniform(a, b, rndGen())
>>>
>>>
>>> Perhaps I'm missing something obvious?
>>> dmd 2.067.1, openSUSE 13.2 x64
>>
>> void main() {
>> 	import std.random;
>> 	auto i = uniform(0, 10);
>> }
>
> Not so simple, unfortunately.
> Actual code:
>
>
> import std.random;
>
> struct Mystruct {
>     auto id = uniform(0, 10);
> }
>
> void main() {
>     // wahtever
> }
>
>
> ..and no luck.

I think it is a bug:

import std.stdio, std.random;

struct Mystruct {
	//mixin(`auto id = uniform(0, 10);`);
	// Error: static variable initialized cannot be read at compile 
time
	int val;
}

void main() {

	Mystruct test;

	test.val = uniform(0, 10); // OK
	writeln(test.val);

	mixin(`auto n = uniform(0, 10);`); // OK
}


More information about the Digitalmars-d-learn mailing list