clock_time_conversion
clock_time_conversion (시계 간 변환 트레이트)
Source 시계의 시점을 Dest 시계의 시점으로 어떻게 변환할지 지정하는 트레이트예요. <chrono> 헤더, C++20부터.
출처: cppreference
본문
std::chrono::clock_time_conversion은 Source 시계의 std::chrono::time_point를 Dest 시계의 시점으로 변환하는 방법을 지정해요.
template< class Dest, class Source >
struct clock_time_conversion {};
그렇게 하기 위해 std::chrono::time_point<Source, Duration>를 받아 std::chrono::time_point<Dest, OtherDuration>를 반환하는 const-호출 가능한 operator()를 제공해요. 반환된 시점의 duration은 소스 duration에서 각 특수화에 따라 다르게 계산돼요.
clock_time_conversion은 보통 직접 쓰지 않고 std::chrono::clock_cast를 통해 간접적으로 사용돼요. 두 시점이 같은 시계이면 항등 변환(identity)을, system_clock-utc_clock 사이에는 특수화된 변환이 제공돼요.
프로그램은 변환 대상/소스 중 적어도 하나가 사용자 정의 타입일 때 clock_time_conversion을 특수화할 수 있어요. 즉 새 시계를 만들 때 이 트레이트를 특수화해 두면 clock_cast가 자동으로 그 시계 간 변환을 지원하게 돼요.
내부적으로는 크게 세 가지 형태가 있어요.
- Src == Dest: 항등(identity) 변환.
- system ↔ utc 같은 내장 변환: 표준에서 제공.
- 사용자 정의 특수화: 프로그램이 직접 작성.
이 구조 덕분에 시계 간 변환이 타입 안전하고 확장 가능해요.