diff --git a/include/date/tz.h b/include/date/tz.h index 686fdbf..ae2a08c 100644 --- a/include/date/tz.h +++ b/include/date/tz.h @@ -707,57 +707,45 @@ template zoned_time(sys_time) -> zoned_time>; -template -zoned_time(TimeZonePtr) - -> zoned_time; +template +zoned_time(TimeZonePtrOrName) + -> zoned_time::value, + time_zone const*, + TimeZonePtrOrName + >>; -template -zoned_time(TimeZonePtr, sys_time) - -> zoned_time, TimeZonePtr>; +template +zoned_time(TimeZonePtrOrName, sys_time) + -> zoned_time, + std::conditional_t + < + std::is_convertible::value, + time_zone const*, + TimeZonePtrOrName + >>; -template -zoned_time(TimeZonePtr, local_time, choose = choose::earliest) - -> zoned_time, TimeZonePtr>; +template +zoned_time(TimeZonePtrOrName, local_time, choose = choose::earliest) + -> zoned_time, + std::conditional_t + < + std::is_convertible::value, + time_zone const*, + TimeZonePtrOrName + >>; -#if HAS_STRING_VIEW - -zoned_time(std::string_view) - -> zoned_time; - -template -zoned_time(std::string_view, sys_time) - -> zoned_time>; - -template -zoned_time(std::string_view, local_time, choose = choose::earliest) - -> zoned_time>; - -#else // !HAS_STRING_VIEW - -zoned_time(std::string) - -> zoned_time; - -template -zoned_time(std::string, sys_time) - -> zoned_time>; - -template -zoned_time(std::string, local_time, choose = choose::earliest) - -> zoned_time>; - -#endif // !HAS_STRING_VIEW - -template -zoned_time(const char*, sys_time) - -> zoned_time>; - -template -zoned_time(const char*, local_time, choose = choose::earliest) - -> zoned_time>; - -template -zoned_time(TimeZonePtr, zoned_time, choose = choose::earliest) - -> zoned_time; +template +zoned_time(TimeZonePtrOrName, zoned_time, choose = choose::earliest) + -> zoned_time, + std::conditional_t + < + std::is_convertible::value, + time_zone const*, + TimeZonePtrOrName + >>; #endif // HAS_DEDUCTION_GUIDES @@ -1840,9 +1828,8 @@ to_stream(std::basic_ostream& os, const CharT* fmt, { using duration = typename zoned_time::duration; using LT = local_time; - auto const tz = tp.get_time_zone(); auto const st = tp.get_sys_time(); - auto const info = tz->get_info(st); + auto const info = tp.get_time_zone()->get_info(st); return to_stream(os, fmt, LT{(st+info.offset).time_since_epoch()}, &info.abbrev, &info.offset); }