std::chrono::zoned_traits
std::chrono::zoned_traits (시간대 포인터 동작 커스터마이즈)
std::chrono::zoned_time 생성자의 동작을 커스텀 시간대 포인터 타입으로 커스터마이즈하는 방법을 제공하는 클래스예요. 기본 시간대 지정과 시간대 이름→포인터 매핑을 정의할 수 있어요. C++20부터 있어요.
출처: cppreference
본문
<chrono> 헤더에 정의돼 있고, 특히 그런 타입들이 사용할 기본 시간대와 시간대 이름을 해당 시간대 포인터로 매핑하는 방법을 지정할 수 있게 해줘요.
template < class TimeZonePtr >
struct zoned_traits { }; // (1)
template <>
struct zoned_traits<const std::chrono::time_zone*>; // (2)
커스텀 시간대 포인터 타입이 어느 연산도 지원하지 않아도 괜찮아요. 그 경우 zoned_time의 해당 생성자들은 오버로드 해석에 참여하지 않게 돼요.
기본 템플릿은 비어 있어요. 기본 시간대 포인터 타입인 const std::chrono::time_zone*에 대한 특수화가 제공돼요.
std::chrono::zoned_traits<const std::chrono::time_zone*>::default_zone
static const std::chrono::time_zone* default_zone();
기본 시간대(UTC)에 대한 시간대 포인터를 돌려줘요.
- 반환 값:
std::chrono::locate_zone("UTC").
std::chrono::zoned_traits<const std::chrono::time_zone*>::locate_zone
static const std::chrono::time_zone* locate_zone(std::string_view name);
name으로 지정된 시간대에 대한 시간대 포인터를 돌려줘요.
- 반환 값:
std::chrono::locate_zone(name).
이 특수화 덕분에 zoned_time은 기본적으로 const std::chrono::time_zone*을 쓰고, 기본 시간대로 UTC를 사용하며, 이름으로 시간대를 찾을 때 표준 locate_zone을 호출해요.