问题
I'm learning <chrono>
library, and considering the std::chrono::duration
class, is there any specific reason to base it on seconds? For example a variable to store seconds would be
chrono::duration<int> two_seconds(2);
and all other time spans require relating them to seconds, like
chrono::duration<int, ratio<60>> two_minutes(2);
chrono::duration<int, ratio<1, 1000>> two_milliseconds(2);
chrono::duration<int, ratio<60 * 60 * 24>> two_days(2);
Are there any reasons to base duration on seconds and not on minutes, hours, etc.?
回答1:
Seconds are chosen because it's the basic time unit in both the SI system and in science as a whole.
Even Americans use seconds and not something like microfortnights.
why this basic time span isn't another template parameter for duration class
It is, as you can provide typedef
s for ratios, and some are included in the standard.
#include <chrono>
std::chrono::duration<int, minutes> two_minutes(2); // Standard
std::chrono::duration<int, milliseconds> two_milliseconds(2); // Standard
If you need more, they're trivial to add:
typedef std::ratio<60 * 60 * 24> days;
typedef std::ratio<756, 625> microfortnights;
std::chrono::duration<int, days> two_days(2);
std::chrono::duration<int, microfortnights> two_weeks(1000000);
来源:https://stackoverflow.com/questions/27859470/why-is-stdchronoduration-based-on-seconds