forked from HowardHinnant/date
Template zoned_time on TimeZonePtr
This commit is contained in:
387
d0355r4.html
387
d0355r4.html
@@ -59,6 +59,7 @@ Document number: D0355R4<br>
|
||||
<h3>Changes since <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0355r3.html">R3</a></h3>
|
||||
|
||||
<ul>
|
||||
<li>Template <code>zoned_time</code> on <code>TimeZonePtr</code>.</li>
|
||||
<li>Give <code>weekday_indexed</code> a defaulted default constructor.</li>
|
||||
<li>Make <code>from_stream</code> and <code>to_stream</code> customization points.</li>
|
||||
<li>Make the database singleton a singly linked list of <code>tzdb</code> with
|
||||
@@ -794,6 +795,7 @@ which is equal to <code>nullptr</code>.
|
||||
<a href="#time.timezone.exception">[time.timezone.exception]</a>
|
||||
<a href="#time.timezone.info">[time.timezone.info]</a>
|
||||
<a href="#time.timezone.time_zone">[time.timezone.time_zone]</a>
|
||||
<a href="#time.timezone.zoned_traits">[time.timezone.zoned_traits]</a>
|
||||
<a href="#time.timezone.zoned_time">[time.timezone.zoned_time]</a>
|
||||
<a href="#time.timezone.leap">[time.timezone.leap]</a>
|
||||
<a href="#time.timezone.link">[time.timezone.link]</a>
|
||||
@@ -1450,25 +1452,29 @@ bool operator<=(const time_zone& x, const time_zone& y) noexcept;
|
||||
bool operator>=(const time_zone& x, const time_zone& y) noexcept;
|
||||
|
||||
// zoned_time
|
||||
template <class Duration> class zoned_time;
|
||||
template <class Duration, class TimeZonePtr = const time_zone*> class zoned_time;
|
||||
|
||||
using zoned_seconds = zoned_time<seconds>;
|
||||
|
||||
template <class Duration1, class Duration2>
|
||||
template <class Duration1, class Duration2, class TimeZonePtr>
|
||||
bool
|
||||
operator==(const zoned_time<Duration1>& x, const zoned_time<Duration2>& y);
|
||||
operator==(const zoned_time<Duration1, TimeZonePtr>& x,
|
||||
const zoned_time<Duration2, TimeZonePtr>& y);
|
||||
|
||||
template <class Duration1, class Duration2>
|
||||
template <class Duration1, class Duration, class TimeZonePtr2>
|
||||
bool
|
||||
operator!=(const zoned_time<Duration1>& x, const zoned_time<Duration2>& y);
|
||||
operator!=(const zoned_time<Duration1, TimeZonePtr>& x,
|
||||
const zoned_time<Duration2, TimeZonePtr>& y);
|
||||
|
||||
template <class charT, class traits, class Duration>
|
||||
template <class charT, class traits, class Duration, class TimeZonePtr>
|
||||
basic_ostream<charT, traits>&
|
||||
operator<<(basic_ostream<charT, traits>& os, const zoned_time<Duration>& t);
|
||||
operator<<(basic_ostream<charT, traits>& os,
|
||||
const zoned_time<Duration, TimeZonePtr>& t);
|
||||
|
||||
template <class charT, class traits, class Duration>
|
||||
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>& tp);
|
||||
to_stream(basic_ostream<charT, traits>& os, const charT* fmt,
|
||||
const zoned_time<Duration, TimeZonePtr>& tp);
|
||||
|
||||
// format
|
||||
|
||||
@@ -9784,7 +9790,46 @@ bool operator>=(const time_zone& x, const time_zone& y) noexcept;
|
||||
</p>
|
||||
</blockquote>
|
||||
|
||||
<a name="time.timezone.zoned_time"></a><h3>23.17.12.5 Class <code>zoned_time</code> [time.timezone.zoned_time]</h3>
|
||||
<a name="time.timezone.zoned_traits"></a><h3>23.17.12.5 Class <code>zoned_traits</code> [time.timezone.zoned_traits]</h3>
|
||||
|
||||
<p>
|
||||
<code>zoned_traits</code> provides a means for customizing the behavior of
|
||||
<code>zoned_time<Duration, TimeZonePtr</code> for the
|
||||
<code>zoned_time</code> default constructor, and constructors taking
|
||||
<code>string_view</code>. A specialization for <code>const time_zone*</code>
|
||||
is provided by the implementation.
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
template <class T> struct zoned_traits {};
|
||||
|
||||
template <>
|
||||
struct zoned_traits<const time_zone*>
|
||||
{
|
||||
static const time_zone* default_zone();
|
||||
static const time_zone* locate_zone(string_view name);
|
||||
};
|
||||
</pre>
|
||||
|
||||
<pre>
|
||||
static const time_zone* zoned_traits<const time_zone*>::default_zone();
|
||||
</pre>
|
||||
<blockquote>
|
||||
<p>
|
||||
<i>Returns:</i> <code>date::locate_zone("UTC")</code>.
|
||||
</p>
|
||||
</blockquote>
|
||||
|
||||
<pre>
|
||||
static const time_zone* zoned_traits<const time_zone*>::locate_zone(string_view name);
|
||||
</pre>
|
||||
<blockquote>
|
||||
<p>
|
||||
<i>Returns:</i> <code>date::locate_zone(name)</code>.
|
||||
</p>
|
||||
</blockquote>
|
||||
|
||||
<a name="time.timezone.zoned_time"></a><h3>23.17.12.6 Class <code>zoned_time</code> [time.timezone.zoned_time]</h3>
|
||||
|
||||
<p>
|
||||
<code>zoned_time</code> represents a logical paring of <code>time_zone</code> and a
|
||||
@@ -9792,14 +9837,14 @@ bool operator>=(const time_zone& x, const time_zone& y) noexcept;
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
template <class Duration>
|
||||
template <class Duration, class TimeZonePtr = const time_zone*>
|
||||
class zoned_time
|
||||
{
|
||||
public:
|
||||
using duration = common_type_t<Duration, seconds>;
|
||||
|
||||
private:
|
||||
const time_zone* zone_; // exposition only
|
||||
TimeZonePtr zone_; // exposition only
|
||||
sys_time<duration> tp_; // exposition only
|
||||
|
||||
public:
|
||||
@@ -9808,24 +9853,24 @@ public:
|
||||
zoned_time& operator=(const zoned_time&) = default;
|
||||
|
||||
zoned_time(const sys_time<Duration>& st);
|
||||
explicit zoned_time(const time_zone* z);
|
||||
explicit zoned_time(TimeZonePtr z);
|
||||
explicit zoned_time(string_view name);
|
||||
|
||||
template <class Duration2>
|
||||
zoned_time(const zoned_time<Duration2>& zt) noexcept;
|
||||
|
||||
zoned_time(const time_zone* z, const local_time<Duration>& tp);
|
||||
zoned_time(string_view name, const local_time<Duration>& tp);
|
||||
zoned_time(const time_zone* 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 sys_time<Duration>& st);
|
||||
zoned_time(string_view name, const sys_time<Duration>& st);
|
||||
|
||||
zoned_time(const time_zone* z, const zoned_time<Duration>& zt);
|
||||
zoned_time(string_view name, const zoned_time<Duration>& zt);
|
||||
zoned_time(const time_zone* z, const zoned_time<Duration>& zt, choose);
|
||||
zoned_time(string_view name, const zoned_time<Duration>& zt, choose);
|
||||
zoned_time(TimeZonePtr z, const local_time<Duration>& tp);
|
||||
zoned_time(string_view name, const local_time<Duration>& tp);
|
||||
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(const time_zone* z, const sys_time<Duration>& st);
|
||||
zoned_time(string_view name, const sys_time<Duration>& st);
|
||||
zoned_time(TimeZonePtr z, const zoned_time<Duration>& zt);
|
||||
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);
|
||||
zoned_time& operator=(const local_time<Duration>& ut);
|
||||
@@ -9833,43 +9878,61 @@ public:
|
||||
operator sys_time<duration>() const;
|
||||
explicit operator local_time<duration>() const;
|
||||
|
||||
const time_zone* get_time_zone() const;
|
||||
TimeZonePtr get_time_zone() const;
|
||||
local_time<duration> get_local_time() const;
|
||||
sys_time<duration> get_sys_time() const;
|
||||
sys_info get_info() const;
|
||||
};
|
||||
|
||||
template <class Duration1, class Duration2>
|
||||
template <class Duration1, class Duration2, class TimeZonePtr>
|
||||
bool
|
||||
operator==(const zoned_time<Duration1>& x, const zoned_time<Duration2>& y);
|
||||
operator==(const zoned_time<Duration1, TimeZonePtr>& x,
|
||||
const zoned_time<Duration2, TimeZonePtr>& y);
|
||||
|
||||
template <class Duration1, class Duration2>
|
||||
template <class Duration1, class Duration2, class TimeZonePtr>
|
||||
bool
|
||||
operator!=(const zoned_time<Duration1>& x, const zoned_time<Duration2>& y);
|
||||
operator!=(const zoned_time<Duration1, TimeZonePtr>& x,
|
||||
const zoned_time<Duration2, TimeZonePtr>& y);
|
||||
|
||||
template <class charT, class traits, class Duration>
|
||||
template <class charT, class traits, class Duration, class TimeZonePtr>
|
||||
basic_ostream<charT, traits>&
|
||||
operator<<(basic_ostream<charT, traits>& os, const zoned_time<Duration>& t);
|
||||
operator<<(basic_ostream<charT, traits>& os,
|
||||
const zoned_time<Duration, TimeZonePtr>& t);
|
||||
|
||||
template <class charT, class traits, class Duration>
|
||||
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>& tp);
|
||||
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 Zone, class Duration>
|
||||
zoned_time(Zone, 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 Zone, class Duration>
|
||||
zoned_time(Zone, local_time<Duration>, choose = choose::earliest)
|
||||
-> zoned_time<common_type_t<Duration, seconds>>;
|
||||
template <class TimeZonePtr, class Duration>
|
||||
zoned_time(TimeZonePtr, local_time<Duration>, choose = choose::earliest)
|
||||
-> zoned_time<common_type_t<Duration, seconds>, TimeZonePtr>;
|
||||
|
||||
template <class Zone, class Duration>
|
||||
zoned_time(Zone, zoned_time<Duration>, choose = choose::earliest)
|
||||
-> zoned_time<common_type_t<Duration, seconds>>;
|
||||
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>>;
|
||||
</pre>
|
||||
|
||||
<p>
|
||||
@@ -9879,19 +9942,23 @@ and is not ambiguous.
|
||||
</p>
|
||||
|
||||
<pre>
|
||||
zoned_time<Duration>::zoned_time();
|
||||
zoned_time<Duration, TimeZonePtr>::zoned_time();
|
||||
</pre>
|
||||
<blockquote>
|
||||
<p>
|
||||
<i>Effects:</i> Constructs a <code>zoned_time</code> <code>zt</code> such that
|
||||
<code>zt.get_time_zone()->name() == "UTC"</code>, and
|
||||
<code>zt.get_sys_time() == sys_seconds{}</code>.
|
||||
<i>Remarks:</i> This constructor does not participate in overload resolution unless
|
||||
the expression <code>zoned_traits<TimeZonePtr>::default_zone()</code> is well formed.
|
||||
</p>
|
||||
<p>
|
||||
<i>Effects:</i> Constructs a <code>zoned_time</code> by initializing
|
||||
<code>zone_</code> with <code>zoned_traits<TimeZonePtr>::default_zone()</code> and
|
||||
default constructing <code>tp_</code>.
|
||||
</p>
|
||||
</blockquote>
|
||||
|
||||
<pre>
|
||||
zoned_time<Duration>::zoned_time(const zoned_time&) = default;
|
||||
zoned_time<Duration>& zoned_time<Duration>::operator=(const zoned_time&) = default;
|
||||
zoned_time<Duration, TimeZonePtr>::zoned_time(const zoned_time&) = default;
|
||||
zoned_time<Duration, TimeZonePtr>& zoned_time<Duration>::operator=(const zoned_time&) = default;
|
||||
</pre>
|
||||
<blockquote>
|
||||
<p>
|
||||
@@ -9904,45 +9971,53 @@ members.
|
||||
</blockquote>
|
||||
|
||||
<pre>
|
||||
zoned_time<Duration>::zoned_time(const sys_time<Duration>& st);
|
||||
zoned_time<Duration, TimeZonePtr>::zoned_time(const sys_time<Duration>& st);
|
||||
</pre>
|
||||
<blockquote>
|
||||
<p>
|
||||
<i>Effects:</i> Constructs a <code>zoned_time</code> <code>zt</code> such that
|
||||
<code>zt.get_time_zone()->name() == "UTC"</code>, and
|
||||
<code>zt.get_sys_time() == st</code>.
|
||||
<i>Remarks:</i> This constructor does not participate in overload resolution unless
|
||||
the expression <code>zoned_traits<TimeZonePtr>::default_zone()</code> is well formed.
|
||||
</p>
|
||||
<p>
|
||||
<i>Effects:</i> Constructs a <code>zoned_time</code> by initializing
|
||||
<code>zone_</code> with <code>zoned_traits<TimeZonePtr>::default_zone()</code> and
|
||||
<code>tp_</code> with <code>st</code>.
|
||||
</p>
|
||||
</blockquote>
|
||||
|
||||
<pre>
|
||||
explicit zoned_time<Duration>::zoned_time(const time_zone* z);
|
||||
explicit zoned_time<Duration, TimeZonePtr>::zoned_time(TimeZonePtr z);
|
||||
</pre>
|
||||
<blockquote>
|
||||
<p>
|
||||
<i>Requires:</i> <code>z</code> refers to a valid <code>time_zone</code>.
|
||||
</p>
|
||||
<p>
|
||||
<i>Effects:</i> Constructs a <code>zoned_time</code> <code>zt</code> such that
|
||||
<code>zt.get_time_zone() == z</code>, and
|
||||
<code>zt.get_sys_time() == sys_seconds{}</code>.
|
||||
<i>Effects:</i> Constructs a <code>zoned_time</code> initializing <code>zone_</code>
|
||||
with <code>std::move(z)</code>.
|
||||
</p>
|
||||
</blockquote>
|
||||
|
||||
<pre>
|
||||
explicit zoned_time<Duration>::zoned_time(string_view name);
|
||||
explicit zoned_time<Duration, TimeZonePtr>::zoned_time(string_view name);
|
||||
</pre>
|
||||
<blockquote>
|
||||
<p>
|
||||
<i>Effects:</i> Equivalent to construction with <code>locate_zone(name)</code>.
|
||||
<i>Remarks:</i> This constructor does not participate in overload resolution unless
|
||||
the expression <code>zoned_traits<TimeZonePtr>::locate_zone(string_view{})</code>
|
||||
is well formed and <code>zoned_time</code> is constructible from the return type of
|
||||
<code>zoned_traits<TimeZonePtr>::locate_zone(string_view{})</code>.
|
||||
</p>
|
||||
<p>
|
||||
<i>Throws:</i> Any exception propagating out of <code>locate_zone(name)</code>.
|
||||
<i>Effects:</i> Constructs a <code>zoned_time</code> by initializing
|
||||
<code>zone_</code> with <code>zoned_traits<TimeZonePtr>::locate_zone(name)</code>
|
||||
and default constructing <code>tp_</code>.
|
||||
</p>
|
||||
</blockquote>
|
||||
|
||||
<pre>
|
||||
template <class Duration2>
|
||||
zoned_time<Duration>::zoned_time(const zoned_time<Duration2>& y) noexcept;
|
||||
template <class Duration2, TimeZonePtr>
|
||||
zoned_time<Duration>::zoned_time(const zoned_time<Duration2, TimeZonePtr>& y) noexcept;
|
||||
</pre>
|
||||
<blockquote>
|
||||
<p>
|
||||
@@ -9957,87 +10032,153 @@ template <class Duration2>
|
||||
</blockquote>
|
||||
|
||||
<pre>
|
||||
zoned_time<Duration>::zoned_time(const time_zone* z, const local_time<Duration>& tp);
|
||||
zoned_time<Duration, TimeZonePtr>::zoned_time(TimeZonePtr z, const sys_time<Duration>& st);
|
||||
</pre>
|
||||
<blockquote>
|
||||
<p>
|
||||
<i>Requires:</i> <code>z</code> refers to a valid <code>time_zone</code>.
|
||||
</p>
|
||||
<p>
|
||||
<i>Effects:</i> Constructs a <code>zoned_time</code> <code>zt</code> such that
|
||||
<code>zt.get_time_zone()-> == z</code>, and <code>zt.get_local_time() == tp</code>.
|
||||
</p>
|
||||
<p>
|
||||
<i>Throws:</i> Any exception that <code>z->to_sys(tp)</code> would throw.
|
||||
<i>Effects:</i> Constructs a <code>zoned_time</code> by initializing <code>zone_</code>
|
||||
with <code>std::move(z)</code> and <code>tp_</code> with <code>st</code>.
|
||||
</p>
|
||||
</blockquote>
|
||||
|
||||
<pre>
|
||||
zoned_time<Duration>::zoned_time(string_view name, const local_time<Duration>& tp);
|
||||
zoned_time<Duration, TimeZonePtr>::zoned_time(string_view name, const sys_time<Duration>& st);
|
||||
</pre>
|
||||
<blockquote>
|
||||
<p>
|
||||
<i>Effects:</i> Equivalent to construction with <code>{locate_zone(name), tp}</code>.
|
||||
<i>Remarks:</i> This constructor does not participate in overload resolution unless
|
||||
<code>zoned_time</code> is constructible from the return type of
|
||||
<code>zoned_traits<TimeZonePtr>::locate_zone(name)</code> and <code>st</code>.
|
||||
</p>
|
||||
<p>
|
||||
<i>Effects:</i> Equivalent to construction with <code>{zoned_traits<TimeZonePtr>::locate_zone(name), st}</code>.
|
||||
</p>
|
||||
</blockquote>
|
||||
|
||||
<pre>
|
||||
zoned_time<Duration>::zoned_time(const time_zone* z, const local_time<Duration>& tp, choose c);
|
||||
zoned_time<Duration, TimeZonePtr>::zoned_time(TimeZonePtr z, const local_time<Duration>& tp);
|
||||
</pre>
|
||||
<blockquote>
|
||||
<p>
|
||||
<i>Requires:</i> <code>z</code> refers to a valid <code>time_zone</code>.
|
||||
</p>
|
||||
<p>
|
||||
<i>Effects:</i> Constructs a <code>zoned_time</code> <code>zt</code> such that
|
||||
<code>zt.get_time_zone()-> == z</code>, and
|
||||
<code>zt.get_sys_time() == z->to_sys(tp, c)</code>.
|
||||
<i>Remarks:</i> This constructor does not participate in overload resolution unless
|
||||
<code>declval<TimeZonePtr&>()->to_sys(local_time<Duration>{})</code>
|
||||
is convertible to <code>sys_time<duration></code>.
|
||||
</p>
|
||||
<p>
|
||||
<i>Effects:</i> Constructs a <code>zoned_time</code> by initializing <code>zone_</code>
|
||||
with <code>std::move(z)</code> and <code>tp_</code> with <code>zone_->to_sys(t)</code>.
|
||||
</p>
|
||||
</blockquote>
|
||||
|
||||
<pre>
|
||||
zoned_time<Duration>::zoned_time(string_view name, const local_time<Duration>& tp, choose c);
|
||||
zoned_time<Duration, TimeZonePtr>::zoned_time(string_view name, const local_time<Duration>& tp);
|
||||
</pre>
|
||||
<blockquote>
|
||||
<p>
|
||||
<i>Effects:</i> Equivalent to construction with <code>{locate_zone(name), tp, c}</code>.
|
||||
<i>Remarks:</i> This constructor does not participate in overload resolution unless
|
||||
<code>zoned_time</code> is constructible from the return type of
|
||||
<code>zoned_traits<TimeZonePtr>::locate_zone(name)</code> and <code>tp</code>.
|
||||
</p>
|
||||
<p>
|
||||
<i>Effects:</i> Equivalent to construction with <code>{zoned_traits<TimeZonePtr>::locate_zone(name), tp}</code>.
|
||||
</p>
|
||||
</blockquote>
|
||||
|
||||
<pre>
|
||||
zoned_time<Duration>::zoned_time(const time_zone* z, const zoned_time<Duration>& y);
|
||||
zoned_time<Duration, TimeZonePtr>::zoned_time(TimeZonePtr z, const local_time<Duration>& tp, choose c);
|
||||
</pre>
|
||||
<blockquote>
|
||||
<p>
|
||||
<i>Requires:</i> <code>z</code> refers to a valid <code>time_zone</code>.
|
||||
</p>
|
||||
<p>
|
||||
<i>Effects:</i> Constructs a <code>zoned_time</code> <code>zt</code> such that
|
||||
<code>zt.get_time_zone()-> == z</code>, and
|
||||
<code>zt.get_sys_time() == y.get_sys_time()</code>.
|
||||
<i>Remarks:</i> This constructor does not participate in overload resolution unless
|
||||
<code>decltype(declval<TimeZonePtr&>()->to_sys(local_time<Duration>{}, choose::earliest))</code>
|
||||
is convertible to <code>sys_time<duration></code>.
|
||||
</p>
|
||||
<p>
|
||||
<i>Effects:</i> Constructs a <code>zoned_time</code> by initializing <code>zone_</code>
|
||||
with <code>std::move(z)</code> and <code>tp_</code> with <code>zone_->to_sys(t, c)</code>.
|
||||
</p>
|
||||
</blockquote>
|
||||
|
||||
<pre>
|
||||
zoned_time<Duration>::zoned_time(string_view name, const zoned_time<Duration>& y);
|
||||
zoned_time<Duration, TimeZonePtr>::zoned_time(string_view name, const local_time<Duration>& tp, choose c);
|
||||
</pre>
|
||||
<blockquote>
|
||||
<p>
|
||||
<i>Effects:</i> Equivalent to construction with <code>{locate_zone(name), y}</code>.
|
||||
<i>Remarks:</i> This constructor does not participate in overload resolution unless
|
||||
<code>zoned_time</code> is constructible from the return type of
|
||||
<code>zoned_traits<TimeZonePtr>::locate_zone(name)</code>,
|
||||
<code>local_time<Duration></code> and <code>choose</code>.
|
||||
</p>
|
||||
<p>
|
||||
<i>Effects:</i> Equivalent to construction with
|
||||
<code>{zoned_traits<TimeZonePtr>::locate_zone(name), tp, c}</code>.
|
||||
</p>
|
||||
</blockquote>
|
||||
|
||||
<pre>
|
||||
zoned_time<Duration>::zoned_time(const time_zone* z, const zoned_time<Duration>& y, choose);
|
||||
zoned_time<Duration, TimeZonePtr>::zoned_time(TimeZonePtr z, const zoned_time<Duration>& y);
|
||||
</pre>
|
||||
<blockquote>
|
||||
<p>
|
||||
<i>Requires:</i> <code>z</code> refers to a valid <code>time_zone</code>.
|
||||
</p>
|
||||
<p>
|
||||
<i>Effects:</i> Constructs a <code>zoned_time</code> <code>zt</code> such that
|
||||
<code>zt.get_time_zone()-> == z</code>, and
|
||||
<code>zt.get_sys_time() == y.get_sys_time()</code>.
|
||||
<i>Effects:</i> Constructs a <code>zoned_time</code> by initializing <code>zone_</code>
|
||||
with <code>std::move(z)</code> and <code>tp_</code> with <code>z.tp_</code>.
|
||||
</p>
|
||||
</blockquote>
|
||||
|
||||
<pre>
|
||||
zoned_time<Duration, TimeZonePtr>::zoned_time(string_view name, const zoned_time<Duration>& y);
|
||||
</pre>
|
||||
<blockquote>
|
||||
<p>
|
||||
<i>Remarks:</i> This constructor does not participate in overload resolution unless
|
||||
<code>zoned_time</code> is constructible from the return type of
|
||||
<code>zoned_traits<TimeZonePtr>::locate_zone(name)</code>
|
||||
and <code>zoned_time</code>.
|
||||
</p>
|
||||
<p>
|
||||
<i>Effects:</i> Equivalent to construction with
|
||||
<code>{zoned_traits<TimeZonePtr>::locate_zone(name), y}</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>
|
||||
<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>
|
||||
<blockquote>
|
||||
<p>
|
||||
<i>Remarks:</i> This constructor does not participate in overload resolution unless
|
||||
<code>zoned_time</code> is constructible from the return type of
|
||||
<code>zoned_traits<TimeZonePtr>::locate_zone(name)</code>, <code>zoned_time</code>,
|
||||
and <code>choose</code>.
|
||||
</p>
|
||||
<p>
|
||||
<i>Effects:</i> Equivalent to construction with <code>{locate_zone(name), y, c}</code>.
|
||||
</p>
|
||||
<p>
|
||||
<i>Note:</i> The <code>choose</code> parameter is allowed here, but has no impact.
|
||||
@@ -10045,41 +10186,7 @@ zoned_time<Duration>::zoned_time(const time_zone* z, const zoned_time<D
|
||||
</blockquote>
|
||||
|
||||
<pre>
|
||||
zoned_time<Duration>::zoned_time(string_view name, const zoned_time<Duration>& y, choose);
|
||||
</pre>
|
||||
<blockquote>
|
||||
<p>
|
||||
<i>Effects:</i> Equivalent to construction with <code>{locate_zone(name), 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>::zoned_time(const time_zone* z, const sys_time<Duration>& st);
|
||||
</pre>
|
||||
<blockquote>
|
||||
<p>
|
||||
<i>Requires:</i> <code>z</code> refers to a valid <code>time_zone</code>.
|
||||
</p>
|
||||
<p>
|
||||
<i>Effects:</i> Constructs a <code>zoned_time</code> <code>zt</code> such that
|
||||
<code>zt.get_time_zone()-> == z</code>, and <code>zt.get_sys_time() == st</code>.
|
||||
</p>
|
||||
</blockquote>
|
||||
|
||||
<pre>
|
||||
zoned_time<Duration>::zoned_time(string_view name, const sys_time<Duration>& st);
|
||||
</pre>
|
||||
<blockquote>
|
||||
<p>
|
||||
<i>Effects:</i> Equivalent to construction with <code>{locate_zone(name), st}</code>.
|
||||
</p>
|
||||
</blockquote>
|
||||
|
||||
<pre>
|
||||
zoned_time<Duration>& zoned_time<Duration>::operator=(const sys_time<Duration>& st);
|
||||
zoned_time<Duration, TimeZonePtr>& zoned_time<Duration, TimeZonePtr>::operator=(const sys_time<Duration>& st);
|
||||
</pre>
|
||||
<blockquote>
|
||||
<p>
|
||||
@@ -10092,7 +10199,7 @@ no effect on the return value of <code>get_time_zone()</code>.
|
||||
</blockquote>
|
||||
|
||||
<pre>
|
||||
zoned_time<Duration>& zoned_time<Duration>::operator=(const local_time<Duration>& lt);
|
||||
zoned_time<Duration, TimeZonePtr>& zoned_time<Duration, TimeZonePtr>::operator=(const local_time<Duration>& lt);
|
||||
</pre>
|
||||
<blockquote>
|
||||
<p>
|
||||
@@ -10105,7 +10212,7 @@ no effect on the return value of <code>get_time_zone()</code>.
|
||||
</blockquote>
|
||||
|
||||
<pre>
|
||||
zoned_time<Duration>::operator sys_time<duration>() const;
|
||||
zoned_time<Duration, TimeZonePtr>::operator sys_time<duration>() const;
|
||||
</pre>
|
||||
<blockquote>
|
||||
<p>
|
||||
@@ -10114,7 +10221,7 @@ zoned_time<Duration>::operator sys_time<duration>() const;
|
||||
</blockquote>
|
||||
|
||||
<pre>
|
||||
explicit zoned_time<Duration>::operator local_time<duration>() const;
|
||||
explicit zoned_time<Duration, TimeZonePtr>::operator local_time<duration>() const;
|
||||
</pre>
|
||||
<blockquote>
|
||||
<p>
|
||||
@@ -10123,7 +10230,7 @@ explicit zoned_time<Duration>::operator local_time<duration>() const
|
||||
</blockquote>
|
||||
|
||||
<pre>
|
||||
const time_zone* zoned_time<Duration>::get_time_zone() const;
|
||||
TimeZonePtr zoned_time<Duration, TimeZonePtr>::get_time_zone() const;
|
||||
</pre>
|
||||
<blockquote>
|
||||
<p>
|
||||
@@ -10132,7 +10239,7 @@ const time_zone* zoned_time<Duration>::get_time_zone() const;
|
||||
</blockquote>
|
||||
|
||||
<pre>
|
||||
local_time<typename zoned_time<Duration>::duration> zoned_time<Duration>::get_local_time() const;
|
||||
local_time<typename zoned_time<Duration, TimeZonePtr>::duration> zoned_time<Duration, TimeZonePtr>::get_local_time() const;
|
||||
</pre>
|
||||
<blockquote>
|
||||
<p>
|
||||
@@ -10141,7 +10248,7 @@ local_time<typename zoned_time<Duration>::duration> zoned_time<Du
|
||||
</blockquote>
|
||||
|
||||
<pre>
|
||||
sys_time<typename zoned_time<Duration>::duration> zoned_time<Duration>::get_sys_time() const;
|
||||
sys_time<typename zoned_time<Duration, TimeZonePtr>::duration> zoned_time<Duration, TimeZonePtr>::get_sys_time() const;
|
||||
</pre>
|
||||
<blockquote>
|
||||
<p>
|
||||
@@ -10150,7 +10257,7 @@ sys_time<typename zoned_time<Duration>::duration> zoned_time<Dura
|
||||
</blockquote>
|
||||
|
||||
<pre>
|
||||
sys_info zoned_time<Duration>::get_info() const;
|
||||
sys_info zoned_time<Duration, TimeZonePtr>::get_info() const;
|
||||
</pre>
|
||||
<blockquote>
|
||||
<p>
|
||||
@@ -10159,9 +10266,10 @@ sys_info zoned_time<Duration>::get_info() const;
|
||||
</blockquote>
|
||||
|
||||
<pre>
|
||||
template <class Duration1, class Duration2>
|
||||
template <class Duration1, class Duration2, class TimeZonePtr>
|
||||
bool
|
||||
operator==(const zoned_time<Duration1>& x, const zoned_time<Duration2>& y);
|
||||
operator==(const zoned_time<Duration1, TimeZonePtr>& x,
|
||||
const zoned_time<Duration2, TimeZonePtr>& y);
|
||||
</pre>
|
||||
<blockquote>
|
||||
<p>
|
||||
@@ -10170,9 +10278,10 @@ operator==(const zoned_time<Duration1>& x, const zoned_time<Duratio
|
||||
</blockquote>
|
||||
|
||||
<pre>
|
||||
template <class Duration1, class Duration2>
|
||||
template <class Duration1, class Duration2, class TimeZonePtr>
|
||||
bool
|
||||
operator!=(const zoned_time<Duration1>& x, const zoned_time<Duration2>& y);
|
||||
operator!=(const zoned_time<Duration1, TimeZonePtr>& x,
|
||||
const zoned_time<Duration2, TimeZonePtr>& y);
|
||||
</pre>
|
||||
<blockquote>
|
||||
<p>
|
||||
@@ -10181,9 +10290,10 @@ operator!=(const zoned_time<Duration1>& x, const zoned_time<Duratio
|
||||
</blockquote>
|
||||
|
||||
<pre>
|
||||
template <class charT, class traits, class Duration>
|
||||
template <class charT, class traits, class Duration, class TimeZonePtr>
|
||||
basic_ostream<charT, traits>&
|
||||
operator<<(basic_ostream<charT, traits>& os, const zoned_time<Duration>& t)
|
||||
operator<<(basic_ostream<charT, traits>& os,
|
||||
const zoned_time<Duration, TimeZonePtr>& t)
|
||||
</pre>
|
||||
<blockquote>
|
||||
<p>
|
||||
@@ -10196,9 +10306,10 @@ and the value returned from <code>t.get_local_time()</code>.
|
||||
</blockquote>
|
||||
|
||||
<pre>
|
||||
template <class charT, class traits, class Duration>
|
||||
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>& tp);
|
||||
to_stream(basic_ostream<charT, traits>& os, const charT* fmt,
|
||||
const zoned_time<Duration, TimeZonePtr>& tp);
|
||||
</pre>
|
||||
|
||||
<blockquote>
|
||||
@@ -10218,12 +10329,12 @@ which for exposition purposes will be referred to as <code>info</code>. Then ca
|
||||
</blockquote>
|
||||
|
||||
<p class = note>
|
||||
Add a new section 23.17.12.10 leap [time.timezone.leap]:
|
||||
Add a new section 23.17.12.7 leap [time.timezone.leap]:
|
||||
</p>
|
||||
|
||||
<blockquote>
|
||||
|
||||
<a name="time.timezone.leap"></a><h3>23.17.12.10 class <code>leap</code> [time.timezone.leap]</h3>
|
||||
<a name="time.timezone.leap"></a><h3>23.17.12.7 class <code>leap</code> [time.timezone.leap]</h3>
|
||||
|
||||
|
||||
<pre>
|
||||
@@ -10494,12 +10605,12 @@ template <class Duration> bool operator>=(const sys_time<Duration>
|
||||
</blockquote>
|
||||
|
||||
<p class = note>
|
||||
Add a new section 23.17.12.11 link [time.timezone.link]:
|
||||
Add a new section 23.17.12.8 link [time.timezone.link]:
|
||||
</p>
|
||||
|
||||
<blockquote>
|
||||
|
||||
<a name="time.timezone.link"></a><h3>23.17.12.11 class <code>link</code> [time.timezone.link]</h3>
|
||||
<a name="time.timezone.link"></a><h3>23.17.12.8 class <code>link</code> [time.timezone.link]</h3>
|
||||
|
||||
<pre>
|
||||
class link
|
||||
|
Reference in New Issue
Block a user