小编Ste*_*rga的帖子

c++11 时钟/time_points 之间的隐式转换

是否可以在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)

time date c++11 c++-chrono

5
推荐指数
1
解决办法
829
查看次数

标签 统计

c++-chrono ×1

c++11 ×1

date ×1

time ×1