forked from HowardHinnant/date
Allow zoned_time conversion among different TimeZonePtr types
This commit is contained in:
65
d0355r5.html
65
d0355r5.html
@@ -37,7 +37,7 @@
|
||||
Document number: D0355R5<br>
|
||||
<br>
|
||||
<a href="mailto:howard.hinnant@gmail.com">Howard E. Hinnant</a><br>
|
||||
2017-10-24<br>
|
||||
2017-10-28<br>
|
||||
</address>
|
||||
<hr>
|
||||
<h1>Extending <code><chrono></code> to Calendars and Time Zones</h1>
|
||||
@@ -59,6 +59,7 @@ Document number: D0355R5<br>
|
||||
<h3>Changes since <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0355r4.html">R4</a></h3>
|
||||
|
||||
<ul>
|
||||
<li>Allow <code>zoned_time</code> conversion among different <code>TimeZonePtr</code> types.</li>
|
||||
<li>Specify the constructors for <code>nonexistent_local_time</code> and
|
||||
<code>ambiguous_local_time</code>.</li>
|
||||
</ul>
|
||||
@@ -9828,9 +9829,12 @@ public:
|
||||
zoned_time(TimeZonePtr z, const local_time<Duration>& tp, choose c);
|
||||
zoned_time(string_view name, const local_time<Duration>& tp, choose c);
|
||||
|
||||
zoned_time(TimeZonePtr z, const zoned_time<Duration>& zt);
|
||||
template <class Duration2, class TimeZonePtr2>
|
||||
zoned_time(TimeZonePtr z, const zoned_time<Duration2, TimeZonePtr2>& zt);
|
||||
template <class Duration2, class TimeZonePtr2>
|
||||
zoned_time(TimeZonePtr z, const zoned_time<Duration2, TimeZonePtr2>& zt, choose);
|
||||
|
||||
zoned_time(string_view name, const zoned_time<Duration>& zt);
|
||||
zoned_time(TimeZonePtr z, const zoned_time<Duration>& zt, choose);
|
||||
zoned_time(string_view name, const zoned_time<Duration>& zt, choose);
|
||||
|
||||
zoned_time& operator=(const sys_time<Duration>& st);
|
||||
@@ -9894,6 +9898,14 @@ zoned_time(string_view, sys_time<Duration>)
|
||||
template <class Duration>
|
||||
zoned_time(string_view, local_time<Duration>, choose = choose::earliest)
|
||||
-> zoned_time<common_type_t<Duration, seconds>>;
|
||||
|
||||
template <class Duration, class TimeZonePtr, class TimeZonePtr2>
|
||||
zoned_time(TimeZonePtr, zoned_time<Duration, TimeZonePtr2>)
|
||||
-> zoned_time<Duration, TimeZonePtr>;
|
||||
|
||||
template <class Duration, class TimeZonePtr, class TimeZonePtr2>
|
||||
zoned_time(TimeZonePtr, zoned_time<Duration, TimeZonePtr2>, choose)
|
||||
-> zoned_time<Duration, TimeZonePtr>;
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
@@ -10086,11 +10098,17 @@ zoned_time<Duration, TimeZonePtr>::zoned_time(string_view name, const loca
|
||||
</blockquote>
|
||||
|
||||
<pre>
|
||||
zoned_time<Duration, TimeZonePtr>::zoned_time(TimeZonePtr z, const zoned_time<Duration>& y);
|
||||
template <class Duration2, TimeZonePtr>
|
||||
zoned_time<Duration, TimeZonePtr>::zoned_time(TimeZonePtr z, const zoned_time<Duration2, TimeZonePtr2>& y);
|
||||
</pre>
|
||||
<blockquote>
|
||||
<p>
|
||||
<i>Requires:</i> <code>z</code> refers to a valid <code>time_zone</code>.
|
||||
<i>Remarks:</i> Does not participate in overload resolution unless
|
||||
<code>sys_time<Duration2></code> is implicitly convertible to
|
||||
<code>sys_time<Duration></code>.
|
||||
</p>
|
||||
<p>
|
||||
<i>Requires:</i> <code>z</code> refers to a valid time zone.
|
||||
</p>
|
||||
<p>
|
||||
<i>Effects:</i> Constructs a <code>zoned_time</code> by initializing <code>zone_</code>
|
||||
@@ -10098,6 +10116,28 @@ with <code>std::move(z)</code> and <code>tp_</code> with <code>z.tp_</code>.
|
||||
</p>
|
||||
</blockquote>
|
||||
|
||||
<pre>
|
||||
template <class Duration2, TimeZonePtr>
|
||||
zoned_time<Duration, TimeZonePtr>::zoned_time(TimeZonePtr z, const zoned_time<Duration2, TimeZonePtr2>& y,
|
||||
choose);
|
||||
</pre>
|
||||
<blockquote>
|
||||
<p>
|
||||
<i>Remarks:</i> Does not participate in overload resolution unless
|
||||
<code>sys_time<Duration2></code> is implicitly convertible to
|
||||
<code>sys_time<Duration></code>.
|
||||
</p>
|
||||
<p>
|
||||
<i>Requires:</i> <code>z</code> refers to a valid time zone.
|
||||
</p>
|
||||
<p>
|
||||
<i>Effects:</i> Equivalent to construction with <code>{z, y}</code>.
|
||||
</p>
|
||||
<p>
|
||||
<i>Note:</i> The <code>choose</code> parameter is allowed here, but has no impact.
|
||||
</p>
|
||||
</blockquote>
|
||||
|
||||
<pre>
|
||||
zoned_time<Duration, TimeZonePtr>::zoned_time(string_view name, const zoned_time<Duration>& y);
|
||||
</pre>
|
||||
@@ -10114,21 +10154,6 @@ and <code>zoned_time</code>.
|
||||
</p>
|
||||
</blockquote>
|
||||
|
||||
<pre>
|
||||
zoned_time<Duration, TimeZonePtr>::zoned_time(TimeZonePtr z, const zoned_time<Duration>& y, choose);
|
||||
</pre>
|
||||
<blockquote>
|
||||
<p>
|
||||
<i>Requires:</i> <code>z</code> refers to a valid <code>time_zone</code>.
|
||||
</p>
|
||||
<p>
|
||||
<i>Effects:</i> Equivalent to construction with <code>{z, y}</code>.
|
||||
</p>
|
||||
<p>
|
||||
<i>Note:</i> The <code>choose</code> parameter is allowed here, but has no impact.
|
||||
</p>
|
||||
</blockquote>
|
||||
|
||||
<pre>
|
||||
zoned_time<Duration, TimeZonePtr>::zoned_time(string_view name, const zoned_time<Duration>& y, choose c);
|
||||
</pre>
|
||||
|
94
tz.html
94
tz.html
@@ -26,7 +26,7 @@
|
||||
<br/>
|
||||
<br/>
|
||||
<a href="mailto:howard.hinnant@gmail.com">Howard E. Hinnant</a><br/>
|
||||
2017-10-24<br/>
|
||||
2017-10-28<br/>
|
||||
</address>
|
||||
<hr/>
|
||||
<h1 align=center>Time Zone Database Parser</h1>
|
||||
@@ -2046,9 +2046,12 @@ public:
|
||||
zoned_time(TimeZonePtr z, const local_time<Duration>& tp, choose c);
|
||||
zoned_time(string_view name, const local_time<Duration>& tp, choose c);
|
||||
|
||||
zoned_time(TimeZonePtr z, const zoned_time<Duration>& zt);
|
||||
template <class Duration2, class TimeZonePtr2>
|
||||
zoned_time(TimeZonePtr z, const zoned_time<Duration2, TimeZonePtr2>& zt);
|
||||
template <class Duration2, class TimeZonePtr2>
|
||||
zoned_time(TimeZonePtr z, const zoned_time<Duration2, TimeZonePtr2>& zt, choose);
|
||||
|
||||
zoned_time(string_view name, const zoned_time<Duration>& zt);
|
||||
zoned_time(TimeZonePtr z, const zoned_time<Duration>& zt, choose);
|
||||
zoned_time(string_view name, const zoned_time<Duration>& zt, choose);
|
||||
|
||||
zoned_time& operator=(const sys_time<Duration>& st);
|
||||
@@ -2084,6 +2087,44 @@ template <class charT, class traits, class Duration, class TimeZonePtr>
|
||||
basic_ostream<charT, traits>&
|
||||
to_stream(basic_ostream<charT, traits>& os, const charT* fmt,
|
||||
const zoned_time<Duration, TimeZonePtr>& tp);
|
||||
|
||||
zoned_time()
|
||||
-> zoned_time<seconds>;
|
||||
|
||||
template <class Duration>
|
||||
zoned_time(sys_time<Duration>)
|
||||
-> zoned_time<common_type_t<Duration, seconds>>;
|
||||
|
||||
template <class TimeZonePtr, class Duration>
|
||||
zoned_time(TimeZonePtr, sys_time<Duration>)
|
||||
-> zoned_time<common_type_t<Duration, seconds>, TimeZonePtr>;
|
||||
|
||||
template <class TimeZonePtr, class Duration>
|
||||
zoned_time(TimeZonePtr, local_time<Duration>, choose = choose::earliest)
|
||||
-> zoned_time<common_type_t<Duration, seconds>, TimeZonePtr>;
|
||||
|
||||
template <class TimeZonePtr, class Duration>
|
||||
zoned_time(TimeZonePtr, zoned_time<Duration>, choose = choose::earliest)
|
||||
-> zoned_time<common_type_t<Duration, seconds>, TimeZonePtr>;
|
||||
|
||||
zoned_time(string_view)
|
||||
-> zoned_time<seconds>;
|
||||
|
||||
template <class Duration>
|
||||
zoned_time(string_view, sys_time<Duration>)
|
||||
-> zoned_time<common_type_t<Duration, seconds>>;
|
||||
|
||||
template <class Duration>
|
||||
zoned_time(string_view, local_time<Duration>, choose = choose::earliest)
|
||||
-> zoned_time<common_type_t<Duration, seconds>>;
|
||||
|
||||
template <class Duration, class TimeZonePtr, class TimeZonePtr2>
|
||||
zoned_time(TimeZonePtr, zoned_time<Duration, TimeZonePtr2>)
|
||||
-> zoned_time<Duration, TimeZonePtr>;
|
||||
|
||||
template <class Duration, class TimeZonePtr, class TimeZonePtr2>
|
||||
zoned_time(TimeZonePtr, zoned_time<Duration, TimeZonePtr2>, choose)
|
||||
-> zoned_time<Duration, TimeZonePtr>;
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
@@ -2276,11 +2317,17 @@ zoned_time<Duration, TimeZonePtr>::zoned_time(string_view name, const loca
|
||||
</blockquote>
|
||||
|
||||
<pre>
|
||||
zoned_time<Duration, TimeZonePtr>::zoned_time(TimeZonePtr z, const zoned_time<Duration>& y);
|
||||
template <class Duration2, TimeZonePtr>
|
||||
zoned_time<Duration, TimeZonePtr>::zoned_time(TimeZonePtr z, const zoned_time<Duration2, TimeZonePtr2>& y);
|
||||
</pre>
|
||||
<blockquote>
|
||||
<p>
|
||||
<i>Requires:</i> <code>z</code> refers to a valid <code>time_zone</code>.
|
||||
<i>Remarks:</i> Does not participate in overload resolution unless
|
||||
<code>sys_time<Duration2></code> is implicitly convertible to
|
||||
<code>sys_time<Duration></code>.
|
||||
</p>
|
||||
<p>
|
||||
<i>Requires:</i> <code>z</code> refers to a valid time zone.
|
||||
</p>
|
||||
<p>
|
||||
<i>Effects:</i> Constructs a <code>zoned_time</code> by initializing <code>zone_</code>
|
||||
@@ -2288,6 +2335,28 @@ with <code>std::move(z)</code> and <code>tp_</code> with <code>z.tp_</code>.
|
||||
</p>
|
||||
</blockquote>
|
||||
|
||||
<pre>
|
||||
template <class Duration2, TimeZonePtr>
|
||||
zoned_time<Duration, TimeZonePtr>::zoned_time(TimeZonePtr z, const zoned_time<Duration2, TimeZonePtr2>& y,
|
||||
choose);
|
||||
</pre>
|
||||
<blockquote>
|
||||
<p>
|
||||
<i>Remarks:</i> Does not participate in overload resolution unless
|
||||
<code>sys_time<Duration2></code> is implicitly convertible to
|
||||
<code>sys_time<Duration></code>.
|
||||
</p>
|
||||
<p>
|
||||
<i>Requires:</i> <code>z</code> refers to a valid time zone.
|
||||
</p>
|
||||
<p>
|
||||
<i>Effects:</i> Equivalent to construction with <code>{z, y}</code>.
|
||||
</p>
|
||||
<p>
|
||||
<i>Note:</i> The <code>choose</code> parameter is allowed here, but has no impact.
|
||||
</p>
|
||||
</blockquote>
|
||||
|
||||
<pre>
|
||||
zoned_time<Duration, TimeZonePtr>::zoned_time(string_view name, const zoned_time<Duration>& y);
|
||||
</pre>
|
||||
@@ -2304,21 +2373,6 @@ and <code>zoned_time</code>.
|
||||
</p>
|
||||
</blockquote>
|
||||
|
||||
<pre>
|
||||
zoned_time<Duration, TimeZonePtr>::zoned_time(TimeZonePtr z, const zoned_time<Duration>& y, choose);
|
||||
</pre>
|
||||
<blockquote>
|
||||
<p>
|
||||
<i>Requires:</i> <code>z</code> refers to a valid <code>time_zone</code>.
|
||||
</p>
|
||||
<p>
|
||||
<i>Effects:</i> Equivalent to construction with <code>{z, y}</code>.
|
||||
</p>
|
||||
<p>
|
||||
<i>Note:</i> The <code>choose</code> parameter is allowed here, but has no impact.
|
||||
</p>
|
||||
</blockquote>
|
||||
|
||||
<pre>
|
||||
zoned_time<Duration, TimeZonePtr>::zoned_time(string_view name, const zoned_time<Duration>& y, choose c);
|
||||
</pre>
|
||||
|
Reference in New Issue
Block a user