C++14及以上版本是否提供chrono相关类型的内置便捷typedef?
C++14及后续版本chrono相关便捷typedef说明
C++14 标准库没有为time_point和常用时钟类型预定义你想要的通用便捷typedef,你目前使用的自定义别名、按需引入std::chrono命名空间的写法,都是实际开发中非常普遍的合规简化方案,不需要调整。
不同标准版本的内置typedef覆盖范围
- C++14:仅在
<chrono>中预定义了时长类的特化别名,也就是你用到的std::chrono::microseconds、std::chrono::milliseconds、std::chrono::seconds这类属于std::chrono::duration的typedef,没有为steady_clock、system_clock这类基础时钟绑定对应的time_point短别名。 - C17:没有新增时钟或
time_point相关的通用便捷typedef,和C14的覆盖范围一致。 - C++20:新增了一批和日历、时区功能配套的绑定类型别名,比如
std::chrono::sys_seconds、std::chrono::file_time这类特定场景的time_point别名,但依然没有给通用基础时钟提供短别名,你需要的通用简化别名标准库始终没有内置。
关于时长转换书写繁琐的优化
你提到的duration_cast长写法,在C++17及之后可以直接用时长类型的构造函数做显式转换,不需要每次写完整的duration_cast模板调用,配合标准预定义的字面量后缀还能进一步简化:
// C++14 旧写法 auto usecs = std::chrono::duration_cast<std::chrono::microseconds>(endtime - starttime).count(); // C++17 及之后简化写法 auto usecs = std::chrono::microseconds(endtime - starttime).count();
你现在自己写别名的做法其实可读性很高,很多工业级项目都会统一做类似的别名定义,完全可以继续使用。
内容的提问来源于stack exchange,提问作者Jason C
相关产品推荐
相关产品推荐

