最終更新日時(UTC):
が更新

履歴 編集

class template
<chrono>

std::chrono::is_clock(C++20)

namespace std::chrono {
  template <class T>
  struct is_clock;                                       // (1) C++20

  template <class T>
  inline constexpr bool is_clock_v = is_clock<T>::value; // (2) C++20
}

概要

is_clockは、クロック型かを判定する型特性である。

TがClock要件を満たす場合はtrue_typeから派生し、そうでなければfalse_typeから派生する。

Clock要件を満たすには、以下が必要である:

  • 修飾された型Tが、T::periodT::durationT::time_pointメンバ型を持っていること
  • T::is_steadyが評価されないオペランドで使用された場合に妥当であること
  • T::now()が評価されないオペランドで使用された場合に妥当であること

is_clockの特殊化を追加した場合のプログラムの動作は未定義である。

#include <chrono>

using namespace std::chrono;

int main()
{
  static_assert(is_clock_v<system_clock>);
  static_assert(is_clock_v<steady_clock>);
  static_assert(is_clock_v<high_resolution_clock>);
  static_assert(is_clock_v<utc_clock>);
  static_assert(is_clock_v<tai_clock>);
  static_assert(is_clock_v<gps_clock>);
  static_assert(is_clock_v<file_clock>);
}

出力

バージョン

言語

  • C++20

処理系

  • Clang: (9.0時点で実装なし)
  • GCC: (9.2時点で実装なし)
  • Visual C++: (2019 Update 3時点で実装なし)