4356 lines
150 KiB
Markdown
4356 lines
150 KiB
Markdown
[time.cal]
|
||
|
||
# 30 Time library [[time]](./#time)
|
||
|
||
## 30.8 The civil calendar [time.cal]
|
||
|
||
### [30.8.1](#general) General [[time.cal.general]](time.cal.general)
|
||
|
||
[1](#general-1)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L3918)
|
||
|
||
The types in [time.cal] describe the civil (Gregorian) calendar
|
||
and its relationship to sys_days and local_days[.](#general-1.sentence-1)
|
||
|
||
### [30.8.2](#last) Class last_spec [[time.cal.last]](time.cal.last)
|
||
|
||
namespace std::chrono {struct last_spec {explicit last_spec() = default; };}
|
||
|
||
[1](#last-1)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L3933)
|
||
|
||
The type last_spec is used
|
||
in conjunction with other calendar types
|
||
to specify the last in a sequence[.](#last-1.sentence-1)
|
||
|
||
For example, depending on context,
|
||
it can represent the last day of a month,
|
||
or the last day of the week of a month[.](#last-1.sentence-2)
|
||
|
||
### [30.8.3](#day) Class day [[time.cal.day]](time.cal.day)
|
||
|
||
#### [30.8.3.1](#day.overview) Overview [[time.cal.day.overview]](time.cal.day.overview)
|
||
|
||
namespace std::chrono {class day {unsigned char d_; // *exposition only*public: day() = default; constexpr explicit day(unsigned d) noexcept; constexpr day& operator++() noexcept; constexpr day operator++(int) noexcept; constexpr day& operator--() noexcept; constexpr day operator--(int) noexcept; constexpr day& operator+=(const days& d) noexcept; constexpr day& operator-=(const days& d) noexcept; constexpr explicit operator unsigned() const noexcept; constexpr bool ok() const noexcept; };}
|
||
|
||
[1](#day.overview-1)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L3968)
|
||
|
||
day represents a day of a month[.](#day.overview-1.sentence-1)
|
||
|
||
It normally holds values in the range 1 to 31,
|
||
but may hold non-negative values outside this range[.](#day.overview-1.sentence-2)
|
||
|
||
It can be constructed with any unsigned value,
|
||
which will be subsequently truncated to fit into day's unspecified internal storage[.](#day.overview-1.sentence-3)
|
||
|
||
day meets the [*Cpp17EqualityComparable*](utility.arg.requirements#:Cpp17EqualityComparable "16.4.4.2 Template argument requirements [utility.arg.requirements]") (Table [28](utility.arg.requirements#tab:cpp17.equalitycomparable "Table 28: Cpp17EqualityComparable requirements"))
|
||
and [*Cpp17LessThanComparable*](utility.arg.requirements#:Cpp17LessThanComparable "16.4.4.2 Template argument requirements [utility.arg.requirements]") (Table [29](utility.arg.requirements#tab:cpp17.lessthancomparable "Table 29: Cpp17LessThanComparable requirements")) requirements,
|
||
and participates in basic arithmetic with days objects,
|
||
which represent a difference between two day objects[.](#day.overview-1.sentence-4)
|
||
|
||
[2](#day.overview-2)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L3979)
|
||
|
||
day is a trivially copyable and standard-layout class type[.](#day.overview-2.sentence-1)
|
||
|
||
#### [30.8.3.2](#day.members) Member functions [[time.cal.day.members]](time.cal.day.members)
|
||
|
||
[ð](#lib:day,constructor)
|
||
|
||
`constexpr explicit day(unsigned d) noexcept;
|
||
`
|
||
|
||
[1](#day.members-1)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L3990)
|
||
|
||
*Effects*: Initializes d_ with d[.](#day.members-1.sentence-1)
|
||
|
||
The value held is unspecified if d is not in the range [0, 255][.](#day.members-1.sentence-2)
|
||
|
||
[ð](#lib:operator++,day)
|
||
|
||
`constexpr day& operator++() noexcept;
|
||
`
|
||
|
||
[2](#day.members-2)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4002)
|
||
|
||
*Effects*: ++d_[.](#day.members-2.sentence-1)
|
||
|
||
[3](#day.members-3)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4006)
|
||
|
||
*Returns*: *this[.](#day.members-3.sentence-1)
|
||
|
||
[ð](#lib:operator++,day_)
|
||
|
||
`constexpr day operator++(int) noexcept;
|
||
`
|
||
|
||
[4](#day.members-4)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4017)
|
||
|
||
*Effects*: ++(*this)[.](#day.members-4.sentence-1)
|
||
|
||
[5](#day.members-5)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4021)
|
||
|
||
*Returns*: A copy of *this as it existed on entry to this member function[.](#day.members-5.sentence-1)
|
||
|
||
[ð](#lib:operator--,day)
|
||
|
||
`constexpr day& operator--() noexcept;
|
||
`
|
||
|
||
[6](#day.members-6)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4032)
|
||
|
||
*Effects*: Equivalent to: --d_[.](#day.members-6.sentence-1)
|
||
|
||
[7](#day.members-7)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4036)
|
||
|
||
*Returns*: *this[.](#day.members-7.sentence-1)
|
||
|
||
[ð](#lib:operator--,day_)
|
||
|
||
`constexpr day operator--(int) noexcept;
|
||
`
|
||
|
||
[8](#day.members-8)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4047)
|
||
|
||
*Effects*: --(*this)[.](#day.members-8.sentence-1)
|
||
|
||
[9](#day.members-9)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4051)
|
||
|
||
*Returns*: A copy of *this as it existed on entry to this member function[.](#day.members-9.sentence-1)
|
||
|
||
[ð](#lib:operator+=,day)
|
||
|
||
`constexpr day& operator+=(const days& d) noexcept;
|
||
`
|
||
|
||
[10](#day.members-10)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4062)
|
||
|
||
*Effects*: *this = *this + d[.](#day.members-10.sentence-1)
|
||
|
||
[11](#day.members-11)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4066)
|
||
|
||
*Returns*: *this[.](#day.members-11.sentence-1)
|
||
|
||
[ð](#lib:operator-=,day)
|
||
|
||
`constexpr day& operator-=(const days& d) noexcept;
|
||
`
|
||
|
||
[12](#day.members-12)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4077)
|
||
|
||
*Effects*: *this = *this - d[.](#day.members-12.sentence-1)
|
||
|
||
[13](#day.members-13)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4081)
|
||
|
||
*Returns*: *this[.](#day.members-13.sentence-1)
|
||
|
||
[ð](#lib:operator_unsigned,day)
|
||
|
||
`constexpr explicit operator unsigned() const noexcept;
|
||
`
|
||
|
||
[14](#day.members-14)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4092)
|
||
|
||
*Returns*: d_[.](#day.members-14.sentence-1)
|
||
|
||
[ð](#lib:ok,day)
|
||
|
||
`constexpr bool ok() const noexcept;
|
||
`
|
||
|
||
[15](#day.members-15)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4103)
|
||
|
||
*Returns*: 1 <= d_ && d_ <= 31[.](#day.members-15.sentence-1)
|
||
|
||
#### [30.8.3.3](#day.nonmembers) Non-member functions [[time.cal.day.nonmembers]](time.cal.day.nonmembers)
|
||
|
||
[ð](#lib:operator==,day)
|
||
|
||
`constexpr bool operator==(const day& x, const day& y) noexcept;
|
||
`
|
||
|
||
[1](#day.nonmembers-1)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4116)
|
||
|
||
*Returns*: unsigned{x} == unsigned{y}[.](#day.nonmembers-1.sentence-1)
|
||
|
||
[ð](#lib:operator%3c=%3e,day)
|
||
|
||
`constexpr strong_ordering operator<=>(const day& x, const day& y) noexcept;
|
||
`
|
||
|
||
[2](#day.nonmembers-2)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4127)
|
||
|
||
*Returns*: unsigned{x} <=> unsigned{y}[.](#day.nonmembers-2.sentence-1)
|
||
|
||
[ð](#lib:operator+,day)
|
||
|
||
`constexpr day operator+(const day& x, const days& y) noexcept;
|
||
`
|
||
|
||
[3](#day.nonmembers-3)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4138)
|
||
|
||
*Returns*: day(unsigned{x} + y.count())[.](#day.nonmembers-3.sentence-1)
|
||
|
||
[ð](#lib:operator+,day_)
|
||
|
||
`constexpr day operator+(const days& x, const day& y) noexcept;
|
||
`
|
||
|
||
[4](#day.nonmembers-4)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4149)
|
||
|
||
*Returns*: y + x[.](#day.nonmembers-4.sentence-1)
|
||
|
||
[ð](#lib:operator-,day)
|
||
|
||
`constexpr day operator-(const day& x, const days& y) noexcept;
|
||
`
|
||
|
||
[5](#day.nonmembers-5)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4160)
|
||
|
||
*Returns*: x + -y[.](#day.nonmembers-5.sentence-1)
|
||
|
||
[ð](#lib:operator-,day_)
|
||
|
||
`constexpr days operator-(const day& x, const day& y) noexcept;
|
||
`
|
||
|
||
[6](#day.nonmembers-6)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4171)
|
||
|
||
*Returns*: days{int(unsigned{x}) - int(unsigned{y})}[.](#day.nonmembers-6.sentence-1)
|
||
|
||
[ð](#lib:operator%3c%3c,day)
|
||
|
||
`template<class charT, class traits>
|
||
basic_ostream<charT, traits>&
|
||
operator<<(basic_ostream<charT, traits>& os, const day& d);
|
||
`
|
||
|
||
[7](#day.nonmembers-7)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4184)
|
||
|
||
*Effects*: Equivalent to:return os << (d.ok() ? format(*STATICALLY-WIDEN*<charT>("{:%d}"), d) : format(*STATICALLY-WIDEN*<charT>("{:%d} is not a valid day"), d));
|
||
|
||
[ð](#lib:from_stream,day)
|
||
|
||
`template<class charT, class traits, class Alloc = allocator<charT>>
|
||
basic_istream<charT, traits>&
|
||
from_stream(basic_istream<charT, traits>& is, const charT* fmt,
|
||
day& d, basic_string<charT, traits, Alloc>* abbrev = nullptr,
|
||
minutes* offset = nullptr);
|
||
`
|
||
|
||
[8](#day.nonmembers-8)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4204)
|
||
|
||
*Effects*: Attempts to parse the input stream is into the day d using
|
||
the format flags given in the NTCTS fmt as specified in [[time.parse]](time.parse "30.13 Parsing")[.](#day.nonmembers-8.sentence-1)
|
||
|
||
If the parse fails to decode a valid day,is.setstate(ios_base::failbit) is called andd is not modified[.](#day.nonmembers-8.sentence-2)
|
||
|
||
If %Z is used and successfully parsed,
|
||
that value will be assigned to *abbrev if abbrev is non-null[.](#day.nonmembers-8.sentence-3)
|
||
|
||
If %z (or a modified variant) is used and successfully parsed,
|
||
that value will be assigned to *offset if offset is non-null[.](#day.nonmembers-8.sentence-4)
|
||
|
||
[9](#day.nonmembers-9)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4218)
|
||
|
||
*Returns*: is[.](#day.nonmembers-9.sentence-1)
|
||
|
||
[ð](#lib:operator%22%22d,day)
|
||
|
||
`constexpr chrono::day operator""d(unsigned long long d) noexcept;
|
||
`
|
||
|
||
[10](#day.nonmembers-10)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4229)
|
||
|
||
*Returns*: day{static_cast<unsigned>(d)}[.](#day.nonmembers-10.sentence-1)
|
||
|
||
### [30.8.4](#month) Class month [[time.cal.month]](time.cal.month)
|
||
|
||
#### [30.8.4.1](#month.overview) Overview [[time.cal.month.overview]](time.cal.month.overview)
|
||
|
||
namespace std::chrono {class month {unsigned char m_; // *exposition only*public: month() = default; constexpr explicit month(unsigned m) noexcept; constexpr month& operator++() noexcept; constexpr month operator++(int) noexcept; constexpr month& operator--() noexcept; constexpr month operator--(int) noexcept; constexpr month& operator+=(const months& m) noexcept; constexpr month& operator-=(const months& m) noexcept; constexpr explicit operator unsigned() const noexcept; constexpr bool ok() const noexcept; };}
|
||
|
||
[1](#month.overview-1)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4261)
|
||
|
||
month represents a month of a year[.](#month.overview-1.sentence-1)
|
||
|
||
It normally holds values in the range 1 to 12,
|
||
but may hold non-negative values outside this range[.](#month.overview-1.sentence-2)
|
||
|
||
It can be constructed with any unsigned value,
|
||
which will be subsequently truncated to fit into month's unspecified internal storage[.](#month.overview-1.sentence-3)
|
||
|
||
month meets the [*Cpp17EqualityComparable*](utility.arg.requirements#:Cpp17EqualityComparable "16.4.4.2 Template argument requirements [utility.arg.requirements]") (Table [28](utility.arg.requirements#tab:cpp17.equalitycomparable "Table 28: Cpp17EqualityComparable requirements"))
|
||
and [*Cpp17LessThanComparable*](utility.arg.requirements#:Cpp17LessThanComparable "16.4.4.2 Template argument requirements [utility.arg.requirements]") (Table [29](utility.arg.requirements#tab:cpp17.lessthancomparable "Table 29: Cpp17LessThanComparable requirements")) requirements,
|
||
and participates in basic arithmetic with months objects,
|
||
which represent a difference between two month objects[.](#month.overview-1.sentence-4)
|
||
|
||
[2](#month.overview-2)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4272)
|
||
|
||
month is a trivially copyable and standard-layout class type[.](#month.overview-2.sentence-1)
|
||
|
||
#### [30.8.4.2](#month.members) Member functions [[time.cal.month.members]](time.cal.month.members)
|
||
|
||
[ð](#lib:month,constructor)
|
||
|
||
`constexpr explicit month(unsigned m) noexcept;
|
||
`
|
||
|
||
[1](#month.members-1)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4283)
|
||
|
||
*Effects*: Initializes m_ with m[.](#month.members-1.sentence-1)
|
||
|
||
The value held is unspecified if m is not in the range [0, 255][.](#month.members-1.sentence-2)
|
||
|
||
[ð](#lib:operator++,month)
|
||
|
||
`constexpr month& operator++() noexcept;
|
||
`
|
||
|
||
[2](#month.members-2)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4295)
|
||
|
||
*Effects*: *this += months{1}[.](#month.members-2.sentence-1)
|
||
|
||
[3](#month.members-3)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4299)
|
||
|
||
*Returns*: *this[.](#month.members-3.sentence-1)
|
||
|
||
[ð](#lib:operator++,month_)
|
||
|
||
`constexpr month operator++(int) noexcept;
|
||
`
|
||
|
||
[4](#month.members-4)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4310)
|
||
|
||
*Effects*: ++(*this)[.](#month.members-4.sentence-1)
|
||
|
||
[5](#month.members-5)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4314)
|
||
|
||
*Returns*: A copy of *this as it existed on entry to this member function[.](#month.members-5.sentence-1)
|
||
|
||
[ð](#lib:operator--,month)
|
||
|
||
`constexpr month& operator--() noexcept;
|
||
`
|
||
|
||
[6](#month.members-6)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4325)
|
||
|
||
*Effects*: *this -= months{1}[.](#month.members-6.sentence-1)
|
||
|
||
[7](#month.members-7)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4329)
|
||
|
||
*Returns*: *this[.](#month.members-7.sentence-1)
|
||
|
||
[ð](#lib:operator--,month_)
|
||
|
||
`constexpr month operator--(int) noexcept;
|
||
`
|
||
|
||
[8](#month.members-8)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4340)
|
||
|
||
*Effects*: --(*this)[.](#month.members-8.sentence-1)
|
||
|
||
[9](#month.members-9)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4344)
|
||
|
||
*Returns*: A copy of *this as it existed on entry to this member function[.](#month.members-9.sentence-1)
|
||
|
||
[ð](#lib:operator+=,month)
|
||
|
||
`constexpr month& operator+=(const months& m) noexcept;
|
||
`
|
||
|
||
[10](#month.members-10)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4355)
|
||
|
||
*Effects*: *this = *this + m[.](#month.members-10.sentence-1)
|
||
|
||
[11](#month.members-11)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4359)
|
||
|
||
*Returns*: *this[.](#month.members-11.sentence-1)
|
||
|
||
[ð](#lib:operator-=,month)
|
||
|
||
`constexpr month& operator-=(const months& m) noexcept;
|
||
`
|
||
|
||
[12](#month.members-12)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4370)
|
||
|
||
*Effects*: *this = *this - m[.](#month.members-12.sentence-1)
|
||
|
||
[13](#month.members-13)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4374)
|
||
|
||
*Returns*: *this[.](#month.members-13.sentence-1)
|
||
|
||
[ð](#lib:operator_unsigned,month)
|
||
|
||
`constexpr explicit operator unsigned() const noexcept;
|
||
`
|
||
|
||
[14](#month.members-14)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4385)
|
||
|
||
*Returns*: m_[.](#month.members-14.sentence-1)
|
||
|
||
[ð](#lib:ok,month)
|
||
|
||
`constexpr bool ok() const noexcept;
|
||
`
|
||
|
||
[15](#month.members-15)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4396)
|
||
|
||
*Returns*: 1 <= m_ && m_ <= 12[.](#month.members-15.sentence-1)
|
||
|
||
#### [30.8.4.3](#month.nonmembers) Non-member functions [[time.cal.month.nonmembers]](time.cal.month.nonmembers)
|
||
|
||
[ð](#lib:operator==,month)
|
||
|
||
`constexpr bool operator==(const month& x, const month& y) noexcept;
|
||
`
|
||
|
||
[1](#month.nonmembers-1)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4409)
|
||
|
||
*Returns*: unsigned{x} == unsigned{y}[.](#month.nonmembers-1.sentence-1)
|
||
|
||
[ð](#lib:operator%3c=%3e,month)
|
||
|
||
`constexpr strong_ordering operator<=>(const month& x, const month& y) noexcept;
|
||
`
|
||
|
||
[2](#month.nonmembers-2)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4420)
|
||
|
||
*Returns*: unsigned{x} <=> unsigned{y}[.](#month.nonmembers-2.sentence-1)
|
||
|
||
[ð](#lib:operator+,month)
|
||
|
||
`constexpr month operator+(const month& x, const months& y) noexcept;
|
||
`
|
||
|
||
[3](#month.nonmembers-3)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4431)
|
||
|
||
*Returns*: month{modulo(static_cast<long long>(unsigned{x}) + (y.count() - 1), 12) + 1} where modulo(n, 12) computes the remainder of n divided by 12 using Euclidean division[.](#month.nonmembers-3.sentence-1)
|
||
|
||
[*Note [1](#month.nonmembers-note-1)*:
|
||
|
||
Given a divisor of 12, Euclidean division truncates towards negative infinity and
|
||
always produces a remainder in the range of [0, 11][.](#month.nonmembers-3.sentence-2)
|
||
|
||
Assuming no overflow in the signed summation,
|
||
this operation results in a month holding a value in the range [1, 12] even if !x.ok()[.](#month.nonmembers-3.sentence-3)
|
||
|
||
â *end note*]
|
||
|
||
[*Example [1](#month.nonmembers-example-1)*:
|
||
|
||
February + months{11} == January[.](#month.nonmembers-3.sentence-4)
|
||
|
||
â *end example*]
|
||
|
||
[ð](#lib:operator+,month_)
|
||
|
||
`constexpr month operator+(const months& x, const month& y) noexcept;
|
||
`
|
||
|
||
[4](#month.nonmembers-4)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4454)
|
||
|
||
*Returns*: y + x[.](#month.nonmembers-4.sentence-1)
|
||
|
||
[ð](#lib:operator-,month)
|
||
|
||
`constexpr month operator-(const month& x, const months& y) noexcept;
|
||
`
|
||
|
||
[5](#month.nonmembers-5)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4465)
|
||
|
||
*Returns*: x + -y[.](#month.nonmembers-5.sentence-1)
|
||
|
||
[ð](#lib:operator-,month_)
|
||
|
||
`constexpr months operator-(const month& x, const month& y) noexcept;
|
||
`
|
||
|
||
[6](#month.nonmembers-6)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4476)
|
||
|
||
*Returns*: If x.ok() == true and y.ok() == true,
|
||
returns a value m in the range [months{0}, months{11}]
|
||
satisfying y + m == x[.](#month.nonmembers-6.sentence-1)
|
||
|
||
Otherwise the value returned is unspecified[.](#month.nonmembers-6.sentence-2)
|
||
|
||
[*Example [2](#month.nonmembers-example-2)*:
|
||
|
||
January - February == months{11}[.](#month.nonmembers-6.sentence-3)
|
||
|
||
â *end example*]
|
||
|
||
[ð](#lib:operator%3c%3c,month)
|
||
|
||
`template<class charT, class traits>
|
||
basic_ostream<charT, traits>&
|
||
operator<<(basic_ostream<charT, traits>& os, const month& m);
|
||
`
|
||
|
||
[7](#month.nonmembers-7)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4497)
|
||
|
||
*Effects*: Equivalent to:return os << (m.ok() ? format(os.getloc(), *STATICALLY-WIDEN*<charT>("{:L%b}"), m) : format(os.getloc(), *STATICALLY-WIDEN*<charT>("{} is not a valid month"), static_cast<unsigned>(m)));
|
||
|
||
[ð](#lib:from_stream,month)
|
||
|
||
`template<class charT, class traits, class Alloc = allocator<charT>>
|
||
basic_istream<charT, traits>&
|
||
from_stream(basic_istream<charT, traits>& is, const charT* fmt,
|
||
month& m, basic_string<charT, traits, Alloc>* abbrev = nullptr,
|
||
minutes* offset = nullptr);
|
||
`
|
||
|
||
[8](#month.nonmembers-8)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4518)
|
||
|
||
*Effects*: Attempts to parse the input stream is into the month m using
|
||
the format flags given in the NTCTS fmt as specified in [[time.parse]](time.parse "30.13 Parsing")[.](#month.nonmembers-8.sentence-1)
|
||
|
||
If the parse fails to decode a valid month,is.setstate(ios_base::failbit) is called andm is not modified[.](#month.nonmembers-8.sentence-2)
|
||
|
||
If %Z is used and successfully parsed,
|
||
that value will be assigned to *abbrev if abbrev is non-null[.](#month.nonmembers-8.sentence-3)
|
||
|
||
If %z (or a modified variant) is used and successfully parsed,
|
||
that value will be assigned to *offset if offset is non-null[.](#month.nonmembers-8.sentence-4)
|
||
|
||
[9](#month.nonmembers-9)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4532)
|
||
|
||
*Returns*: is[.](#month.nonmembers-9.sentence-1)
|
||
|
||
### [30.8.5](#year) Class year [[time.cal.year]](time.cal.year)
|
||
|
||
#### [30.8.5.1](#year.overview) Overview [[time.cal.year.overview]](time.cal.year.overview)
|
||
|
||
namespace std::chrono {class year {short y_; // *exposition only*public: year() = default; constexpr explicit year(int y) noexcept; constexpr year& operator++() noexcept; constexpr year operator++(int) noexcept; constexpr year& operator--() noexcept; constexpr year operator--(int) noexcept; constexpr year& operator+=(const years& y) noexcept; constexpr year& operator-=(const years& y) noexcept; constexpr year operator+() const noexcept; constexpr year operator-() const noexcept; constexpr bool is_leap() const noexcept; constexpr explicit operator int() const noexcept; constexpr bool ok() const noexcept; static constexpr year min() noexcept; static constexpr year max() noexcept; };}
|
||
|
||
[1](#year.overview-1)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4572)
|
||
|
||
year represents a year in the civil calendar[.](#year.overview-1.sentence-1)
|
||
|
||
It can represent values in the range [min(), max()][.](#year.overview-1.sentence-2)
|
||
|
||
It can be constructed with any int value,
|
||
which will be subsequently truncated to fit into year's unspecified internal storage[.](#year.overview-1.sentence-3)
|
||
|
||
year meets the [*Cpp17EqualityComparable*](utility.arg.requirements#:Cpp17EqualityComparable "16.4.4.2 Template argument requirements [utility.arg.requirements]") (Table [28](utility.arg.requirements#tab:cpp17.equalitycomparable "Table 28: Cpp17EqualityComparable requirements"))
|
||
and [*Cpp17LessThanComparable*](utility.arg.requirements#:Cpp17LessThanComparable "16.4.4.2 Template argument requirements [utility.arg.requirements]") (Table [29](utility.arg.requirements#tab:cpp17.lessthancomparable "Table 29: Cpp17LessThanComparable requirements")) requirements,
|
||
and participates in basic arithmetic with years objects,
|
||
which represent a difference between two year objects[.](#year.overview-1.sentence-4)
|
||
|
||
[2](#year.overview-2)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4582)
|
||
|
||
year is a trivially copyable and standard-layout class type[.](#year.overview-2.sentence-1)
|
||
|
||
#### [30.8.5.2](#year.members) Member functions [[time.cal.year.members]](time.cal.year.members)
|
||
|
||
[ð](#lib:year,constructor)
|
||
|
||
`constexpr explicit year(int y) noexcept;
|
||
`
|
||
|
||
[1](#year.members-1)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4593)
|
||
|
||
*Effects*: Initializes y_ with y[.](#year.members-1.sentence-1)
|
||
|
||
The value held is unspecified if y is not in the range [-32767, 32767][.](#year.members-1.sentence-2)
|
||
|
||
[ð](#lib:operator++,year)
|
||
|
||
`constexpr year& operator++() noexcept;
|
||
`
|
||
|
||
[2](#year.members-2)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4605)
|
||
|
||
*Effects*: ++y_[.](#year.members-2.sentence-1)
|
||
|
||
[3](#year.members-3)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4609)
|
||
|
||
*Returns*: *this[.](#year.members-3.sentence-1)
|
||
|
||
[ð](#lib:operator++,year_)
|
||
|
||
`constexpr year operator++(int) noexcept;
|
||
`
|
||
|
||
[4](#year.members-4)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4620)
|
||
|
||
*Effects*: ++(*this)[.](#year.members-4.sentence-1)
|
||
|
||
[5](#year.members-5)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4624)
|
||
|
||
*Returns*: A copy of *this as it existed on entry to this member function[.](#year.members-5.sentence-1)
|
||
|
||
[ð](#lib:operator--,year)
|
||
|
||
`constexpr year& operator--() noexcept;
|
||
`
|
||
|
||
[6](#year.members-6)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4635)
|
||
|
||
*Effects*: --y_[.](#year.members-6.sentence-1)
|
||
|
||
[7](#year.members-7)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4639)
|
||
|
||
*Returns*: *this[.](#year.members-7.sentence-1)
|
||
|
||
[ð](#lib:operator--,year_)
|
||
|
||
`constexpr year operator--(int) noexcept;
|
||
`
|
||
|
||
[8](#year.members-8)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4650)
|
||
|
||
*Effects*: --(*this)[.](#year.members-8.sentence-1)
|
||
|
||
[9](#year.members-9)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4654)
|
||
|
||
*Returns*: A copy of *this as it existed on entry to this member function[.](#year.members-9.sentence-1)
|
||
|
||
[ð](#lib:operator+=,year)
|
||
|
||
`constexpr year& operator+=(const years& y) noexcept;
|
||
`
|
||
|
||
[10](#year.members-10)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4665)
|
||
|
||
*Effects*: *this = *this + y[.](#year.members-10.sentence-1)
|
||
|
||
[11](#year.members-11)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4669)
|
||
|
||
*Returns*: *this[.](#year.members-11.sentence-1)
|
||
|
||
[ð](#lib:operator-=,year)
|
||
|
||
`constexpr year& operator-=(const years& y) noexcept;
|
||
`
|
||
|
||
[12](#year.members-12)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4680)
|
||
|
||
*Effects*: *this = *this - y[.](#year.members-12.sentence-1)
|
||
|
||
[13](#year.members-13)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4684)
|
||
|
||
*Returns*: *this[.](#year.members-13.sentence-1)
|
||
|
||
[ð](#lib:operator+,year)
|
||
|
||
`constexpr year operator+() const noexcept;
|
||
`
|
||
|
||
[14](#year.members-14)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4695)
|
||
|
||
*Returns*: *this[.](#year.members-14.sentence-1)
|
||
|
||
[ð](#lib:operator-,year)
|
||
|
||
`constexpr year operator-() const noexcept;
|
||
`
|
||
|
||
[15](#year.members-15)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4706)
|
||
|
||
*Returns*: year{-y_}[.](#year.members-15.sentence-1)
|
||
|
||
[ð](#lib:is_leap,year)
|
||
|
||
`constexpr bool is_leap() const noexcept;
|
||
`
|
||
|
||
[16](#year.members-16)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4717)
|
||
|
||
*Returns*: y_ % 4 == 0 && (y_ % 100 != 0 || y_ % 400 == 0)[.](#year.members-16.sentence-1)
|
||
|
||
[ð](#lib:operator_int,year)
|
||
|
||
`constexpr explicit operator int() const noexcept;
|
||
`
|
||
|
||
[17](#year.members-17)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4728)
|
||
|
||
*Returns*: y_[.](#year.members-17.sentence-1)
|
||
|
||
[ð](#lib:ok,year)
|
||
|
||
`constexpr bool ok() const noexcept;
|
||
`
|
||
|
||
[18](#year.members-18)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4739)
|
||
|
||
*Returns*: min().y_ <= y_ && y_ <= max().y_[.](#year.members-18.sentence-1)
|
||
|
||
[ð](#lib:min,year)
|
||
|
||
`static constexpr year min() noexcept;
|
||
`
|
||
|
||
[19](#year.members-19)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4750)
|
||
|
||
*Returns*: year{-32767}[.](#year.members-19.sentence-1)
|
||
|
||
[ð](#lib:max,year)
|
||
|
||
`static constexpr year max() noexcept;
|
||
`
|
||
|
||
[20](#year.members-20)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4761)
|
||
|
||
*Returns*: year{32767}[.](#year.members-20.sentence-1)
|
||
|
||
#### [30.8.5.3](#year.nonmembers) Non-member functions [[time.cal.year.nonmembers]](time.cal.year.nonmembers)
|
||
|
||
[ð](#lib:operator==,year)
|
||
|
||
`constexpr bool operator==(const year& x, const year& y) noexcept;
|
||
`
|
||
|
||
[1](#year.nonmembers-1)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4774)
|
||
|
||
*Returns*: int{x} == int{y}[.](#year.nonmembers-1.sentence-1)
|
||
|
||
[ð](#lib:operator%3c=%3e,year)
|
||
|
||
`constexpr strong_ordering operator<=>(const year& x, const year& y) noexcept;
|
||
`
|
||
|
||
[2](#year.nonmembers-2)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4785)
|
||
|
||
*Returns*: int{x} <=> int{y}[.](#year.nonmembers-2.sentence-1)
|
||
|
||
[ð](#lib:operator+,year_)
|
||
|
||
`constexpr year operator+(const year& x, const years& y) noexcept;
|
||
`
|
||
|
||
[3](#year.nonmembers-3)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4796)
|
||
|
||
*Returns*: year{int{x} + static_cast<int>(y.count())}[.](#year.nonmembers-3.sentence-1)
|
||
|
||
[ð](#lib:operator+,year__)
|
||
|
||
`constexpr year operator+(const years& x, const year& y) noexcept;
|
||
`
|
||
|
||
[4](#year.nonmembers-4)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4807)
|
||
|
||
*Returns*: y + x[.](#year.nonmembers-4.sentence-1)
|
||
|
||
[ð](#lib:operator-,year_)
|
||
|
||
`constexpr year operator-(const year& x, const years& y) noexcept;
|
||
`
|
||
|
||
[5](#year.nonmembers-5)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4818)
|
||
|
||
*Returns*: x + -y[.](#year.nonmembers-5.sentence-1)
|
||
|
||
[ð](#lib:operator-,year__)
|
||
|
||
`constexpr years operator-(const year& x, const year& y) noexcept;
|
||
`
|
||
|
||
[6](#year.nonmembers-6)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4829)
|
||
|
||
*Returns*: years{int{x} - int{y}}[.](#year.nonmembers-6.sentence-1)
|
||
|
||
[ð](#lib:operator%3c%3c,year)
|
||
|
||
`template<class charT, class traits>
|
||
basic_ostream<charT, traits>&
|
||
operator<<(basic_ostream<charT, traits>& os, const year& y);
|
||
`
|
||
|
||
[7](#year.nonmembers-7)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4842)
|
||
|
||
*Effects*: Equivalent to:return os << (y.ok() ? format(*STATICALLY-WIDEN*<charT>("{:%Y}"), y) : format(*STATICALLY-WIDEN*<charT>("{:%Y} is not a valid year"), y));
|
||
|
||
[ð](#lib:from_stream,year)
|
||
|
||
`template<class charT, class traits, class Alloc = allocator<charT>>
|
||
basic_istream<charT, traits>&
|
||
from_stream(basic_istream<charT, traits>& is, const charT* fmt,
|
||
year& y, basic_string<charT, traits, Alloc>* abbrev = nullptr,
|
||
minutes* offset = nullptr);
|
||
`
|
||
|
||
[8](#year.nonmembers-8)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4862)
|
||
|
||
*Effects*: Attempts to parse the input stream is into the year y using
|
||
the format flags given in the NTCTS fmt as specified in [[time.parse]](time.parse "30.13 Parsing")[.](#year.nonmembers-8.sentence-1)
|
||
|
||
If the parse fails to decode a valid year,is.setstate(ios_base::failbit) is called andy is not modified[.](#year.nonmembers-8.sentence-2)
|
||
|
||
If %Z is used and successfully parsed,
|
||
that value will be assigned to *abbrev if abbrev is non-null[.](#year.nonmembers-8.sentence-3)
|
||
|
||
If %z (or a modified variant) is used and successfully parsed,
|
||
that value will be assigned to *offset if offset is non-null[.](#year.nonmembers-8.sentence-4)
|
||
|
||
[9](#year.nonmembers-9)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4876)
|
||
|
||
*Returns*: is[.](#year.nonmembers-9.sentence-1)
|
||
|
||
[ð](#lib:operator%22%22y,year)
|
||
|
||
`constexpr chrono::year operator""y(unsigned long long y) noexcept;
|
||
`
|
||
|
||
[10](#year.nonmembers-10)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4887)
|
||
|
||
*Returns*: year{static_cast<int>(y)}[.](#year.nonmembers-10.sentence-1)
|
||
|
||
### [30.8.6](#wd) Class weekday [[time.cal.wd]](time.cal.wd)
|
||
|
||
#### [30.8.6.1](#wd.overview) Overview [[time.cal.wd.overview]](time.cal.wd.overview)
|
||
|
||
namespace std::chrono {class weekday {unsigned char wd_; // *exposition only*public: weekday() = default; constexpr explicit weekday(unsigned wd) noexcept; constexpr weekday(const sys_days& dp) noexcept; constexpr explicit weekday(const local_days& dp) noexcept; constexpr weekday& operator++() noexcept; constexpr weekday operator++(int) noexcept; constexpr weekday& operator--() noexcept; constexpr weekday operator--(int) noexcept; constexpr weekday& operator+=(const days& d) noexcept; constexpr weekday& operator-=(const days& d) noexcept; constexpr unsigned c_encoding() const noexcept; constexpr unsigned iso_encoding() const noexcept; constexpr bool ok() const noexcept; constexpr weekday_indexed operator[](unsigned index) const noexcept; constexpr weekday_last operator[](last_spec) const noexcept; };}
|
||
|
||
[1](#wd.overview-1)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4925)
|
||
|
||
weekday represents a day of the week in the civil calendar[.](#wd.overview-1.sentence-1)
|
||
|
||
It normally holds values in the range 0 to 6,
|
||
corresponding to Sunday through Saturday, but
|
||
it may hold non-negative values outside this range[.](#wd.overview-1.sentence-2)
|
||
|
||
It can be constructed with any unsigned value,
|
||
which will be subsequently truncated to fit into weekday's unspecified internal storage[.](#wd.overview-1.sentence-3)
|
||
|
||
weekday meets the [*Cpp17EqualityComparable*](utility.arg.requirements#:Cpp17EqualityComparable "16.4.4.2 Template argument requirements [utility.arg.requirements]") (Table [28](utility.arg.requirements#tab:cpp17.equalitycomparable "Table 28: Cpp17EqualityComparable requirements")) requirements[.](#wd.overview-1.sentence-4)
|
||
|
||
[*Note [1](#wd.overview-note-1)*:
|
||
|
||
weekday is not[*Cpp17LessThanComparable*](utility.arg.requirements#:Cpp17LessThanComparable "16.4.4.2 Template argument requirements [utility.arg.requirements]") because there is no universal consensus on which day is the first day of the week[.](#wd.overview-1.sentence-5)
|
||
|
||
weekday's arithmetic operations treat the days of the week as a circular range,
|
||
with no beginning and no end[.](#wd.overview-1.sentence-6)
|
||
|
||
â *end note*]
|
||
|
||
[2](#wd.overview-2)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4941)
|
||
|
||
weekday is a trivially copyable and standard-layout class type[.](#wd.overview-2.sentence-1)
|
||
|
||
#### [30.8.6.2](#wd.members) Member functions [[time.cal.wd.members]](time.cal.wd.members)
|
||
|
||
[ð](#lib:weekday,constructor)
|
||
|
||
`constexpr explicit weekday(unsigned wd) noexcept;
|
||
`
|
||
|
||
[1](#wd.members-1)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4952)
|
||
|
||
*Effects*: Initializes wd_ with wd == 7 ? 0 : wd[.](#wd.members-1.sentence-1)
|
||
|
||
The value held is unspecified if wd is not in the range [0, 255][.](#wd.members-1.sentence-2)
|
||
|
||
[ð](#lib:weekday,constructor_)
|
||
|
||
`constexpr weekday(const sys_days& dp) noexcept;
|
||
`
|
||
|
||
[2](#wd.members-2)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4964)
|
||
|
||
*Effects*: Computes what day of the week corresponds to the sys_days dp,
|
||
and initializes that day of the week in wd_[.](#wd.members-2.sentence-1)
|
||
|
||
[3](#wd.members-3)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4969)
|
||
|
||
[*Example [1](#wd.members-example-1)*:
|
||
|
||
If dp represents 1970-01-01,
|
||
the constructed weekday represents Thursday
|
||
by storing 4 in wd_[.](#wd.members-3.sentence-1)
|
||
|
||
â *end example*]
|
||
|
||
[ð](#lib:weekday,constructor__)
|
||
|
||
`constexpr explicit weekday(const local_days& dp) noexcept;
|
||
`
|
||
|
||
[4](#wd.members-4)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4983)
|
||
|
||
*Effects*: Computes what day of the week corresponds to the local_days dp,
|
||
and initializes that day of the week in wd_[.](#wd.members-4.sentence-1)
|
||
|
||
[5](#wd.members-5)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L4988)
|
||
|
||
*Postconditions*: The value is identical to that constructed fromsys_days{dp.time_since_epoch()}[.](#wd.members-5.sentence-1)
|
||
|
||
[ð](#lib:operator++,weekday)
|
||
|
||
`constexpr weekday& operator++() noexcept;
|
||
`
|
||
|
||
[6](#wd.members-6)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5000)
|
||
|
||
*Effects*: *this += days{1}[.](#wd.members-6.sentence-1)
|
||
|
||
[7](#wd.members-7)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5004)
|
||
|
||
*Returns*: *this[.](#wd.members-7.sentence-1)
|
||
|
||
[ð](#lib:operator++,weekday_)
|
||
|
||
`constexpr weekday operator++(int) noexcept;
|
||
`
|
||
|
||
[8](#wd.members-8)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5015)
|
||
|
||
*Effects*: ++(*this)[.](#wd.members-8.sentence-1)
|
||
|
||
[9](#wd.members-9)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5019)
|
||
|
||
*Returns*: A copy of *this as it existed on entry to this member function[.](#wd.members-9.sentence-1)
|
||
|
||
[ð](#lib:operator--,weekday)
|
||
|
||
`constexpr weekday& operator--() noexcept;
|
||
`
|
||
|
||
[10](#wd.members-10)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5030)
|
||
|
||
*Effects*: *this -= days{1}[.](#wd.members-10.sentence-1)
|
||
|
||
[11](#wd.members-11)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5034)
|
||
|
||
*Returns*: *this[.](#wd.members-11.sentence-1)
|
||
|
||
[ð](#lib:operator--,weekday_)
|
||
|
||
`constexpr weekday operator--(int) noexcept;
|
||
`
|
||
|
||
[12](#wd.members-12)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5045)
|
||
|
||
*Effects*: --(*this)[.](#wd.members-12.sentence-1)
|
||
|
||
[13](#wd.members-13)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5049)
|
||
|
||
*Returns*: A copy of *this as it existed on entry to this member function[.](#wd.members-13.sentence-1)
|
||
|
||
[ð](#lib:operator+=,weekday)
|
||
|
||
`constexpr weekday& operator+=(const days& d) noexcept;
|
||
`
|
||
|
||
[14](#wd.members-14)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5060)
|
||
|
||
*Effects*: *this = *this + d[.](#wd.members-14.sentence-1)
|
||
|
||
[15](#wd.members-15)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5064)
|
||
|
||
*Returns*: *this[.](#wd.members-15.sentence-1)
|
||
|
||
[ð](#lib:operator-=,weekday)
|
||
|
||
`constexpr weekday& operator-=(const days& d) noexcept;
|
||
`
|
||
|
||
[16](#wd.members-16)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5075)
|
||
|
||
*Effects*: *this = *this - d[.](#wd.members-16.sentence-1)
|
||
|
||
[17](#wd.members-17)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5079)
|
||
|
||
*Returns*: *this[.](#wd.members-17.sentence-1)
|
||
|
||
[ð](#lib:c_encoding,weekday)
|
||
|
||
`constexpr unsigned c_encoding() const noexcept;
|
||
`
|
||
|
||
[18](#wd.members-18)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5090)
|
||
|
||
*Returns*: wd_[.](#wd.members-18.sentence-1)
|
||
|
||
[ð](#lib:iso_encoding,weekday)
|
||
|
||
`constexpr unsigned iso_encoding() const noexcept;
|
||
`
|
||
|
||
[19](#wd.members-19)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5101)
|
||
|
||
*Returns*: wd_ == 0u ? 7u : wd_[.](#wd.members-19.sentence-1)
|
||
|
||
[ð](#lib:ok,weekday)
|
||
|
||
`constexpr bool ok() const noexcept;
|
||
`
|
||
|
||
[20](#wd.members-20)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5112)
|
||
|
||
*Returns*: wd_ <= 6[.](#wd.members-20.sentence-1)
|
||
|
||
[ð](#lib:operator%5b%5d,weekday)
|
||
|
||
`constexpr weekday_indexed operator[](unsigned index) const noexcept;
|
||
`
|
||
|
||
[21](#wd.members-21)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5123)
|
||
|
||
*Returns*: {*this, index}[.](#wd.members-21.sentence-1)
|
||
|
||
[ð](#lib:operator%5b%5d,weekday_)
|
||
|
||
`constexpr weekday_last operator[](last_spec) const noexcept;
|
||
`
|
||
|
||
[22](#wd.members-22)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5134)
|
||
|
||
*Returns*: weekday_last{*this}[.](#wd.members-22.sentence-1)
|
||
|
||
#### [30.8.6.3](#wd.nonmembers) Non-member functions [[time.cal.wd.nonmembers]](time.cal.wd.nonmembers)
|
||
|
||
[ð](#lib:operator==,weekday)
|
||
|
||
`constexpr bool operator==(const weekday& x, const weekday& y) noexcept;
|
||
`
|
||
|
||
[1](#wd.nonmembers-1)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5147)
|
||
|
||
*Returns*: x.wd_ == y.wd_[.](#wd.nonmembers-1.sentence-1)
|
||
|
||
[ð](#lib:operator+,weekday)
|
||
|
||
`constexpr weekday operator+(const weekday& x, const days& y) noexcept;
|
||
`
|
||
|
||
[2](#wd.nonmembers-2)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5158)
|
||
|
||
*Returns*: weekday{modulo(static_cast<long long>(x.wd_) + y.count(), 7)} where modulo(n, 7) computes the remainder of n divided by 7 using Euclidean division[.](#wd.nonmembers-2.sentence-1)
|
||
|
||
[*Note [1](#wd.nonmembers-note-1)*:
|
||
|
||
Given a divisor of 7, Euclidean division truncates towards negative infinity and
|
||
always produces a remainder in the range of [0, 6][.](#wd.nonmembers-2.sentence-2)
|
||
|
||
Assuming no overflow in the signed summation,
|
||
this operation results in a weekday holding a value in the range [0, 6] even if !x.ok()[.](#wd.nonmembers-2.sentence-3)
|
||
|
||
â *end note*]
|
||
|
||
[*Example [1](#wd.nonmembers-example-1)*:
|
||
|
||
Monday + days{6} == Sunday[.](#wd.nonmembers-2.sentence-4)
|
||
|
||
â *end example*]
|
||
|
||
[ð](#lib:operator+,weekday_)
|
||
|
||
`constexpr weekday operator+(const days& x, const weekday& y) noexcept;
|
||
`
|
||
|
||
[3](#wd.nonmembers-3)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5181)
|
||
|
||
*Returns*: y + x[.](#wd.nonmembers-3.sentence-1)
|
||
|
||
[ð](#lib:operator-,weekday)
|
||
|
||
`constexpr weekday operator-(const weekday& x, const days& y) noexcept;
|
||
`
|
||
|
||
[4](#wd.nonmembers-4)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5192)
|
||
|
||
*Returns*: x + -y[.](#wd.nonmembers-4.sentence-1)
|
||
|
||
[ð](#lib:operator-,weekday_)
|
||
|
||
`constexpr days operator-(const weekday& x, const weekday& y) noexcept;
|
||
`
|
||
|
||
[5](#wd.nonmembers-5)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5203)
|
||
|
||
*Returns*: If x.ok() == true and y.ok() == true,
|
||
returns a value d in the range [days{0}, days{6}]
|
||
satisfying y + d == x[.](#wd.nonmembers-5.sentence-1)
|
||
|
||
Otherwise the value returned is unspecified[.](#wd.nonmembers-5.sentence-2)
|
||
|
||
[*Example [2](#wd.nonmembers-example-2)*:
|
||
|
||
Sunday - Monday == days{6}[.](#wd.nonmembers-5.sentence-3)
|
||
|
||
â *end example*]
|
||
|
||
[ð](#lib:operator%3c%3c,weekday)
|
||
|
||
`template<class charT, class traits>
|
||
basic_ostream<charT, traits>&
|
||
operator<<(basic_ostream<charT, traits>& os, const weekday& wd);
|
||
`
|
||
|
||
[6](#wd.nonmembers-6)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5224)
|
||
|
||
*Effects*: Equivalent to:return os << (wd.ok() ? format(os.getloc(), *STATICALLY-WIDEN*<charT>("{:L%a}"), wd) : format(os.getloc(), *STATICALLY-WIDEN*<charT>("{} is not a valid weekday"), static_cast<unsigned>(wd.wd_)));
|
||
|
||
[ð](#lib:from_stream,weekday)
|
||
|
||
`template<class charT, class traits, class Alloc = allocator<charT>>
|
||
basic_istream<charT, traits>&
|
||
from_stream(basic_istream<charT, traits>& is, const charT* fmt,
|
||
weekday& wd, basic_string<charT, traits, Alloc>* abbrev = nullptr,
|
||
minutes* offset = nullptr);
|
||
`
|
||
|
||
[7](#wd.nonmembers-7)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5245)
|
||
|
||
*Effects*: Attempts to parse the input stream is into the weekday wd using
|
||
the format flags given in the NTCTS fmt as specified in [[time.parse]](time.parse "30.13 Parsing")[.](#wd.nonmembers-7.sentence-1)
|
||
|
||
If the parse fails to decode a valid weekday,is.setstate(ios_base::failbit) is called andwd is not modified[.](#wd.nonmembers-7.sentence-2)
|
||
|
||
If %Z is used and successfully parsed,
|
||
that value will be assigned to *abbrev if abbrev is non-null[.](#wd.nonmembers-7.sentence-3)
|
||
|
||
If %z (or a modified variant) is used and successfully parsed,
|
||
that value will be assigned to *offset if offset is non-null[.](#wd.nonmembers-7.sentence-4)
|
||
|
||
[8](#wd.nonmembers-8)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5259)
|
||
|
||
*Returns*: is[.](#wd.nonmembers-8.sentence-1)
|
||
|
||
### [30.8.7](#wdidx) Class weekday_indexed [[time.cal.wdidx]](time.cal.wdidx)
|
||
|
||
#### [30.8.7.1](#wdidx.overview) Overview [[time.cal.wdidx.overview]](time.cal.wdidx.overview)
|
||
|
||
namespace std::chrono {class weekday_indexed { chrono::weekday wd_; // *exposition only*unsigned char index_; // *exposition only*public: weekday_indexed() = default; constexpr weekday_indexed(const chrono::weekday& wd, unsigned index) noexcept; constexpr chrono::weekday weekday() const noexcept; constexpr unsigned index() const noexcept; constexpr bool ok() const noexcept; };}
|
||
|
||
[1](#wdidx.overview-1)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5286)
|
||
|
||
weekday_indexed represents a weekday and a small index in the range 1 to 5[.](#wdidx.overview-1.sentence-1)
|
||
|
||
This class is used to represent the
|
||
first, second, third, fourth, or fifth weekday of a month[.](#wdidx.overview-1.sentence-2)
|
||
|
||
[2](#wdidx.overview-2)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5292)
|
||
|
||
[*Note [1](#wdidx.overview-note-1)*:
|
||
|
||
A weekday_indexed object
|
||
can be constructed by indexing a weekday with an unsigned[.](#wdidx.overview-2.sentence-1)
|
||
|
||
â *end note*]
|
||
|
||
[*Example [1](#wdidx.overview-example-1)*: constexpr auto wdi = Sunday[2]; // wdi is the second Sunday of an as yet unspecified monthstatic_assert(wdi.weekday() == Sunday);static_assert(wdi.index() == 2); â *end example*]
|
||
|
||
[3](#wdidx.overview-3)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5306)
|
||
|
||
weekday_indexed is a trivially copyable and standard-layout class type[.](#wdidx.overview-3.sentence-1)
|
||
|
||
#### [30.8.7.2](#wdidx.members) Member functions [[time.cal.wdidx.members]](time.cal.wdidx.members)
|
||
|
||
[ð](#lib:weekday_indexed,constructor)
|
||
|
||
`constexpr weekday_indexed(const chrono::weekday& wd, unsigned index) noexcept;
|
||
`
|
||
|
||
[1](#wdidx.members-1)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5317)
|
||
|
||
*Effects*: Initializes wd_ with wd and index_ with index[.](#wdidx.members-1.sentence-1)
|
||
|
||
The values held are unspecified if !wd.ok() or index is not in the range [0, 7][.](#wdidx.members-1.sentence-2)
|
||
|
||
[ð](#lib:weekday,weekday_indexed)
|
||
|
||
`constexpr chrono::weekday weekday() const noexcept;
|
||
`
|
||
|
||
[2](#wdidx.members-2)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5329)
|
||
|
||
*Returns*: wd_[.](#wdidx.members-2.sentence-1)
|
||
|
||
[ð](#lib:index,weekday_indexed)
|
||
|
||
`constexpr unsigned index() const noexcept;
|
||
`
|
||
|
||
[3](#wdidx.members-3)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5340)
|
||
|
||
*Returns*: index_[.](#wdidx.members-3.sentence-1)
|
||
|
||
[ð](#lib:ok,weekday_indexed)
|
||
|
||
`constexpr bool ok() const noexcept;
|
||
`
|
||
|
||
[4](#wdidx.members-4)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5351)
|
||
|
||
*Returns*: wd_.ok() && 1 <= index_ && index_ <= 5[.](#wdidx.members-4.sentence-1)
|
||
|
||
#### [30.8.7.3](#wdidx.nonmembers) Non-member functions [[time.cal.wdidx.nonmembers]](time.cal.wdidx.nonmembers)
|
||
|
||
[ð](#lib:operator==,weekday_indexed)
|
||
|
||
`constexpr bool operator==(const weekday_indexed& x, const weekday_indexed& y) noexcept;
|
||
`
|
||
|
||
[1](#wdidx.nonmembers-1)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5364)
|
||
|
||
*Returns*: x.weekday() == y.weekday() && x.index() == y.index()[.](#wdidx.nonmembers-1.sentence-1)
|
||
|
||
[ð](#lib:operator%3c%3c,weekday_indexed)
|
||
|
||
`template<class charT, class traits>
|
||
basic_ostream<charT, traits>&
|
||
operator<<(basic_ostream<charT, traits>& os, const weekday_indexed& wdi);
|
||
`
|
||
|
||
[2](#wdidx.nonmembers-2)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5377)
|
||
|
||
*Effects*: Equivalent to:auto i = wdi.index();return os << (i >= 1 && i <= 5 ? format(os.getloc(), *STATICALLY-WIDEN*<charT>("{:L}[{}]"), wdi.weekday(), i) : format(os.getloc(), *STATICALLY-WIDEN*<charT>("{:L}[{} is not a valid index]"),
|
||
wdi.weekday(), i));
|
||
|
||
### [30.8.8](#wdlast) Class weekday_last [[time.cal.wdlast]](time.cal.wdlast)
|
||
|
||
#### [30.8.8.1](#wdlast.overview) Overview [[time.cal.wdlast.overview]](time.cal.wdlast.overview)
|
||
|
||
namespace std::chrono {class weekday_last { chrono::weekday wd_; // *exposition only*public:constexpr explicit weekday_last(const chrono::weekday& wd) noexcept; constexpr chrono::weekday weekday() const noexcept; constexpr bool ok() const noexcept; };}
|
||
|
||
[1](#wdlast.overview-1)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5408)
|
||
|
||
weekday_last represents the last weekday of a month[.](#wdlast.overview-1.sentence-1)
|
||
|
||
[2](#wdlast.overview-2)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5411)
|
||
|
||
[*Note [1](#wdlast.overview-note-1)*:
|
||
|
||
A weekday_last object
|
||
can be constructed by indexing a weekday with last[.](#wdlast.overview-2.sentence-1)
|
||
|
||
â *end note*]
|
||
|
||
[*Example [1](#wdlast.overview-example-1)*: constexpr auto wdl = Sunday[last]; // wdl is the last Sunday of an as yet unspecified monthstatic_assert(wdl.weekday() == Sunday); â *end example*]
|
||
|
||
[3](#wdlast.overview-3)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5423)
|
||
|
||
weekday_last is a trivially copyable and standard-layout class type[.](#wdlast.overview-3.sentence-1)
|
||
|
||
#### [30.8.8.2](#wdlast.members) Member functions [[time.cal.wdlast.members]](time.cal.wdlast.members)
|
||
|
||
[ð](#lib:weekday_last,constructor)
|
||
|
||
`constexpr explicit weekday_last(const chrono::weekday& wd) noexcept;
|
||
`
|
||
|
||
[1](#wdlast.members-1)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5434)
|
||
|
||
*Effects*: Initializes wd_ with wd[.](#wdlast.members-1.sentence-1)
|
||
|
||
[ð](#lib:weekday_last,weekday)
|
||
|
||
`constexpr chrono::weekday weekday() const noexcept;
|
||
`
|
||
|
||
[2](#wdlast.members-2)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5445)
|
||
|
||
*Returns*: wd_[.](#wdlast.members-2.sentence-1)
|
||
|
||
[ð](#lib:ok,weekday_last)
|
||
|
||
`constexpr bool ok() const noexcept;
|
||
`
|
||
|
||
[3](#wdlast.members-3)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5456)
|
||
|
||
*Returns*: wd_.ok()[.](#wdlast.members-3.sentence-1)
|
||
|
||
#### [30.8.8.3](#wdlast.nonmembers) Non-member functions [[time.cal.wdlast.nonmembers]](time.cal.wdlast.nonmembers)
|
||
|
||
[ð](#lib:operator==,weekday_last)
|
||
|
||
`constexpr bool operator==(const weekday_last& x, const weekday_last& y) noexcept;
|
||
`
|
||
|
||
[1](#wdlast.nonmembers-1)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5469)
|
||
|
||
*Returns*: x.weekday() == y.weekday()[.](#wdlast.nonmembers-1.sentence-1)
|
||
|
||
[ð](#lib:operator%3c%3c,weekday_last)
|
||
|
||
`template<class charT, class traits>
|
||
basic_ostream<charT, traits>&
|
||
operator<<(basic_ostream<charT, traits>& os, const weekday_last& wdl);
|
||
`
|
||
|
||
[2](#wdlast.nonmembers-2)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5482)
|
||
|
||
*Effects*: Equivalent to:return os << format(os.getloc(), *STATICALLY-WIDEN*<charT>("{:L}[last]"), wdl.weekday());
|
||
|
||
### [30.8.9](#md) Class month_day [[time.cal.md]](time.cal.md)
|
||
|
||
#### [30.8.9.1](#md.overview) Overview [[time.cal.md.overview]](time.cal.md.overview)
|
||
|
||
namespace std::chrono {class month_day { chrono::month m_; // *exposition only* chrono::day d_; // *exposition only*public: month_day() = default; constexpr month_day(const chrono::month& m, const chrono::day& d) noexcept; constexpr chrono::month month() const noexcept; constexpr chrono::day day() const noexcept; constexpr bool ok() const noexcept; };}
|
||
|
||
[1](#md.overview-1)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5512)
|
||
|
||
month_day represents a specific day of a specific month,
|
||
but with an unspecified year[.](#md.overview-1.sentence-1)
|
||
|
||
month_day meets the [*Cpp17EqualityComparable*](utility.arg.requirements#:Cpp17EqualityComparable "16.4.4.2 Template argument requirements [utility.arg.requirements]") (Table [28](utility.arg.requirements#tab:cpp17.equalitycomparable "Table 28: Cpp17EqualityComparable requirements"))
|
||
and [*Cpp17LessThanComparable*](utility.arg.requirements#:Cpp17LessThanComparable "16.4.4.2 Template argument requirements [utility.arg.requirements]") (Table [29](utility.arg.requirements#tab:cpp17.lessthancomparable "Table 29: Cpp17LessThanComparable requirements")) requirements[.](#md.overview-1.sentence-2)
|
||
|
||
[2](#md.overview-2)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5518)
|
||
|
||
month_day is a trivially copyable and standard-layout class type[.](#md.overview-2.sentence-1)
|
||
|
||
#### [30.8.9.2](#md.members) Member functions [[time.cal.md.members]](time.cal.md.members)
|
||
|
||
[ð](#lib:month_day,constructor)
|
||
|
||
`constexpr month_day(const chrono::month& m, const chrono::day& d) noexcept;
|
||
`
|
||
|
||
[1](#md.members-1)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5529)
|
||
|
||
*Effects*: Initializes m_ with m, and d_ with d[.](#md.members-1.sentence-1)
|
||
|
||
[ð](#lib:month,month_day)
|
||
|
||
`constexpr chrono::month month() const noexcept;
|
||
`
|
||
|
||
[2](#md.members-2)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5540)
|
||
|
||
*Returns*: m_[.](#md.members-2.sentence-1)
|
||
|
||
[ð](#lib:day,month_day)
|
||
|
||
`constexpr chrono::day day() const noexcept;
|
||
`
|
||
|
||
[3](#md.members-3)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5551)
|
||
|
||
*Returns*: d_[.](#md.members-3.sentence-1)
|
||
|
||
[ð](#lib:ok,month_day)
|
||
|
||
`constexpr bool ok() const noexcept;
|
||
`
|
||
|
||
[4](#md.members-4)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5562)
|
||
|
||
*Returns*: true ifm_.ok() is true,1d <= d_, andd_ is less than or equal to the number of days in month m_;
|
||
otherwise returns false[.](#md.members-4.sentence-1)
|
||
|
||
When m_ == February,
|
||
the number of days is considered to be 29[.](#md.members-4.sentence-2)
|
||
|
||
#### [30.8.9.3](#md.nonmembers) Non-member functions [[time.cal.md.nonmembers]](time.cal.md.nonmembers)
|
||
|
||
[ð](#lib:operator==,month_day)
|
||
|
||
`constexpr bool operator==(const month_day& x, const month_day& y) noexcept;
|
||
`
|
||
|
||
[1](#md.nonmembers-1)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5581)
|
||
|
||
*Returns*: x.month() == y.month() && x.day() == y.day()[.](#md.nonmembers-1.sentence-1)
|
||
|
||
[ð](#lib:operator%3c=%3e,month_day)
|
||
|
||
`constexpr strong_ordering operator<=>(const month_day& x, const month_day& y) noexcept;
|
||
`
|
||
|
||
[2](#md.nonmembers-2)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5592)
|
||
|
||
*Effects*: Equivalent to:if (auto c = x.month() <=> y.month(); c != 0) return c;return x.day() <=> y.day();
|
||
|
||
[ð](#lib:operator%3c%3c,month_day)
|
||
|
||
`template<class charT, class traits>
|
||
basic_ostream<charT, traits>&
|
||
operator<<(basic_ostream<charT, traits>& os, const month_day& md);
|
||
`
|
||
|
||
[3](#md.nonmembers-3)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5609)
|
||
|
||
*Effects*: Equivalent to:return os << format(os.getloc(), *STATICALLY-WIDEN*<charT>("{:L}/{}"),
|
||
md.month(), md.day());
|
||
|
||
[ð](#lib:from_stream,month_day)
|
||
|
||
`template<class charT, class traits, class Alloc = allocator<charT>>
|
||
basic_istream<charT, traits>&
|
||
from_stream(basic_istream<charT, traits>& is, const charT* fmt,
|
||
month_day& md, basic_string<charT, traits, Alloc>* abbrev = nullptr,
|
||
minutes* offset = nullptr);
|
||
`
|
||
|
||
[4](#md.nonmembers-4)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5628)
|
||
|
||
*Effects*: Attempts to parse the input stream is into the month_day md using
|
||
the format flags given in the NTCTS fmt as specified in [[time.parse]](time.parse "30.13 Parsing")[.](#md.nonmembers-4.sentence-1)
|
||
|
||
If the parse fails to decode a valid month_day,is.setstate(ios_base::failbit) is called andmd is not modified[.](#md.nonmembers-4.sentence-2)
|
||
|
||
If %Z is used and successfully parsed,
|
||
that value will be assigned to *abbrev if abbrev is non-null[.](#md.nonmembers-4.sentence-3)
|
||
|
||
If %z (or a modified variant) is used and successfully parsed,
|
||
that value will be assigned to *offset if offset is non-null[.](#md.nonmembers-4.sentence-4)
|
||
|
||
[5](#md.nonmembers-5)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5642)
|
||
|
||
*Returns*: is[.](#md.nonmembers-5.sentence-1)
|
||
|
||
### [30.8.10](#mdlast) Class month_day_last [[time.cal.mdlast]](time.cal.mdlast)
|
||
|
||
namespace std::chrono {class month_day_last { chrono::month m_; // *exposition only*public:constexpr explicit month_day_last(const chrono::month& m) noexcept; constexpr chrono::month month() const noexcept; constexpr bool ok() const noexcept; };}
|
||
|
||
[1](#mdlast-1)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5664)
|
||
|
||
month_day_last represents the last day of a month[.](#mdlast-1.sentence-1)
|
||
|
||
[2](#mdlast-2)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5667)
|
||
|
||
[*Note [1](#mdlast-note-1)*:
|
||
|
||
A month_day_last object
|
||
can be constructed using the expression m/last or last/m,
|
||
where m is an expression of type month[.](#mdlast-2.sentence-1)
|
||
|
||
â *end note*]
|
||
|
||
[*Example [1](#mdlast-example-1)*: constexpr auto mdl = February/last; // mdl is the last day of February of an as yet unspecified yearstatic_assert(mdl.month() == February); â *end example*]
|
||
|
||
[3](#mdlast-3)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5680)
|
||
|
||
month_day_last is a trivially copyable and standard-layout class type[.](#mdlast-3.sentence-1)
|
||
|
||
[ð](#lib:month_day_last,constructor)
|
||
|
||
`constexpr explicit month_day_last(const chrono::month& m) noexcept;
|
||
`
|
||
|
||
[4](#mdlast-4)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5689)
|
||
|
||
*Effects*: Initializes m_ with m[.](#mdlast-4.sentence-1)
|
||
|
||
[ð](#lib:month,month_day_last)
|
||
|
||
`constexpr month month() const noexcept;
|
||
`
|
||
|
||
[5](#mdlast-5)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5700)
|
||
|
||
*Returns*: m_[.](#mdlast-5.sentence-1)
|
||
|
||
[ð](#lib:ok,month_day_last)
|
||
|
||
`constexpr bool ok() const noexcept;
|
||
`
|
||
|
||
[6](#mdlast-6)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5711)
|
||
|
||
*Returns*: m_.ok()[.](#mdlast-6.sentence-1)
|
||
|
||
[ð](#lib:operator==,month_day_last)
|
||
|
||
`constexpr bool operator==(const month_day_last& x, const month_day_last& y) noexcept;
|
||
`
|
||
|
||
[7](#mdlast-7)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5722)
|
||
|
||
*Returns*: x.month() == y.month()[.](#mdlast-7.sentence-1)
|
||
|
||
[ð](#lib:operator%3c=%3e,month_day_last)
|
||
|
||
`constexpr strong_ordering operator<=>(const month_day_last& x, const month_day_last& y) noexcept;
|
||
`
|
||
|
||
[8](#mdlast-8)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5733)
|
||
|
||
*Returns*: x.month() <=> y.month()[.](#mdlast-8.sentence-1)
|
||
|
||
[ð](#lib:operator%3c%3c,month_day_last)
|
||
|
||
`template<class charT, class traits>
|
||
basic_ostream<charT, traits>&
|
||
operator<<(basic_ostream<charT, traits>& os, const month_day_last& mdl);
|
||
`
|
||
|
||
[9](#mdlast-9)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5746)
|
||
|
||
*Effects*: Equivalent to:return os << format(os.getloc(), *STATICALLY-WIDEN*<charT>("{:L}/last"), mdl.month());
|
||
|
||
### [30.8.11](#mwd) Class month_weekday [[time.cal.mwd]](time.cal.mwd)
|
||
|
||
#### [30.8.11.1](#mwd.overview) Overview [[time.cal.mwd.overview]](time.cal.mwd.overview)
|
||
|
||
namespace std::chrono {class month_weekday { chrono::month m_; // *exposition only* chrono::weekday_indexed wdi_; // *exposition only*public:constexpr month_weekday(const chrono::month& m, const chrono::weekday_indexed& wdi) noexcept; constexpr chrono::month month() const noexcept; constexpr chrono::weekday_indexed weekday_indexed() const noexcept; constexpr bool ok() const noexcept; };}
|
||
|
||
[1](#mwd.overview-1)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5774)
|
||
|
||
month_weekday represents the nth weekday of a month,
|
||
of an as yet unspecified year[.](#mwd.overview-1.sentence-1)
|
||
|
||
To do this the month_weekday stores a month and a weekday_indexed[.](#mwd.overview-1.sentence-2)
|
||
|
||
[2](#mwd.overview-2)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5779)
|
||
|
||
[*Example [1](#mwd.overview-example-1)*: constexpr auto mwd = February/Tuesday[3]; // mwd is the third Tuesday of February of an as yet unspecified yearstatic_assert(mwd.month() == February);static_assert(mwd.weekday_indexed() == Tuesday[3]); â *end example*]
|
||
|
||
[3](#mwd.overview-3)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5789)
|
||
|
||
month_weekday is a trivially copyable and standard-layout class type[.](#mwd.overview-3.sentence-1)
|
||
|
||
#### [30.8.11.2](#mwd.members) Member functions [[time.cal.mwd.members]](time.cal.mwd.members)
|
||
|
||
[ð](#lib:month_weekday,constructor)
|
||
|
||
`constexpr month_weekday(const chrono::month& m, const chrono::weekday_indexed& wdi) noexcept;
|
||
`
|
||
|
||
[1](#mwd.members-1)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5800)
|
||
|
||
*Effects*: Initializes m_ with m, and wdi_ with wdi[.](#mwd.members-1.sentence-1)
|
||
|
||
[ð](#lib:month,month_weekday)
|
||
|
||
`constexpr chrono::month month() const noexcept;
|
||
`
|
||
|
||
[2](#mwd.members-2)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5811)
|
||
|
||
*Returns*: m_[.](#mwd.members-2.sentence-1)
|
||
|
||
[ð](#lib:weekday_indexed,month_weekday)
|
||
|
||
`constexpr chrono::weekday_indexed weekday_indexed() const noexcept;
|
||
`
|
||
|
||
[3](#mwd.members-3)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5822)
|
||
|
||
*Returns*: wdi_[.](#mwd.members-3.sentence-1)
|
||
|
||
[ð](#lib:ok,month_weekday)
|
||
|
||
`constexpr bool ok() const noexcept;
|
||
`
|
||
|
||
[4](#mwd.members-4)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5833)
|
||
|
||
*Returns*: m_.ok() && wdi_.ok()[.](#mwd.members-4.sentence-1)
|
||
|
||
#### [30.8.11.3](#mwd.nonmembers) Non-member functions [[time.cal.mwd.nonmembers]](time.cal.mwd.nonmembers)
|
||
|
||
[ð](#lib:operator==,month_weekday)
|
||
|
||
`constexpr bool operator==(const month_weekday& x, const month_weekday& y) noexcept;
|
||
`
|
||
|
||
[1](#mwd.nonmembers-1)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5846)
|
||
|
||
*Returns*: x.month() == y.month() && x.weekday_indexed() == y.weekday_indexed()[.](#mwd.nonmembers-1.sentence-1)
|
||
|
||
[ð](#lib:operator%3c%3c,month_weekday)
|
||
|
||
`template<class charT, class traits>
|
||
basic_ostream<charT, traits>&
|
||
operator<<(basic_ostream<charT, traits>& os, const month_weekday& mwd);
|
||
`
|
||
|
||
[2](#mwd.nonmembers-2)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5859)
|
||
|
||
*Effects*: Equivalent to:return os << format(os.getloc(), *STATICALLY-WIDEN*<charT>("{:L}/{:L}"),
|
||
mwd.month(), mwd.weekday_indexed());
|
||
|
||
### [30.8.12](#mwdlast) Class month_weekday_last [[time.cal.mwdlast]](time.cal.mwdlast)
|
||
|
||
#### [30.8.12.1](#mwdlast.overview) Overview [[time.cal.mwdlast.overview]](time.cal.mwdlast.overview)
|
||
|
||
namespace std::chrono {class month_weekday_last { chrono::month m_; // *exposition only* chrono::weekday_last wdl_; // *exposition only*public:constexpr month_weekday_last(const chrono::month& m, const chrono::weekday_last& wdl) noexcept; constexpr chrono::month month() const noexcept; constexpr chrono::weekday_last weekday_last() const noexcept; constexpr bool ok() const noexcept; };}
|
||
|
||
[1](#mwdlast.overview-1)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5889)
|
||
|
||
month_weekday_last represents the last weekday of a month,
|
||
of an as yet unspecified year[.](#mwdlast.overview-1.sentence-1)
|
||
|
||
To do this the month_weekday_last stores a month and a weekday_last[.](#mwdlast.overview-1.sentence-2)
|
||
|
||
[2](#mwdlast.overview-2)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5894)
|
||
|
||
[*Example [1](#mwdlast.overview-example-1)*: constexpr auto mwd = February/Tuesday[last]; // mwd is the last Tuesday of February of an as yet unspecified yearstatic_assert(mwd.month() == February);static_assert(mwd.weekday_last() == Tuesday[last]); â *end example*]
|
||
|
||
[3](#mwdlast.overview-3)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5904)
|
||
|
||
month_weekday_last is a trivially copyable and standard-layout class type[.](#mwdlast.overview-3.sentence-1)
|
||
|
||
#### [30.8.12.2](#mwdlast.members) Member functions [[time.cal.mwdlast.members]](time.cal.mwdlast.members)
|
||
|
||
[ð](#lib:month_weekday_last,constructor)
|
||
|
||
`constexpr month_weekday_last(const chrono::month& m,
|
||
const chrono::weekday_last& wdl) noexcept;
|
||
`
|
||
|
||
[1](#mwdlast.members-1)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5916)
|
||
|
||
*Effects*: Initializes m_ with m, and wdl_ with wdl[.](#mwdlast.members-1.sentence-1)
|
||
|
||
[ð](#lib:month,month_weekday_last)
|
||
|
||
`constexpr chrono::month month() const noexcept;
|
||
`
|
||
|
||
[2](#mwdlast.members-2)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5927)
|
||
|
||
*Returns*: m_[.](#mwdlast.members-2.sentence-1)
|
||
|
||
[ð](#lib:weekday_last,month_weekday_last)
|
||
|
||
`constexpr chrono::weekday_last weekday_last() const noexcept;
|
||
`
|
||
|
||
[3](#mwdlast.members-3)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5938)
|
||
|
||
*Returns*: wdl_[.](#mwdlast.members-3.sentence-1)
|
||
|
||
[ð](#lib:ok,month_weekday_last)
|
||
|
||
`constexpr bool ok() const noexcept;
|
||
`
|
||
|
||
[4](#mwdlast.members-4)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5949)
|
||
|
||
*Returns*: m_.ok() && wdl_.ok()[.](#mwdlast.members-4.sentence-1)
|
||
|
||
#### [30.8.12.3](#mwdlast.nonmembers) Non-member functions [[time.cal.mwdlast.nonmembers]](time.cal.mwdlast.nonmembers)
|
||
|
||
[ð](#lib:operator==,month_weekday_last)
|
||
|
||
`constexpr bool operator==(const month_weekday_last& x, const month_weekday_last& y) noexcept;
|
||
`
|
||
|
||
[1](#mwdlast.nonmembers-1)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5962)
|
||
|
||
*Returns*: x.month() == y.month() && x.weekday_last() == y.weekday_last()[.](#mwdlast.nonmembers-1.sentence-1)
|
||
|
||
[ð](#lib:operator%3c%3c,month_weekday_last)
|
||
|
||
`template<class charT, class traits>
|
||
basic_ostream<charT, traits>&
|
||
operator<<(basic_ostream<charT, traits>& os, const month_weekday_last& mwdl);
|
||
`
|
||
|
||
[2](#mwdlast.nonmembers-2)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L5975)
|
||
|
||
*Effects*: Equivalent to:return os << format(os.getloc(), *STATICALLY-WIDEN*<charT>("{:L}/{:L}"),
|
||
mwdl.month(), mwdl.weekday_last());
|
||
|
||
### [30.8.13](#ym) Class year_month [[time.cal.ym]](time.cal.ym)
|
||
|
||
#### [30.8.13.1](#ym.overview) Overview [[time.cal.ym.overview]](time.cal.ym.overview)
|
||
|
||
namespace std::chrono {class year_month { chrono::year y_; // *exposition only* chrono::month m_; // *exposition only*public: year_month() = default; constexpr year_month(const chrono::year& y, const chrono::month& m) noexcept; constexpr chrono::year year() const noexcept; constexpr chrono::month month() const noexcept; constexpr year_month& operator+=(const months& dm) noexcept; constexpr year_month& operator-=(const months& dm) noexcept; constexpr year_month& operator+=(const years& dy) noexcept; constexpr year_month& operator-=(const years& dy) noexcept; constexpr bool ok() const noexcept; };}
|
||
|
||
[1](#ym.overview-1)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6012)
|
||
|
||
year_month represents a specific month of a specific year,
|
||
but with an unspecified day[.](#ym.overview-1.sentence-1)
|
||
|
||
year_month is a field-based time point with a resolution of months[.](#ym.overview-1.sentence-2)
|
||
|
||
year_month meets the [*Cpp17EqualityComparable*](utility.arg.requirements#:Cpp17EqualityComparable "16.4.4.2 Template argument requirements [utility.arg.requirements]") (Table [28](utility.arg.requirements#tab:cpp17.equalitycomparable "Table 28: Cpp17EqualityComparable requirements"))
|
||
and [*Cpp17LessThanComparable*](utility.arg.requirements#:Cpp17LessThanComparable "16.4.4.2 Template argument requirements [utility.arg.requirements]") (Table [29](utility.arg.requirements#tab:cpp17.lessthancomparable "Table 29: Cpp17LessThanComparable requirements")) requirements[.](#ym.overview-1.sentence-3)
|
||
|
||
[2](#ym.overview-2)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6019)
|
||
|
||
year_month is a trivially copyable and standard-layout class type[.](#ym.overview-2.sentence-1)
|
||
|
||
#### [30.8.13.2](#ym.members) Member functions [[time.cal.ym.members]](time.cal.ym.members)
|
||
|
||
[ð](#lib:year_month,constructor)
|
||
|
||
`constexpr year_month(const chrono::year& y, const chrono::month& m) noexcept;
|
||
`
|
||
|
||
[1](#ym.members-1)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6030)
|
||
|
||
*Effects*: Initializes y_ with y, and m_ with m[.](#ym.members-1.sentence-1)
|
||
|
||
[ð](#lib:year,year_month)
|
||
|
||
`constexpr chrono::year year() const noexcept;
|
||
`
|
||
|
||
[2](#ym.members-2)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6041)
|
||
|
||
*Returns*: y_[.](#ym.members-2.sentence-1)
|
||
|
||
[ð](#lib:month,year_month)
|
||
|
||
`constexpr chrono::month month() const noexcept;
|
||
`
|
||
|
||
[3](#ym.members-3)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6052)
|
||
|
||
*Returns*: m_[.](#ym.members-3.sentence-1)
|
||
|
||
[ð](#lib:operator+=,year_month)
|
||
|
||
`constexpr year_month& operator+=(const months& dm) noexcept;
|
||
`
|
||
|
||
[4](#ym.members-4)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6063)
|
||
|
||
*Constraints*: If the argument supplied by the caller for the months parameter
|
||
is convertible to years,
|
||
its implicit conversion sequence to years is worse than its implicit conversion sequence tomonths ([[over.ics.rank]](over.ics.rank "12.2.4.3 Ranking implicit conversion sequences"))[.](#ym.members-4.sentence-1)
|
||
|
||
[5](#ym.members-5)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6071)
|
||
|
||
*Effects*: *this = *this + dm[.](#ym.members-5.sentence-1)
|
||
|
||
[6](#ym.members-6)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6075)
|
||
|
||
*Returns*: *this[.](#ym.members-6.sentence-1)
|
||
|
||
[ð](#lib:operator-=,year_month)
|
||
|
||
`constexpr year_month& operator-=(const months& dm) noexcept;
|
||
`
|
||
|
||
[7](#ym.members-7)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6086)
|
||
|
||
*Constraints*: If the argument supplied by the caller for the months parameter
|
||
is convertible to years,
|
||
its implicit conversion sequence to years is worse than its implicit conversion sequence tomonths ([[over.ics.rank]](over.ics.rank "12.2.4.3 Ranking implicit conversion sequences"))[.](#ym.members-7.sentence-1)
|
||
|
||
[8](#ym.members-8)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6094)
|
||
|
||
*Effects*: *this = *this - dm[.](#ym.members-8.sentence-1)
|
||
|
||
[9](#ym.members-9)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6098)
|
||
|
||
*Returns*: *this[.](#ym.members-9.sentence-1)
|
||
|
||
[ð](#lib:operator+=,year_month_)
|
||
|
||
`constexpr year_month& operator+=(const years& dy) noexcept;
|
||
`
|
||
|
||
[10](#ym.members-10)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6109)
|
||
|
||
*Effects*: *this = *this + dy[.](#ym.members-10.sentence-1)
|
||
|
||
[11](#ym.members-11)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6113)
|
||
|
||
*Returns*: *this[.](#ym.members-11.sentence-1)
|
||
|
||
[ð](#lib:operator-=,year_month_)
|
||
|
||
`constexpr year_month& operator-=(const years& dy) noexcept;
|
||
`
|
||
|
||
[12](#ym.members-12)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6124)
|
||
|
||
*Effects*: *this = *this - dy[.](#ym.members-12.sentence-1)
|
||
|
||
[13](#ym.members-13)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6128)
|
||
|
||
*Returns*: *this[.](#ym.members-13.sentence-1)
|
||
|
||
[ð](#lib:ok,year_month)
|
||
|
||
`constexpr bool ok() const noexcept;
|
||
`
|
||
|
||
[14](#ym.members-14)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6139)
|
||
|
||
*Returns*: y_.ok() && m_.ok()[.](#ym.members-14.sentence-1)
|
||
|
||
#### [30.8.13.3](#ym.nonmembers) Non-member functions [[time.cal.ym.nonmembers]](time.cal.ym.nonmembers)
|
||
|
||
[ð](#lib:operator==,year_month)
|
||
|
||
`constexpr bool operator==(const year_month& x, const year_month& y) noexcept;
|
||
`
|
||
|
||
[1](#ym.nonmembers-1)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6152)
|
||
|
||
*Returns*: x.year() == y.year() && x.month() == y.month()[.](#ym.nonmembers-1.sentence-1)
|
||
|
||
[ð](#lib:operator%3c=%3e,year_month)
|
||
|
||
`constexpr strong_ordering operator<=>(const year_month& x, const year_month& y) noexcept;
|
||
`
|
||
|
||
[2](#ym.nonmembers-2)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6163)
|
||
|
||
*Effects*: Equivalent to:if (auto c = x.year() <=> y.year(); c != 0) return c;return x.month() <=> y.month();
|
||
|
||
[ð](#lib:operator+,year_month)
|
||
|
||
`constexpr year_month operator+(const year_month& ym, const months& dm) noexcept;
|
||
`
|
||
|
||
[3](#ym.nonmembers-3)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6178)
|
||
|
||
*Constraints*: If the argument supplied by the caller for the months parameter
|
||
is convertible to years,
|
||
its implicit conversion sequence to years is worse than its implicit conversion sequence tomonths ([[over.ics.rank]](over.ics.rank "12.2.4.3 Ranking implicit conversion sequences"))[.](#ym.nonmembers-3.sentence-1)
|
||
|
||
[4](#ym.nonmembers-4)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6186)
|
||
|
||
*Returns*: A year_month value z such that z.ok() && z - ym == dm is true[.](#ym.nonmembers-4.sentence-1)
|
||
|
||
[5](#ym.nonmembers-5)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6191)
|
||
|
||
*Complexity*: O(1) with respect to the value of dm[.](#ym.nonmembers-5.sentence-1)
|
||
|
||
[ð](#lib:operator+,year_month_)
|
||
|
||
`constexpr year_month operator+(const months& dm, const year_month& ym) noexcept;
|
||
`
|
||
|
||
[6](#ym.nonmembers-6)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6202)
|
||
|
||
*Constraints*: If the argument supplied by the caller for the months parameter
|
||
is convertible to years,
|
||
its implicit conversion sequence to years is worse than its implicit conversion sequence tomonths ([[over.ics.rank]](over.ics.rank "12.2.4.3 Ranking implicit conversion sequences"))[.](#ym.nonmembers-6.sentence-1)
|
||
|
||
[7](#ym.nonmembers-7)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6210)
|
||
|
||
*Returns*: ym + dm[.](#ym.nonmembers-7.sentence-1)
|
||
|
||
[ð](#lib:operator-,year_month)
|
||
|
||
`constexpr year_month operator-(const year_month& ym, const months& dm) noexcept;
|
||
`
|
||
|
||
[8](#ym.nonmembers-8)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6221)
|
||
|
||
*Constraints*: If the argument supplied by the caller for the months parameter
|
||
is convertible to years,
|
||
its implicit conversion sequence to years is worse than its implicit conversion sequence tomonths ([[over.ics.rank]](over.ics.rank "12.2.4.3 Ranking implicit conversion sequences"))[.](#ym.nonmembers-8.sentence-1)
|
||
|
||
[9](#ym.nonmembers-9)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6229)
|
||
|
||
*Returns*: ym + -dm[.](#ym.nonmembers-9.sentence-1)
|
||
|
||
[ð](#lib:operator-,year_month_)
|
||
|
||
`constexpr months operator-(const year_month& x, const year_month& y) noexcept;
|
||
`
|
||
|
||
[10](#ym.nonmembers-10)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6240)
|
||
|
||
*Returns*: x.year() - y.year() + months{static_cast<int>(unsigned{x.month()}) -static_cast<int>(unsigned{y.month()})}
|
||
|
||
[ð](#lib:operator+,year_month__)
|
||
|
||
`constexpr year_month operator+(const year_month& ym, const years& dy) noexcept;
|
||
`
|
||
|
||
[11](#ym.nonmembers-11)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6254)
|
||
|
||
*Returns*: (ym.year() + dy) / ym.month()[.](#ym.nonmembers-11.sentence-1)
|
||
|
||
[ð](#lib:operator+,year_month___)
|
||
|
||
`constexpr year_month operator+(const years& dy, const year_month& ym) noexcept;
|
||
`
|
||
|
||
[12](#ym.nonmembers-12)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6265)
|
||
|
||
*Returns*: ym + dy[.](#ym.nonmembers-12.sentence-1)
|
||
|
||
[ð](#lib:operator-,year_month__)
|
||
|
||
`constexpr year_month operator-(const year_month& ym, const years& dy) noexcept;
|
||
`
|
||
|
||
[13](#ym.nonmembers-13)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6276)
|
||
|
||
*Returns*: ym + -dy[.](#ym.nonmembers-13.sentence-1)
|
||
|
||
[ð](#lib:operator%3c%3c,year_month)
|
||
|
||
`template<class charT, class traits>
|
||
basic_ostream<charT, traits>&
|
||
operator<<(basic_ostream<charT, traits>& os, const year_month& ym);
|
||
`
|
||
|
||
[14](#ym.nonmembers-14)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6289)
|
||
|
||
*Effects*: Equivalent to:return os << format(os.getloc(), *STATICALLY-WIDEN*<charT>("{}/{:L}"),
|
||
ym.year(), ym.month());
|
||
|
||
[ð](#lib:from_stream,year_month)
|
||
|
||
`template<class charT, class traits, class Alloc = allocator<charT>>
|
||
basic_istream<charT, traits>&
|
||
from_stream(basic_istream<charT, traits>& is, const charT* fmt,
|
||
year_month& ym, basic_string<charT, traits, Alloc>* abbrev = nullptr,
|
||
minutes* offset = nullptr);
|
||
`
|
||
|
||
[15](#ym.nonmembers-15)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6308)
|
||
|
||
*Effects*: Attempts to parse the input stream is into the year_month ym using
|
||
the format flags given in the NTCTS fmt as specified in [[time.parse]](time.parse "30.13 Parsing")[.](#ym.nonmembers-15.sentence-1)
|
||
|
||
If the parse fails to decode a valid year_month,is.setstate(ios_base::failbit) is called andym is not modified[.](#ym.nonmembers-15.sentence-2)
|
||
|
||
If %Z is used and successfully parsed,
|
||
that value will be assigned to *abbrev if abbrev is non-null[.](#ym.nonmembers-15.sentence-3)
|
||
|
||
If %z (or a modified variant) is used and successfully parsed,
|
||
that value will be assigned to *offset if offset is non-null[.](#ym.nonmembers-15.sentence-4)
|
||
|
||
[16](#ym.nonmembers-16)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6322)
|
||
|
||
*Returns*: is[.](#ym.nonmembers-16.sentence-1)
|
||
|
||
### [30.8.14](#ymd) Class year_month_day [[time.cal.ymd]](time.cal.ymd)
|
||
|
||
#### [30.8.14.1](#ymd.overview) Overview [[time.cal.ymd.overview]](time.cal.ymd.overview)
|
||
|
||
namespace std::chrono {class year_month_day { chrono::year y_; // *exposition only* chrono::month m_; // *exposition only* chrono::day d_; // *exposition only*public: year_month_day() = default; constexpr year_month_day(const chrono::year& y, const chrono::month& m, const chrono::day& d) noexcept; constexpr year_month_day(const year_month_day_last& ymdl) noexcept; constexpr year_month_day(const sys_days& dp) noexcept; constexpr explicit year_month_day(const local_days& dp) noexcept; constexpr year_month_day& operator+=(const months& m) noexcept; constexpr year_month_day& operator-=(const months& m) noexcept; constexpr year_month_day& operator+=(const years& y) noexcept; constexpr year_month_day& operator-=(const years& y) noexcept; constexpr chrono::year year() const noexcept; constexpr chrono::month month() const noexcept; constexpr chrono::day day() const noexcept; constexpr operator sys_days() const noexcept; constexpr explicit operator local_days() const noexcept; constexpr bool ok() const noexcept; };}
|
||
|
||
[1](#ymd.overview-1)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6363)
|
||
|
||
year_month_day represents a specific year, month, and day[.](#ymd.overview-1.sentence-1)
|
||
|
||
year_month_day is a field-based time point with a resolution of days[.](#ymd.overview-1.sentence-2)
|
||
|
||
[*Note [1](#ymd.overview-note-1)*:
|
||
|
||
year_month_day supports years- and months-oriented arithmetic,
|
||
but not days-oriented arithmetic[.](#ymd.overview-1.sentence-3)
|
||
|
||
For the latter, there is a conversion to sys_days,
|
||
which efficiently supports days-oriented arithmetic[.](#ymd.overview-1.sentence-4)
|
||
|
||
â *end note*]
|
||
|
||
year_month_day meets the [*Cpp17EqualityComparable*](utility.arg.requirements#:Cpp17EqualityComparable "16.4.4.2 Template argument requirements [utility.arg.requirements]") (Table [28](utility.arg.requirements#tab:cpp17.equalitycomparable "Table 28: Cpp17EqualityComparable requirements"))
|
||
and [*Cpp17LessThanComparable*](utility.arg.requirements#:Cpp17LessThanComparable "16.4.4.2 Template argument requirements [utility.arg.requirements]") (Table [29](utility.arg.requirements#tab:cpp17.lessthancomparable "Table 29: Cpp17LessThanComparable requirements")) requirements[.](#ymd.overview-1.sentence-5)
|
||
|
||
[2](#ymd.overview-2)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6375)
|
||
|
||
year_month_day is a trivially copyable and standard-layout class type[.](#ymd.overview-2.sentence-1)
|
||
|
||
#### [30.8.14.2](#ymd.members) Member functions [[time.cal.ymd.members]](time.cal.ymd.members)
|
||
|
||
[ð](#lib:year_month_day,constructor)
|
||
|
||
`constexpr year_month_day(const chrono::year& y, const chrono::month& m,
|
||
const chrono::day& d) noexcept;
|
||
`
|
||
|
||
[1](#ymd.members-1)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6387)
|
||
|
||
*Effects*: Initializesy_ with y,m_ with m, andd_ with d[.](#ymd.members-1.sentence-1)
|
||
|
||
[ð](#lib:year_month_day,constructor_)
|
||
|
||
`constexpr year_month_day(const year_month_day_last& ymdl) noexcept;
|
||
`
|
||
|
||
[2](#ymd.members-2)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6401)
|
||
|
||
*Effects*: Initializesy_ with ymdl.year(),m_ with ymdl.month(), andd_ with ymdl.day()[.](#ymd.members-2.sentence-1)
|
||
|
||
[*Note [1](#ymd.members-note-1)*:
|
||
|
||
This conversion from year_month_day_last to year_month_day can be more efficient than converting a year_month_day_last to a sys_days,
|
||
and then converting that sys_days to a year_month_day[.](#ymd.members-2.sentence-2)
|
||
|
||
â *end note*]
|
||
|
||
[ð](#lib:year_month_day,constructor__)
|
||
|
||
`constexpr year_month_day(const sys_days& dp) noexcept;
|
||
`
|
||
|
||
[3](#ymd.members-3)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6420)
|
||
|
||
*Effects*: Constructs an object of type year_month_day that corresponds to the date represented by dp[.](#ymd.members-3.sentence-1)
|
||
|
||
[4](#ymd.members-4)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6425)
|
||
|
||
*Remarks*: For any value ymd of type year_month_day for which ymd.ok() is true,ymd == year_month_day{sys_days{ymd}} is true[.](#ymd.members-4.sentence-1)
|
||
|
||
[ð](#lib:year_month_day,constructor___)
|
||
|
||
`constexpr explicit year_month_day(const local_days& dp) noexcept;
|
||
`
|
||
|
||
[5](#ymd.members-5)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6439)
|
||
|
||
*Effects*: Equivalent to constructing with sys_days{dp.time_since_epoch()}[.](#ymd.members-5.sentence-1)
|
||
|
||
[ð](#lib:operator+=,year_month_day)
|
||
|
||
`constexpr year_month_day& operator+=(const months& m) noexcept;
|
||
`
|
||
|
||
[6](#ymd.members-6)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6450)
|
||
|
||
*Constraints*: If the argument supplied by the caller for the months parameter
|
||
is convertible to years,
|
||
its implicit conversion sequence to years is worse than its implicit conversion sequence tomonths ([[over.ics.rank]](over.ics.rank "12.2.4.3 Ranking implicit conversion sequences"))[.](#ymd.members-6.sentence-1)
|
||
|
||
[7](#ymd.members-7)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6458)
|
||
|
||
*Effects*: *this = *this + m[.](#ymd.members-7.sentence-1)
|
||
|
||
[8](#ymd.members-8)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6462)
|
||
|
||
*Returns*: *this[.](#ymd.members-8.sentence-1)
|
||
|
||
[ð](#lib:operator-=,year_month_day)
|
||
|
||
`constexpr year_month_day& operator-=(const months& m) noexcept;
|
||
`
|
||
|
||
[9](#ymd.members-9)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6473)
|
||
|
||
*Constraints*: If the argument supplied by the caller for the months parameter
|
||
is convertible to years,
|
||
its implicit conversion sequence to years is worse than its implicit conversion sequence tomonths ([[over.ics.rank]](over.ics.rank "12.2.4.3 Ranking implicit conversion sequences"))[.](#ymd.members-9.sentence-1)
|
||
|
||
[10](#ymd.members-10)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6481)
|
||
|
||
*Effects*: *this = *this - m[.](#ymd.members-10.sentence-1)
|
||
|
||
[11](#ymd.members-11)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6485)
|
||
|
||
*Returns*: *this[.](#ymd.members-11.sentence-1)
|
||
|
||
[ð](#lib:operator+=,year_month_day_)
|
||
|
||
`constexpr year_month_day& year_month_day::operator+=(const years& y) noexcept;
|
||
`
|
||
|
||
[12](#ymd.members-12)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6496)
|
||
|
||
*Effects*: *this = *this + y[.](#ymd.members-12.sentence-1)
|
||
|
||
[13](#ymd.members-13)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6500)
|
||
|
||
*Returns*: *this[.](#ymd.members-13.sentence-1)
|
||
|
||
[ð](#lib:operator-=,year_month_day_)
|
||
|
||
`constexpr year_month_day& year_month_day::operator-=(const years& y) noexcept;
|
||
`
|
||
|
||
[14](#ymd.members-14)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6511)
|
||
|
||
*Effects*: *this = *this - y[.](#ymd.members-14.sentence-1)
|
||
|
||
[15](#ymd.members-15)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6515)
|
||
|
||
*Returns*: *this[.](#ymd.members-15.sentence-1)
|
||
|
||
[ð](#lib:year,year_month_day)
|
||
|
||
`constexpr chrono::year year() const noexcept;
|
||
`
|
||
|
||
[16](#ymd.members-16)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6526)
|
||
|
||
*Returns*: y_[.](#ymd.members-16.sentence-1)
|
||
|
||
[ð](#lib:month,year_month_day)
|
||
|
||
`constexpr chrono::month month() const noexcept;
|
||
`
|
||
|
||
[17](#ymd.members-17)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6537)
|
||
|
||
*Returns*: m_[.](#ymd.members-17.sentence-1)
|
||
|
||
[ð](#lib:day,year_month_day)
|
||
|
||
`constexpr chrono::day day() const noexcept;
|
||
`
|
||
|
||
[18](#ymd.members-18)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6548)
|
||
|
||
*Returns*: d_[.](#ymd.members-18.sentence-1)
|
||
|
||
[ð](#lib:operator_sys_days,year_month_day)
|
||
|
||
`constexpr operator sys_days() const noexcept;
|
||
`
|
||
|
||
[19](#ymd.members-19)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6559)
|
||
|
||
*Returns*: If ok(),
|
||
returns a sys_days holding a count of days from the sys_days epoch to *this (a negative value if *this represents a date prior to the sys_days epoch)[.](#ymd.members-19.sentence-1)
|
||
|
||
Otherwise, if y_.ok() && m_.ok() is true,
|
||
returns sys_days{y_/m_/1d} + (d_ - 1d)[.](#ymd.members-19.sentence-2)
|
||
|
||
Otherwise the value returned is unspecified[.](#ymd.members-19.sentence-3)
|
||
|
||
[20](#ymd.members-20)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6569)
|
||
|
||
*Remarks*: A sys_days in the range [days{-12687428}, days{11248737}]
|
||
which is converted to a year_month_day has the same value when converted back to a sys_days[.](#ymd.members-20.sentence-1)
|
||
|
||
[21](#ymd.members-21)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6575)
|
||
|
||
[*Example [1](#ymd.members-example-1)*: static_assert(year_month_day{sys_days{2017y/January/0}} == 2016y/December/31);static_assert(year_month_day{sys_days{2017y/January/31}} == 2017y/January/31);static_assert(year_month_day{sys_days{2017y/January/32}} == 2017y/February/1); â *end example*]
|
||
|
||
[ð](#lib:operator_local_days,year_month_day)
|
||
|
||
`constexpr explicit operator local_days() const noexcept;
|
||
`
|
||
|
||
[22](#ymd.members-22)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6591)
|
||
|
||
*Returns*: local_days{sys_days{*this}.time_since_epoch()}[.](#ymd.members-22.sentence-1)
|
||
|
||
[ð](#lib:ok,year_month_day)
|
||
|
||
`constexpr bool ok() const noexcept;
|
||
`
|
||
|
||
[23](#ymd.members-23)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6602)
|
||
|
||
*Returns*: If y_.ok() is true,
|
||
and m_.ok() is true,
|
||
and d_ is in the range [1d, (y_/m_/last).day()],
|
||
then returns true; otherwise returns false[.](#ymd.members-23.sentence-1)
|
||
|
||
#### [30.8.14.3](#ymd.nonmembers) Non-member functions [[time.cal.ymd.nonmembers]](time.cal.ymd.nonmembers)
|
||
|
||
[ð](#lib:operator==,year_month_day)
|
||
|
||
`constexpr bool operator==(const year_month_day& x, const year_month_day& y) noexcept;
|
||
`
|
||
|
||
[1](#ymd.nonmembers-1)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6618)
|
||
|
||
*Returns*: x.year() == y.year() && x.month() == y.month() && x.day() == y.day()[.](#ymd.nonmembers-1.sentence-1)
|
||
|
||
[ð](#lib:operator%3c=%3e,year_month_day)
|
||
|
||
`constexpr strong_ordering operator<=>(const year_month_day& x, const year_month_day& y) noexcept;
|
||
`
|
||
|
||
[2](#ymd.nonmembers-2)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6629)
|
||
|
||
*Effects*: Equivalent to:if (auto c = x.year() <=> y.year(); c != 0) return c;if (auto c = x.month() <=> y.month(); c != 0) return c;return x.day() <=> y.day();
|
||
|
||
[ð](#lib:operator+,year_month_day)
|
||
|
||
`constexpr year_month_day operator+(const year_month_day& ymd, const months& dm) noexcept;
|
||
`
|
||
|
||
[3](#ymd.nonmembers-3)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6645)
|
||
|
||
*Constraints*: If the argument supplied by the caller for the months parameter
|
||
is convertible to years,
|
||
its implicit conversion sequence to years is worse than its implicit conversion sequence tomonths ([[over.ics.rank]](over.ics.rank "12.2.4.3 Ranking implicit conversion sequences"))[.](#ymd.nonmembers-3.sentence-1)
|
||
|
||
[4](#ymd.nonmembers-4)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6653)
|
||
|
||
*Returns*: (ymd.year() / ymd.month() + dm) / ymd.day()[.](#ymd.nonmembers-4.sentence-1)
|
||
|
||
[5](#ymd.nonmembers-5)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6657)
|
||
|
||
[*Note [1](#ymd.nonmembers-note-1)*:
|
||
|
||
If ymd.day() is in the range [1d, 28d],ok() will return true for
|
||
the resultant year_month_day[.](#ymd.nonmembers-5.sentence-1)
|
||
|
||
â *end note*]
|
||
|
||
[ð](#lib:operator+,year_month_day_)
|
||
|
||
`constexpr year_month_day operator+(const months& dm, const year_month_day& ymd) noexcept;
|
||
`
|
||
|
||
[6](#ymd.nonmembers-6)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6671)
|
||
|
||
*Constraints*: If the argument supplied by the caller for the months parameter
|
||
is convertible to years,
|
||
its implicit conversion sequence to years is worse than its implicit conversion sequence tomonths ([[over.ics.rank]](over.ics.rank "12.2.4.3 Ranking implicit conversion sequences"))[.](#ymd.nonmembers-6.sentence-1)
|
||
|
||
[7](#ymd.nonmembers-7)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6679)
|
||
|
||
*Returns*: ymd + dm[.](#ymd.nonmembers-7.sentence-1)
|
||
|
||
[ð](#lib:operator-,year_month_day)
|
||
|
||
`constexpr year_month_day operator-(const year_month_day& ymd, const months& dm) noexcept;
|
||
`
|
||
|
||
[8](#ymd.nonmembers-8)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6690)
|
||
|
||
*Constraints*: If the argument supplied by the caller for the months parameter
|
||
is convertible to years,
|
||
its implicit conversion sequence to years is worse than its implicit conversion sequence tomonths ([[over.ics.rank]](over.ics.rank "12.2.4.3 Ranking implicit conversion sequences"))[.](#ymd.nonmembers-8.sentence-1)
|
||
|
||
[9](#ymd.nonmembers-9)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6698)
|
||
|
||
*Returns*: ymd + (-dm)[.](#ymd.nonmembers-9.sentence-1)
|
||
|
||
[ð](#lib:operator+,year_month_day__)
|
||
|
||
`constexpr year_month_day operator+(const year_month_day& ymd, const years& dy) noexcept;
|
||
`
|
||
|
||
[10](#ymd.nonmembers-10)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6709)
|
||
|
||
*Returns*: (ymd.year() + dy) / ymd.month() / ymd.day()[.](#ymd.nonmembers-10.sentence-1)
|
||
|
||
[11](#ymd.nonmembers-11)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6713)
|
||
|
||
[*Note [2](#ymd.nonmembers-note-2)*:
|
||
|
||
If ymd.month() is February
|
||
and ymd.day() is not in the range [1d, 28d],ok() can return false for
|
||
the resultant year_month_day[.](#ymd.nonmembers-11.sentence-1)
|
||
|
||
â *end note*]
|
||
|
||
[ð](#lib:operator+,year_month_day___)
|
||
|
||
`constexpr year_month_day operator+(const years& dy, const year_month_day& ymd) noexcept;
|
||
`
|
||
|
||
[12](#ymd.nonmembers-12)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6728)
|
||
|
||
*Returns*: ymd + dy[.](#ymd.nonmembers-12.sentence-1)
|
||
|
||
[ð](#lib:operator-,year_month_day_)
|
||
|
||
`constexpr year_month_day operator-(const year_month_day& ymd, const years& dy) noexcept;
|
||
`
|
||
|
||
[13](#ymd.nonmembers-13)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6739)
|
||
|
||
*Returns*: ymd + (-dy)[.](#ymd.nonmembers-13.sentence-1)
|
||
|
||
[ð](#lib:operator%3c%3c,year_month_day)
|
||
|
||
`template<class charT, class traits>
|
||
basic_ostream<charT, traits>&
|
||
operator<<(basic_ostream<charT, traits>& os, const year_month_day& ymd);
|
||
`
|
||
|
||
[14](#ymd.nonmembers-14)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6752)
|
||
|
||
*Effects*: Equivalent to:return os << (ymd.ok() ? format(*STATICALLY-WIDEN*<charT>("{:%F}"), ymd) : format(*STATICALLY-WIDEN*<charT>("{:%F} is not a valid date"), ymd));
|
||
|
||
[ð](#lib:from_stream,year_month_day)
|
||
|
||
`template<class charT, class traits, class Alloc = allocator<charT>>
|
||
basic_istream<charT, traits>&
|
||
from_stream(basic_istream<charT, traits>& is, const charT* fmt,
|
||
year_month_day& ymd, basic_string<charT, traits, Alloc>* abbrev = nullptr,
|
||
minutes* offset = nullptr);
|
||
`
|
||
|
||
[15](#ymd.nonmembers-15)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6772)
|
||
|
||
*Effects*: Attempts to parse the input stream is into the year_month_day ymd using
|
||
the format flags given in the NTCTS fmt as specified in [[time.parse]](time.parse "30.13 Parsing")[.](#ymd.nonmembers-15.sentence-1)
|
||
|
||
If the parse fails to decode a valid year_month_day,is.setstate(ios_base::failbit) is called andymd is not modified[.](#ymd.nonmembers-15.sentence-2)
|
||
|
||
If %Z is used and successfully parsed,
|
||
that value will be assigned to *abbrev if abbrev is non-null[.](#ymd.nonmembers-15.sentence-3)
|
||
|
||
If %z (or a modified variant) is used and successfully parsed,
|
||
that value will be assigned to *offset if offset is non-null[.](#ymd.nonmembers-15.sentence-4)
|
||
|
||
[16](#ymd.nonmembers-16)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6786)
|
||
|
||
*Returns*: is[.](#ymd.nonmembers-16.sentence-1)
|
||
|
||
### [30.8.15](#ymdlast) Class year_month_day_last [[time.cal.ymdlast]](time.cal.ymdlast)
|
||
|
||
#### [30.8.15.1](#ymdlast.overview) Overview [[time.cal.ymdlast.overview]](time.cal.ymdlast.overview)
|
||
|
||
namespace std::chrono {class year_month_day_last { chrono::year y_; // *exposition only* chrono::month_day_last mdl_; // *exposition only*public:constexpr year_month_day_last(const chrono::year& y, const chrono::month_day_last& mdl) noexcept; constexpr year_month_day_last& operator+=(const months& m) noexcept; constexpr year_month_day_last& operator-=(const months& m) noexcept; constexpr year_month_day_last& operator+=(const years& y) noexcept; constexpr year_month_day_last& operator-=(const years& y) noexcept; constexpr chrono::year year() const noexcept; constexpr chrono::month month() const noexcept; constexpr chrono::month_day_last month_day_last() const noexcept; constexpr chrono::day day() const noexcept; constexpr operator sys_days() const noexcept; constexpr explicit operator local_days() const noexcept; constexpr bool ok() const noexcept; };}
|
||
|
||
[1](#ymdlast.overview-1)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6823)
|
||
|
||
year_month_day_last represents the last day of a specific year and month[.](#ymdlast.overview-1.sentence-1)
|
||
|
||
year_month_day_last is a field-based time point with a resolution of days,
|
||
except that it is restricted to pointing to the last day of a year and month[.](#ymdlast.overview-1.sentence-2)
|
||
|
||
[*Note [1](#ymdlast.overview-note-1)*:
|
||
|
||
year_month_day_last supports years- and months-oriented arithmetic,
|
||
but not days-oriented arithmetic[.](#ymdlast.overview-1.sentence-3)
|
||
|
||
For the latter, there is a conversion to sys_days,
|
||
which efficiently supports days-oriented arithmetic[.](#ymdlast.overview-1.sentence-4)
|
||
|
||
â *end note*]
|
||
|
||
year_month_day_last meets the [*Cpp17EqualityComparable*](utility.arg.requirements#:Cpp17EqualityComparable "16.4.4.2 Template argument requirements [utility.arg.requirements]") (Table [28](utility.arg.requirements#tab:cpp17.equalitycomparable "Table 28: Cpp17EqualityComparable requirements"))
|
||
and [*Cpp17LessThanComparable*](utility.arg.requirements#:Cpp17LessThanComparable "16.4.4.2 Template argument requirements [utility.arg.requirements]") (Table [29](utility.arg.requirements#tab:cpp17.lessthancomparable "Table 29: Cpp17LessThanComparable requirements")) requirements[.](#ymdlast.overview-1.sentence-5)
|
||
|
||
[2](#ymdlast.overview-2)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6836)
|
||
|
||
year_month_day_last is a trivially copyable and standard-layout class type[.](#ymdlast.overview-2.sentence-1)
|
||
|
||
#### [30.8.15.2](#ymdlast.members) Member functions [[time.cal.ymdlast.members]](time.cal.ymdlast.members)
|
||
|
||
[ð](#lib:year_month_day_last,constructor)
|
||
|
||
`constexpr year_month_day_last(const chrono::year& y,
|
||
const chrono::month_day_last& mdl) noexcept;
|
||
`
|
||
|
||
[1](#ymdlast.members-1)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6848)
|
||
|
||
*Effects*: Initializes y_ with y and mdl_ with mdl[.](#ymdlast.members-1.sentence-1)
|
||
|
||
[ð](#lib:operator+=,year_month_day_last)
|
||
|
||
`constexpr year_month_day_last& operator+=(const months& m) noexcept;
|
||
`
|
||
|
||
[2](#ymdlast.members-2)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6859)
|
||
|
||
*Constraints*: If the argument supplied by the caller for the months parameter
|
||
is convertible to years,
|
||
its implicit conversion sequence to years is worse than its implicit conversion sequence tomonths ([[over.ics.rank]](over.ics.rank "12.2.4.3 Ranking implicit conversion sequences"))[.](#ymdlast.members-2.sentence-1)
|
||
|
||
[3](#ymdlast.members-3)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6867)
|
||
|
||
*Effects*: *this = *this + m[.](#ymdlast.members-3.sentence-1)
|
||
|
||
[4](#ymdlast.members-4)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6871)
|
||
|
||
*Returns*: *this[.](#ymdlast.members-4.sentence-1)
|
||
|
||
[ð](#lib:operator-=,year_month_day_last)
|
||
|
||
`constexpr year_month_day_last& operator-=(const months& m) noexcept;
|
||
`
|
||
|
||
[5](#ymdlast.members-5)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6882)
|
||
|
||
*Constraints*: If the argument supplied by the caller for the months parameter
|
||
is convertible to years,
|
||
its implicit conversion sequence to years is worse than its implicit conversion sequence tomonths ([[over.ics.rank]](over.ics.rank "12.2.4.3 Ranking implicit conversion sequences"))[.](#ymdlast.members-5.sentence-1)
|
||
|
||
[6](#ymdlast.members-6)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6890)
|
||
|
||
*Effects*: *this = *this - m[.](#ymdlast.members-6.sentence-1)
|
||
|
||
[7](#ymdlast.members-7)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6894)
|
||
|
||
*Returns*: *this[.](#ymdlast.members-7.sentence-1)
|
||
|
||
[ð](#lib:operator+=,year_month_day_last_)
|
||
|
||
`constexpr year_month_day_last& operator+=(const years& y) noexcept;
|
||
`
|
||
|
||
[8](#ymdlast.members-8)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6905)
|
||
|
||
*Effects*: *this = *this + y[.](#ymdlast.members-8.sentence-1)
|
||
|
||
[9](#ymdlast.members-9)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6909)
|
||
|
||
*Returns*: *this[.](#ymdlast.members-9.sentence-1)
|
||
|
||
[ð](#lib:operator-=,year_month_day_last_)
|
||
|
||
`constexpr year_month_day_last& operator-=(const years& y) noexcept;
|
||
`
|
||
|
||
[10](#ymdlast.members-10)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6920)
|
||
|
||
*Effects*: *this = *this - y[.](#ymdlast.members-10.sentence-1)
|
||
|
||
[11](#ymdlast.members-11)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6924)
|
||
|
||
*Returns*: *this[.](#ymdlast.members-11.sentence-1)
|
||
|
||
[ð](#lib:year,year_month_day_last)
|
||
|
||
`constexpr chrono::year year() const noexcept;
|
||
`
|
||
|
||
[12](#ymdlast.members-12)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6935)
|
||
|
||
*Returns*: y_[.](#ymdlast.members-12.sentence-1)
|
||
|
||
[ð](#lib:month,year_month_day_last)
|
||
|
||
`constexpr chrono::month month() const noexcept;
|
||
`
|
||
|
||
[13](#ymdlast.members-13)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6946)
|
||
|
||
*Returns*: mdl_.month()[.](#ymdlast.members-13.sentence-1)
|
||
|
||
[ð](#lib:month_day_last,year_month_day_last)
|
||
|
||
`constexpr chrono::month_day_last month_day_last() const noexcept;
|
||
`
|
||
|
||
[14](#ymdlast.members-14)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6957)
|
||
|
||
*Returns*: mdl_[.](#ymdlast.members-14.sentence-1)
|
||
|
||
[ð](#lib:day,year_month_day_last)
|
||
|
||
`constexpr chrono::day day() const noexcept;
|
||
`
|
||
|
||
[15](#ymdlast.members-15)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6968)
|
||
|
||
*Returns*: If ok() is true,
|
||
returns a day representing
|
||
the last day of the (year, month) pair
|
||
represented by *this[.](#ymdlast.members-15.sentence-1)
|
||
|
||
Otherwise, the returned value is unspecified[.](#ymdlast.members-15.sentence-2)
|
||
|
||
[16](#ymdlast.members-16)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6976)
|
||
|
||
[*Note [1](#ymdlast.members-note-1)*:
|
||
|
||
This value might be computed on demand[.](#ymdlast.members-16.sentence-1)
|
||
|
||
â *end note*]
|
||
|
||
[ð](#lib:operator_sys_days,year_month_day_last)
|
||
|
||
`constexpr operator sys_days() const noexcept;
|
||
`
|
||
|
||
[17](#ymdlast.members-17)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6988)
|
||
|
||
*Returns*: sys_days{year()/month()/day()}[.](#ymdlast.members-17.sentence-1)
|
||
|
||
[ð](#lib:operator_local_days,year_month_day_last)
|
||
|
||
`constexpr explicit operator local_days() const noexcept;
|
||
`
|
||
|
||
[18](#ymdlast.members-18)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L6999)
|
||
|
||
*Returns*: local_days{sys_days{*this}.time_since_epoch()}[.](#ymdlast.members-18.sentence-1)
|
||
|
||
[ð](#lib:ok,year_month_day_last)
|
||
|
||
`constexpr bool ok() const noexcept;
|
||
`
|
||
|
||
[19](#ymdlast.members-19)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7010)
|
||
|
||
*Returns*: y_.ok() && mdl_.ok()[.](#ymdlast.members-19.sentence-1)
|
||
|
||
#### [30.8.15.3](#ymdlast.nonmembers) Non-member functions [[time.cal.ymdlast.nonmembers]](time.cal.ymdlast.nonmembers)
|
||
|
||
[ð](#lib:operator==,year_month_day_last)
|
||
|
||
`constexpr bool operator==(const year_month_day_last& x, const year_month_day_last& y) noexcept;
|
||
`
|
||
|
||
[1](#ymdlast.nonmembers-1)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7023)
|
||
|
||
*Returns*: x.year() == y.year() && x.month_day_last() == y.month_day_last()[.](#ymdlast.nonmembers-1.sentence-1)
|
||
|
||
[ð](#lib:operator%3c=%3e,year_month_day_last)
|
||
|
||
`constexpr strong_ordering operator<=>(const year_month_day_last& x,
|
||
const year_month_day_last& y) noexcept;
|
||
`
|
||
|
||
[2](#ymdlast.nonmembers-2)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7035)
|
||
|
||
*Effects*: Equivalent to:if (auto c = x.year() <=> y.year(); c != 0) return c;return x.month_day_last() <=> y.month_day_last();
|
||
|
||
[ð](#lib:operator+,year_month_day_last)
|
||
|
||
`constexpr year_month_day_last
|
||
operator+(const year_month_day_last& ymdl, const months& dm) noexcept;
|
||
`
|
||
|
||
[3](#ymdlast.nonmembers-3)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7051)
|
||
|
||
*Constraints*: If the argument supplied by the caller for the months parameter
|
||
is convertible to years,
|
||
its implicit conversion sequence to years is worse than its implicit conversion sequence tomonths ([[over.ics.rank]](over.ics.rank "12.2.4.3 Ranking implicit conversion sequences"))[.](#ymdlast.nonmembers-3.sentence-1)
|
||
|
||
[4](#ymdlast.nonmembers-4)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7059)
|
||
|
||
*Returns*: (ymdl.year() / ymdl.month() + dm) / last[.](#ymdlast.nonmembers-4.sentence-1)
|
||
|
||
[ð](#lib:operator+,year_month_day_last_)
|
||
|
||
`constexpr year_month_day_last
|
||
operator+(const months& dm, const year_month_day_last& ymdl) noexcept;
|
||
`
|
||
|
||
[5](#ymdlast.nonmembers-5)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7071)
|
||
|
||
*Constraints*: If the argument supplied by the caller for the months parameter
|
||
is convertible to years,
|
||
its implicit conversion sequence to years is worse than its implicit conversion sequence tomonths ([[over.ics.rank]](over.ics.rank "12.2.4.3 Ranking implicit conversion sequences"))[.](#ymdlast.nonmembers-5.sentence-1)
|
||
|
||
[6](#ymdlast.nonmembers-6)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7079)
|
||
|
||
*Returns*: ymdl + dm[.](#ymdlast.nonmembers-6.sentence-1)
|
||
|
||
[ð](#lib:operator-,year_month_day_last)
|
||
|
||
`constexpr year_month_day_last
|
||
operator-(const year_month_day_last& ymdl, const months& dm) noexcept;
|
||
`
|
||
|
||
[7](#ymdlast.nonmembers-7)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7091)
|
||
|
||
*Constraints*: If the argument supplied by the caller for the months parameter
|
||
is convertible to years,
|
||
its implicit conversion sequence to years is worse than its implicit conversion sequence tomonths ([[over.ics.rank]](over.ics.rank "12.2.4.3 Ranking implicit conversion sequences"))[.](#ymdlast.nonmembers-7.sentence-1)
|
||
|
||
[8](#ymdlast.nonmembers-8)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7099)
|
||
|
||
*Returns*: ymdl + (-dm)[.](#ymdlast.nonmembers-8.sentence-1)
|
||
|
||
[ð](#lib:operator+,year_month_day_last__)
|
||
|
||
`constexpr year_month_day_last
|
||
operator+(const year_month_day_last& ymdl, const years& dy) noexcept;
|
||
`
|
||
|
||
[9](#ymdlast.nonmembers-9)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7111)
|
||
|
||
*Returns*: {ymdl.year()+dy, ymdl.month_day_last()}[.](#ymdlast.nonmembers-9.sentence-1)
|
||
|
||
[ð](#lib:operator+,year_month_day_last___)
|
||
|
||
`constexpr year_month_day_last
|
||
operator+(const years& dy, const year_month_day_last& ymdl) noexcept;
|
||
`
|
||
|
||
[10](#ymdlast.nonmembers-10)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7123)
|
||
|
||
*Returns*: ymdl + dy[.](#ymdlast.nonmembers-10.sentence-1)
|
||
|
||
[ð](#lib:operator-,year_month_day_last_)
|
||
|
||
`constexpr year_month_day_last
|
||
operator-(const year_month_day_last& ymdl, const years& dy) noexcept;
|
||
`
|
||
|
||
[11](#ymdlast.nonmembers-11)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7135)
|
||
|
||
*Returns*: ymdl + (-dy)[.](#ymdlast.nonmembers-11.sentence-1)
|
||
|
||
[ð](#lib:operator%3c%3c,year_month_day_last)
|
||
|
||
`template<class charT, class traits>
|
||
basic_ostream<charT, traits>&
|
||
operator<<(basic_ostream<charT, traits>& os, const year_month_day_last& ymdl);
|
||
`
|
||
|
||
[12](#ymdlast.nonmembers-12)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7148)
|
||
|
||
*Effects*: Equivalent to:return os << format(os.getloc(), *STATICALLY-WIDEN*<charT>("{}/{:L}"),
|
||
ymdl.year(), ymdl.month_day_last());
|
||
|
||
### [30.8.16](#ymwd) Class year_month_weekday [[time.cal.ymwd]](time.cal.ymwd)
|
||
|
||
#### [30.8.16.1](#ymwd.overview) Overview [[time.cal.ymwd.overview]](time.cal.ymwd.overview)
|
||
|
||
namespace std::chrono {class year_month_weekday { chrono::year y_; // *exposition only* chrono::month m_; // *exposition only* chrono::weekday_indexed wdi_; // *exposition only*public: year_month_weekday() = default; constexpr year_month_weekday(const chrono::year& y, const chrono::month& m, const chrono::weekday_indexed& wdi) noexcept; constexpr year_month_weekday(const sys_days& dp) noexcept; constexpr explicit year_month_weekday(const local_days& dp) noexcept; constexpr year_month_weekday& operator+=(const months& m) noexcept; constexpr year_month_weekday& operator-=(const months& m) noexcept; constexpr year_month_weekday& operator+=(const years& y) noexcept; constexpr year_month_weekday& operator-=(const years& y) noexcept; constexpr chrono::year year() const noexcept; constexpr chrono::month month() const noexcept; constexpr chrono::weekday weekday() const noexcept; constexpr unsigned index() const noexcept; constexpr chrono::weekday_indexed weekday_indexed() const noexcept; constexpr operator sys_days() const noexcept; constexpr explicit operator local_days() const noexcept; constexpr bool ok() const noexcept; };}
|
||
|
||
[1](#ymwd.overview-1)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7194)
|
||
|
||
year_month_weekday represents a specific year, month,
|
||
and nth weekday of the month[.](#ymwd.overview-1.sentence-1)
|
||
|
||
year_month_weekday is a field-based time point with a resolution of days[.](#ymwd.overview-1.sentence-2)
|
||
|
||
[*Note [1](#ymwd.overview-note-1)*:
|
||
|
||
year_month_weekday supports years- and months-oriented arithmetic,
|
||
but not days-oriented arithmetic[.](#ymwd.overview-1.sentence-3)
|
||
|
||
For the latter, there is a conversion to sys_days,
|
||
which efficiently supports days-oriented arithmetic[.](#ymwd.overview-1.sentence-4)
|
||
|
||
â *end note*]
|
||
|
||
year_month_weekday meets the [*Cpp17EqualityComparable*](utility.arg.requirements#:Cpp17EqualityComparable "16.4.4.2 Template argument requirements [utility.arg.requirements]") (Table [28](utility.arg.requirements#tab:cpp17.equalitycomparable "Table 28: Cpp17EqualityComparable requirements")) requirements[.](#ymwd.overview-1.sentence-5)
|
||
|
||
[2](#ymwd.overview-2)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7206)
|
||
|
||
year_month_weekday is a trivially copyable and standard-layout class type[.](#ymwd.overview-2.sentence-1)
|
||
|
||
#### [30.8.16.2](#ymwd.members) Member functions [[time.cal.ymwd.members]](time.cal.ymwd.members)
|
||
|
||
[ð](#lib:year_month_weekday,constructor)
|
||
|
||
`constexpr year_month_weekday(const chrono::year& y, const chrono::month& m,
|
||
const chrono::weekday_indexed& wdi) noexcept;
|
||
`
|
||
|
||
[1](#ymwd.members-1)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7218)
|
||
|
||
*Effects*: Initializes y_ with y, m_ with m, and wdi_ with wdi[.](#ymwd.members-1.sentence-1)
|
||
|
||
[ð](#lib:year_month_weekday,constructor_)
|
||
|
||
`constexpr year_month_weekday(const sys_days& dp) noexcept;
|
||
`
|
||
|
||
[2](#ymwd.members-2)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7229)
|
||
|
||
*Effects*: Constructs an object of type year_month_weekday which corresponds to the date represented by dp[.](#ymwd.members-2.sentence-1)
|
||
|
||
[3](#ymwd.members-3)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7234)
|
||
|
||
*Remarks*: For any value ymwd of type year_month_weekday for which ymwd.ok() is true,ymwd == year_month_weekday{sys_days{ymwd}} is true[.](#ymwd.members-3.sentence-1)
|
||
|
||
[ð](#lib:year_month_weekday,constructor__)
|
||
|
||
`constexpr explicit year_month_weekday(const local_days& dp) noexcept;
|
||
`
|
||
|
||
[4](#ymwd.members-4)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7247)
|
||
|
||
*Effects*: Equivalent to constructing with sys_days{dp.time_since_epoch()}[.](#ymwd.members-4.sentence-1)
|
||
|
||
[ð](#lib:operator+=,year_month_weekday)
|
||
|
||
`constexpr year_month_weekday& operator+=(const months& m) noexcept;
|
||
`
|
||
|
||
[5](#ymwd.members-5)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7258)
|
||
|
||
*Constraints*: If the argument supplied by the caller for the months parameter
|
||
is convertible to years,
|
||
its implicit conversion sequence to years is worse than its implicit conversion sequence tomonths ([[over.ics.rank]](over.ics.rank "12.2.4.3 Ranking implicit conversion sequences"))[.](#ymwd.members-5.sentence-1)
|
||
|
||
[6](#ymwd.members-6)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7266)
|
||
|
||
*Effects*: *this = *this + m[.](#ymwd.members-6.sentence-1)
|
||
|
||
[7](#ymwd.members-7)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7270)
|
||
|
||
*Returns*: *this[.](#ymwd.members-7.sentence-1)
|
||
|
||
[ð](#lib:operator-=,year_month_weekday)
|
||
|
||
`constexpr year_month_weekday& operator-=(const months& m) noexcept;
|
||
`
|
||
|
||
[8](#ymwd.members-8)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7281)
|
||
|
||
*Constraints*: If the argument supplied by the caller for the months parameter
|
||
is convertible to years,
|
||
its implicit conversion sequence to years is worse than its implicit conversion sequence tomonths ([[over.ics.rank]](over.ics.rank "12.2.4.3 Ranking implicit conversion sequences"))[.](#ymwd.members-8.sentence-1)
|
||
|
||
[9](#ymwd.members-9)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7289)
|
||
|
||
*Effects*: *this = *this - m[.](#ymwd.members-9.sentence-1)
|
||
|
||
[10](#ymwd.members-10)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7293)
|
||
|
||
*Returns*: *this[.](#ymwd.members-10.sentence-1)
|
||
|
||
[ð](#lib:operator+=,year_month_weekday_)
|
||
|
||
`constexpr year_month_weekday& operator+=(const years& y) noexcept;
|
||
`
|
||
|
||
[11](#ymwd.members-11)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7304)
|
||
|
||
*Effects*: *this = *this + y[.](#ymwd.members-11.sentence-1)
|
||
|
||
[12](#ymwd.members-12)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7308)
|
||
|
||
*Returns*: *this[.](#ymwd.members-12.sentence-1)
|
||
|
||
[ð](#lib:operator-=,year_month_weekday_)
|
||
|
||
`constexpr year_month_weekday& operator-=(const years& y) noexcept;
|
||
`
|
||
|
||
[13](#ymwd.members-13)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7319)
|
||
|
||
*Effects*: *this = *this - y[.](#ymwd.members-13.sentence-1)
|
||
|
||
[14](#ymwd.members-14)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7323)
|
||
|
||
*Returns*: *this[.](#ymwd.members-14.sentence-1)
|
||
|
||
[ð](#lib:year,year_month_weekday)
|
||
|
||
`constexpr chrono::year year() const noexcept;
|
||
`
|
||
|
||
[15](#ymwd.members-15)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7334)
|
||
|
||
*Returns*: y_[.](#ymwd.members-15.sentence-1)
|
||
|
||
[ð](#lib:month,year_month_weekday)
|
||
|
||
`constexpr chrono::month month() const noexcept;
|
||
`
|
||
|
||
[16](#ymwd.members-16)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7345)
|
||
|
||
*Returns*: m_[.](#ymwd.members-16.sentence-1)
|
||
|
||
[ð](#lib:weekday,year_month_weekday)
|
||
|
||
`constexpr chrono::weekday weekday() const noexcept;
|
||
`
|
||
|
||
[17](#ymwd.members-17)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7356)
|
||
|
||
*Returns*: wdi_.weekday()[.](#ymwd.members-17.sentence-1)
|
||
|
||
[ð](#lib:index,year_month_weekday)
|
||
|
||
`constexpr unsigned index() const noexcept;
|
||
`
|
||
|
||
[18](#ymwd.members-18)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7367)
|
||
|
||
*Returns*: wdi_.index()[.](#ymwd.members-18.sentence-1)
|
||
|
||
[ð](#lib:weekday_indexed,year_month_weekday)
|
||
|
||
`constexpr chrono::weekday_indexed weekday_indexed() const noexcept;
|
||
`
|
||
|
||
[19](#ymwd.members-19)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7378)
|
||
|
||
*Returns*: wdi_[.](#ymwd.members-19.sentence-1)
|
||
|
||
[ð](#lib:operator_sys_days,year_month_weekday)
|
||
|
||
`constexpr operator sys_days() const noexcept;
|
||
`
|
||
|
||
[20](#ymwd.members-20)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7389)
|
||
|
||
*Returns*: If y_.ok() && m_.ok() && wdi_.weekday().ok(),
|
||
returns a sys_days that
|
||
represents the date (index() - 1) * 7 days after
|
||
the first weekday() of year()/month()[.](#ymwd.members-20.sentence-1)
|
||
|
||
If index() is 0
|
||
the returned sys_days represents the date 7 days prior to
|
||
the first weekday() of year()/month()[.](#ymwd.members-20.sentence-2)
|
||
|
||
Otherwise the returned value is unspecified[.](#ymwd.members-20.sentence-3)
|
||
|
||
[ð](#lib:operator_local_days,year_month_weekday)
|
||
|
||
`constexpr explicit operator local_days() const noexcept;
|
||
`
|
||
|
||
[21](#ymwd.members-21)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7408)
|
||
|
||
*Returns*: local_days{sys_days{*this}.time_since_epoch()}[.](#ymwd.members-21.sentence-1)
|
||
|
||
[ð](#lib:ok,year_month_weekday)
|
||
|
||
`constexpr bool ok() const noexcept;
|
||
`
|
||
|
||
[22](#ymwd.members-22)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7419)
|
||
|
||
*Returns*: If any ofy_.ok(),m_.ok(), orwdi_.ok() is false, returns false[.](#ymwd.members-22.sentence-1)
|
||
|
||
Otherwise, if *this represents a valid date,
|
||
returns true[.](#ymwd.members-22.sentence-2)
|
||
|
||
Otherwise, returns false[.](#ymwd.members-22.sentence-3)
|
||
|
||
#### [30.8.16.3](#ymwd.nonmembers) Non-member functions [[time.cal.ymwd.nonmembers]](time.cal.ymwd.nonmembers)
|
||
|
||
[ð](#lib:operator==,year_month_weekday)
|
||
|
||
`constexpr bool operator==(const year_month_weekday& x, const year_month_weekday& y) noexcept;
|
||
`
|
||
|
||
[1](#ymwd.nonmembers-1)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7439)
|
||
|
||
*Returns*: x.year() == y.year() && x.month() == y.month() && x.weekday_indexed() == y.weekday_indexed()
|
||
|
||
[ð](#lib:operator+,year_month_weekday)
|
||
|
||
`constexpr year_month_weekday operator+(const year_month_weekday& ymwd, const months& dm) noexcept;
|
||
`
|
||
|
||
[2](#ymwd.nonmembers-2)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7452)
|
||
|
||
*Constraints*: If the argument supplied by the caller for the months parameter
|
||
is convertible to years,
|
||
its implicit conversion sequence to years is worse than its implicit conversion sequence tomonths ([[over.ics.rank]](over.ics.rank "12.2.4.3 Ranking implicit conversion sequences"))[.](#ymwd.nonmembers-2.sentence-1)
|
||
|
||
[3](#ymwd.nonmembers-3)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7460)
|
||
|
||
*Returns*: (ymwd.year() / ymwd.month() + dm) / ymwd.weekday_indexed()[.](#ymwd.nonmembers-3.sentence-1)
|
||
|
||
[ð](#lib:operator+,year_month_weekday_)
|
||
|
||
`constexpr year_month_weekday operator+(const months& dm, const year_month_weekday& ymwd) noexcept;
|
||
`
|
||
|
||
[4](#ymwd.nonmembers-4)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7471)
|
||
|
||
*Constraints*: If the argument supplied by the caller for the months parameter
|
||
is convertible to years,
|
||
its implicit conversion sequence to years is worse than its implicit conversion sequence tomonths ([[over.ics.rank]](over.ics.rank "12.2.4.3 Ranking implicit conversion sequences"))[.](#ymwd.nonmembers-4.sentence-1)
|
||
|
||
[5](#ymwd.nonmembers-5)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7479)
|
||
|
||
*Returns*: ymwd + dm[.](#ymwd.nonmembers-5.sentence-1)
|
||
|
||
[ð](#lib:operator-,year_month_weekday)
|
||
|
||
`constexpr year_month_weekday operator-(const year_month_weekday& ymwd, const months& dm) noexcept;
|
||
`
|
||
|
||
[6](#ymwd.nonmembers-6)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7490)
|
||
|
||
*Constraints*: If the argument supplied by the caller for the months parameter
|
||
is convertible to years,
|
||
its implicit conversion sequence to years is worse than its implicit conversion sequence tomonths ([[over.ics.rank]](over.ics.rank "12.2.4.3 Ranking implicit conversion sequences"))[.](#ymwd.nonmembers-6.sentence-1)
|
||
|
||
[7](#ymwd.nonmembers-7)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7498)
|
||
|
||
*Returns*: ymwd + (-dm)[.](#ymwd.nonmembers-7.sentence-1)
|
||
|
||
[ð](#lib:operator+,year_month_weekday__)
|
||
|
||
`constexpr year_month_weekday operator+(const year_month_weekday& ymwd, const years& dy) noexcept;
|
||
`
|
||
|
||
[8](#ymwd.nonmembers-8)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7509)
|
||
|
||
*Returns*: {ymwd.year()+dy, ymwd.month(), ymwd.weekday_indexed()}[.](#ymwd.nonmembers-8.sentence-1)
|
||
|
||
[ð](#lib:operator+,year_month_weekday___)
|
||
|
||
`constexpr year_month_weekday operator+(const years& dy, const year_month_weekday& ymwd) noexcept;
|
||
`
|
||
|
||
[9](#ymwd.nonmembers-9)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7520)
|
||
|
||
*Returns*: ymwd + dy[.](#ymwd.nonmembers-9.sentence-1)
|
||
|
||
[ð](#lib:operator-,year_month_weekday_)
|
||
|
||
`constexpr year_month_weekday operator-(const year_month_weekday& ymwd, const years& dy) noexcept;
|
||
`
|
||
|
||
[10](#ymwd.nonmembers-10)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7531)
|
||
|
||
*Returns*: ymwd + (-dy)[.](#ymwd.nonmembers-10.sentence-1)
|
||
|
||
[ð](#lib:operator%3c%3c,year_month_weekday)
|
||
|
||
`template<class charT, class traits>
|
||
basic_ostream<charT, traits>&
|
||
operator<<(basic_ostream<charT, traits>& os, const year_month_weekday& ymwd);
|
||
`
|
||
|
||
[11](#ymwd.nonmembers-11)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7544)
|
||
|
||
*Effects*: Equivalent to:return os << format(os.getloc(), *STATICALLY-WIDEN*<charT>("{}/{:L}/{:L}"),
|
||
ymwd.year(), ymwd.month(), ymwd.weekday_indexed());
|
||
|
||
### [30.8.17](#ymwdlast) Class year_month_weekday_last [[time.cal.ymwdlast]](time.cal.ymwdlast)
|
||
|
||
#### [30.8.17.1](#ymwdlast.overview) Overview [[time.cal.ymwdlast.overview]](time.cal.ymwdlast.overview)
|
||
|
||
namespace std::chrono {class year_month_weekday_last { chrono::year y_; // *exposition only* chrono::month m_; // *exposition only* chrono::weekday_last wdl_; // *exposition only*public:constexpr year_month_weekday_last(const chrono::year& y, const chrono::month& m, const chrono::weekday_last& wdl) noexcept; constexpr year_month_weekday_last& operator+=(const months& m) noexcept; constexpr year_month_weekday_last& operator-=(const months& m) noexcept; constexpr year_month_weekday_last& operator+=(const years& y) noexcept; constexpr year_month_weekday_last& operator-=(const years& y) noexcept; constexpr chrono::year year() const noexcept; constexpr chrono::month month() const noexcept; constexpr chrono::weekday weekday() const noexcept; constexpr chrono::weekday_last weekday_last() const noexcept; constexpr operator sys_days() const noexcept; constexpr explicit operator local_days() const noexcept; constexpr bool ok() const noexcept; };}
|
||
|
||
[1](#ymwdlast.overview-1)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7586)
|
||
|
||
year_month_weekday_last represents a specific year, month,
|
||
and last weekday of the month[.](#ymwdlast.overview-1.sentence-1)
|
||
|
||
year_month_weekday_last is a field-based time point with a resolution of days,
|
||
except that it is restricted to pointing to the last weekday of a year and month[.](#ymwdlast.overview-1.sentence-2)
|
||
|
||
[*Note [1](#ymwdlast.overview-note-1)*:
|
||
|
||
year_month_weekday_last supports years- and months-oriented arithmetic,
|
||
but not days-oriented arithmetic[.](#ymwdlast.overview-1.sentence-3)
|
||
|
||
For the latter, there is a conversion to sys_days,
|
||
which efficiently supports days-oriented arithmetic[.](#ymwdlast.overview-1.sentence-4)
|
||
|
||
â *end note*]
|
||
|
||
year_month_weekday_last meets the [*Cpp17EqualityComparable*](utility.arg.requirements#:Cpp17EqualityComparable "16.4.4.2 Template argument requirements [utility.arg.requirements]") (Table [28](utility.arg.requirements#tab:cpp17.equalitycomparable "Table 28: Cpp17EqualityComparable requirements")) requirements[.](#ymwdlast.overview-1.sentence-5)
|
||
|
||
[2](#ymwdlast.overview-2)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7599)
|
||
|
||
year_month_weekday_last is a trivially copyable and standard-layout class type[.](#ymwdlast.overview-2.sentence-1)
|
||
|
||
#### [30.8.17.2](#ymwdlast.members) Member functions [[time.cal.ymwdlast.members]](time.cal.ymwdlast.members)
|
||
|
||
[ð](#lib:year_month_weekday_last,constructor)
|
||
|
||
`constexpr year_month_weekday_last(const chrono::year& y, const chrono::month& m,
|
||
const chrono::weekday_last& wdl) noexcept;
|
||
`
|
||
|
||
[1](#ymwdlast.members-1)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7611)
|
||
|
||
*Effects*: Initializes y_ with y, m_ with m, and wdl_ with wdl[.](#ymwdlast.members-1.sentence-1)
|
||
|
||
[ð](#lib:operator+=,year_month_weekday_last)
|
||
|
||
`constexpr year_month_weekday_last& operator+=(const months& m) noexcept;
|
||
`
|
||
|
||
[2](#ymwdlast.members-2)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7622)
|
||
|
||
*Constraints*: If the argument supplied by the caller for the months parameter
|
||
is convertible to years,
|
||
its implicit conversion sequence to years is worse than its implicit conversion sequence tomonths ([[over.ics.rank]](over.ics.rank "12.2.4.3 Ranking implicit conversion sequences"))[.](#ymwdlast.members-2.sentence-1)
|
||
|
||
[3](#ymwdlast.members-3)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7630)
|
||
|
||
*Effects*: *this = *this + m[.](#ymwdlast.members-3.sentence-1)
|
||
|
||
[4](#ymwdlast.members-4)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7634)
|
||
|
||
*Returns*: *this[.](#ymwdlast.members-4.sentence-1)
|
||
|
||
[ð](#lib:operator-=,year_month_weekday_last)
|
||
|
||
`constexpr year_month_weekday_last& operator-=(const months& m) noexcept;
|
||
`
|
||
|
||
[5](#ymwdlast.members-5)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7645)
|
||
|
||
*Constraints*: If the argument supplied by the caller for the months parameter
|
||
is convertible to years,
|
||
its implicit conversion sequence to years is worse than its implicit conversion sequence tomonths ([[over.ics.rank]](over.ics.rank "12.2.4.3 Ranking implicit conversion sequences"))[.](#ymwdlast.members-5.sentence-1)
|
||
|
||
[6](#ymwdlast.members-6)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7653)
|
||
|
||
*Effects*: *this = *this - m[.](#ymwdlast.members-6.sentence-1)
|
||
|
||
[7](#ymwdlast.members-7)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7657)
|
||
|
||
*Returns*: *this[.](#ymwdlast.members-7.sentence-1)
|
||
|
||
[ð](#lib:operator+=,year_month_weekday_last_)
|
||
|
||
`constexpr year_month_weekday_last& operator+=(const years& y) noexcept;
|
||
`
|
||
|
||
[8](#ymwdlast.members-8)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7668)
|
||
|
||
*Effects*: *this = *this + y[.](#ymwdlast.members-8.sentence-1)
|
||
|
||
[9](#ymwdlast.members-9)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7672)
|
||
|
||
*Returns*: *this[.](#ymwdlast.members-9.sentence-1)
|
||
|
||
[ð](#lib:operator-=,year_month_weekday_last_)
|
||
|
||
`constexpr year_month_weekday_last& operator-=(const years& y) noexcept;
|
||
`
|
||
|
||
[10](#ymwdlast.members-10)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7683)
|
||
|
||
*Effects*: *this = *this - y[.](#ymwdlast.members-10.sentence-1)
|
||
|
||
[11](#ymwdlast.members-11)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7687)
|
||
|
||
*Returns*: *this[.](#ymwdlast.members-11.sentence-1)
|
||
|
||
[ð](#lib:year,year_month_weekday_last)
|
||
|
||
`constexpr chrono::year year() const noexcept;
|
||
`
|
||
|
||
[12](#ymwdlast.members-12)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7698)
|
||
|
||
*Returns*: y_[.](#ymwdlast.members-12.sentence-1)
|
||
|
||
[ð](#lib:month,year_month_weekday_last)
|
||
|
||
`constexpr chrono::month month() const noexcept;
|
||
`
|
||
|
||
[13](#ymwdlast.members-13)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7709)
|
||
|
||
*Returns*: m_[.](#ymwdlast.members-13.sentence-1)
|
||
|
||
[ð](#lib:weekday,year_month_weekday_last)
|
||
|
||
`constexpr chrono::weekday weekday() const noexcept;
|
||
`
|
||
|
||
[14](#ymwdlast.members-14)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7720)
|
||
|
||
*Returns*: wdl_.weekday()[.](#ymwdlast.members-14.sentence-1)
|
||
|
||
[ð](#lib:weekday_last,year_month_weekday_last)
|
||
|
||
`constexpr chrono::weekday_last weekday_last() const noexcept;
|
||
`
|
||
|
||
[15](#ymwdlast.members-15)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7731)
|
||
|
||
*Returns*: wdl_[.](#ymwdlast.members-15.sentence-1)
|
||
|
||
[ð](#lib:operator_sys_days,year_month_weekday_last)
|
||
|
||
`constexpr operator sys_days() const noexcept;
|
||
`
|
||
|
||
[16](#ymwdlast.members-16)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7742)
|
||
|
||
*Returns*: If ok() == true,
|
||
returns a sys_days that represents
|
||
the last weekday() of year()/month()[.](#ymwdlast.members-16.sentence-1)
|
||
|
||
Otherwise the returned value is unspecified[.](#ymwdlast.members-16.sentence-2)
|
||
|
||
[ð](#lib:operator_local_days,year_month_weekday_last)
|
||
|
||
`constexpr explicit operator local_days() const noexcept;
|
||
`
|
||
|
||
[17](#ymwdlast.members-17)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7756)
|
||
|
||
*Returns*: local_days{sys_days{*this}.time_since_epoch()}[.](#ymwdlast.members-17.sentence-1)
|
||
|
||
[ð](#lib:ok,year_month_weekday_last)
|
||
|
||
`constexpr bool ok() const noexcept;
|
||
`
|
||
|
||
[18](#ymwdlast.members-18)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7767)
|
||
|
||
*Returns*: y_.ok() && m_.ok() && wdl_.ok()[.](#ymwdlast.members-18.sentence-1)
|
||
|
||
#### [30.8.17.3](#ymwdlast.nonmembers) Non-member functions [[time.cal.ymwdlast.nonmembers]](time.cal.ymwdlast.nonmembers)
|
||
|
||
[ð](#lib:operator==,year_month_weekday_last)
|
||
|
||
`constexpr bool operator==(const year_month_weekday_last& x,
|
||
const year_month_weekday_last& y) noexcept;
|
||
`
|
||
|
||
[1](#ymwdlast.nonmembers-1)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7781)
|
||
|
||
*Returns*: x.year() == y.year() && x.month() == y.month() && x.weekday_last() == y.weekday_last()
|
||
|
||
[ð](#lib:operator+,year_month_weekday_last)
|
||
|
||
`constexpr year_month_weekday_last
|
||
operator+(const year_month_weekday_last& ymwdl, const months& dm) noexcept;
|
||
`
|
||
|
||
[2](#ymwdlast.nonmembers-2)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7795)
|
||
|
||
*Constraints*: If the argument supplied by the caller for the months parameter
|
||
is convertible to years,
|
||
its implicit conversion sequence to years is worse than its implicit conversion sequence tomonths ([[over.ics.rank]](over.ics.rank "12.2.4.3 Ranking implicit conversion sequences"))[.](#ymwdlast.nonmembers-2.sentence-1)
|
||
|
||
[3](#ymwdlast.nonmembers-3)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7803)
|
||
|
||
*Returns*: (ymwdl.year() / ymwdl.month() + dm) / ymwdl.weekday_last()[.](#ymwdlast.nonmembers-3.sentence-1)
|
||
|
||
[ð](#lib:operator+,year_month_weekday_last_)
|
||
|
||
`constexpr year_month_weekday_last
|
||
operator+(const months& dm, const year_month_weekday_last& ymwdl) noexcept;
|
||
`
|
||
|
||
[4](#ymwdlast.nonmembers-4)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7815)
|
||
|
||
*Constraints*: If the argument supplied by the caller for the months parameter
|
||
is convertible to years,
|
||
its implicit conversion sequence to years is worse than its implicit conversion sequence tomonths ([[over.ics.rank]](over.ics.rank "12.2.4.3 Ranking implicit conversion sequences"))[.](#ymwdlast.nonmembers-4.sentence-1)
|
||
|
||
[5](#ymwdlast.nonmembers-5)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7823)
|
||
|
||
*Returns*: ymwdl + dm[.](#ymwdlast.nonmembers-5.sentence-1)
|
||
|
||
[ð](#lib:operator-,year_month_weekday_last)
|
||
|
||
`constexpr year_month_weekday_last
|
||
operator-(const year_month_weekday_last& ymwdl, const months& dm) noexcept;
|
||
`
|
||
|
||
[6](#ymwdlast.nonmembers-6)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7835)
|
||
|
||
*Constraints*: If the argument supplied by the caller for the months parameter
|
||
is convertible to years,
|
||
its implicit conversion sequence to years is worse than its implicit conversion sequence tomonths ([[over.ics.rank]](over.ics.rank "12.2.4.3 Ranking implicit conversion sequences"))[.](#ymwdlast.nonmembers-6.sentence-1)
|
||
|
||
[7](#ymwdlast.nonmembers-7)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7843)
|
||
|
||
*Returns*: ymwdl + (-dm)[.](#ymwdlast.nonmembers-7.sentence-1)
|
||
|
||
[ð](#lib:operator+,year_month_weekday_last__)
|
||
|
||
`constexpr year_month_weekday_last
|
||
operator+(const year_month_weekday_last& ymwdl, const years& dy) noexcept;
|
||
`
|
||
|
||
[8](#ymwdlast.nonmembers-8)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7855)
|
||
|
||
*Returns*: {ymwdl.year()+dy, ymwdl.month(), ymwdl.weekday_last()}[.](#ymwdlast.nonmembers-8.sentence-1)
|
||
|
||
[ð](#lib:operator+,year_month_weekday_last___)
|
||
|
||
`constexpr year_month_weekday_last
|
||
operator+(const years& dy, const year_month_weekday_last& ymwdl) noexcept;
|
||
`
|
||
|
||
[9](#ymwdlast.nonmembers-9)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7867)
|
||
|
||
*Returns*: ymwdl + dy[.](#ymwdlast.nonmembers-9.sentence-1)
|
||
|
||
[ð](#lib:operator-,year_month_weekday_last_)
|
||
|
||
`constexpr year_month_weekday_last
|
||
operator-(const year_month_weekday_last& ymwdl, const years& dy) noexcept;
|
||
`
|
||
|
||
[10](#ymwdlast.nonmembers-10)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7879)
|
||
|
||
*Returns*: ymwdl + (-dy)[.](#ymwdlast.nonmembers-10.sentence-1)
|
||
|
||
[ð](#lib:operator%3c%3c,year_month_weekday_last)
|
||
|
||
`template<class charT, class traits>
|
||
basic_ostream<charT, traits>&
|
||
operator<<(basic_ostream<charT, traits>& os, const year_month_weekday_last& ymwdl);
|
||
`
|
||
|
||
[11](#ymwdlast.nonmembers-11)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7892)
|
||
|
||
*Effects*: Equivalent to:return os << format(os.getloc(), *STATICALLY-WIDEN*<charT>("{}/{:L}/{:L}"),
|
||
ymwdl.year(), ymwdl.month(), ymwdl.weekday_last());
|
||
|
||
### [30.8.18](#operators) Conventional syntax operators [[time.cal.operators]](time.cal.operators)
|
||
|
||
[1](#operators-1)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7904)
|
||
|
||
A set of overloaded operator/ functions provides
|
||
a conventional syntax for the creation of civil calendar dates[.](#operators-1.sentence-1)
|
||
|
||
[2](#operators-2)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7908)
|
||
|
||
[*Note [1](#operators-note-1)*:
|
||
|
||
The year, month, and day are accepted in any of the following 3 orders:*year*/*month*/*day**month*/*day*/*year**day*/*month*/*year*
|
||
|
||
Anywhere a *day* is needed, any of the following can also be specified:last*weekday*[*i*]*weekday*[last]
|
||
|
||
â *end note*]
|
||
|
||
[3](#operators-3)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7925)
|
||
|
||
[*Note [2](#operators-note-2)*:
|
||
|
||
Partial-date types such as year_month and month_day can be created by not applying the second division operator
|
||
for any of the three orders[.](#operators-3.sentence-1)
|
||
|
||
For example:year_month ym = 2015y/April;
|
||
month_day md1 = April/4;
|
||
month_day md2 = 4d/April;
|
||
|
||
â *end note*]
|
||
|
||
[4](#operators-4)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7937)
|
||
|
||
[*Example [1](#operators-example-1)*: auto a = 2015/4/4; // a == int(125)auto b = 2015y/4/4; // b == year_month_day{year(2015), month(4), day(4)}auto c = 2015y/4d/April; // error: no viable operator/ for first /auto d = 2015/April/4; // error: no viable operator/ for first / â *end example*]
|
||
|
||
[ð](#operators-itemdecl:1)
|
||
|
||
`constexpr year_month
|
||
operator/(const year& y, const month& m) noexcept;
|
||
`
|
||
|
||
[5](#operators-5)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7953)
|
||
|
||
*Returns*: {y, m}[.](#operators-5.sentence-1)
|
||
|
||
[ð](#operators-itemdecl:2)
|
||
|
||
`constexpr year_month
|
||
operator/(const year& y, int m) noexcept;
|
||
`
|
||
|
||
[6](#operators-6)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7964)
|
||
|
||
*Returns*: y / month(m)[.](#operators-6.sentence-1)
|
||
|
||
[ð](#operators-itemdecl:3)
|
||
|
||
`constexpr month_day
|
||
operator/(const month& m, const day& d) noexcept;
|
||
`
|
||
|
||
[7](#operators-7)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7975)
|
||
|
||
*Returns*: {m, d}[.](#operators-7.sentence-1)
|
||
|
||
[ð](#operators-itemdecl:4)
|
||
|
||
`constexpr month_day
|
||
operator/(const month& m, int d) noexcept;
|
||
`
|
||
|
||
[8](#operators-8)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7986)
|
||
|
||
*Returns*: m / day(d)[.](#operators-8.sentence-1)
|
||
|
||
[ð](#operators-itemdecl:5)
|
||
|
||
`constexpr month_day
|
||
operator/(int m, const day& d) noexcept;
|
||
`
|
||
|
||
[9](#operators-9)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L7997)
|
||
|
||
*Returns*: month(m) / d[.](#operators-9.sentence-1)
|
||
|
||
[ð](#operators-itemdecl:6)
|
||
|
||
`constexpr month_day
|
||
operator/(const day& d, const month& m) noexcept;
|
||
`
|
||
|
||
[10](#operators-10)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L8008)
|
||
|
||
*Returns*: m / d[.](#operators-10.sentence-1)
|
||
|
||
[ð](#operators-itemdecl:7)
|
||
|
||
`constexpr month_day
|
||
operator/(const day& d, int m) noexcept;
|
||
`
|
||
|
||
[11](#operators-11)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L8019)
|
||
|
||
*Returns*: month(m) / d[.](#operators-11.sentence-1)
|
||
|
||
[ð](#operators-itemdecl:8)
|
||
|
||
`constexpr month_day_last
|
||
operator/(const month& m, last_spec) noexcept;
|
||
`
|
||
|
||
[12](#operators-12)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L8030)
|
||
|
||
*Returns*: month_day_last{m}[.](#operators-12.sentence-1)
|
||
|
||
[ð](#operators-itemdecl:9)
|
||
|
||
`constexpr month_day_last
|
||
operator/(int m, last_spec) noexcept;
|
||
`
|
||
|
||
[13](#operators-13)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L8041)
|
||
|
||
*Returns*: month(m) / last[.](#operators-13.sentence-1)
|
||
|
||
[ð](#operators-itemdecl:10)
|
||
|
||
`constexpr month_day_last
|
||
operator/(last_spec, const month& m) noexcept;
|
||
`
|
||
|
||
[14](#operators-14)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L8052)
|
||
|
||
*Returns*: m / last[.](#operators-14.sentence-1)
|
||
|
||
[ð](#operators-itemdecl:11)
|
||
|
||
`constexpr month_day_last
|
||
operator/(last_spec, int m) noexcept;
|
||
`
|
||
|
||
[15](#operators-15)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L8063)
|
||
|
||
*Returns*: month(m) / last[.](#operators-15.sentence-1)
|
||
|
||
[ð](#operators-itemdecl:12)
|
||
|
||
`constexpr month_weekday
|
||
operator/(const month& m, const weekday_indexed& wdi) noexcept;
|
||
`
|
||
|
||
[16](#operators-16)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L8074)
|
||
|
||
*Returns*: {m, wdi}[.](#operators-16.sentence-1)
|
||
|
||
[ð](#operators-itemdecl:13)
|
||
|
||
`constexpr month_weekday
|
||
operator/(int m, const weekday_indexed& wdi) noexcept;
|
||
`
|
||
|
||
[17](#operators-17)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L8085)
|
||
|
||
*Returns*: month(m) / wdi[.](#operators-17.sentence-1)
|
||
|
||
[ð](#operators-itemdecl:14)
|
||
|
||
`constexpr month_weekday
|
||
operator/(const weekday_indexed& wdi, const month& m) noexcept;
|
||
`
|
||
|
||
[18](#operators-18)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L8096)
|
||
|
||
*Returns*: m / wdi[.](#operators-18.sentence-1)
|
||
|
||
[ð](#operators-itemdecl:15)
|
||
|
||
`constexpr month_weekday
|
||
operator/(const weekday_indexed& wdi, int m) noexcept;
|
||
`
|
||
|
||
[19](#operators-19)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L8107)
|
||
|
||
*Returns*: month(m) / wdi[.](#operators-19.sentence-1)
|
||
|
||
[ð](#operators-itemdecl:16)
|
||
|
||
`constexpr month_weekday_last
|
||
operator/(const month& m, const weekday_last& wdl) noexcept;
|
||
`
|
||
|
||
[20](#operators-20)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L8118)
|
||
|
||
*Returns*: {m, wdl}[.](#operators-20.sentence-1)
|
||
|
||
[ð](#operators-itemdecl:17)
|
||
|
||
`constexpr month_weekday_last
|
||
operator/(int m, const weekday_last& wdl) noexcept;
|
||
`
|
||
|
||
[21](#operators-21)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L8129)
|
||
|
||
*Returns*: month(m) / wdl[.](#operators-21.sentence-1)
|
||
|
||
[ð](#operators-itemdecl:18)
|
||
|
||
`constexpr month_weekday_last
|
||
operator/(const weekday_last& wdl, const month& m) noexcept;
|
||
`
|
||
|
||
[22](#operators-22)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L8140)
|
||
|
||
*Returns*: m / wdl[.](#operators-22.sentence-1)
|
||
|
||
[ð](#operators-itemdecl:19)
|
||
|
||
`constexpr month_weekday_last
|
||
operator/(const weekday_last& wdl, int m) noexcept;
|
||
`
|
||
|
||
[23](#operators-23)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L8151)
|
||
|
||
*Returns*: month(m) / wdl[.](#operators-23.sentence-1)
|
||
|
||
[ð](#operators-itemdecl:20)
|
||
|
||
`constexpr year_month_day
|
||
operator/(const year_month& ym, const day& d) noexcept;
|
||
`
|
||
|
||
[24](#operators-24)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L8162)
|
||
|
||
*Returns*: {ym.year(), ym.month(), d}[.](#operators-24.sentence-1)
|
||
|
||
[ð](#operators-itemdecl:21)
|
||
|
||
`constexpr year_month_day
|
||
operator/(const year_month& ym, int d) noexcept;
|
||
`
|
||
|
||
[25](#operators-25)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L8173)
|
||
|
||
*Returns*: ym / day(d)[.](#operators-25.sentence-1)
|
||
|
||
[ð](#operators-itemdecl:22)
|
||
|
||
`constexpr year_month_day
|
||
operator/(const year& y, const month_day& md) noexcept;
|
||
`
|
||
|
||
[26](#operators-26)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L8184)
|
||
|
||
*Returns*: y / md.month() / md.day()[.](#operators-26.sentence-1)
|
||
|
||
[ð](#operators-itemdecl:23)
|
||
|
||
`constexpr year_month_day
|
||
operator/(int y, const month_day& md) noexcept;
|
||
`
|
||
|
||
[27](#operators-27)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L8195)
|
||
|
||
*Returns*: year(y) / md[.](#operators-27.sentence-1)
|
||
|
||
[ð](#operators-itemdecl:24)
|
||
|
||
`constexpr year_month_day
|
||
operator/(const month_day& md, const year& y) noexcept;
|
||
`
|
||
|
||
[28](#operators-28)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L8206)
|
||
|
||
*Returns*: y / md[.](#operators-28.sentence-1)
|
||
|
||
[ð](#operators-itemdecl:25)
|
||
|
||
`constexpr year_month_day
|
||
operator/(const month_day& md, int y) noexcept;
|
||
`
|
||
|
||
[29](#operators-29)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L8217)
|
||
|
||
*Returns*: year(y) / md[.](#operators-29.sentence-1)
|
||
|
||
[ð](#operators-itemdecl:26)
|
||
|
||
`constexpr year_month_day_last
|
||
operator/(const year_month& ym, last_spec) noexcept;
|
||
`
|
||
|
||
[30](#operators-30)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L8228)
|
||
|
||
*Returns*: {ym.year(), month_day_last{ym.month()}}[.](#operators-30.sentence-1)
|
||
|
||
[ð](#operators-itemdecl:27)
|
||
|
||
`constexpr year_month_day_last
|
||
operator/(const year& y, const month_day_last& mdl) noexcept;
|
||
`
|
||
|
||
[31](#operators-31)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L8239)
|
||
|
||
*Returns*: {y, mdl}[.](#operators-31.sentence-1)
|
||
|
||
[ð](#operators-itemdecl:28)
|
||
|
||
`constexpr year_month_day_last
|
||
operator/(int y, const month_day_last& mdl) noexcept;
|
||
`
|
||
|
||
[32](#operators-32)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L8250)
|
||
|
||
*Returns*: year(y) / mdl[.](#operators-32.sentence-1)
|
||
|
||
[ð](#operators-itemdecl:29)
|
||
|
||
`constexpr year_month_day_last
|
||
operator/(const month_day_last& mdl, const year& y) noexcept;
|
||
`
|
||
|
||
[33](#operators-33)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L8261)
|
||
|
||
*Returns*: y / mdl[.](#operators-33.sentence-1)
|
||
|
||
[ð](#operators-itemdecl:30)
|
||
|
||
`constexpr year_month_day_last
|
||
operator/(const month_day_last& mdl, int y) noexcept;
|
||
`
|
||
|
||
[34](#operators-34)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L8272)
|
||
|
||
*Returns*: year(y) / mdl[.](#operators-34.sentence-1)
|
||
|
||
[ð](#operators-itemdecl:31)
|
||
|
||
`constexpr year_month_weekday
|
||
operator/(const year_month& ym, const weekday_indexed& wdi) noexcept;
|
||
`
|
||
|
||
[35](#operators-35)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L8283)
|
||
|
||
*Returns*: {ym.year(), ym.month(), wdi}[.](#operators-35.sentence-1)
|
||
|
||
[ð](#operators-itemdecl:32)
|
||
|
||
`constexpr year_month_weekday
|
||
operator/(const year& y, const month_weekday& mwd) noexcept;
|
||
`
|
||
|
||
[36](#operators-36)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L8294)
|
||
|
||
*Returns*: {y, mwd.month(), mwd.weekday_indexed()}[.](#operators-36.sentence-1)
|
||
|
||
[ð](#operators-itemdecl:33)
|
||
|
||
`constexpr year_month_weekday
|
||
operator/(int y, const month_weekday& mwd) noexcept;
|
||
`
|
||
|
||
[37](#operators-37)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L8305)
|
||
|
||
*Returns*: year(y) / mwd[.](#operators-37.sentence-1)
|
||
|
||
[ð](#operators-itemdecl:34)
|
||
|
||
`constexpr year_month_weekday
|
||
operator/(const month_weekday& mwd, const year& y) noexcept;
|
||
`
|
||
|
||
[38](#operators-38)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L8316)
|
||
|
||
*Returns*: y / mwd[.](#operators-38.sentence-1)
|
||
|
||
[ð](#operators-itemdecl:35)
|
||
|
||
`constexpr year_month_weekday
|
||
operator/(const month_weekday& mwd, int y) noexcept;
|
||
`
|
||
|
||
[39](#operators-39)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L8327)
|
||
|
||
*Returns*: year(y) / mwd[.](#operators-39.sentence-1)
|
||
|
||
[ð](#operators-itemdecl:36)
|
||
|
||
`constexpr year_month_weekday_last
|
||
operator/(const year_month& ym, const weekday_last& wdl) noexcept;
|
||
`
|
||
|
||
[40](#operators-40)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L8338)
|
||
|
||
*Returns*: {ym.year(), ym.month(), wdl}[.](#operators-40.sentence-1)
|
||
|
||
[ð](#operators-itemdecl:37)
|
||
|
||
`constexpr year_month_weekday_last
|
||
operator/(const year& y, const month_weekday_last& mwdl) noexcept;
|
||
`
|
||
|
||
[41](#operators-41)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L8349)
|
||
|
||
*Returns*: {y, mwdl.month(), mwdl.weekday_last()}[.](#operators-41.sentence-1)
|
||
|
||
[ð](#operators-itemdecl:38)
|
||
|
||
`constexpr year_month_weekday_last
|
||
operator/(int y, const month_weekday_last& mwdl) noexcept;
|
||
`
|
||
|
||
[42](#operators-42)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L8360)
|
||
|
||
*Returns*: year(y) / mwdl[.](#operators-42.sentence-1)
|
||
|
||
[ð](#operators-itemdecl:39)
|
||
|
||
`constexpr year_month_weekday_last
|
||
operator/(const month_weekday_last& mwdl, const year& y) noexcept;
|
||
`
|
||
|
||
[43](#operators-43)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L8371)
|
||
|
||
*Returns*: y / mwdl[.](#operators-43.sentence-1)
|
||
|
||
[ð](#operators-itemdecl:40)
|
||
|
||
`constexpr year_month_weekday_last
|
||
operator/(const month_weekday_last& mwdl, int y) noexcept;
|
||
`
|
||
|
||
[44](#operators-44)
|
||
|
||
[#](http://github.com/Eelis/draft/tree/9adde4bc1c62ec234483e63ea3b70a59724c745a/source/time.tex#L8382)
|
||
|
||
*Returns*: year(y) / mwdl[.](#operators-44.sentence-1)
|