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_zoneis found for whichname() == tz_name, returns a pointer to thattime_zone. Otherwise if alinkis found for whichtz_name == link.name(), then a pointer is returned to thetime_zonefor 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_linkspecifies 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_linkspecifies an alternative name for atime_zone.time_zone_links 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_zonefor which thistime_zone_linkprovides 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().