4

<chrono>ヘッダーはsteady_clock、単調なクロックを表すクラスを定義します。つまり、の値は、物理now()的な時間が増加しても減少しません。ただし、このクラスはオプションとしてマークされていないため、単調なタイムソースのないシステムで実行されているために実装が実装できない場合はどうなりますか?

libstdc ++ソースを見てみると、定義_GLIBCXX_USE_CLOCK_MONOTONICされていない場合は、次のようにsteady_clock簡単に定義されます。

typedef system_clock steady_clock;

system_clockただし、必ずしも安定しているとは限らないため、これはの要件を破る可能性があります(おそらくそうなるでしょう)steady_clock

単調な時間ソースのないシステムでは、C ++ 11の適合実装は不可能ですか?タイプsteady_clockのようにオプションにするだけではどうでしょうか。intX_t

4

1 に答える 1

9

そのようなシステムは、ある種の組み込みシステムだと思います。

まあ、そのようなシステムトマトは、標準ライブラリの最小限のサブセットのみを必要とする独立した実装を持つことができます。<chrono>その最小限のサブセットの一部ではありません。

これは§17.6.1.3自立型実装[コンプライアンス]で定義されています。

1 2種類の実装が定義されています:ホスト型と自立型(1.4)。ホストされた実装の場合、この国際規格は利用可能なヘッダーのセットについて説明しています。

2自立型実装には、実装定義のヘッダーのセットがあります。このセットには、少なくとも表16に示すヘッダーが含まれている必要があります。

表16には<ciso646>、次のヘッダーが含まれています:、、、、、、、、、、、、、、、、、、、および。<cstddef><cfloat><limits><climits><cstdint><cstdlib><new><typeinfo><exception><initializer_list><cstdalign><cstdarg><cstdbool><type_traits><atomic>

これは、そのような実装が、その中に実装できるすべてのものをヘッダーに提供できないことを意味するのでは<chrono>なく、残りを提供できないことに注意してください。

于 2012-11-22T17:32:56.403 に答える