table of contents
        
      
      
    | std::chrono::clock_time_conversion(3) | C++ Standard Libary | std::chrono::clock_time_conversion(3) | 
NAME¶
std::chrono::clock_time_conversion - std::chrono::clock_time_conversion
Synopsis¶
 Defined in header <chrono>
  
   template<class Dest, class Source> struct clock_time_conversion { };
    (since C++20)
  
   std::chrono::clock_time_conversion is a trait that specifies how to convert a
  
   std::chrono::time_point of the Source clock to that of the Dest clock. It
    does so by
  
   providing an const-callable operator() that accepts an argument of type
  
   std::chrono::time_point<Source, Duration> and returns a
  
   std::chrono::time_point<Dest, OtherDuration> that represents an
    equivalent point in
  
   time. The duration of the returned time point is computed from the source
    duration
  
   in a manner that varies for each specialization. clock_time_conversion is
    normally
  
   only used indirectly, via std::chrono::clock_cast.
  
   A program may specialize clock_time_conversion if at least one of the
    template
  
   parameters is a user-defined clock type.
  
   The primary template is an empty struct. The standard defines the following
  
   specializations:
  
   template<class Clock> struct clock_time_conversion<Clock, Clock>;
    (1) (since C++20)
  
   template<> struct clock_time_conversion<std::chrono::system_clock,
    (2) (since C++20)
  
   std::chrono::system_clock>;
  
   template<> struct clock_time_conversion<std::chrono::utc_clock,
    (3) (since C++20)
  
   std::chrono::utc_clock>;
  
   template<> struct clock_time_conversion<std::chrono::system_clock,
    (4) (since C++20)
  
   std::chrono::utc_clock>;
  
   template<> struct clock_time_conversion<std::chrono::utc_clock,
    (5) (since C++20)
  
   std::chrono::system_clock>;
  
   template<class Clock> struct clock_time_conversion<Clock, (6)
    (since C++20)
  
   std::chrono::system_clock>;
  
   template<class Clock> struct (7) (since C++20)
  
   clock_time_conversion<std::chrono::system_clock, Clock>;
  
   template<class Clock> struct clock_time_conversion<Clock, (8)
    (since C++20)
  
   std::chrono::utc_clock>;
  
   template<class Clock> struct (9) (since C++20)
  
   clock_time_conversion<std::chrono::utc_clock, Clock>;
  
   1-3) Identity conversion: operator() returns a copy of the argument.
  
   4-5) Conversions between std::chrono::sys_time and std::chrono::utc_time:
    operator()
  
   calls std::chrono::utc_clock::to_sys and std::chrono::utc_clock::from_sys,
  
   respectively.
  
   6-7) Conversions to and from std::chrono::sys_time when Clock supports
    from_sys and
  
   to_sys: operator() calls Clock::to_sys and Clock::from_sys, respectively.
  
   8-9) Conversions to and from std::chrono::utc_time when Clock supports
    from_utc and
  
   to_utc: operator() calls Clock::to_utc and Clock::from_utc, respectively.
Member functions¶
 Each specialization has an implicitly-declared default
    constructor, copy
  
   constructor, move constructor, copy assignment operator, move assignment
    operator,
  
   and destructor.
std::chrono::clock_time_conversion::operator()
  
   template <class Duration>
  
   std::chrono::time_point<Clock, Duration> (1) (member of
  
   specialization (1))
  
   operator()(const std::chrono::time_point<Clock, Duration>&
  
   t) const;
  
   template <class Duration>
  
   std::chrono::sys_time<Duration> (2) (member of
  
   specialization (2))
  
   operator()(const std::chrono::sys_time<Duration> & t)
  
   const;
  
   template <class Duration>
  
   (member of
  
   std::chrono::utc_time<Duration> (3) specialization (3))
  
   operator()(const std::chrono::utc_time<Duration>& t) const;
  
   template <class Duration>
  
   (member of
  
   std::chrono::sys_time<Duration> (4) specialization (4))
  
   operator()(const std::chrono::utc_time<Duration>& t) const;
  
   template <class Duration>
  
   (member of
  
   std::chrono::utc_time<Duration> (5) specialization (5))
  
   operator()(const std::chrono::sys_time<Duration>& t) const;
  
   template <class Duration>
  
   auto operator()(const std::chrono::sys_time<Duration>& t)
    (6) (member of
  
   const specialization (6))
  
   -> decltype(Clock::from_sys(t));
  
   template <class Duration>
  
   auto operator()(const std::chrono::time_point<SourceClock, (7)
    (member of
  
   Duration>& t) const specialization (7))
  
   -> decltype(Clock::to_sys(t));
  
   template <class Duration>
  
   auto operator()(const std::chrono::utc_time<Duration>& t)
    (8) (member of
  
   const specialization (8))
  
   -> decltype(Clock::from_utc(t));
  
   template <class Duration>
  
   auto operator()(const std::chrono::time_point<Clock, (9) (member of
  
   Duration>& t) const specialization (9))
  
   -> decltype(Clock::to_utc(t));
  
   Converts the argument std::chrono::time_point to the destination clock.
  
   1-3) Identity conversion. Returns t unchanged.
  
   4) Returns std::chrono::utc_clock::to_sys(t).
  
   5) Returns std::chrono::utc_clock::from_sys(t).
  
   6) Returns Clock::from_sys(t). This overload participates in overload
    resolution
  
   only if the expression Clock::from_sys(t) is well-formed. The program is
    ill-formed
  
   if Clock::from_sys(t) does not return std::chrono::time_point<Clock,
    Duration> where
  
   Duration is some valid specialization of std::chrono::duration.
  
   7) Returns Clock::to_sys(t). This overload participates in overload
    resolution only
  
   if the expression Clock::to_sys(t) is well-formed. The program is ill-formed
    if
  
   Clock::to_sys(t) does not return std::chrono::sys_time<Duration> where
    Duration is
  
   some valid specialization of std::chrono::duration.
  
   8) Returns Clock::from_utc(t). This overload participates in overload
    resolution
  
   only if the expression Clock::from_utc(t) is well-formed. The program is
    ill-formed
  
   if Clock::from_utc(t) does not return std::chrono::time_point<Clock,
    Duration> where
  
   Duration is some valid specialization of std::chrono::duration.
  
   9) Returns Clock::to_utc(t). This overload participates in overload
    resolution only
  
   if the expression Clock::to_utc(t) is well-formed. The program is ill-formed
    if
  
   Clock::to_utc(t) does not return std::chrono::utc_time<Duration> where
    Duration is
  
   some valid specialization of std::chrono::duration.
Parameters¶
t - time point to convert
Return value¶
The result of the conversion as described above:
  
   1-3) t.
  
   4) std::chrono::utc_clock::to_sys(t).
  
   5) std::chrono::utc_clock::from_sys(t).
  
   6) Clock::from_sys(t).
  
   7) Clock::to_sys(t).
  
   8) Clock::from_utc(t).
  
   9) Clock::to_utc(t).
See also¶
 clock_cast convert time points of one clock to another
  
   (C++20) (function template)
| 2022.07.31 | http://cppreference.com |