clock_cast
clock_cast (시계 간 시점 변환)
한 시계의 시점(time_point)을 다른 시계의 동등한 시점으로 변환하는 함수예요. <chrono> 헤더, C++20부터.
출처: cppreference
본문
clock_cast는 Source 시계의 시점 t를 Dest 시계의 동등한 시점으로 변환해요. 필요하면 std::chrono::system_clock이나 std::chrono::utc_clock을 중간 매개로 사용해요.
template< class Dest, class Source, class Duration >
auto clock_cast( const std::chrono::time_point<Source, Duration>& t );
변환 규칙을 정리하면:
std::chrono::clock_time_conversion<Dest, Source>{}(t)표현식이 성립하면 그 결과를 반환해요.- 그렇지 않으면 두 경로(Source→system/utc→Dest) 중 성립하는 표현식을 사용해요.
- 둘 다 성립하면 변환이 모호하므로 프로그램이 ill-formed예요.
- 정확히 하나만 성립하면 그 표현식의 결과를 반환해요.
간단한 예는 시스템 시계를 UTC 시계로 바꾸는 거예요.
auto utc = std::chrono::clock_cast<std::chrono::utc_clock>(
std::chrono::system_clock::now());
시계마다 epoch가 다르고 하절기/윤초 처리도 다르지만, clock_cast는 타입 시스템으로 안전하게 변환 경로를 이어줘요. system_clock/utc_clock을 중간자로 쓰므로 임의의 두 시계 사이 변환이 가능해져요.