Namespaces
Variants

std::chrono::duration<Rep,Period>:: duration

From cppreference.net
constexpr duration ( ) = default ;
(1) (C++11以降)
duration ( const duration & ) = default ;
(2) (C++11以降)
template < class Rep2 >
constexpr explicit duration ( const Rep2 & r ) ;
(3) (C++11以降)
template < class Rep2, class Period2 >
constexpr duration ( const duration < Rep2, Period2 > & d ) ;
(4) (C++11以降)

duration をいくつかのオプショナルなデータソースから新しく構築します。

1) デフォルトコンストラクタ。
2) コピーコンストラクタ。
3) r ティックでdurationを構築します。
このオーバーロードは、以下のすべての条件が満たされる場合にのみオーバーロード解決に参加します:
  • is_convertible < const Rep2 & , Rep > :: value true であること。
  • 以下のいずれかの条件が満たされること: [1]
4) 適切な期間とティックカウントに d を変換することでdurationを構築します。具体的には std:: chrono :: duration_cast < duration > ( d ) . count ( ) によって変換するかのように動作します。
このオーバーロードは、変換においてオーバーフローが発生せず、かつ以下のいずれかの条件が満たされる場合にのみ、オーバーロード解決に参加します: [2]
  1. すなわち、整数のティック数を持つdurationは浮動小数点値から構築することはできませんが、浮動小数点のティック数を持つdurationは整数値から構築することができます。
  2. すなわち、durationが浮動小数点のティックを使用しているか、または Period2 Period で正確に割り切れるかのいずれかです。

目次

翻訳の説明: - 「Contents」を「目次」に翻訳しました - HTMLタグ、属性、クラス名はすべて保持されています - ` `内のテキストはC++関連の専門用語として翻訳せずに保持しています - 番号付けや構造は完全に維持されています - フォーマットとインデントは元のまま保持されています

パラメータ

r - ティックカウント
d - コピー元の期間

以下のコードは、期間(duration)を構築する方法のいくつかの例(有効なものと無効なものの両方)を示しています:

#include <chrono>
int main()
{
    std::chrono::hours h(1); // one hour
    std::chrono::milliseconds ms{3}; // 3 milliseconds
    std::chrono::duration<int, std::kilo> ks(3); // 3000 seconds
    // error: treat_as_floating_point<int>::value == false,
    // This duration allows whole tick counts only
//  std::chrono::duration<int, std::kilo> d3(3.5);
    // 30Hz clock using fractional ticks
    std::chrono::duration<double, std::ratio<1, 30>> hz30(3.5);
    // 3000 microseconds constructed from 3 milliseconds
    std::chrono::microseconds us = ms;
    // error: 1/1000000 is not divisible by 1/1000
//  std::chrono::milliseconds ms2 = us
    std::chrono::duration<double, std::milli> ms2 = us; // 3.0 milliseconds
}

不具合報告

以下の動作変更の欠陥報告書は、以前に公開されたC++規格に対して遡及的に適用されました。

DR 適用対象 公開時の動作 正しい動作
LWG 2094 C++11 オーバーロード (4) において、 std:: ratio_divide < Period2, period > :: num
の評価時にオーバーフローが発生する可能性がある
std:: ratio_divide < Period2, period > :: den
この場合、オーバーロード (4)
オーバーロード解決に参加しない
LWG 3050 C++11 変換可能性の制約で非const xvalueを使用していた 代わりにconst lvalueを使用する

関連項目

内容を代入する
(公開メンバ関数)