1

boost::chrono::steady_clock::time_pointとの違いは何ですか?またboost::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を使用して1つの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);

また、なぜそれらが冗長であると思うのかわかりません。ドキュメントを見るとsteady_clock、次のメンバーがいます。

typedef chrono::time_point<steady_clock> time_point;

つまり、boost::chrono::steady_clock::time_pointはのtypedefにすぎませんboost::chrono::time_point<steady_clock>

于 2012-10-24T05:02:16.920 に答える
1

std::chrono::time_point(Boostに基づく)は、ある時点を定義するために使用できるクラスを定義するために使用できるテンプレートです。std::chrono::steady_clock::time_pointは、ある時点を定義するために使用できるそのテンプレート(つまり、クラス)のインスタンス化です。つまり、それらは同じ名前の2つのかなり異なるものです。はぁ。

@JesseGoodが指摘したように、缶のさまざまなインスタンス化は、と相互変換されます。std::chrono::time_pointtime_point_cast

于 2012-10-24T13:46:37.990 に答える