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을 호출해요.

더 알아보기 (Learn more)

cppreference