1

和之间有什么区别boost::chrono::steady_clock::time_pointboost::chrono::time_point<boost::chrono::steady_clock,Duration>为什么它们之间不能相互转换?

这似乎非常多余。

4

2 回答 2

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 转换为另一个。

例子

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);

另外,我不确定您为什么认为它们是多余的。如果您查看文档steady_clock则具有以下成员:

typedef chrono::time_point<steady_clock> time_point;

所以,boost::chrono::steady_clock::time_point只是boost::chrono::time_point<steady_clock>.

于 2012-10-24T05:02:16.920 回答
1

std::chrono::time_point(基于 Boost)是一个模板,可用于定义一个类,而该类又可用于定义一个时间点。std::chrono::steady_clock::time_point是可用于定义时间点的模板(即类)的实例化。所以它们是同名的两个完全不同的东西。叹。

正如@JesseGood 指出的那样, can的各种实例化可以与.std::chrono::time_pointtime_point_cast

于 2012-10-24T13:46:37.990 回答