boost::chrono::steady_clock::time_point
和boost::chrono::time_point<boost::chrono::steady_clock,Duration>
之间有什么区别,为什么不能在彼此之间进行转换?
这似乎非常多余。
答案 0 :(得分:3)
如果持续时间相同,则可以在彼此之间进行转换。例如,以下情况可以正常:
boost::chrono::steady_clock::time_point tp1 = boost::chrono::steady_clock::now();
boost::chrono::time_point<boost::chrono::steady_clock,
boost::chrono::nanoseconds>
tp2 = tp1;
如果持续时间不同,您还可以使用time_point_cast将一个time_point投射到另一个time_point。
示例强>
boost::chrono::steady_clock::time_point tp1 = boost::chrono::steady_clock::now();
boost::chrono::time_point<boost::chrono::steady_clock,
boost::chrono::milliseconds>
tp2 = boost::chrono::time_point_cast<boost::chrono::milliseconds>(tp1);
另外,我不确定你为什么认为它们是多余的。如果您查看docs,steady_clock
会有以下成员:
typedef chrono::time_point<steady_clock> time_point;
因此,boost::chrono::steady_clock::time_point
只是boost::chrono::time_point<steady_clock>
的typedef。
答案 1 :(得分:1)
std::chrono::time_point
(基于Boost)是一个模板,可用于定义一个类,该类又可用于定义某个时间点。 std::chrono::steady_clock::time_point
是该模板(即类)的实例化,可用于定义时间点。所以他们是两个相同名称的不同的东西。叹息。
std::chrono::time_point
的各种实例化可以像@JesseGood所指出的那样,与time_point_cast
进行相互转换。