考虑
auto ms = std::chrono::duration_cast<std::chrono::milliseconds>
(std::chrono::system_clock::now().time_since_epoch()).count();
std::mt19937 rd {ms};
ms
的类型为std::chrono::system_clock::rep
,已签名。 std::mt19937
会调用std::mersenne_twister_engine(ms)
,但其参数类型result_type
是无符号的。
这有问题吗? cppreference表示未定义:
result_type |由发动机产生的整体类型。如果这不是无符号整数类型,则结果未定义。