我不理解如何扩展std::chrono::duration
。以浮点数为因子,将持续时间扩展的正确方式是什么?
template <class Duration>
auto random_duration(Duration low, Duration high) noexcept -> Duration {
static auto rd = std::random_device();
static auto re = std::default_random_engine(rd());
auto dist = std::uniform_real_distribution<double>(0, 1);
const auto off = std::chrono::duration<Duration>(dist(re) * (high - low));
return low + off;
}
Duration
,这很奇怪... 如果删除std::chrono::duration<Duration>
和显式的返回类型,你将得到一个自动返回类型,这可能是你想要的。强制转换为Duration
将会失去很多精度,这可能不是你想要的。 - Holttemplate <class Rep1, class Period1, class Rep2, class Period2> auto random_duration(duration<Rep1, Period1>, duration<Rep2, Period2>)
。 - Howard Hinnant