VC2010版mersenne_twisterで叱られた

VC2010よりC++11の機能が一部搭載された。randomもその一つ。積極的に使っているのだがデバッグ中に叱られてしまった。叱られた理由は種がよくないという警告。何も考えずにとりあえず0を入れていたのだがそれが良くないっぽい。実際にソースを追ってみたら以下のコードに行き着いた。

void seed(unsigned long _X0 = default_seed,
	_Ty _Fx = (_Ty)1812433253)
	{	// set initial values from specified value
	_RNG_ASSERT(0 < _X0,
		"invalid argument for mersenne_twister::seed")

気になった警告部分が 0 < _X0 の部分。ひょっとして<=の間違いでは?いやでもunsignedだから必ず正になるわけだからこの警告は0を弾くためにあるはず。ということは数学的にmersenne_twisterの種として0ってよくないということなのかな?

まあなんだかわからないけどとりあえず0を避けることにします。