The LEWG in Belfast requested that I write a paper which provides
wording for
DE 346
as modified by the discussion in LEWG. The LEWG chose the name
time_zone_link
as a replacement for link
,
and specifically chose not to change the associated data member of
tzdb
links
.
Modify the synopsis in [time.syn] as indicated:
... // 27.11.9, class time_zone_link class time_zone_link; bool operator==(const time_zone_link& x, const time_zone_link& y); strong_ordering operator<=>(const time_zone_link& x, const time_zone_link& y); ...
Modify the synopsis in [time.zone.db.tzdb] as indicated:
namespace std::chrono { struct tzdb { string version; vector<time_zone> zones; vector<time_zone_link> links; vector<leap> leaps; const time_zone* locate_zone(string_view tz_name) const; const time_zone* current_zone() const; }; }
Modify [time.zone.db.tzdb]/p2 as indicated:
const time_zone* locate_zone(string_view tz_name) const;2 Returns:
If atime_zone
is found for whichname() == tz_name
, returns a pointer to thattime_zone
. Otherwise if alink
is found for whichtz_name == link.name()
, then a pointer is returned to thetime_zone
for whichzone.name() == link.target()
.
[Note: A
If a
time_zone
,tz
, is found for whichtz.name() == tz_name
, a pointer totz
;otherwise, if a
time_zone_link
,tz_l
, is found for whichtz_l.name() == tz_name
, then a pointer to thetime_zone
,tz
, for whichtz.name() == tz_l.target()
.time_zone_link
specifies an alternative name for atime_zone
. — end note]
Modify the title of [time.zone.link] as indicated:
Class time_zone_link
Modify [time.zone.link.overview] as indicated:
namespace std::chrono { class time_zone_link { public: time_zone_link(time_zone_link&&) = default; time_zone_link& operator=(time_zone_link&&) = default; // unspecified additional constructors string_view name() const noexcept; string_view target() const noexcept; }; }1 A
time_zone_link
specifies an alternative name for atime_zone
.time_zone_link
s are constructed when the time zone database is initialized.
Modify [time.zone.link.members]/p2 as indicated:
string_view target() const noexcept;2 Returns: The name of the
time_zone
for which thistime_zone_link
provides an alternative name.
Modify [time.zone.link.nonmembers] as indicated:
bool operator==(const time_zone_link& x, const time_zone_link& y) noexcept;1 Returns:
x.name() == y.name()
.strong_ordering operator<=>(const time_zone_link& x, const time_zone_link& y) noexcept;2 Returns:
x.name() <=> y.name()
.