是否可以在time_point两个 C++11 时钟之间进行隐式/显式转换?
动机: chrono::duration s 提供了存储纪元的时间间隔的方法,从概念上讲,它不等于time_point具有自己的纪元的自定义时钟。时钟之间的隐式转换简化了 Howard Hinnant 的日期库的 <date/date.h>使用,该库提供了操作和打印time_point系统时钟的方法。
例子:
#include <date/date.h>
using namespace date;
namespace ch = std::chrono;
//
#define EPOCH_OFFSET 100
template<class Duration> using PosixTimePoint =
ch::time_point<ch::system_clock, Duration>;
typedef PosixTimePoint<ch::duration<long,std::micro>> PosixTimePointType;
struct SomeClock{
typedef ch::duration<long,std::micro> duration;
typedef ch::time_point<SomeClock> time_point;
...
static time_point now() noexcept {
using namespace std::chrono;
return time_point (
duration_cast<duration>(
system_clock::now().time_since_epoch()) + date::years(EPOCH_OFFSET) );
}
static PosixTimePoint<duration> to_posix( const time_point& tp ){...}
}
auto tp = …Run Code Online (Sandbox Code Playgroud)