0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

29.8 The civil calendar [time.cal] C++N4910:2022 (676) p1393.cpp

Posted at

はじめに(Introduction)

N4910 Working Draft, Standard for Programming Language C++

n4910は、ISO/IEC JTC1 SC22 WG21の作業原案(Working Draft)です。
公式のISO/IEC 14882原本ではありません。
ISO/IEC JTC1 SC22 WG21では、可能な限り作業文書を公開し、幅広い意見を求めています。
一連の記事はコード断片をコンパイルできる形にする方法を検討してコンパイル、リンク、実行して、規格案の原文と処理系(g++, Clang++)との違いを確認し、技術内容を検討し、ISO/IEC JTC1 SC22 WG21にフィードバックするために用います。
また、CERT C++, MISRA C++等のコーディング標準のコード断片をコンパイルする際の参考にさせていただこうと考えています。CERT C++, MISRA C++が標準化の動きとの時間的なずれがあれば確認できれば幸いです。また、boostライブラリとの関連、Linux OS, TOPPERSカーネル、g++(GCC), clang++(LLVM)との関係も調査中です。
何か、抜け漏れ、耳より情報がありましたらおしらせくださると幸いです。

<この項は書きかけです。順次追記します。>

背景(back ground)

C/C++でコンパイルエラーが出ると、途方にくれることがしばしばあります。
何回かに1回は、該当するエラーが検索できます。
ただ、条件が違っていて、そこでの修正方法では目的を達成しないこともしばしばです。いろいろな条件のコンパイルエラーとその対応方法について、広く記録することによって、いつか同じエラーに遭遇した時にやくに立つことを目指しています。

この半年の間で、三度、自分のネットでの記録に助けられたことがあります。
また過去に解決できなかった記録を10種類以上、最近になって解決できたことがあります。それは、主に次の3つの情報に基づいています。

cpprefjp - C++日本語リファレンス

コンパイラの実装状況

また
https://researchmap.jp/joub9b3my-1797580/#_1797580
に記載したサイトのお世話になっています。

作業方針(sequence)

Clang++では-std=c++03, C++2bの2種類
g++では-std=c++03, c++2bの2種類
でコンパイルし、

1)コンパイルエラーを収集する。
2)コンパイルエラーをなくす方法を検討する。
コンパイルエラーになる例を示すだけが目的のコードは、コンパイルエラーをなくすのではなく、コンパイルエラーの種類を収集するだけにする。
文法を示すのが目的のコード場合に、コンパイルエラーをなくすのに手間がかかる場合は、順次作業します。
3)リンクエラーをなくす方法を検討する。
文法を示すのが目的のコード場合に、リンクエラーをなくすのに手間がかかる場合は、順次作業します。
4)意味のある出力を作る。
コンパイル、リンクが通っても、意味のある出力を示そうとすると、コンパイル・リンクエラーが出て収拾できそうにない場合がある。順次作業します。

1)だけのものから4)まで進んだものと色々ある状態です。一歩でも前に進むご助言をお待ちしています。「検討事項」の欄に現状を記録するようにしています。

C++N4910:2022 Standard Working Draft on ISO/IEC 14882(0) sample code compile list

C++N4741, 2018 Standard Working Draft on ISO/IEC 14882 sample code compile list

C++N4606, 2016符号断片編纂一覧(example code compile list)

C++N4606, 2016 Working Draft 2016, ISO/IEC 14882, C++ standard(1) Example code compile list
https://qiita.com/kaizen_nagoya/items/df5d62c35bd6ed1c3d43/

C++N3242, 2011 sample code compile list on clang++ and g++

編纂器(Compiler)

clang++ --version

Debian clang version 14.0.5-++20220610033153+c12386ae247c-1~exp1~20220610153237.151
Target: x86_64-pc-linux-gnu, Thread model: posix, InstalledDir: /usr/bin

g++- --version

g++ (GCC) 12.1.0 Copyright (C) 2022 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

29.8 The civil calendar [time.cal] C++N4910:2022 (676) p1393.cpp

算譜(source code)

p1393.cpp
// C++N4910 Committee Draft, Standard for Programming Language C++
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/n4910.pdf
const char * n4910 = "29.8 The civil calendar [time.cal] C++N4910:2022 (676) p1393.cpp";
// Debian clang version 14.0.5-++20220610033153+c12386ae247c-
// g++ (GCC) 12.1.0 Copyright (C) 2022 Free Software Foundation, Inc.
// Edited by Dr. OGAWA Kiyoshi. Compile procedure and results record.
// C++N4910:2022 Standard Working Draft on ISO/IEC 14882(0) sample code compile list
// https://qiita.com/kaizen_nagoya/items/fc957ddddd402004bb91

#include "N4910.h"

using namespace std;

// 29.8 The civil calendar [time.cal]
// 29.8.1 In general [time.cal.general]
// 29.8.2 Class last_spec [time.cal.last]
namespace std::chrono {
struct last_spec {
    explicit last_spec() = default;
};
}
// The type last_spec is used in conjunction with other calendar types to specify the last in a sequence. For example, depending on context, it can represent the last day of a month, or the last day of the week of a month.
// 29.8.3 Class day [time.cal.day]
// 29.8.3.1 Overview [time.cal.day.overview]
namespace std::chrono {
class day {
    unsigned char d_;
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;
};
}
constexpr day& operator++() noexcept;
// Effects: ++d_. Returns: *this.
// exposition only
//  day represents a day of a month. It normally holds values in the range 1 to 31, but may hold non-negative values outside this range. It can be constructed with any unsigned value, which will be subsequently truncated to fit into day’s unspecified internal storage. day meets the Cpp17EqualityComparable (Table 27) and Cpp17LessThanComparable (Table 28) requirements, and participates in basic arithmetic with days objects, which represent a difference between two day objects.
//  day is a trivially copyable and standard-layout class type.
// 29.8.3.2 Member functions [time.cal.day.members]
constexpr explicit day(unsigned d) noexcept;
constexpr day operator++(int) noexcept;
// Effects: ++(*this).
// Returns: A copy of *this as it existed on entry to this member function.
constexpr day& operator--() noexcept;
// Effects: Equivalent to: --d_. Returns: *this.
constexpr day operator--(int) noexcept;
// Effects: --(*this).
// Returns: A copy of *this as it existed on entry to this member function.
constexpr day& operator+=(const days& d) noexcept;
// Effects: *this = *this + d. Returns: *this.
constexpr day& operator-=(const days& d) noexcept;
// Effects: *this = *this - d. Returns: *this.
constexpr explicit operator unsigned() const noexcept;
// Returns: d_.
constexpr bool ok() const noexcept;
// Returns: 1 <= d_ && d_ <= 31.
// 29.8.3.3 Non-member functions [time.cal.day.nonmembers]
constexpr bool operator==(const day& x, const day& y) noexcept;
// Returns: unsigned{x} == unsigned{y}.
constexpr strong_ordering operator<=>(const day& x, const day& y) noexcept;
// Returns: unsigned{x} <=> unsigned{y}.
constexpr day operator+(const day& x, const days& y) noexcept;
// Returns: day(unsigned{x} + y.count()).
constexpr day operator+(const days& x, const day& y) noexcept;
// Returns: y + x.
constexpr day operator-(const day& x, const days& y) noexcept;
// Returns: x + -y.
constexpr days operator-(const day& x, const day& y) noexcept;
// Returns: days{int(unsigned{x}) - int(unsigned{y})}.
template<class charT, class traits>
basic_ostream<charT, traits>&
operator<<(basic_ostream<charT, traits>& os, const day& d);
// Effects: Equivalent to:
return os << (d.ok() ?
              format(STATICALLY-WIDEN<charT>("{:%d}"), d) : format(STATICALLY-WIDEN<charT>("{:%d} is not a valid day"), d));
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);
// Effects: Attempts to parse the input stream is into the day d using the format flags given in the NTCTS fmt as specified in 29.13. If the parse fails to decode a valid day, is.setstate(ios_base::failbit) is called and d is not modified. If %Z is used and successfully parsed, that value will be assigned to *abbrev if abbrev is non-null. If %z (or a modified variant) is used and successfully parsed, that value will be assigned to *offset if offset is non-null.
// Returns: is.
constexpr chrono::day operator""d(unsigned long long d) noexcept;
// Returns: day{static_cast<unsigned>(d)}.
// 29.8.4 Class month  [time.cal.month]
// 29.8.4.1 Overview [time.cal.month.overview]
namespace std::chrono {
class month {
    unsigned char m_;
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;
}
// exposition only
//  month represents a month of a year. It normally holds values in the range 1 to 12, but may hold non-negative values outside this range. It can be constructed with any unsigned value, which will be subsequently truncated to fit into month’s unspecified internal storage. month meets the Cpp17EqualityComparable (Table 27) and Cpp17LessThanComparable (Table 28) requirements, and participates in basic arithmetic with months objects, which represent a difference between two month objects.
// month is a trivially copyable and standard-layout class type.
// 29.8.4.2 Member functions [time.cal.month.members]
constexpr explicit month(unsigned m) noexcept;
// Effects: Initializes m_ with m. The value held is unspecified if m is not in the range [0, 255].
constexpr month& operator++() noexcept;
// Effects: *this += months{1}. Returns: *this.
constexpr month operator++(int) noexcept;
// Effects: ++(*this).
// Returns: A copy of *this as it existed on entry to this member function.
constexpr month& operator--() noexcept;
// Effects: *this -= months{1}. Returns: *this.
constexpr month operator--(int) noexcept;
// Effects: --(*this).
// Returns: A copy of *this as it existed on entry to this member function.
constexpr month& operator+=(const months& m) noexcept;
// Effects: *this = *this + m. Returns: *this.
constexpr month& operator-=(const months& m) noexcept;
// Effects: *this = *this - m. Returns: *this.
constexpr explicit operator unsigned() const noexcept;
// Returns: m_.
constexpr bool ok() const noexcept;
// Returns: 1 <= m_ && m_ <= 12.
// 29.8.4.3 Non-member functions [time.cal.month.nonmembers]
constexpr bool operator==(const month& x, const month& y) noexcept;
// Returns: unsigned{x} == unsigned{y}.
constexpr strong_ordering operator<=>(const month& x, const month& y) noexcept;
// Returns: unsigned{x} <=> unsigned{y}.
constexpr month operator+(const month& x, const months& y) noexcept;
// 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.
// [Note 1: Given a divisor of 12, Euclidean division truncates towards negative infinity and always produces a remainder in the range of [0, 11]. 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().
// [Example 1: February + months{11} == January. —end example] constexpr month operator+(const months& x, const month& y) noexcept;
// Returns: y + x.
constexpr month operator-(const month& x, const months& y) noexcept;
// Returns: x + -y.
constexpr months operator-(const month& x, const month& y) noexcept;
// Returns: If x.ok() == true and y.ok() == true, returns a value m in the range [months{0}, months{11}] satisfying y + m == x. Otherwise the value returned is unspecified.
// [Example 2: January - February == months{11}.
template<class charT, class traits>
basic_ostream<charT, traits>&
operator<<(basic_ostream<charT, traits>& os, const month& m);
// 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)));
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);
// Effects: Attempts to parse the input stream is into the month m using the format flags given in the NTCTS fmt as specified in 29.13. If the parse fails to decode a valid month, is.setstate(ios_- base::failbit) is called and m is not modified. If %Z is used and successfully parsed, that value will be assigned to *abbrev if abbrev is non-null. If %z (or a modified variant) is used and successfully parsed, that value will be assigned to *offset if offset is non-null.
// Returns: is.
// 29.8.5 Class year [time.cal.year]
// 29.8.5.1 Overview [time.cal.year.overview]
namespace std::chrono {
class year {
    short y_;
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;
}
// exposition only
//  year represents a year in the civil calendar. It can represent values in the range [min(), max()]. It can be constructed with any int value, which will be subsequently truncated to fit into year’s unspecified internal storage. year meets the Cpp17EqualityComparable (Table 27) and Cpp17LessThanComparable (Table 28) requirements, and participates in basic arithmetic with years objects, which represent a difference between two year objects.
//  year is a trivially copyable and standard-layout class type.
// 29.8.5.2 Member functions [time.cal.year.members]
constexpr explicit year(int y) noexcept;
// Effects: Initializes y_ with y. The value held is unspecified if y is not in the range [-32767, 32767].
constexpr year& operator++() noexcept;
// Effects: ++y_. Returns: *this.
constexpr year operator++(int) noexcept;
// Effects: ++(*this).
// Effects: --y_. Returns: *this.
// Returns: A copy of *this as it existed on entry to this member function.
constexpr year& operator--() noexcept;
constexpr year operator--(int) noexcept;
// Effects: --(*this).
// Returns: A copy of *this as it existed on entry to this member function.
constexpr year& operator+=(const years& y) noexcept;
// Effects: *this = *this + y. Returns: *this.
constexpr year& operator-=(const years& y) noexcept;
// Effects: *this = *this - y. Returns: *this.
constexpr year operator+() const noexcept;
// Returns: *this.
constexpr year year::operator-() const noexcept;
// Returns: year{-y_}.
constexpr bool is_leap() const noexcept;
// Returns: y_ % 4 == 0 && (y_ % 100 != 0 || y_ % 400 == 0).
constexpr explicit operator int() const noexcept;
// Returns: y_.
constexpr bool ok() const noexcept;
// Returns: min().y_ <= y_ && y_ <= max().y_.
static constexpr year min() noexcept;
// Returns: year{-32767}.
static constexpr year max() noexcept;
// Returns: year{32767}.
// 29.8.5.3 Non-member functions [time.cal.year.nonmembers]
constexpr bool operator==(const year& x, const year& y) noexcept;
// Returns: int{x} == int{y}.
constexpr strong_ordering operator<=>(const year& x, const year& y) noexcept;
// Returns: int{x} <=> int{y}.
constexpr year operator+(const year& x, const years& y) noexcept;
// Returns: year{int{x} + static_cast<int>(y.count())}. constexpr year operator+(const years& x, const year& y) noexcept;
// Returns: y + x.
constexpr year operator-(const year& x, const years& y) noexcept;
// Returns: x + -y.
constexpr years operator-(const year& x, const year& y) noexcept;
// Returns: years{int{x} - int{y}}.
template<class charT, class traits>
basic_ostream<charT, traits>&
operator<<(basic_ostream<charT, traits>& os, const year& y);
// Effects: Equivalent to:
return os << (y.ok() ?
              format(STATICALLY-WIDEN<charT>("{:%Y}"), y) : format(STATICALLY-WIDEN<charT>("{:%Y} is not a valid year"), y));
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);
// Effects: Attempts to parse the input stream is into the year y using the format flags given in the NTCTS fmt as specified in 29.13. If the parse fails to decode a valid year, is.setstate(ios_base::failbit) is called and y is not modified. If %Z is used and successfully parsed, that value will be assigned to*abbrev if abbrev is non-null. If %z (or a modified variant) is used and successfully parsed, that value will be assigned to *offset if offset is non-null.
// Returns: is.
constexpr chrono::year operator""y(unsigned long long y) noexcept;
// Returns: year{static_cast<int>(y)}.
// 29.8.6 Class weekday  [time.cal.wd]
// 29.8.6.1 Overview [time.cal.wd.overview]
namespace std::chrono {
class weekday {
    unsigned char wd_;
public:
};
// exposition only
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;
}
//  weekday represents a day of the week in the civil calendar. 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. It can be constructed with any unsigned value, which will be subsequently truncated to fit into weekday’s unspecified internal storage. weekday meets the Cpp17EqualityComparable (Table 27) requirements.
// [Note 1: weekday is not Cpp17LessThanComparable because there is no universal consensus on which day is the first day of the week. weekday’s arithmetic operations treat the days of the week as a circular range, with no beginning and no end.
//  weekday is a trivially copyable and standard-layout class type.
// 29.8.6.2 Member functions [time.cal.wd.members]
constexpr explicit weekday(unsigned wd) noexcept;
// Effects: Initializes wd_ with wd == 7 ? 0 : wd. The value held is unspecified if wd is not in the range [0, 255].
constexpr weekday(const sys_days& dp) noexcept;
// Effects: Computes what day of the week corresponds to the sys_days dp, and initializes that day of the week in wd_.
// [Example 1: If dp represents 1970-01-01, the constructed weekday represents Thursday by storing 4 in wd_. —end example]
constexpr explicit weekday(const local_days& dp) noexcept;
// Effects: Computes what day of the week corresponds to the local_days dp, and initializes that day of the week in wd_.
// Postconditions: The value is identical to that constructed from sys_days{dp.time_since_epoch()}.
constexpr weekday& operator++() noexcept;
// Effects: *this += days{1}. Returns: *this.
constexpr weekday operator++(int) noexcept;
// Effects: ++(*this).
// Returns: A copy of *this as it existed on entry to this member function.
constexpr weekday& operator--() noexcept;
// Effects: *this -= days{1}. Returns: *this.
constexpr weekday operator--(int) noexcept;
// Effects: --(*this).
// Returns: A copy of *this as it existed on entry to this member function.
constexpr weekday& operator+=(const days& d) noexcept;
// Effects: *this = *this + d. Returns: *this.
constexpr weekday& operator-=(const days& d) noexcept;
// Effects: *this = *this - d. Returns: *this.
constexpr unsigned c_encoding() const noexcept;
// Returns: wd_.
constexpr unsigned iso_encoding() const noexcept;
// Returns: wd_ == 0u ? 7u : wd_.
constexpr bool ok() const noexcept;
// Returns: wd_ <= 6.
constexpr weekday_indexed operator[](unsigned index) const noexcept;
// Returns: {*this, index}.
constexpr weekday_last operator[](last_spec) const noexcept;
// Returns: weekday_last{*this}.
constexpr weekday operator+(const weekday& x, const days& y) noexcept;
// 29.8.6.3 Non-member functions [time.cal.wd.nonmembers]
constexpr bool operator==(const weekday& x, const weekday& y) noexcept;
// Returns: x.wd_ == y.wd_.
// 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.
// [Note 1: Given a divisor of 7, Euclidean division truncates towards negative infinity and always produces a remainder in the range of [0, 6]. 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().
// [Example 1: Monday + days{6} == Sunday.
constexpr weekday operator+(const days& x, const weekday& y) noexcept;
// Returns: y + x.
constexpr weekday operator-(const weekday& x, const days& y) noexcept;
// Returns: x + -y.
constexpr days operator-(const weekday& x, const weekday& y) noexcept;
// Returns: If x.ok() == true and y.ok() == true, returns a value d in the range [days{0}, days{6}] satisfying y + d == x. Otherwise the value returned is unspecified.
// [Example 2: Sunday - Monday == days{6}. —end example]
template<class charT, class traits>
basic_ostream<charT, traits>&
operator<<(basic_ostream<charT, traits>& os, const weekday& wd);
// 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_)));
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);
// Effects: Attempts to parse the input stream is into the weekday wd using the format flags given in the NTCTS fmt as specified in 29.13. If the parse fails to decode a valid weekday, is.setstate(ios_- base::failbit) is called and wd is not modified. If %Z is used and successfully parsed, that value will be assigned to *abbrev if abbrev is non-null. If %z (or a modified variant) is used and successfully parsed, that value will be assigned to *offset if offset is non-null.
// Returns: is.
// 29.8.7 Class weekday_indexed [time.cal.wdidx]
// 29.8.7.1 Overview [time.cal.wdidx.overview]
namespace std::chrono {
class weekday_indexed {
    chrono::weekday  wd_;
    unsigned char    index_;
// exposition only // exposition only
public:
    weekday_indexed() = default;
    constexpr weekday_indexed(const chrono::weekday& wd, unsigned index) noexcept;
// Effects: Initializes wd_ with wd and index_ with index. The values held are unspecified if !wd.ok() or index is not in the range [0, 7].
    constexpr chrono::weekday weekday() const noexcept;
    constexpr unsigned        index()   const noexcept;
    constexpr bool ok() const noexcept;
};
}
//  weekday_indexed represents a weekday and a small index in the range 1 to 5. This class is used to represent the first, second, third, fourth, or fifth weekday of a month.
//  [Note 1: A weekday_indexed object can be constructed by indexing a weekday with an unsigned.
// [Example 1:
constexpr auto wdi = Sunday[2]; // wdi is the second Sunday of an as yet unspecified month
static_assert(wdi.weekday() == Sunday);
static_assert(wdi.index() == 2);
// weekday_indexed is a trivially copyable and standard-layout class type.
// 29.8.7.2 Member functions [time.cal.wdidx.members]
constexpr weekday_indexed(const chrono::weekday& wd, unsigned index) noexcept;
constexpr chrono::weekday weekday() const noexcept;
// Returns: wd_.
constexpr unsigned index() const noexcept;
// Returns: index_.
constexpr bool ok() const noexcept;
// Returns: wd_.ok() && 1 <= index_ && index_ <= 5.
// 29.8.7.3 Non-member functions [time.cal.wdidx.nonmembers]
constexpr bool operator==(const weekday_indexed& x, const weekday_indexed& y) noexcept;
// Returns: x.weekday() == y.weekday() && x.index() == y.index().
template<class charT, class traits>
basic_ostream<charT, traits>&
operator<<(basic_ostream<charT, traits>& os, const weekday_indexed& wdi);
// 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]"),
// 9.8.8 [time.cal.wdlast]
// 29.8.8.1 Overview [time.cal.wdlast.overview]
namespace std::chrono {
    class weekday_last {
        chrono::weekday wd_;
// exposition only
    };
    wdi.weekday(), i));
    Class weekday_last
public:
    constexpr explicit weekday_last(const chrono::weekday& wd) noexcept;
    constexpr chrono::weekday weekday() const noexcept;
    constexpr bool ok() const noexcept;
}
// Returns: m_.
//  weekday_last represents the last weekday of a month.
//  [Note 1 : A weekday_last object can be constructed by indexing a weekday with last. — end note ]
// [Example 1:
constexpr auto wdl = Sunday[last]; // wdl is the last Sunday of an as yet unspecified month
                     static_assert(wdl.weekday() == Sunday);
// weekday_last is a trivially copyable and standard-layout class type.
// 29.8.8.2 Member functions [time.cal.wdlast.members]
                     constexpr explicit weekday_last(const chrono::weekday& wd) noexcept;
// Effects: Initializes wd_ with wd.
                     constexpr chrono::weekday weekday() const noexcept;
// Returns: wd_.
                     constexpr bool ok() const noexcept;
// Returns: wd_.ok().
// 29.8.8.3 Non-member functions [time.cal.wdlast.nonmembers]
                     constexpr bool operator==(const weekday_last& x, const weekday_last& y) noexcept;
// Returns: x.weekday() == y.weekday().
                     template<class charT, class traits>
                     basic_ostream<charT, traits>&
                     operator<<(basic_ostream<charT, traits>& os, const weekday_last& wdl);
// Effects: Equivalent to:
                     return os << format(os.getloc(), STATICALLY-WIDEN<charT>("{:L}[last]"), wdl.weekday());
// 29.8.9 Class month_day [time.cal.md]
// 29.8.9.1 Overview [time.cal.md.overview]
namespace std::chrono {
    class month_day {
        chrono::month m_;
        chrono::day   d_;
// exposition only // 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;
    };
}
// month_day represents a specific day of a specific month, but with an unspecified year. month_day meets the Cpp17EqualityComparable (Table 27) and Cpp17LessThanComparable (Table 28) requirements.
//  month_day is a trivially copyable and standard-layout class type.
// 29.8.9.2 Member functions [time.cal.md.members]
constexpr month_day(const chrono::month& m, const chrono::day& d) noexcept;
// Effects: Initializes m_ with m, and d_ with d.
constexpr chrono::month month() const noexcept;
constexpr chrono::day day() const noexcept;
// Returns: d_.
constexpr bool ok() const noexcept;
// Returns: true if m_.ok() is true, 1d <= d_, and d_ is less than or equal to the number of days in month m_; otherwise returns false. When m_ == February, the number of days is considered to be 29.
// 29.8.9.3 Non-member functions [time.cal.md.nonmembers]
constexpr bool operator==(const month_day& x, const month_day& y) noexcept;
// Returns: x.month() == y.month() && x.day() == y.day().
constexpr strong_ordering operator<=>(const month_day& x, const month_day& y) noexcept;
// Effects: Equivalent to:
if (auto c = x.month() <=> y.month(); c != 0) return c;
        return x.day() <=> y.day();
        template<class charT, class traits>
        basic_ostream<charT, traits>&
}
operator<<(basic_ostream<charT, traits>& os, const month_day& md);
// Effects: Equivalent to:
return os << format(os.getloc(), STATICALLY-WIDEN<charT>("{:L}/{}"),
                    md.month(), md.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);
// 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 29.13. If the parse fails to decode a valid month_day, is.setstate(ios_- base::failbit) is called and md is not modified. If %Z is used and successfully parsed, that value will be assigned to *abbrev if abbrev is non-null. If %z (or a modified variant) is used and successfully parsed, that value will be assigned to *offset if offset is non-null.
// Returns: is.
// 29.8.10 Class month_day_last [time.cal.mdlast]
       namespace std::chrono {
           class month_day_last {
               chrono::month m_;
               public:
               constexpr explicit month_day_last(const chrono::month& m) noexcept;
               constexpr chrono::month month() const noexcept;
               constexpr bool ok() const noexcept;
           };
// exposition only
//  month_day_last represents the last day of a month.
//  [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.
// [Example 1:
           constexpr auto mdl = February/last; // mdl is the last day of February of an as yet unspecified year
           static_assert(mdl.month() == February);
//  month_day_last is a trivially copyable and standard-layout class type.
           constexpr explicit month_day_last(const chrono::month& m) noexcept;
// Effects: Initializes m_ with m.
           constexpr month month() const noexcept;
// Returns: m_.
           constexpr bool ok() const noexcept;
// Returns: m_.ok().
           constexpr bool operator==(const month_day_last& x, const month_day_last& y) noexcept;
// Returns: x.month() == y.month().
           constexpr strong_ordering operator<=>(const month_day_last& x, const month_day_last& y) noexcept;
// Returns: x.month() <=> y.month().
           template<class charT, class traits>
           basic_ostream<charT, traits>&
           operator<<(basic_ostream<charT, traits>& os, const month_day_last& mdl);
// Effects: Equivalent to:
           return os << format(os.getloc(), STATICALLY-WIDEN<charT>("{:L}/last"), mdl.month());
                   }
// 29.8.11 Class month_weekday [time.cal.mwd]
// 29.8.11.1 Overview  [time.cal.mwd.overview]
namespace std::chrono {
class month_weekday {
    chrono::month           m_;
    chrono::weekday_indexed wdi_;
public:
// exposition only // exposition only
    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;
    };
}
// month_weekday represents the nth weekday of a month, of an as yet unspecified year. To do this the month_weekday stores a month and a weekday_indexed.
// [Example 1 :
constexpr auto mwd
    = February/Tuesday[3]; // mwd is the third Tuesday of February of an as yet unspecified year
      static_assert(mwd.month() == February);
      static_assert(mwd.weekday_indexed() == Tuesday[3]);
// month_weekday is a trivially copyable and standard-layout class type.
// 29.8.11.2 Member functions [time.cal.mwd.members]
      constexpr month_weekday(const chrono::month& m, const chrono::weekday_indexed& wdi) noexcept;
// Effects: Initializes m_ with m, and wdi_ with wdi. constexpr chrono::month month() const noexcept;
// Returns: m_.
      constexpr chrono::weekday_indexed weekday_indexed() const noexcept;
// Returns: wdi_.
      constexpr bool ok() const noexcept;
// Returns: m_.ok() && wdi_.ok().
// 29.8.11.3 Non-member functions [time.cal.mwd.nonmembers]
      constexpr bool operator==(const month_weekday& x, const month_weekday& y) noexcept;
// Returns: x.month() == y.month() && x.weekday_indexed() == y.weekday_indexed().
      template<class charT, class traits>
      basic_ostream<charT, traits>&
      operator<<(basic_ostream<charT, traits>& os, const month_weekday& mwd);
// Effects: Equivalent to:
      return os << format(os.getloc(), STATICALLY-WIDEN<charT>("{:L}/{:L}"),
                          mwd.month(), mwd.weekday_indexed());
// 29.8.12 Class month_weekday_last [time.cal.mwdlast]
// 29.8.12.1 Overview [time.cal.mwdlast.overview]
namespace std::chrono {
    class month_weekday_last {
        chrono::month        m_;
        chrono::weekday_last wdl_;
    public:
// exposition only // exposition only
        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;
    };
}
//  month_weekday_last represents the last weekday of a month, of an as yet unspecified year. To do this the month_weekday_last stores a month and a weekday_last.
//  [Example 1 :
constexpr auto mwd
    = February/Tuesday[last]; // mwd is the last Tuesday of February of an as yet unspecified year
      static_assert(mwd.month() == February);
      static_assert(mwd.weekday_last() == Tuesday[last]);
//  month_weekday_last is a trivially copyable and standard-layout class type.
// 29.8.12.2 Member functions [time.cal.mwdlast.members]
      constexpr month_weekday_last(const chrono::month& m,
                                   const chrono::weekday_last& wdl) noexcept;
// Effects: Initializes m_ with m, and wdl_ with wdl. constexpr chrono::month month() const noexcept;
// Returns: m_.
      constexpr chrono::weekday_last weekday_last() const noexcept;
// Returns: wdl_.
      constexpr bool ok() const noexcept;
// Returns: m_.ok() && wdl_.ok().
// 29.8.12.3 Non-member functions [time.cal.mwdlast.nonmembers]
      constexpr bool operator==(const month_weekday_last& x, const month_weekday_last& y) noexcept;
      Returns:
      x.month() == y.month() && x.weekday_last() == y.weekday_last().
      template<class charT, class traits>
      basic_ostream<charT, traits>&
      operator<<(basic_ostream<charT, traits>& os, const month_weekday_last& mwdl);
// Effects: Equivalent to:
      return os << format(os.getloc(), STATICALLY-WIDEN<charT>("{:L}/{:L}"),
                          mwdl.month(), mwdl.weekday_last());
// 29.8.13 Class year_month  [time.cal.ym]
// 29.8.13.1 Overview v
namespace std::chrono {
    class year_month {
        chrono::year  y_;
        chrono::month m_;
// exposition only // 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;
    };
}
//  year_month represents a specific month of a specific year, but with an unspecified day. year_month is a field-based time point with a resolution of months. year_month meets the Cpp17EqualityComparable (Table 27) and Cpp17LessThanComparable (Table 28) requirements.
//  year_month is a trivially copyable and standard-layout class type.
// 29.8.13.2 Member functions [time.cal.ym.members]
constexpr year_month(const chrono::year& y, const chrono::month& m) noexcept;
// Effects: Initializes y_ with y, and m_ with m. constexpr chrono::year year() const noexcept;
// Returns: y_.
constexpr chrono::month month() const noexcept;
// Returns: m_.
constexpr year_month& operator+=(const months& dm) noexcept;
// 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 to months (12.2.4.3).
// Effects: *this = *this + dm. Returns: *this.
constexpr year_month& operator-=(const months& dm) noexcept;
// 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 to months (12.2.4.3).
// Effects: *this = *this - dm. Returns: *this.
constexpr year_month& operator+=(const years& dy) noexcept;
// Effects: *this = *this + dy. Returns: *this.
constexpr year_month& operator-=(const years& dy) noexcept;
// Effects: *this = *this - dy. Returns: *this.
constexpr bool ok() const noexcept;
// Returns: y_.ok() && m_.ok().
// 29.8.13.3 Non-member functions [time.cal.ym.nonmembers]
constexpr bool operator==(const year_month& x, const year_month& y) noexcept;
// Returns: x.year() == y.year() && x.month() == y.month().
constexpr strong_ordering operator<=>(const year_month& x, const year_month& y) noexcept;
// Effects: Equivalent to:
if (auto c = x.year() <=> y.year(); c != 0) return c;
        return x.month() <=> y.month();
        constexpr year_month operator+(const year_month& ym, const months& dm) noexcept;
// 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 to months (12.2.4.3).
// Returns: A year_month value z such that z.ok() && z - ym == dm is true. Complexity: O(1) with respect to the value of dm.
        constexpr year_month operator+(const months& dm, const year_month& ym) noexcept;
// 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 to months (12.2.4.3).
// Returns: ym + dm.
        constexpr year_month operator-(const year_month& ym, const months& dm) noexcept;
// 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 to months (12.2.4.3).
// Returns: ym + -dm.
        constexpr months operator-(const year_month& x, const year_month& y) noexcept;
// Returns:
        x.year() - y.year() + months{static_cast<int>(unsigned{x.month()}) -
                                     static_cast<int>(unsigned{y.month()})}
        constexpr year_month operator+(const year_month& ym, const years& dy) noexcept;
// Returns: (ym.year() + dy) / ym.month().
        constexpr year_month operator+(const years& dy, const year_month& ym) noexcept;
// Returns: ym + dy.
        constexpr year_month operator-(const year_month& ym, const years& dy) noexcept;
// Returns: ym + -dy.
        template<class charT, class traits>
        basic_ostream<charT, traits>&
        operator<<(basic_ostream<charT, traits>& os, const year_month& ym);
// Effects: Equivalent to:
        return os << format(os.getloc(), STATICALLY-WIDEN<charT>("{}/{:L}"), ym.year(), ym.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);
// 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 29.13. If the parse fails to decode a valid year_month, is.setstate(ios_- base::failbit) is called and ym is not modified. If %Z is used and successfully parsed, that value will be assigned to *abbrev if abbrev is non-null. If %z (or a modified variant) is used and successfully parsed, that value will be assigned to *offset if offset is non-null.
        const chrono::day& d) noexcept;
// Effects: Initializes y_ with y, m_ with m, and d_ with d.
// Returns: is.
// 29.8.14 Class year_month_day  [time.cal.ymd]
// 29.8.14.1 Overview [time.cal.ymd.overview]
namespace std::chrono {
class year_month_day {
    chrono::year  y_;
    chrono::month m_;
    chrono::day   d_;
// exposition only // exposition only // 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;
};
}
//  year_month_day represents a specific year, month, and day. year_month_day is a field-based time point with a resolution of days.
// [Note 1: year_month_day supports years- and months-oriented arithmetic, but not days-oriented arithmetic. For the latter, there is a conversion to sys_days, which efficiently supports days-oriented arithmetic. year_month_day meets the Cpp17EqualityComparable (Table 27) and Cpp17LessThanComparable (Table 28) requirements.
//  year_month_day is a trivially copyable and standard-layout class type.
// 29.8.14.2 Member functions [time.cal.ymd.members]
constexpr year_month_day(const chrono::year& y, const chrono::month& m,
                         constexpr year_month_day(const year_month_day_last& ymdl) noexcept;
// Effects: Initializes y_ with ymdl.year(), m_ with ymdl.month(), and d_ with ymdl.day().
// [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. —
                         constexpr year_month_day(const sys_days& dp) noexcept;
// Effects: Constructs an object of type year_month_day that corresponds to the date represented by dp. 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.
                         constexpr explicit year_month_day(const local_days& dp) noexcept;
// Effects: Equivalent to constructing with sys_days{dp.time_since_epoch()}. constexpr year_month_day& operator+=(const months& m) noexcept;
// 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 to months (12.2.4.3).
// Effects: *this = *this + m. Returns: *this.
                         constexpr year_month_day& operator-=(const months& m) noexcept;
// 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 to months (12.2.4.3).
// Effects: *this = *this - m. Returns: *this.
                         constexpr year_month_day& year_month_day::operator+=(const years& y) noexcept;
// Effects: *this = *this + y. Returns: *this.
                         constexpr year_month_day& year_month_day::operator-=(const years& y) noexcept;
// Effects: *this = *this - y. Returns: *this.
                         constexpr chrono::year year() const noexcept;
// Returns: y_.
                         constexpr chrono::month month() const noexcept;
// Returns: m_.
                         constexpr chrono::day day() const noexcept;
// Returns: d_.
                         constexpr operator sys_days() const noexcept;
// 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). Otherwise, if y_.ok() && m_.ok() is true, returns sys_days{y_/m_/1d} + (d_ - 1d). Otherwise the value returned is unspecified.
// 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. // [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);
constexpr explicit operator local_days() const noexcept;
// Returns: local_days{sys_days{*this}.time_since_epoch()}. constexpr bool ok() const noexcept;
// 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.
// 29.8.14.3 Non-member functions [time.cal.ymd.nonmembers]
constexpr bool operator==(const year_month_day& x, const year_month_day& y) noexcept;
// Returns: x.year() == y.year() && x.month() == y.month() && x.day() == y.day().
constexpr strong_ordering operator<=>(const year_month_day& x, const year_month_day& y) noexcept;
// 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();
            constexpr year_month_day operator+(const year_month_day& ymd, const months& dm) noexcept;
// 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 to months (12.2.4.3).
// Returns: (ymd.year() / ymd.month() + dm) / ymd.day().
// [Note 1 : If ymd.day() is in the range [1d, 28d], ok() will return true for the resultant year_month_day.
            constexpr year_month_day operator+(const months& dm, const year_month_day& ymd) noexcept;
// 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 to months (12.2.4.3).
// Returns: ymd + dm.
            constexpr year_month_day operator-(const year_month_day& ymd, const months& dm) noexcept;
// 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 to months (12.2.4.3).
// Returns: ymd + (-dm).
            constexpr year_month_day operator+(const year_month_day& ymd, const years& dy) noexcept;
// Returns: (ymd.year() + dy) / ymd.month() / ymd.day().
// [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. —end note]
            constexpr year_month_day operator+(const years& dy, const year_month_day& ymd) noexcept;
// Returns: ymd + dy.
            constexpr year_month_day operator-(const year_month_day& ymd, const years& dy) noexcept;
// Returns: ymd + (-dy).
            template<class charT, class traits>
            basic_ostream<charT, traits>&
            operator<<(basic_ostream<charT, traits>& os, const year_month_day& ymd);
// Effects: Equivalent to:
            return os << (ymd.ok() ?
                          format(STATICALLY-WIDEN<charT>("{:%F}"), ymd) : format(STATICALLY-WIDEN<charT>("{:%F} is not a valid date"), ymd));
            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);
// 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 29.13. If the parse fails to decode a valid year_month_day, is.setstate(ios_base::failbit) is called and ymd is not modified. If %Z is used and successfully parsed, that value will be assigned to *abbrev if abbrev is non-null. If %z (or a modified variant) is used and successfully parsed, that value will be assigned to *offset if offset is non-null.
// Returns: is.
// 29.8.15 Class year_month_day_last  [time.cal.ymdlast]
// 29.8.15.1 Overview [time.cal.ymdlast.overview]
    namespace std::chrono {
    class year_month_day_last {
        chrono::year           y_;
        chrono::month_day_last mdl_;
    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;
        }; }
// exposition only // exposition only
//  year_month_day_last represents the last day of a specific year and month. 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.
// [Note 1: year_month_day_last supports years- and months-oriented arithmetic, but not days-oriented arithmetic. For the latter, there is a conversion to sys_days, which efficiently supports days-oriented arithmetic.  year_month_day_last meets the Cpp17EqualityComparable (Table 27) and Cpp17LessThanComparable (Table 28) requirements.
// year_month_day_last is a trivially copyable and standard-layout class type.
// 9.8.15.2 Member functions [time.cal.ymdlast.members]
constexpr year_month_day_last(const chrono::year& y,
                              const chrono::month_day_last& mdl) noexcept;
// Effects: Initializes y_ with y and mdl_ with mdl.
constexpr year_month_day_last& operator+=(const months& m) noexcept;
// 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 to months (12.2.4.3).
// Effects: *this = *this + m. Returns: *this.
constexpr year_month_day_last& operator-=(const months& m) noexcept;
// 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 to months (12.2.4.3).
// Effects: *this = *this - m. Returns: *this.
constexpr year_month_day_last& operator+=(const years& y) noexcept;
// Effects: *this = *this + y. Returns: *this.
constexpr year_month_day_last& operator-=(const years& y) noexcept;
// Effects: *this = *this - y. Returns: *this.
constexpr chrono::year year() const noexcept;
// Returns: y_.
constexpr chrono::month month() const noexcept;
// Returns: mdl_.month().
constexpr chrono::month_day_last month_day_last() const noexcept;
// Returns: mdl_.
constexpr chrono::day day() const noexcept;
// Returns: If ok() is true, returns a day representing the last day of the (year, month) pair represented by *this. Otherwise, the returned value is unspecified.
// [Note 1: This value might be computed on demand.
constexpr operator sys_days() const noexcept;
// Returns: sys_days{year()/month()/day()}.
constexpr explicit operator local_days() const noexcept;
// Returns: local_days{sys_days{*this}.time_since_epoch()}.
constexpr bool ok() const noexcept;
// Returns: y_.ok() && mdl_.ok().
// 29.8.15.3 Non-member functions [time.cal.ymdlast.nonmembers]
constexpr bool operator==(const year_month_day_last& x, const year_month_day_last& y) noexcept;
// Returns: x.year() == y.year() && x.month_day_last() == y.month_day_last(). constexpr strong_ordering operator<=>(const year_month_day_last& x,
const year_month_day_last& y) noexcept;
// Effects: Equivalent to:
if (auto c = x.year() <=> y.year(); c != 0) return c;
return x.month_day_last() <=> y.month_day_last();
constexpr year_month_day_last
operator+(const year_month_day_last& ymdl, const months& dm) noexcept;
// 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 to months (12.2.4.3).
// Returns: (ymdl.year() / ymdl.month() + dm) / last. constexpr year_month_day_last
operator+(const months& dm, const year_month_day_last& ymdl) noexcept;
// 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 to months (12.2.4.3).
// Returns: ymdl + dm.
constexpr year_month_day_last
operator-(const year_month_day_last& ymdl, const months& dm) noexcept;
// 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 to months (12.2.4.3).
// Returns: ymdl + (-dm).
constexpr year_month_day_last
operator+(const year_month_day_last& ymdl, const years& dy) noexcept;
// Returns: {ymdl.year()+dy, ymdl.month_day_last()}. constexpr year_month_day_last
operator+(const years& dy, const year_month_day_last& ymdl) noexcept;
// Returns: ymdl + dy.
constexpr year_month_day_last
operator-(const year_month_day_last& ymdl, const years& dy) noexcept;
// Returns: ymdl + (-dy).
template<class charT, class traits>
basic_ostream<charT, traits>&
operator<<(basic_ostream<charT, traits>& os, const year_month_day_last& ymdl);
// Effects: Equivalent to:
return os << format(os.getloc(), STATICALLY-WIDEN<charT>("{}/{:L}"),
// 29.8.16 Class year_month_weekday  [time.cal.ymwd]
// 29.8.16.1 Overview [time.cal.ymwd.overview]
namespace std::chrono {
    class year_month_weekday {
        chrono::year
        chrono::month
        chrono::weekday_indexed wdi_;
        ymdl.year(), ymdl.month_day_last());
        y_;
        m_;
// exposition only // exposition only // 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
        constexpr chrono::month
        constexpr chrono::weekday
        constexpr unsigned
        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;
    };
}
year()            const noexcept;
month()           const noexcept;
weekday()         const noexcept;
index()           const noexcept;
//  year_month_weekday represents a specific year, month, and nth weekday of the month. year_month_weekday is a field-based time point with a resolution of days.
// [Note 1: year_month_weekday supports years- and months-oriented arithmetic, but not days-oriented arithmetic. For the latter, there is a conversion to sys_days, which efficiently supports days-oriented arithmetic.
// Effects: Constructs an object of type year_month_weekday which corresponds to the date represented by dp.
//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. year_month_weekday meets the Cpp17EqualityComparable (Table 27) requirements. 2 year_month_weekday is a trivially copyable and standard-layout class type.
// 29.8.16.2 Member functions [time.cal.ymwd.members]
constexpr year_month_weekday(const chrono::year& y, const chrono::month& m,
                             const chrono::weekday_indexed& wdi) noexcept;
// Effects: Initializes y_ with y, m_ with m, and wdi_ with wdi.
constexpr year_month_weekday(const sys_days& dp) noexcept;
constexpr explicit year_month_weekday(const local_days& dp) noexcept;
// Effects: Equivalent to constructing with sys_days{dp.time_since_epoch()}.
constexpr year_month_weekday& operator+=(const months& m) noexcept;
// 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 to months (12.2.4.3).
// Effects: *this = *this + m. Returns: *this.
constexpr year_month_weekday& operator-=(const months& m) noexcept;
// 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 to months (12.2.4.3).
// Effects: *this = *this - m. Returns: *this.
constexpr year_month_weekday& operator+=(const years& y) noexcept;
// Effects: *this = *this + y. Returns: *this.
constexpr year_month_weekday& operator-=(const years& y) noexcept;
// Effects: *this = *this - y. Returns: *this.
constexpr chrono::year year() const noexcept;
// Returns: y_.
constexpr chrono::month month() const noexcept;
// Returns: m_.
constexpr chrono::weekday weekday() const noexcept;
// Returns: wdi_.weekday().
constexpr unsigned index() const noexcept;
// Returns: wdi_.index().
constexpr chrono::weekday_indexed weekday_indexed() const noexcept;
// Returns: wdi_.
constexpr operator sys_days() const noexcept;
// 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(). If index() is 0 the returned sys_days represents the date 7 days prior to the first weekday() of year()/month(). Otherwise the returned value is unspecified.
constexpr explicit operator local_days() const noexcept;
// Returns: local_days{sys_days{*this}.time_since_epoch()}. constexpr bool ok() const noexcept;
// Returns: If any of y_.ok(), m_.ok(), or wdi_.ok() is false, returns false. Otherwise, if *this represents a valid date, returns true. Otherwise, returns false.
// 29.8.16.3 Non-member functions [time.cal.ymwd.nonmembers]
constexpr bool operator==(const year_month_weekday& x, const year_month_weekday& y) noexcept;
// Returns: x.year() == y.year() && x.month() == y.month() && x.weekday_indexed() == y.weekday_indexed()
constexpr year_month_weekday operator+(const year_month_weekday& ymwd, const months& dm) noexcept;
// 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 to months (12.2.4.3).
// Returns: (ymwd.year() / ymwd.month() + dm) / ymwd.weekday_indexed().
constexpr year_month_weekday operator+(const months& dm, const year_month_weekday& ymwd) noexcept;
// 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 to months (12.2.4.3).
// Returns: ymwd + dm.
constexpr year_month_weekday operator-(const year_month_weekday& ymwd, const months& dm) noexcept;
// 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 to months (12.2.4.3).
// Returns: ymwd + (-dm).
constexpr year_month_weekday operator+(const year_month_weekday& ymwd, const years& dy) noexcept;
// Returns: {ymwd.year()+dy, ymwd.month(), ymwd.weekday_indexed()}.
constexpr year_month_weekday operator+(const years& dy, const year_month_weekday& ymwd) noexcept;
// Returns: ymwd + dy.
constexpr year_month_weekday operator-(const year_month_weekday& ymwd, const years& dy) noexcept;
// Returns: ymwd + (-dy).
template<class charT, class traits>
basic_ostream<charT, traits>&
operator<<(basic_ostream<charT, traits>& os, const year_month_weekday& ymwd);
// Effects: Equivalent to:
return os << format(os.getloc(), STATICALLY-WIDEN<charT>("{}/{:L}/{:L}"), ymwd.year(), ymwd.month(), ymwd.weekday_indexed());
// 29.8.17 Class year_month_weekday_last  [time.cal.ymwdlast]
// 29.8.17.1 Overview  [time.cal.ymwdlast.overview]
       namespace std::chrono {
           class year_month_weekday_last {
               chrono::year         y_;
               chrono::month        m_;
               chrono::weekday_last wdl_;
// exposition only // exposition only // exposition only
               public:
               constexpr year_month_weekday_last(const chrono::year& y, const chrono::month& m,
                       const chrono::weekday_last& wdl) noexcept;
// 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 to months (12.2.4.3).
// Effects: *this = *this + m. Returns: *this.
               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()
               constexpr chrono::month        month()
               constexpr chrono::weekday      weekday()
               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;
           };
       }
//  year_month_weekday_last represents a specific year, month, and last weekday of the month. 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.
// [Note 1 : year_month_weekday_last supports years- and months-oriented arithmetic, but not days-oriented arithmetic. For the latter, there is a conversion to sys_days, which efficiently supports days-oriented arithmetic.  year_month_weekday_last meets the Cpp17EqualityComparable (Table 27) requirements.
//  year_month_weekday_last is a trivially copyable and standard-layout class type.
// 29.8.17.2 Member functions [time.cal.ymwdlast.members]
       constexpr year_month_weekday_last(const chrono::year& y, const chrono::month& m,
               const chrono::weekday_last& wdl) noexcept;
// Effects: Initializes y_ with y, m_ with m, and wdl_ with wdl.
       constexpr year_month_weekday_last& operator+=(const months& m) noexcept;
       constexpr year_month_weekday_last& operator-=(const months& m) noexcept;
       const noexcept;
       const noexcept;
       const noexcept;
// 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 to months (12.2.4.3).
// Effects: *this = *this - m. Returns: *this.
       constexpr year_month_weekday_last& operator+=(const years& y) noexcept;
// Effects: *this = *this + y. Returns: *this.
       constexpr year_month_weekday_last& operator-=(const years& y) noexcept;
// Effects: *this = *this - y. Returns: *this.
       constexpr chrono::year year() const noexcept;
// Returns: y_.
       constexpr chrono::month month() const noexcept;
// Returns: m_.
       constexpr chrono::weekday weekday() const noexcept;
// Returns: wdl_.weekday().
       constexpr chrono::weekday_last weekday_last() const noexcept;
// Returns: wdl_.
       constexpr operator sys_days() const noexcept;
// Returns: If ok() == true, returns a sys_days that represents the last weekday() of year()/month(). Otherwise the returned value is unspecified.
       constexpr explicit operator local_days() const noexcept;
// Returns: local_days{sys_days{*this}.time_since_epoch()}. constexpr bool ok() const noexcept;
// Returns: y_.ok() && m_.ok() && wdl_.ok().
// 9.8.17.3 Non-member functions [time.cal.ymwdlast.nonmembers] constexpr bool operator==(const year_month_weekday_last& x,
       const year_month_weekday_last& y) noexcept;
// Returns: x.year() == y.year() && x.month() == y.month() && x.weekday_last() == y.weekday_last()
constexpr year_month_weekday_last
operator+(const year_month_weekday_last& ymwdl, const months& dm) noexcept;
// 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 to months (12.2.4.3).
// Returns: (ymwdl.year() / ymwdl.month() + dm) / ymwdl.weekday_last().
constexpr year_month_weekday_last
operator+(const months& dm, const year_month_weekday_last& ymwdl) noexcept;
// 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 to months (12.2.4.3).
// Returns: ymwdl + dm.
constexpr year_month_weekday_last
operator-(const year_month_weekday_last& ymwdl, const months& dm) noexcept;
//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 to months (12.2.4.3).
// Returns: ymwdl + (-dm).
constexpr year_month_weekday_last
operator+(const year_month_weekday_last& ymwdl, const years& dy) noexcept;
// Returns: {ymwdl.year()+dy, ymwdl.month(), ymwdl.weekday_last()}.
constexpr year_month_weekday_last
operator+(const years& dy, const year_month_weekday_last& ymwdl) noexcept;
// Returns: ymwdl + dy.
constexpr year_month_weekday_last
operator-(const year_month_weekday_last& ymwdl, const years& dy) noexcept;
// Returns: ymwdl + (-dy).
template<class charT, class traits>
basic_ostream<charT, traits>&
operator<<(basic_ostream<charT, traits>& os, const year_month_weekday_last& ymwdl);
// Effects: Equivalent to:
return os << format(os.getloc(), STATICALLY-WIDEN<charT>("{}/{:L}/{:L}"), ymwdl.year(), ymwdl.month(), ymwdl.weekday_last());
// Returns: {y, m}.
constexpr year_month
operator/(const year& y, int m) noexcept;
// 29.8.18 Conventional syntax operators [time.cal.operators]
//  A set of overloaded operator/ functions provides a conventional syntax for the creation of civil calendar dates.
//  [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 required, any of the following can also be specified: last weekday [i ] weekday [last]
//  [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. For example:
year_month ym = 2015y/April;
month_day md1 = April/4;
month_day md2 = 4d/April;
//  [Example 1 :
auto a = 2015/4/4;
auto b = 2015y/4/4;
auto c = 2015y/4d/April;
auto d = 2015/April/4;
// a == int(125)
// b == year_month_day{year(2015), month(4), day(4)}
// error: no viable operator/ for first /
// error: no viable operator/ for first /
constexpr year_month
operator/(const year& y, const month& m) noexcept;
// Returns: y / month(m).
constexpr month_day
operator/(const month& m, const day& d) noexcept;
// Returns: {m, d}.
constexpr month_day
operator/(const month& m, int d) noexcept;
// Returns: m / day(d).
constexpr month_day
operator/(int m, const day& d) noexcept;
// Returns: month(m) / d.
constexpr month_day
operator/(const day& d, const month& m) noexcept;
// Returns: m / d.
constexpr month_day
operator/(const day& d, int m) noexcept;
// Returns: month(m) / d.
constexpr month_day_last
operator/(const month& m, last_spec) noexcept;
// Returns: month_day_last{m}.
constexpr month_day_last
operator/(int m, last_spec) noexcept;
// Returns: month(m) / last.
constexpr month_day_last
operator/(last_spec, const month& m) noexcept;
// Returns: m / last.
constexpr month_day_last
operator/(last_spec, int m) noexcept;
// Returns: month(m) / last.
constexpr month_weekday
operator/(const month& m, const weekday_indexed& wdi) noexcept;
// Returns: {m, wdi}.
constexpr month_weekday
operator/(int m, const weekday_indexed& wdi) noexcept;
// Returns: month(m) / wdi.
constexpr month_weekday
operator/(const weekday_indexed& wdi, const month& m) noexcept;
// Returns: m / wdi.
constexpr month_weekday
operator/(const weekday_indexed& wdi, int m) noexcept;
// Returns: month(m) / wdi.
constexpr month_weekday_last
operator/(const month& m, const weekday_last& wdl) noexcept;
// Returns: {m, wdl}.
constexpr month_weekday_last
operator/(int m, const weekday_last& wdl) noexcept;
// Returns: month(m) / wdl.
constexpr month_weekday_last
operator/(const weekday_last& wdl, const month& m) noexcept;
// Returns: m / wdl.
constexpr month_weekday_last
operator/(const weekday_last& wdl, int m) noexcept;
// Returns: month(m) / wdl.
constexpr year_month_day
operator/(const year_month& ym, const day& d) noexcept;
// Returns: {ym.year(), ym.month(), d}.
constexpr year_month_day
operator/(const year_month& ym, int d) noexcept;
// Returns: ym / day(d).
constexpr year_month_day
operator/(const year& y, const month_day& md) noexcept;
// Returns: y / md.month() / md.day().
constexpr year_month_day
operator/(int y, const month_day& md) noexcept;
// Returns: year(y) / md.
constexpr year_month_day
operator/(const month_day& md, const year& y) noexcept;
// Returns: y / md.
constexpr year_month_day
operator/(const month_day& md, int y) noexcept;
// Returns: year(y) / md.
constexpr year_month_day_last
operator/(const year_month& ym, last_spec) noexcept;
// Returns: {ym.year(), month_day_last{ym.month()}}.
constexpr year_month_day_last
operator/(const year& y, const month_day_last& mdl) noexcept;
// Returns: {y, mdl}.
constexpr year_month_day_last
operator/(int y, const month_day_last& mdl) noexcept;
// Returns: year(y) / mdl.
constexpr year_month_day_last
operator/(const month_day_last& mdl, const year& y) noexcept;
// Returns: y / mdl.
constexpr year_month_day_last
operator/(const month_day_last& mdl, int y) noexcept;
// Returns: year(y) / mdl.
constexpr year_month_weekday
operator/(const year_month& ym, const weekday_indexed& wdi) noexcept;
// Returns: {ym.year(), ym.month(), wdi}.
constexpr year_month_weekday
operator/(const year& y, const month_weekday& mwd) noexcept;
// Returns: {y, mwd.month(), mwd.weekday_indexed()}.
constexpr year_month_weekday
operator/(int y, const month_weekday& mwd) noexcept;
// Returns: year(y) / mwd.
constexpr year_month_weekday
operator/(const month_weekday& mwd, const year& y) noexcept;
// Returns: y / mwd.
constexpr year_month_weekday
operator/(const month_weekday& mwd, int y) noexcept;
// Returns: year(y) / mwd.
constexpr year_month_weekday_last
operator/(const year_month& ym, const weekday_last& wdl) noexcept;
// Returns: {ym.year(), ym.month(), wdl}.
constexpr year_month_weekday_last
operator/(const year& y, const month_weekday_last& mwdl) noexcept;
// Returns: {y, mwdl.month(), mwdl.weekday_last()}.
constexpr year_month_weekday_last
operator/(int y, const month_weekday_last& mwdl) noexcept;
// Returns: year(y) / mwdl.
constexpr year_month_weekday_last
operator/(const month_weekday_last& mwdl, const year& y) noexcept;
// Returns: y / mwdl.
constexpr year_month_weekday_last
operator/(const month_weekday_last& mwdl, int y) noexcept;
// Returns: year(y) / mwdl.
int main() {
    cout  <<  n4910 << endl;
    return EXIT_SUCCESS;
}

編纂・実行結果(compile and go)

bash
$ clang++ p1393.cpp -std=03 -o p1393l -I. -Wall
In file included from p1393.cpp:10:
In file included from ./N4910.h:11:
In file included from /usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/atomic:38:
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/bits/c++0x_warning.h:32:2: error: This file requires compiler and library support for the ISO C++ 2011 standard. This support must be enabled with the -std=c++11 or -std=gnu++11 compiler options.
#error This file requires compiler and library support \
 ^
p1393.cpp:17:16: warning: nested namespace definition is a C++17 extension; define each namespace separately [-Wc++17-extensions]
  namespace std::chrono {
               ^~~~~~~~
                { namespace chrono
p1393.cpp:19:30: warning: defaulted function definitions are a C++11 extension [-Wc++11-extensions]
      explicit last_spec() = default;
                             ^
p1393.cpp:25:16: warning: nested namespace definition is a C++17 extension; define each namespace separately [-Wc++17-extensions]
  namespace std::chrono {
               ^~~~~~~~
                { namespace chrono
p1393.cpp:29:13: warning: defaulted function definitions are a C++11 extension [-Wc++11-extensions]
    day() = default;
            ^
p1393.cpp:30:5: error: unknown type name 'constexpr'
    constexpr explicit day(unsigned d) noexcept;
    ^
p1393.cpp:30:24: error: constructor cannot have a return type
    constexpr explicit day(unsigned d) noexcept;
                       ^~~
p1393.cpp:30:39: error: expected ';' at end of declaration list
    constexpr explicit day(unsigned d) noexcept;
                                      ^
                                      ;
p1393.cpp:31:5: error: unknown type name 'constexpr'
    constexpr day& operator++()    noexcept;
    ^
p1393.cpp:31:18: error: expected ';' at end of declaration list
    constexpr day& operator++()    noexcept;
                 ^
                 ;
p1393.cpp:32:5: error: unknown type name 'constexpr'
    constexpr day  operator++(int) noexcept;
    ^
p1393.cpp:32:18: error: expected ';' at end of declaration list
    constexpr day  operator++(int) noexcept;
                 ^
                 ;
p1393.cpp:33:5: error: unknown type name 'constexpr'
    constexpr day& operator--()    noexcept;
    ^
p1393.cpp:33:18: error: expected ';' at end of declaration list
    constexpr day& operator--()    noexcept;
                 ^
                 ;
p1393.cpp:34:5: error: unknown type name 'constexpr'
    constexpr day  operator--(int) noexcept;
    ^
p1393.cpp:34:18: error: expected ';' at end of declaration list
    constexpr day  operator--(int) noexcept;
                 ^
                 ;
p1393.cpp:35:5: error: unknown type name 'constexpr'
    constexpr day& operator+=(const days& d) noexcept;
    ^
p1393.cpp:35:18: error: expected ';' at end of declaration list
    constexpr day& operator+=(const days& d) noexcept;
                 ^
                 ;
p1393.cpp:36:5: error: unknown type name 'constexpr'
    constexpr day& operator-=(const days& d) noexcept;
    ^
p1393.cpp:36:18: error: expected ';' at end of declaration list
    constexpr day& operator-=(const days& d) noexcept;
                 ^
                 ;
p1393.cpp:37:5: error: unknown type name 'constexpr'
    constexpr explicit operator unsigned() const noexcept;
    ^
p1393.cpp:37:15: warning: explicit conversion functions are a C++11 extension [-Wc++11-extensions]
    constexpr explicit operator unsigned() const noexcept;
              ^~~~~~~~
p1393.cpp:37:49: error: expected ';' at end of declaration list
    constexpr explicit operator unsigned() const noexcept;
                                                ^
                                                ;
p1393.cpp:38:5: error: unknown type name 'constexpr'
    constexpr bool ok() const noexcept;
    ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
5 warnings and 20 errors generated.
$ clang++ p1393.cpp -std=2b -o p1393l -I. -Wall
p1393.cpp:35:37: error: unknown type name 'days'; did you mean 'day'?
    constexpr day& operator+=(const days& d) noexcept;
                                    ^~~~
                                    day
p1393.cpp:26:11: note: 'day' declared here
    class day {
          ^
p1393.cpp:36:37: error: unknown type name 'days'; did you mean 'day'?
    constexpr day& operator-=(const days& d) noexcept;
                                    ^~~~
                                    day
p1393.cpp:26:11: note: 'day' declared here
    class day {
          ^
p1393.cpp:41:11: error: unknown type name 'day'
constexpr day& operator++() noexcept;
          ^
p1393.cpp:47:23: error: C++ requires a type specifier for all declarations
   constexpr explicit day(unsigned d) noexcept;
   ~~~~~~~~~~~~~~~~~~ ^
p1393.cpp:48:14: error: unknown type name 'day'
   constexpr day operator++(int) noexcept;
             ^
p1393.cpp:51:11: error: unknown type name 'day'
constexpr day& operator--() noexcept;
          ^
p1393.cpp:53:11: error: unknown type name 'day'
constexpr day operator--(int) noexcept;
          ^
p1393.cpp:56:11: error: unknown type name 'day'
constexpr day& operator+=(const days& d) noexcept;
          ^
p1393.cpp:56:33: error: unknown type name 'days'
constexpr day& operator+=(const days& d) noexcept;
                                ^
p1393.cpp:58:11: error: unknown type name 'day'
constexpr day& operator-=(const days& d) noexcept;
          ^
p1393.cpp:58:33: error: unknown type name 'days'
constexpr day& operator-=(const days& d) noexcept;
                                ^
p1393.cpp:60:40: error: non-member function cannot have 'const' qualifier
constexpr explicit operator unsigned() const noexcept;
                                       ^~~~~~
p1393.cpp:60:20: error: conversion function must be a non-static member function
constexpr explicit operator unsigned() const noexcept;
                   ^
p1393.cpp:62:21: error: non-member function cannot have 'const' qualifier
constexpr bool ok() const noexcept;
                    ^~~~~~
p1393.cpp:65:33: error: unknown type name 'day'
constexpr bool operator==(const day& x, const day& y) noexcept;
                                ^
p1393.cpp:65:47: error: unknown type name 'day'
constexpr bool operator==(const day& x, const day& y) noexcept;
                                              ^
p1393.cpp:67:45: error: unknown type name 'day'
constexpr strong_ordering operator<=>(const day& x, const day& y) noexcept;
                                            ^
p1393.cpp:67:59: error: unknown type name 'day'
constexpr strong_ordering operator<=>(const day& x, const day& y) noexcept;
                                                          ^
p1393.cpp:69:11: error: unknown type name 'day'
constexpr day operator+(const day& x, const days& y) noexcept;
          ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.

$ g++ p1393.cpp -std=03 -o p1393g -I. -Wall
In file included from /usr/local/include/c++/12.1.0/atomic:38,
                 from N4910.h:11,
                 from p1393.cpp:10:
/usr/local/include/c++/12.1.0/bits/c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support must be enabled with the -std=c++11 or -std=gnu++11 compiler options.
   32 | #error This file requires compiler and library support \
      |  ^~~~~
p1393.cpp:30:5: warning: identifier 'constexpr' is a keyword in C++11 [-Wc++11-compat]
   30 |     constexpr explicit day(unsigned d) noexcept;
      |     ^~~~~~~~~
p1393.cpp:30:40: warning: identifier 'noexcept' is a keyword in C++11 [-Wc++11-compat]
   30 |     constexpr explicit day(unsigned d) noexcept;
      |                                        ^~~~~~~~
p1393.cpp:86:70: warning: identifier 'nullptr' is a keyword in C++11 [-Wc++11-compat]
   86 |                 day& d, basic_string<charT, traits, Alloc>* abbrev = nullptr,
      |                                                                      ^~~~~~~
p1393.cpp:356:1: warning: identifier 'static_assert' is a keyword in C++11 [-Wc++11-compat]
  356 | static_assert(wdi.weekday() == Sunday);
      | ^~~~~~~~~~~~~
p1393.cpp:701:46: error: invalid suffix "y" on integer constant
  701 |        static_assert(year_month_day{sys_days{2017y/January/0}}  == 2016y/December/31);
      |                                              ^~~~~
p1393.cpp:701:68: error: invalid suffix "y" on integer constant
  701 |        static_assert(year_month_day{sys_days{2017y/January/0}}  == 2016y/December/31);
      |                                                                    ^~~~~
p1393.cpp:702:46: error: invalid suffix "y" on integer constant
  702 |        static_assert(year_month_day{sys_days{2017y/January/31}} == 2017y/January/31);
      |                                              ^~~~~
p1393.cpp:702:68: error: invalid suffix "y" on integer constant
  702 |        static_assert(year_month_day{sys_days{2017y/January/31}} == 2017y/January/31);
      |                                                                    ^~~~~
p1393.cpp:703:46: error: invalid suffix "y" on integer constant
  703 |        static_assert(year_month_day{sys_days{2017y/January/32}} == 2017y/February/1);
      |                                              ^~~~~
p1393.cpp:703:68: error: invalid suffix "y" on integer constant
  703 |        static_assert(year_month_day{sys_days{2017y/January/32}} == 2017y/February/1);
      |                                                                    ^~~~~
p1393.cpp:1014:22: error: invalid suffix "y" on integer constant
 1014 |      year_month ym = 2015y/April;
      |                      ^~~~~
p1393.cpp:1016:22: error: invalid suffix "d" on integer constant
 1016 |      month_day md2 = 4d/April;
      |                      ^~
p1393.cpp:1019:10: error: invalid suffix "y" on integer constant
 1019 | auto b = 2015y/4/4;
      |          ^~~~~
p1393.cpp:1020:10: error: invalid suffix "y" on integer constant
 1020 | auto c = 2015y/4d/April;
      |          ^~~~~
p1393.cpp:1020:16: error: invalid suffix "d" on integer constant
 1020 | auto c = 2015y/4d/April;
      |                ^~
p1393.cpp:19:30: warning: defaulted and deleted functions only available with '-std=c++11' or '-std=gnu++11' [-Wc++11-extensions]
   19 |       explicit last_spec() = default;
      |                              ^~~~~~~
p1393.cpp:29:13: warning: defaulted and deleted functions only available with '-std=c++11' or '-std=gnu++11' [-Wc++11-extensions]
   29 |     day() = default;
      |             ^~~~~~~
p1393.cpp:30:5: error: 'constexpr' does not name a type
   30 |     constexpr explicit day(unsigned d) noexcept;
      |     ^~~~~~~~~
p1393.cpp:30:5: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:31:5: error: 'constexpr' does not name a type
   31 |     constexpr day& operator++()    noexcept;
      |     ^~~~~~~~~
p1393.cpp:31:5: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:32:5: error: 'constexpr' does not name a type
   32 |     constexpr day  operator++(int) noexcept;
      |     ^~~~~~~~~
p1393.cpp:32:5: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:33:5: error: 'constexpr' does not name a type
   33 |     constexpr day& operator--()    noexcept;
      |     ^~~~~~~~~
p1393.cpp:33:5: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:34:5: error: 'constexpr' does not name a type
   34 |     constexpr day  operator--(int) noexcept;
      |     ^~~~~~~~~
p1393.cpp:34:5: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:35:5: error: 'constexpr' does not name a type
   35 |     constexpr day& operator+=(const days& d) noexcept;
      |     ^~~~~~~~~
p1393.cpp:35:5: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:36:5: error: 'constexpr' does not name a type
   36 |     constexpr day& operator-=(const days& d) noexcept;
      |     ^~~~~~~~~
p1393.cpp:36:5: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:37:5: error: 'constexpr' does not name a type
   37 |     constexpr explicit operator unsigned() const noexcept;
      |     ^~~~~~~~~
p1393.cpp:37:5: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:38:5: error: 'constexpr' does not name a type
   38 |     constexpr bool ok() const noexcept;
      |     ^~~~~~~~~
p1393.cpp:38:5: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:41:1: error: 'constexpr' does not name a type
   41 | constexpr day& operator++() noexcept;
      | ^~~~~~~~~
p1393.cpp:41:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:47:4: error: 'constexpr' does not name a type
   47 |    constexpr explicit day(unsigned d) noexcept;
      |    ^~~~~~~~~
p1393.cpp:47:4: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:48:4: error: 'constexpr' does not name a type
   48 |    constexpr day operator++(int) noexcept;
      |    ^~~~~~~~~
p1393.cpp:48:4: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:51:1: error: 'constexpr' does not name a type
   51 | constexpr day& operator--() noexcept;
      | ^~~~~~~~~
p1393.cpp:51:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:53:1: error: 'constexpr' does not name a type
   53 | constexpr day operator--(int) noexcept;
      | ^~~~~~~~~
p1393.cpp:53:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:56:1: error: 'constexpr' does not name a type
   56 | constexpr day& operator+=(const days& d) noexcept;
      | ^~~~~~~~~
p1393.cpp:56:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:58:1: error: 'constexpr' does not name a type
   58 | constexpr day& operator-=(const days& d) noexcept;
      | ^~~~~~~~~
p1393.cpp:58:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:60:1: error: 'constexpr' does not name a type
   60 | constexpr explicit operator unsigned() const noexcept;
      | ^~~~~~~~~
p1393.cpp:60:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:62:1: error: 'constexpr' does not name a type
   62 | constexpr bool ok() const noexcept;
      | ^~~~~~~~~
p1393.cpp:62:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:65:1: error: 'constexpr' does not name a type
   65 | constexpr bool operator==(const day& x, const day& y) noexcept;
      | ^~~~~~~~~
p1393.cpp:65:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:67:1: error: 'constexpr' does not name a type
   67 | constexpr strong_ordering operator<=>(const day& x, const day& y) noexcept;
      | ^~~~~~~~~
p1393.cpp:67:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:69:1: error: 'constexpr' does not name a type
   69 | constexpr day operator+(const day& x, const days& y) noexcept;
      | ^~~~~~~~~
p1393.cpp:69:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:71:1: error: 'constexpr' does not name a type
   71 | constexpr day operator+(const days& x, const day& y) noexcept;
      | ^~~~~~~~~
p1393.cpp:71:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:73:1: error: 'constexpr' does not name a type
   73 | constexpr day operator-(const day& x, const days& y) noexcept;
      | ^~~~~~~~~
p1393.cpp:73:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:75:1: error: 'constexpr' does not name a type
   75 | constexpr days operator-(const day& x, const day& y) noexcept;
      | ^~~~~~~~~
p1393.cpp:75:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:79:56: error: 'day' does not name a type
   79 |     operator<<(basic_ostream<charT, traits>& os, const day& d);
      |                                                        ^~~
p1393.cpp:81:1: error: expected unqualified-id before 'return'
   81 | return os << (d.ok() ?
      | ^~~~~~
p1393.cpp:83:66: error: spurious '>>', use '>' to terminate a template argument list
   83 | template<class charT, class traits, class Alloc = allocator<charT>>
      |                                                                  ^~
p1393.cpp:83:51: error: two or more data types in declaration of 'type name'
   83 | template<class charT, class traits, class Alloc = allocator<charT>>
      |                                                   ^~~~~~~~~~~~~~~~~
p1393.cpp:85:5: error: expected '>' before 'from_stream'
   85 |     from_stream(basic_istream<charT, traits>& is, const charT* fmt,
      |     ^~~~~~~~~~~
p1393.cpp:87:38: error: expected unqualified-id before ';' token
   87 |            minutes* offset = nullptr);
      |                                      ^
p1393.cpp:90:1: error: 'constexpr' does not name a type
   90 | constexpr chrono::day operator""d(unsigned long long d) noexcept;
      | ^~~~~~~~~
p1393.cpp:90:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:99:9: error: expected unqualified-id before ')' token
   99 |   month() = default;
      |         ^
p1393.cpp:100:3: error: 'constexpr' does not name a type
  100 |   constexpr explicit month(unsigned m) noexcept;
      |   ^~~~~~~~~
p1393.cpp:100:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:101:3: error: 'constexpr' does not name a type
  101 |   constexpr month& operator++()    noexcept;
      |   ^~~~~~~~~
p1393.cpp:101:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:102:3: error: 'constexpr' does not name a type
  102 |   constexpr month  operator++(int) noexcept;
      |   ^~~~~~~~~
p1393.cpp:102:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:103:3: error: 'constexpr' does not name a type
  103 |   constexpr month& operator--()    noexcept;
      |   ^~~~~~~~~
p1393.cpp:103:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:104:3: error: 'constexpr' does not name a type
  104 |   constexpr month  operator--(int) noexcept;
      |   ^~~~~~~~~
p1393.cpp:104:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:105:3: error: 'constexpr' does not name a type
  105 |   constexpr month& operator+=(const months& m) noexcept;
      |   ^~~~~~~~~
p1393.cpp:105:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:106:3: error: 'constexpr' does not name a type
  106 |   constexpr month& operator-=(const months& m) noexcept;
      |   ^~~~~~~~~
p1393.cpp:106:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:107:3: error: 'constexpr' does not name a type
  107 |   constexpr explicit operator unsigned() const noexcept;
      |   ^~~~~~~~~
p1393.cpp:107:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:108:3: error: 'constexpr' does not name a type
  108 |   constexpr bool ok() const noexcept;
      |   ^~~~~~~~~
p1393.cpp:108:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:114:4: error: 'constexpr' does not name a type
  114 |    constexpr explicit month(unsigned m) noexcept;
      |    ^~~~~~~~~
p1393.cpp:114:4: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:116:1: error: 'constexpr' does not name a type
  116 | constexpr month& operator++() noexcept;
      | ^~~~~~~~~
p1393.cpp:116:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:118:1: error: 'constexpr' does not name a type
  118 | constexpr month operator++(int) noexcept;
      | ^~~~~~~~~
p1393.cpp:118:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:121:1: error: 'constexpr' does not name a type
  121 | constexpr month& operator--() noexcept;
      | ^~~~~~~~~
p1393.cpp:121:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:123:4: error: 'constexpr' does not name a type
  123 |    constexpr month operator--(int) noexcept;
      |    ^~~~~~~~~
p1393.cpp:123:4: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:126:1: error: 'constexpr' does not name a type
  126 | constexpr month& operator+=(const months& m) noexcept;
      | ^~~~~~~~~
p1393.cpp:126:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:128:1: error: 'constexpr' does not name a type
  128 | constexpr month& operator-=(const months& m) noexcept;
      | ^~~~~~~~~
p1393.cpp:128:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:130:1: error: 'constexpr' does not name a type
  130 | constexpr explicit operator unsigned() const noexcept;
      | ^~~~~~~~~
p1393.cpp:130:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:132:1: error: 'constexpr' does not name a type
  132 | constexpr bool ok() const noexcept;
      | ^~~~~~~~~
p1393.cpp:132:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:135:1: error: 'constexpr' does not name a type
  135 | constexpr bool operator==(const month& x, const month& y) noexcept;
      | ^~~~~~~~~
p1393.cpp:135:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:137:1: error: 'constexpr' does not name a type
  137 | constexpr strong_ordering operator<=>(const month& x, const month& y) noexcept;
      | ^~~~~~~~~
p1393.cpp:137:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:139:1: error: 'constexpr' does not name a type
  139 | constexpr month operator+(const month& x, const months& y) noexcept;
      | ^~~~~~~~~
p1393.cpp:139:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:144:1: error: 'constexpr' does not name a type
  144 | constexpr month operator-(const month& x, const months& y) noexcept;
      | ^~~~~~~~~
p1393.cpp:144:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:146:1: error: 'constexpr' does not name a type
  146 | constexpr months operator-(const month& x, const month& y) noexcept;
      | ^~~~~~~~~
p1393.cpp:146:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:151:52: error: 'month' does not name a type
  151 | operator<<(basic_ostream<charT, traits>& os, const month& m);
      |                                                    ^~~~~
p1393.cpp:153:1: error: expected unqualified-id before 'return'
  153 | return os << (m.ok() ?
      | ^~~~~~
p1393.cpp:156:66: error: spurious '>>', use '>' to terminate a template argument list
  156 | template<class charT, class traits, class Alloc = allocator<charT>>
      |                                                                  ^~
p1393.cpp:156:51: error: two or more data types in declaration of 'type name'
  156 | template<class charT, class traits, class Alloc = allocator<charT>>
      |                                                   ^~~~~~~~~~~~~~~~~
p1393.cpp:158:5: error: expected '>' before 'from_stream'
  158 |     from_stream(basic_istream<charT, traits>& is, const charT* fmt,
      |     ^~~~~~~~~~~
p1393.cpp:160:43: error: expected unqualified-id before ';' token
  160 |                 minutes* offset = nullptr);
      |                                           ^
p1393.cpp:170:8: error: expected unqualified-id before ')' token
  170 |   year() = default;
      |        ^
p1393.cpp:171:3: error: 'constexpr' does not name a type
  171 |   constexpr explicit year(int y) noexcept;
      |   ^~~~~~~~~
p1393.cpp:171:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:172:3: error: 'constexpr' does not name a type
  172 |   constexpr year& operator++()    noexcept;
      |   ^~~~~~~~~
p1393.cpp:172:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:173:3: error: 'constexpr' does not name a type
  173 |   constexpr year  operator++(int) noexcept;
      |   ^~~~~~~~~
p1393.cpp:173:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:174:3: error: 'constexpr' does not name a type
  174 |   constexpr year& operator--()    noexcept;
      |   ^~~~~~~~~
p1393.cpp:174:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:175:3: error: 'constexpr' does not name a type
  175 |   constexpr year  operator--(int) noexcept;
      |   ^~~~~~~~~
p1393.cpp:175:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:176:3: error: 'constexpr' does not name a type
  176 |   constexpr year& operator+=(const years& y) noexcept;
      |   ^~~~~~~~~
p1393.cpp:176:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:177:3: error: 'constexpr' does not name a type
  177 |   constexpr year& operator-=(const years& y) noexcept;
      |   ^~~~~~~~~
p1393.cpp:177:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:178:3: error: 'constexpr' does not name a type
  178 |   constexpr year operator+() const noexcept;
      |   ^~~~~~~~~
p1393.cpp:178:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:179:3: error: 'constexpr' does not name a type
  179 |   constexpr year operator-() const noexcept;
      |   ^~~~~~~~~
p1393.cpp:179:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:180:3: error: 'constexpr' does not name a type
  180 |   constexpr bool is_leap() const noexcept;
      |   ^~~~~~~~~
p1393.cpp:180:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:181:3: error: 'constexpr' does not name a type
  181 |   constexpr explicit operator int() const noexcept;
      |   ^~~~~~~~~
p1393.cpp:181:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:182:3: error: 'constexpr' does not name a type
  182 |   constexpr bool ok() const noexcept;
      |   ^~~~~~~~~
p1393.cpp:182:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:183:10: error: 'constexpr' does not name a type
  183 |   static constexpr year min() noexcept;
      |          ^~~~~~~~~
p1393.cpp:183:10: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:184:10: error: 'constexpr' does not name a type
  184 |   static constexpr year max() noexcept;
      |          ^~~~~~~~~
p1393.cpp:184:10: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:190:4: error: 'constexpr' does not name a type
  190 |    constexpr explicit year(int y) noexcept;
      |    ^~~~~~~~~
p1393.cpp:190:4: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:192:1: error: 'constexpr' does not name a type
  192 | constexpr year& operator++() noexcept;
      | ^~~~~~~~~
p1393.cpp:192:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:194:1: error: 'constexpr' does not name a type
  194 | constexpr year operator++(int) noexcept;
      | ^~~~~~~~~
p1393.cpp:194:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:198:1: error: 'constexpr' does not name a type
  198 | constexpr year& operator--() noexcept;
      | ^~~~~~~~~
p1393.cpp:198:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:199:1: error: 'constexpr' does not name a type
  199 | constexpr year operator--(int) noexcept;
      | ^~~~~~~~~
p1393.cpp:199:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:202:1: error: 'constexpr' does not name a type
  202 | constexpr year& operator+=(const years& y) noexcept;
      | ^~~~~~~~~
p1393.cpp:202:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:204:1: error: 'constexpr' does not name a type
  204 | constexpr year& operator-=(const years& y) noexcept;
      | ^~~~~~~~~
p1393.cpp:204:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:206:1: error: 'constexpr' does not name a type
  206 | constexpr year operator+() const noexcept;
      | ^~~~~~~~~
p1393.cpp:206:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:208:1: error: 'constexpr' does not name a type
  208 | constexpr year year::operator-() const noexcept;
      | ^~~~~~~~~
p1393.cpp:208:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:210:1: error: 'constexpr' does not name a type
  210 | constexpr bool is_leap() const noexcept;
      | ^~~~~~~~~
p1393.cpp:210:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:212:1: error: 'constexpr' does not name a type
  212 | constexpr explicit operator int() const noexcept;
      | ^~~~~~~~~
p1393.cpp:212:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:214:1: error: 'constexpr' does not name a type
  214 | constexpr bool ok() const noexcept;
      | ^~~~~~~~~
p1393.cpp:214:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:216:8: error: 'constexpr' does not name a type
  216 | static constexpr year min() noexcept;
      |        ^~~~~~~~~
p1393.cpp:216:8: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:218:8: error: 'constexpr' does not name a type
  218 | static constexpr year max() noexcept;
      |        ^~~~~~~~~
p1393.cpp:218:8: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:221:1: error: 'constexpr' does not name a type
  221 | constexpr bool operator==(const year& x, const year& y) noexcept;
      | ^~~~~~~~~
p1393.cpp:221:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:223:1: error: 'constexpr' does not name a type
  223 | constexpr strong_ordering operator<=>(const year& x, const year& y) noexcept;
      | ^~~~~~~~~
p1393.cpp:223:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:225:1: error: 'constexpr' does not name a type
  225 | constexpr year operator+(const year& x, const years& y) noexcept;
      | ^~~~~~~~~
p1393.cpp:225:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:228:1: error: 'constexpr' does not name a type
  228 | constexpr year operator-(const year& x, const years& y) noexcept;
      | ^~~~~~~~~
p1393.cpp:228:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:230:1: error: 'constexpr' does not name a type
  230 | constexpr years operator-(const year& x, const year& y) noexcept;
      | ^~~~~~~~~
p1393.cpp:230:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:234:56: error: 'year' does not name a type
  234 |     operator<<(basic_ostream<charT, traits>& os, const year& y);
      |                                                        ^~~~
p1393.cpp:236:1: error: expected unqualified-id before 'return'
  236 | return os << (y.ok() ?
      | ^~~~~~
p1393.cpp:238:66: error: spurious '>>', use '>' to terminate a template argument list
  238 | template<class charT, class traits, class Alloc = allocator<charT>>
      |                                                                  ^~
p1393.cpp:238:51: error: two or more data types in declaration of 'type name'
  238 | template<class charT, class traits, class Alloc = allocator<charT>>
      |                                                   ^~~~~~~~~~~~~~~~~
p1393.cpp:240:1: error: expected '>' before 'from_stream'
  240 | from_stream(basic_istream<charT, traits>& is, const charT* fmt,
      | ^~~~~~~~~~~
p1393.cpp:242:39: error: expected unqualified-id before ';' token
  242 |             minutes* offset = nullptr);
      |                                       ^
p1393.cpp:245:1: error: 'constexpr' does not name a type
  245 | constexpr chrono::year operator""y(unsigned long long y) noexcept;
      | ^~~~~~~~~
p1393.cpp:245:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:255:11: error: expected unqualified-id before ')' token
  255 |   weekday() = default;
      |           ^
p1393.cpp:256:3: error: 'constexpr' does not name a type
  256 |   constexpr explicit weekday(unsigned wd) noexcept;
      |   ^~~~~~~~~
p1393.cpp:256:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:257:3: error: 'constexpr' does not name a type
  257 |   constexpr weekday(const sys_days& dp) noexcept;
      |   ^~~~~~~~~
p1393.cpp:257:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:258:3: error: 'constexpr' does not name a type
  258 |   constexpr explicit weekday(const local_days& dp) noexcept;
      |   ^~~~~~~~~
p1393.cpp:258:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:259:3: error: 'constexpr' does not name a type
  259 |   constexpr weekday& operator++()    noexcept;
      |   ^~~~~~~~~
p1393.cpp:259:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:260:3: error: 'constexpr' does not name a type
  260 |   constexpr weekday  operator++(int) noexcept;
      |   ^~~~~~~~~
p1393.cpp:260:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:261:3: error: 'constexpr' does not name a type
  261 |   constexpr weekday& operator--()    noexcept;
      |   ^~~~~~~~~
p1393.cpp:261:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:262:3: error: 'constexpr' does not name a type
  262 |   constexpr weekday  operator--(int) noexcept;
      |   ^~~~~~~~~
p1393.cpp:262:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:263:3: error: 'constexpr' does not name a type
  263 |   constexpr weekday& operator+=(const days& d) noexcept;
      |   ^~~~~~~~~
p1393.cpp:263:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:264:3: error: 'constexpr' does not name a type
  264 |   constexpr weekday& operator-=(const days& d) noexcept;
      |   ^~~~~~~~~
p1393.cpp:264:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:265:3: error: 'constexpr' does not name a type
  265 |   constexpr unsigned c_encoding() const noexcept;
      |   ^~~~~~~~~
p1393.cpp:265:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:266:3: error: 'constexpr' does not name a type
  266 |   constexpr unsigned iso_encoding() const noexcept;
      |   ^~~~~~~~~
p1393.cpp:266:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:267:3: error: 'constexpr' does not name a type
  267 |   constexpr bool ok() const noexcept;
      |   ^~~~~~~~~
p1393.cpp:267:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:268:3: error: 'constexpr' does not name a type
  268 |   constexpr weekday_indexed operator[](unsigned index) const noexcept;
      |   ^~~~~~~~~
p1393.cpp:268:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:269:3: error: 'constexpr' does not name a type
  269 |   constexpr weekday_last    operator[](last_spec) const noexcept;
      |   ^~~~~~~~~
p1393.cpp:269:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:275:1: error: 'constexpr' does not name a type
  275 | constexpr explicit weekday(unsigned wd) noexcept;
      | ^~~~~~~~~
p1393.cpp:275:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:277:1: error: 'constexpr' does not name a type
  277 | constexpr weekday(const sys_days& dp) noexcept;
      | ^~~~~~~~~
p1393.cpp:277:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:280:1: error: 'constexpr' does not name a type
  280 | constexpr explicit weekday(const local_days& dp) noexcept;
      | ^~~~~~~~~
p1393.cpp:280:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:283:1: error: 'constexpr' does not name a type
  283 | constexpr weekday& operator++() noexcept;
      | ^~~~~~~~~
p1393.cpp:283:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:285:1: error: 'constexpr' does not name a type
  285 | constexpr weekday operator++(int) noexcept;
      | ^~~~~~~~~
p1393.cpp:285:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:288:1: error: 'constexpr' does not name a type
  288 | constexpr weekday& operator--() noexcept;
      | ^~~~~~~~~
p1393.cpp:288:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:290:1: error: 'constexpr' does not name a type
  290 | constexpr weekday operator--(int) noexcept;
      | ^~~~~~~~~
p1393.cpp:290:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:293:1: error: 'constexpr' does not name a type
  293 | constexpr weekday& operator+=(const days& d) noexcept;
      | ^~~~~~~~~
p1393.cpp:293:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:295:1: error: 'constexpr' does not name a type
  295 | constexpr weekday& operator-=(const days& d) noexcept;
      | ^~~~~~~~~
p1393.cpp:295:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:297:1: error: 'constexpr' does not name a type
  297 | constexpr unsigned c_encoding() const noexcept;
      | ^~~~~~~~~
p1393.cpp:297:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:299:1: error: 'constexpr' does not name a type
  299 | constexpr unsigned iso_encoding() const noexcept;
      | ^~~~~~~~~
p1393.cpp:299:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:301:1: error: 'constexpr' does not name a type
  301 | constexpr bool ok() const noexcept;
      | ^~~~~~~~~
p1393.cpp:301:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:303:1: error: 'constexpr' does not name a type
  303 | constexpr weekday_indexed operator[](unsigned index) const noexcept;
      | ^~~~~~~~~
p1393.cpp:303:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:305:1: error: 'constexpr' does not name a type
  305 | constexpr weekday_last operator[](last_spec) const noexcept;
      | ^~~~~~~~~
p1393.cpp:305:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:307:1: error: 'constexpr' does not name a type
  307 | constexpr weekday operator+(const weekday& x, const days& y) noexcept;
      | ^~~~~~~~~
p1393.cpp:307:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:309:1: error: 'constexpr' does not name a type
  309 | constexpr bool operator==(const weekday& x, const weekday& y) noexcept;
      | ^~~~~~~~~
p1393.cpp:309:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:312:1: error: 'weekday' does not name a type
  312 | weekday{modulo(static_cast<long long>(x.wd_) + y.count(), 7)}
      | ^~~~~~~
p1393.cpp:316:1: error: 'constexpr' does not name a type
  316 | constexpr weekday operator+(const days& x, const weekday& y) noexcept;
      | ^~~~~~~~~
p1393.cpp:316:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:318:1: error: 'constexpr' does not name a type
  318 | constexpr weekday operator-(const weekday& x, const days& y) noexcept;
      | ^~~~~~~~~
p1393.cpp:318:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:320:1: error: 'constexpr' does not name a type
  320 | constexpr days operator-(const weekday& x, const weekday& y) noexcept;
      | ^~~~~~~~~
p1393.cpp:320:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:325:52: error: 'weekday' does not name a type
  325 | operator<<(basic_ostream<charT, traits>& os, const weekday& wd);
      |                                                    ^~~~~~~
p1393.cpp:327:1: error: expected unqualified-id before 'return'
  327 | return os << (wd.ok() ?
      | ^~~~~~
p1393.cpp:330:66: error: spurious '>>', use '>' to terminate a template argument list
  330 | template<class charT, class traits, class Alloc = allocator<charT>>
      |                                                                  ^~
p1393.cpp:330:51: error: two or more data types in declaration of 'type name'
  330 | template<class charT, class traits, class Alloc = allocator<charT>>
      |                                                   ^~~~~~~~~~~~~~~~~
p1393.cpp:332:1: error: expected '>' before 'from_stream'
  332 | from_stream(basic_istream<charT, traits>& is, const charT* fmt,
      | ^~~~~~~~~~~
p1393.cpp:334:39: error: expected unqualified-id before ';' token
  334 |             minutes* offset = nullptr);
      |                                       ^
p1393.cpp:345:23: warning: defaulted and deleted functions only available with '-std=c++11' or '-std=gnu++11' [-Wc++11-extensions]
  345 |   weekday_indexed() = default;
      |                       ^~~~~~~
p1393.cpp:346:3: error: 'constexpr' does not name a type
  346 |   constexpr weekday_indexed(const chrono::weekday& wd, unsigned index) noexcept;
      |   ^~~~~~~~~
p1393.cpp:346:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:348:10: error: 'constexpr' does not name a type
  348 |          constexpr chrono::weekday weekday() const noexcept;
      |          ^~~~~~~~~
p1393.cpp:348:10: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:349:10: error: 'constexpr' does not name a type
  349 |          constexpr unsigned        index()   const noexcept;
      |          ^~~~~~~~~
p1393.cpp:349:10: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:350:10: error: 'constexpr' does not name a type
  350 |          constexpr bool ok() const noexcept;
      |          ^~~~~~~~~
p1393.cpp:350:10: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:355:1: error: 'constexpr' does not name a type
  355 | constexpr auto wdi = Sunday[2]; // wdi is the second Sunday of an as yet unspecified month
      | ^~~~~~~~~
p1393.cpp:355:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:356:14: error: expected constructor, destructor, or type conversion before '(' token
  356 | static_assert(wdi.weekday() == Sunday);
      |              ^
p1393.cpp:357:14: error: expected constructor, destructor, or type conversion before '(' token
  357 | static_assert(wdi.index() == 2);
      |              ^
p1393.cpp:360:4: error: 'constexpr' does not name a type
  360 |    constexpr weekday_indexed(const chrono::weekday& wd, unsigned index) noexcept;
      |    ^~~~~~~~~
p1393.cpp:360:4: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:361:1: error: 'constexpr' does not name a type
  361 | constexpr chrono::weekday weekday() const noexcept;
      | ^~~~~~~~~
p1393.cpp:361:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:363:1: error: 'constexpr' does not name a type
  363 | constexpr unsigned index() const noexcept;
      | ^~~~~~~~~
p1393.cpp:363:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:365:1: error: 'constexpr' does not name a type
  365 | constexpr bool ok() const noexcept;
      | ^~~~~~~~~
p1393.cpp:365:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:368:1: error: 'constexpr' does not name a type
  368 | constexpr bool operator==(const weekday_indexed& x, const weekday_indexed& y) noexcept;
      | ^~~~~~~~~
p1393.cpp:368:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:372:52: error: 'weekday_indexed' does not name a type
  372 | operator<<(basic_ostream<charT, traits>& os, const weekday_indexed& wdi);
      |                                                    ^~~~~~~~~~~~~~~
p1393.cpp:374:4: warning: 'auto' changes meaning in C++11; please remove it [-Wc++11-compat]
  374 |    auto i = wdi.index();
      |    ^~~~
      |    ----
p1393.cpp:374:9: error: 'i' does not name a type
  374 |    auto i = wdi.index();
      |         ^
p1393.cpp:375:4: error: expected unqualified-id before 'return'
  375 |    return os << (i >= 1 && i <= 5 ?
      |    ^~~~~~
p1393.cpp:395:1: error: 'constexpr' does not name a type
  395 | constexpr auto wdl = Sunday[last]; // wdl is the last Sunday of an as yet unspecified month
      | ^~~~~~~~~
p1393.cpp:395:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:396:19: error: expected constructor, destructor, or type conversion before '(' token
  396 |      static_assert(wdl.weekday() == Sunday);
      |                   ^
p1393.cpp:399:4: error: 'constexpr' does not name a type
  399 |    constexpr explicit weekday_last(const chrono::weekday& wd) noexcept;
      |    ^~~~~~~~~
p1393.cpp:399:4: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:401:1: error: 'constexpr' does not name a type
  401 | constexpr chrono::weekday weekday() const noexcept;
      | ^~~~~~~~~
p1393.cpp:401:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:403:1: error: 'constexpr' does not name a type
  403 | constexpr bool ok() const noexcept;
      | ^~~~~~~~~
p1393.cpp:403:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:406:1: error: 'constexpr' does not name a type
  406 | constexpr bool operator==(const weekday_last& x, const weekday_last& y) noexcept;
      | ^~~~~~~~~
p1393.cpp:406:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:410:52: error: 'weekday_last' does not name a type
  410 | operator<<(basic_ostream<charT, traits>& os, const weekday_last& wdl);
      |                                                    ^~~~~~~~~~~~
p1393.cpp:412:1: error: expected unqualified-id before 'return'
  412 | return os << format(os.getloc(), STATICALLY-WIDEN<charT>("{:L}[last]"), wdl.weekday());
      | ^~~~~~
p1393.cpp:421:19: warning: defaulted and deleted functions only available with '-std=c++11' or '-std=gnu++11' [-Wc++11-extensions]
  421 |     month_day() = default;
      |                   ^~~~~~~
p1393.cpp:422:5: error: 'constexpr' does not name a type
  422 |     constexpr month_day(const chrono::month& m, const chrono::day& d) noexcept;
      |     ^~~~~~~~~
p1393.cpp:422:5: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:423:5: error: 'constexpr' does not name a type
  423 |     constexpr chrono::month month() const noexcept;
      |     ^~~~~~~~~
p1393.cpp:423:5: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:424:5: error: 'constexpr' does not name a type
  424 |     constexpr chrono::day   day()   const noexcept;
      |     ^~~~~~~~~
p1393.cpp:424:5: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:425:5: error: 'constexpr' does not name a type
  425 |     constexpr bool ok() const noexcept;
      |     ^~~~~~~~~
p1393.cpp:425:5: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:430:4: error: 'constexpr' does not name a type
  430 |    constexpr month_day(const chrono::month& m, const chrono::day& d) noexcept;
      |    ^~~~~~~~~
p1393.cpp:430:4: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:432:1: error: 'constexpr' does not name a type
  432 | constexpr chrono::month month() const noexcept;
      | ^~~~~~~~~
p1393.cpp:432:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:433:1: error: 'constexpr' does not name a type
  433 | constexpr chrono::day day() const noexcept;
      | ^~~~~~~~~
p1393.cpp:433:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:435:1: error: 'constexpr' does not name a type
  435 | constexpr bool ok() const noexcept;
      | ^~~~~~~~~
p1393.cpp:435:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:438:1: error: 'constexpr' does not name a type
  438 | constexpr bool operator==(const month_day& x, const month_day& y) noexcept;
      | ^~~~~~~~~
p1393.cpp:438:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:440:1: error: 'constexpr' does not name a type
  440 | constexpr strong_ordering operator<=>(const month_day& x, const month_day& y) noexcept;
      | ^~~~~~~~~
p1393.cpp:440:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:442:1: error: expected unqualified-id before 'if'
  442 | if (auto c = x.month() <=> y.month(); c != 0) return c;
      | ^~
p1393.cpp:442:39: error: 'c' does not name a type
  442 | if (auto c = x.month() <=> y.month(); c != 0) return c;
      |                                       ^
p1393.cpp:443:3: error: expected unqualified-id before 'return'
  443 |   return x.day() <=> y.day();
      |   ^~~~~~
p1393.cpp:446:1: error: expected unqualified-id before '}' token
  446 | }
      | ^
p1393.cpp:446:1: error: expected declaration before '}' token
p1393.cpp:447:26: error: 'charT' was not declared in this scope; did you mean 'char'?
  447 | operator<<(basic_ostream<charT, traits>& os, const month_day& md);
      |                          ^~~~~
      |                          char
p1393.cpp:447:33: error: 'traits' was not declared in this scope
  447 | operator<<(basic_ostream<charT, traits>& os, const month_day& md);
      |                                 ^~~~~~
p1393.cpp:447:39: error: template argument 1 is invalid
  447 | operator<<(basic_ostream<charT, traits>& os, const month_day& md);
      |                                       ^
p1393.cpp:447:39: error: template argument 2 is invalid
p1393.cpp:447:52: error: 'month_day' does not name a type
  447 | operator<<(basic_ostream<charT, traits>& os, const month_day& md);
      |                                                    ^~~~~~~~~
p1393.cpp:447:66: error: expected constructor, destructor, or type conversion before ';' token
  447 | operator<<(basic_ostream<charT, traits>& os, const month_day& md);
      |                                                                  ^
p1393.cpp:449:1: error: expected unqualified-id before 'return'
  449 | return os << format(os.getloc(), STATICALLY-WIDEN<charT>("{:L}/{}"),
      | ^~~~~~
p1393.cpp:451:66: error: spurious '>>', use '>' to terminate a template argument list
  451 | template<class charT, class traits, class Alloc = allocator<charT>>
      |                                                                  ^~
p1393.cpp:451:51: error: two or more data types in declaration of 'type name'
  451 | template<class charT, class traits, class Alloc = allocator<charT>>
      |                                                   ^~~~~~~~~~~~~~~~~
p1393.cpp:453:1: error: expected '>' before 'from_stream'
  453 | from_stream(basic_istream<charT, traits>& is, const charT* fmt,
      | ^~~~~~~~~~~
p1393.cpp:455:39: error: expected unqualified-id before ';' token
  455 |             minutes* offset = nullptr);
      |                                       ^
p1393.cpp:463:3: error: 'constexpr' does not name a type
  463 |   constexpr explicit month_day_last(const chrono::month& m) noexcept;
      |   ^~~~~~~~~
p1393.cpp:463:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:464:3: error: 'constexpr' does not name a type
  464 |   constexpr chrono::month month() const noexcept;
      |   ^~~~~~~~~
p1393.cpp:464:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:465:3: error: 'constexpr' does not name a type
  465 |   constexpr bool ok() const noexcept;
      |   ^~~~~~~~~
p1393.cpp:465:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:471:1: error: 'constexpr' does not name a type
  471 | constexpr auto mdl = February/last; // mdl is the last day of February of an as yet unspecified year
      | ^~~~~~~~~
p1393.cpp:471:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:472:14: error: expected constructor, destructor, or type conversion before '(' token
  472 | static_assert(mdl.month() == February);
      |              ^
p1393.cpp:474:1: error: 'constexpr' does not name a type
  474 | constexpr explicit month_day_last(const chrono::month& m) noexcept;
      | ^~~~~~~~~
p1393.cpp:474:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:476:1: error: 'constexpr' does not name a type
  476 | constexpr month month() const noexcept;
      | ^~~~~~~~~
p1393.cpp:476:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:478:1: error: 'constexpr' does not name a type
  478 | constexpr bool ok() const noexcept;
      | ^~~~~~~~~
p1393.cpp:478:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:480:1: error: 'constexpr' does not name a type
  480 | constexpr bool operator==(const month_day_last& x, const month_day_last& y) noexcept;
      | ^~~~~~~~~
p1393.cpp:480:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:482:1: error: 'constexpr' does not name a type
  482 | constexpr strong_ordering operator<=>(const month_day_last& x, const month_day_last& y) noexcept;
      | ^~~~~~~~~
p1393.cpp:482:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:488:1: error: expected unqualified-id before 'return'
  488 | return os << format(os.getloc(), STATICALLY-WIDEN<charT>("{:L}/last"), mdl.month());
      | ^~~~~~
p1393.cpp:498:5: error: 'constexpr' does not name a type
  498 |     constexpr month_weekday(const chrono::month& m, const chrono::weekday_indexed& wdi) noexcept;
      |     ^~~~~~~~~
p1393.cpp:498:5: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:499:5: error: 'constexpr' does not name a type
  499 |     constexpr chrono::month           month()           const noexcept;
      |     ^~~~~~~~~
p1393.cpp:499:5: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:500:5: error: 'constexpr' does not name a type
  500 |     constexpr chrono::weekday_indexed weekday_indexed() const noexcept;
      |     ^~~~~~~~~
p1393.cpp:500:5: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:501:5: error: 'constexpr' does not name a type
  501 |     constexpr bool ok() const noexcept;
      |     ^~~~~~~~~
p1393.cpp:501:5: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:505:1: error: 'constexpr' does not name a type
  505 | constexpr auto mwd
      | ^~~~~~~~~
p1393.cpp:505:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:507:19: error: expected constructor, destructor, or type conversion before '(' token
  507 |      static_assert(mwd.month() == February);
      |                   ^
p1393.cpp:508:19: error: expected constructor, destructor, or type conversion before '(' token
  508 |      static_assert(mwd.weekday_indexed() == Tuesday[3]);
      |                   ^
p1393.cpp:511:4: error: 'constexpr' does not name a type
  511 |    constexpr month_weekday(const chrono::month& m, const chrono::weekday_indexed& wdi) noexcept;
      |    ^~~~~~~~~
p1393.cpp:511:4: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:514:1: error: 'constexpr' does not name a type
  514 | constexpr chrono::weekday_indexed weekday_indexed() const noexcept;
      | ^~~~~~~~~
p1393.cpp:514:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:516:1: error: 'constexpr' does not name a type
  516 | constexpr bool ok() const noexcept;
      | ^~~~~~~~~
p1393.cpp:516:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:519:1: error: 'constexpr' does not name a type
  519 | constexpr bool operator==(const month_weekday& x, const month_weekday& y) noexcept;
      | ^~~~~~~~~
p1393.cpp:519:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:523:52: error: 'month_weekday' does not name a type
  523 | operator<<(basic_ostream<charT, traits>& os, const month_weekday& mwd);
      |                                                    ^~~~~~~~~~~~~
p1393.cpp:525:1: error: expected unqualified-id before 'return'
  525 | return os << format(os.getloc(), STATICALLY-WIDEN<charT>("{:L}/{:L}"),
      | ^~~~~~
p1393.cpp:532:13: error: 'weekday_last' in namespace 'std::chrono' does not name a type
  532 |     chrono::weekday_last wdl_;
      |             ^~~~~~~~~~~~
p1393.cpp:535:5: error: 'constexpr' does not name a type
  535 |     constexpr month_weekday_last(const chrono::month& m,
      |     ^~~~~~~~~
p1393.cpp:535:5: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:537:5: error: 'constexpr' does not name a type
  537 |     constexpr chrono::month        month()        const noexcept;
      |     ^~~~~~~~~
p1393.cpp:537:5: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:538:5: error: 'constexpr' does not name a type
  538 |     constexpr chrono::weekday_last weekday_last() const noexcept;
      |     ^~~~~~~~~
p1393.cpp:538:5: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:539:5: error: 'constexpr' does not name a type
  539 |     constexpr bool ok() const noexcept;
      |     ^~~~~~~~~
p1393.cpp:539:5: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:543:1: error: 'constexpr' does not name a type
  543 | constexpr auto mwd
      | ^~~~~~~~~
p1393.cpp:543:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:545:19: error: expected constructor, destructor, or type conversion before '(' token
  545 |      static_assert(mwd.month() == February);
      |                   ^
p1393.cpp:546:19: error: expected constructor, destructor, or type conversion before '(' token
  546 |      static_assert(mwd.weekday_last() == Tuesday[last]);
      |                   ^
p1393.cpp:549:4: error: 'constexpr' does not name a type
  549 |    constexpr month_weekday_last(const chrono::month& m,
      |    ^~~~~~~~~
p1393.cpp:549:4: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:553:1: error: 'constexpr' does not name a type
  553 | constexpr chrono::weekday_last weekday_last() const noexcept;
      | ^~~~~~~~~
p1393.cpp:553:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:555:1: error: 'constexpr' does not name a type
  555 | constexpr bool ok() const noexcept;
      | ^~~~~~~~~
p1393.cpp:555:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:558:1: error: 'constexpr' does not name a type
  558 | constexpr bool operator==(const month_weekday_last& x, const month_weekday_last& y) noexcept;
      | ^~~~~~~~~
p1393.cpp:558:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:559:8: error: found ':' in nested-name-specifier, expected '::'
  559 | Returns: x.month() == y.month() && x.weekday_last() == y.weekday_last().
      |        ^
      |        ::
p1393.cpp:559:1: error: 'Returns' does not name a type
  559 | Returns: x.month() == y.month() && x.weekday_last() == y.weekday_last().
      | ^~~~~~~
p1393.cpp:564:1: error: expected unqualified-id before 'return'
  564 | return os << format(os.getloc(), STATICALLY-WIDEN<charT>("{:L}/{:L}"),
      | ^~~~~~
p1393.cpp:574:18: warning: defaulted and deleted functions only available with '-std=c++11' or '-std=gnu++11' [-Wc++11-extensions]
  574 |   year_month() = default;
      |                  ^~~~~~~
p1393.cpp:575:3: error: 'constexpr' does not name a type
  575 |   constexpr year_month(const chrono::year& y, const chrono::month& m) noexcept;
      |   ^~~~~~~~~
p1393.cpp:575:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:576:3: error: 'constexpr' does not name a type
  576 |   constexpr chrono::year  year()  const noexcept;
      |   ^~~~~~~~~
p1393.cpp:576:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:577:3: error: 'constexpr' does not name a type
  577 |   constexpr chrono::month month() const noexcept;
      |   ^~~~~~~~~
p1393.cpp:577:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:578:3: error: 'constexpr' does not name a type
  578 |   constexpr year_month& operator+=(const months& dm) noexcept;
      |   ^~~~~~~~~
p1393.cpp:578:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:579:3: error: 'constexpr' does not name a type
  579 |   constexpr year_month& operator-=(const months& dm) noexcept;
      |   ^~~~~~~~~
p1393.cpp:579:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:580:3: error: 'constexpr' does not name a type
  580 |   constexpr year_month& operator+=(const years& dy)  noexcept;
      |   ^~~~~~~~~
p1393.cpp:580:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:581:3: error: 'constexpr' does not name a type
  581 |   constexpr year_month& operator-=(const years& dy)  noexcept;
      |   ^~~~~~~~~
p1393.cpp:581:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:582:3: error: 'constexpr' does not name a type
  582 |   constexpr bool ok() const noexcept;
      |   ^~~~~~~~~
p1393.cpp:582:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:588:4: error: 'constexpr' does not name a type
  588 |    constexpr year_month(const chrono::year& y, const chrono::month& m) noexcept;
      |    ^~~~~~~~~
p1393.cpp:588:4: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:591:1: error: 'constexpr' does not name a type
  591 | constexpr chrono::month month() const noexcept;
      | ^~~~~~~~~
p1393.cpp:591:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:593:1: error: 'constexpr' does not name a type
  593 | constexpr year_month& operator+=(const months& dm) noexcept;
      | ^~~~~~~~~
p1393.cpp:593:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:596:1: error: 'constexpr' does not name a type
  596 | constexpr year_month& operator-=(const months& dm) noexcept;
      | ^~~~~~~~~
p1393.cpp:596:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:599:1: error: 'constexpr' does not name a type
  599 | constexpr year_month& operator+=(const years& dy) noexcept;
      | ^~~~~~~~~
p1393.cpp:599:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:601:1: error: 'constexpr' does not name a type
  601 | constexpr year_month& operator-=(const years& dy) noexcept;
      | ^~~~~~~~~
p1393.cpp:601:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:603:1: error: 'constexpr' does not name a type
  603 | constexpr bool ok() const noexcept;
      | ^~~~~~~~~
p1393.cpp:603:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:606:1: error: 'constexpr' does not name a type
  606 | constexpr bool operator==(const year_month& x, const year_month& y) noexcept;
      | ^~~~~~~~~
p1393.cpp:606:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:608:1: error: 'constexpr' does not name a type
  608 | constexpr strong_ordering operator<=>(const year_month& x, const year_month& y) noexcept;
      | ^~~~~~~~~
p1393.cpp:608:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:610:1: error: expected unqualified-id before 'if'
  610 | if (auto c = x.year() <=> y.year(); c != 0) return c;
      | ^~
p1393.cpp:610:37: error: 'c' does not name a type
  610 | if (auto c = x.year() <=> y.year(); c != 0) return c;
      |                                     ^
p1393.cpp:611:8: error: expected unqualified-id before 'return'
  611 |        return x.month() <=> y.month();
      |        ^~~~~~
p1393.cpp:612:1: error: 'constexpr' does not name a type
  612 | constexpr year_month operator+(const year_month& ym, const months& dm) noexcept;
      | ^~~~~~~~~
p1393.cpp:612:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:615:1: error: 'constexpr' does not name a type
  615 | constexpr year_month operator+(const months& dm, const year_month& ym) noexcept;
      | ^~~~~~~~~
p1393.cpp:615:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:618:1: error: 'constexpr' does not name a type
  618 | constexpr year_month operator-(const year_month& ym, const months& dm) noexcept;
      | ^~~~~~~~~
p1393.cpp:618:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:621:1: error: 'constexpr' does not name a type
  621 | constexpr months operator-(const year_month& x, const year_month& y) noexcept;
      | ^~~~~~~~~
p1393.cpp:621:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:623:1: error: 'x' does not name a type
  623 | x.year() - y.year() + months{static_cast<int>(unsigned{x.month()}) -
      | ^
p1393.cpp:625:1: error: 'constexpr' does not name a type
  625 | constexpr year_month operator+(const year_month& ym, const years& dy) noexcept;
      | ^~~~~~~~~
p1393.cpp:625:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:627:1: error: 'constexpr' does not name a type
  627 | constexpr year_month operator+(const years& dy, const year_month& ym) noexcept;
      | ^~~~~~~~~
p1393.cpp:627:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:629:1: error: 'constexpr' does not name a type
  629 | constexpr year_month operator-(const year_month& ym, const years& dy) noexcept;
      | ^~~~~~~~~
p1393.cpp:629:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:633:52: error: 'year_month' does not name a type
  633 | operator<<(basic_ostream<charT, traits>& os, const year_month& ym);
      |                                                    ^~~~~~~~~~
p1393.cpp:635:1: error: expected unqualified-id before 'return'
  635 | return os << format(os.getloc(), STATICALLY-WIDEN<charT>("{}/{:L}"), ym.year(), ym.month());
      | ^~~~~~
p1393.cpp:636:66: error: spurious '>>', use '>' to terminate a template argument list
  636 | template<class charT, class traits, class Alloc = allocator<charT>>
      |                                                                  ^~
p1393.cpp:636:51: error: two or more data types in declaration of 'type name'
  636 | template<class charT, class traits, class Alloc = allocator<charT>>
      |                                                   ^~~~~~~~~~~~~~~~~
p1393.cpp:638:5: error: expected '>' before 'from_stream'
  638 |     from_stream(basic_istream<charT, traits>& is, const charT* fmt,
      |     ^~~~~~~~~~~
p1393.cpp:640:43: error: expected unqualified-id before ';' token
  640 |                 minutes* offset = nullptr);
      |                                           ^
p1393.cpp:642:41: error: expected initializer before ')' token
  642 |                     const chrono::day& d) noexcept;
      |                                         ^
p1393.cpp:654:24: warning: defaulted and deleted functions only available with '-std=c++11' or '-std=gnu++11' [-Wc++11-extensions]
  654 |     year_month_day() = default;
      |                        ^~~~~~~
p1393.cpp:655:5: error: 'constexpr' does not name a type
  655 |     constexpr year_month_day(const chrono::year& y, const chrono::month& m,
      |     ^~~~~~~~~
p1393.cpp:655:5: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:657:5: error: 'constexpr' does not name a type
  657 |     constexpr year_month_day(const year_month_day_last& ymdl) noexcept;
      |     ^~~~~~~~~
p1393.cpp:657:5: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:658:5: error: 'constexpr' does not name a type
  658 |     constexpr year_month_day(const sys_days& dp) noexcept;
      |     ^~~~~~~~~
p1393.cpp:658:5: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:659:5: error: 'constexpr' does not name a type
  659 |     constexpr explicit year_month_day(const local_days& dp) noexcept;
      |     ^~~~~~~~~
p1393.cpp:659:5: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:660:5: error: 'constexpr' does not name a type
  660 |     constexpr year_month_day& operator+=(const months& m) noexcept;
      |     ^~~~~~~~~
p1393.cpp:660:5: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:661:5: error: 'constexpr' does not name a type
  661 |     constexpr year_month_day& operator-=(const months& m) noexcept;
      |     ^~~~~~~~~
p1393.cpp:661:5: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:662:5: error: 'constexpr' does not name a type
  662 |     constexpr year_month_day& operator+=(const years& y)  noexcept;
      |     ^~~~~~~~~
p1393.cpp:662:5: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:663:5: error: 'constexpr' does not name a type
  663 |     constexpr year_month_day& operator-=(const years& y)  noexcept;
      |     ^~~~~~~~~
p1393.cpp:663:5: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:664:5: error: 'constexpr' does not name a type
  664 |     constexpr chrono::year  year()  const noexcept;
      |     ^~~~~~~~~
p1393.cpp:664:5: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:665:5: error: 'constexpr' does not name a type
  665 |     constexpr chrono::month month() const noexcept;
      |     ^~~~~~~~~
p1393.cpp:665:5: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:666:5: error: 'constexpr' does not name a type
  666 |     constexpr chrono::day   day()   const noexcept;
      |     ^~~~~~~~~
p1393.cpp:666:5: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:667:5: error: 'constexpr' does not name a type
  667 |     constexpr          operator sys_days()   const noexcept;
      |     ^~~~~~~~~
p1393.cpp:667:5: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:668:5: error: 'constexpr' does not name a type
  668 |     constexpr explicit operator local_days() const noexcept;
      |     ^~~~~~~~~
p1393.cpp:668:5: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:669:5: error: 'constexpr' does not name a type
  669 |     constexpr bool ok() const noexcept;
      |     ^~~~~~~~~
p1393.cpp:669:5: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:675:1: error: 'constexpr' does not name a type
  675 | constexpr year_month_day(const chrono::year& y, const chrono::month& m,
      | ^~~~~~~~~
p1393.cpp:675:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:679:1: error: 'constexpr' does not name a type
  679 | constexpr year_month_day(const sys_days& dp) noexcept;
      | ^~~~~~~~~
p1393.cpp:679:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:681:1: error: 'constexpr' does not name a type
  681 | constexpr explicit year_month_day(const local_days& dp) noexcept;
      | ^~~~~~~~~
p1393.cpp:681:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:685:1: error: 'constexpr' does not name a type
  685 | constexpr year_month_day& operator-=(const months& m) noexcept;
      | ^~~~~~~~~
p1393.cpp:685:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:688:1: error: 'constexpr' does not name a type
  688 | constexpr year_month_day& year_month_day::operator+=(const years& y) noexcept;
      | ^~~~~~~~~
p1393.cpp:688:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:690:1: error: 'constexpr' does not name a type
  690 | constexpr year_month_day& year_month_day::operator-=(const years& y) noexcept;
      | ^~~~~~~~~
p1393.cpp:690:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:692:1: error: 'constexpr' does not name a type
  692 | constexpr chrono::year year() const noexcept;
      | ^~~~~~~~~
p1393.cpp:692:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:694:1: error: 'constexpr' does not name a type
  694 | constexpr chrono::month month() const noexcept;
      | ^~~~~~~~~
p1393.cpp:694:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:696:1: error: 'constexpr' does not name a type
  696 | constexpr chrono::day day() const noexcept;
      | ^~~~~~~~~
p1393.cpp:696:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:698:1: error: 'constexpr' does not name a type
  698 | constexpr operator sys_days() const noexcept;
      | ^~~~~~~~~
p1393.cpp:698:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:701:21: error: expected constructor, destructor, or type conversion before '(' token
  701 |        static_assert(year_month_day{sys_days{2017y/January/0}}  == 2016y/December/31);
      |                     ^
p1393.cpp:701:65: error: expected unqualified-id before '==' token
  701 |        static_assert(year_month_day{sys_days{2017y/January/0}}  == 2016y/December/31);
      |                                                                 ^~
p1393.cpp:702:21: error: expected constructor, destructor, or type conversion before '(' token
  702 |        static_assert(year_month_day{sys_days{2017y/January/31}} == 2017y/January/31);
      |                     ^
p1393.cpp:702:65: error: expected unqualified-id before '==' token
  702 |        static_assert(year_month_day{sys_days{2017y/January/31}} == 2017y/January/31);
      |                                                                 ^~
p1393.cpp:703:21: error: expected constructor, destructor, or type conversion before '(' token
  703 |        static_assert(year_month_day{sys_days{2017y/January/32}} == 2017y/February/1);
      |                     ^
p1393.cpp:703:65: error: expected unqualified-id before '==' token
  703 |        static_assert(year_month_day{sys_days{2017y/January/32}} == 2017y/February/1);
      |                                                                 ^~
p1393.cpp:704:1: error: 'constexpr' does not name a type
  704 | constexpr explicit operator local_days() const noexcept;
      | ^~~~~~~~~
p1393.cpp:704:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:708:1: error: 'constexpr' does not name a type
  708 | constexpr bool operator==(const year_month_day& x, const year_month_day& y) noexcept;
      | ^~~~~~~~~
p1393.cpp:708:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:710:1: error: 'constexpr' does not name a type
  710 | constexpr strong_ordering operator<=>(const year_month_day& x, const year_month_day& y) noexcept;
      | ^~~~~~~~~
p1393.cpp:710:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:712:3: error: expected unqualified-id before 'if'
  712 |   if (auto c = x.year() <=> y.year(); c != 0) return c;
      |   ^~
p1393.cpp:712:39: error: 'c' does not name a type
  712 |   if (auto c = x.year() <=> y.year(); c != 0) return c;
      |                                       ^
p1393.cpp:713:3: error: expected unqualified-id before 'if'
  713 |   if (auto c = x.month() <=> y.month(); c != 0) return c;
      |   ^~
p1393.cpp:713:41: error: 'c' does not name a type
  713 |   if (auto c = x.month() <=> y.month(); c != 0) return c;
      |                                         ^
p1393.cpp:714:3: error: expected unqualified-id before 'return'
  714 |   return x.day() <=> y.day();
      |   ^~~~~~
p1393.cpp:715:1: error: 'constexpr' does not name a type
  715 | constexpr year_month_day operator+(const year_month_day& ymd, const months& dm) noexcept;
      | ^~~~~~~~~
p1393.cpp:715:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:719:1: error: 'constexpr' does not name a type
  719 | constexpr year_month_day operator+(const months& dm, const year_month_day& ymd) noexcept;
      | ^~~~~~~~~
p1393.cpp:719:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:722:1: error: 'constexpr' does not name a type
  722 | constexpr year_month_day operator-(const year_month_day& ymd, const months& dm) noexcept;
      | ^~~~~~~~~
p1393.cpp:722:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:725:1: error: 'constexpr' does not name a type
  725 | constexpr year_month_day operator+(const year_month_day& ymd, const years& dy) noexcept;
      | ^~~~~~~~~
p1393.cpp:725:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:728:1: error: 'constexpr' does not name a type
  728 | constexpr year_month_day operator+(const years& dy, const year_month_day& ymd) noexcept;
      | ^~~~~~~~~
p1393.cpp:728:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:730:1: error: 'constexpr' does not name a type
  730 | constexpr year_month_day operator-(const year_month_day& ymd, const years& dy) noexcept;
      | ^~~~~~~~~
p1393.cpp:730:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:734:56: error: 'year_month_day' does not name a type
  734 |     operator<<(basic_ostream<charT, traits>& os, const year_month_day& ymd);
      |                                                        ^~~~~~~~~~~~~~
p1393.cpp:736:1: error: expected unqualified-id before 'return'
  736 | return os << (ymd.ok() ?
      | ^~~~~~
p1393.cpp:738:66: error: spurious '>>', use '>' to terminate a template argument list
  738 | template<class charT, class traits, class Alloc = allocator<charT>>
      |                                                                  ^~
p1393.cpp:738:51: error: two or more data types in declaration of 'type name'
  738 | template<class charT, class traits, class Alloc = allocator<charT>>
      |                                                   ^~~~~~~~~~~~~~~~~
p1393.cpp:740:5: error: expected '>' before 'from_stream'
  740 |     from_stream(basic_istream<charT, traits>& is, const charT* fmt,
      |     ^~~~~~~~~~~
p1393.cpp:742:38: error: expected unqualified-id before ';' token
  742 |            minutes* offset = nullptr);
      |                                      ^
p1393.cpp:752:3: error: 'constexpr' does not name a type
  752 |   constexpr year_month_day_last(const chrono::year& y,
      |   ^~~~~~~~~
p1393.cpp:752:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:754:5: error: 'constexpr' does not name a type
  754 |     constexpr year_month_day_last& operator+=(const months& m) noexcept;
      |     ^~~~~~~~~
p1393.cpp:754:5: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:755:5: error: 'constexpr' does not name a type
  755 |     constexpr year_month_day_last& operator-=(const months& m) noexcept;
      |     ^~~~~~~~~
p1393.cpp:755:5: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:756:5: error: 'constexpr' does not name a type
  756 |     constexpr year_month_day_last& operator+=(const years& y)  noexcept;
      |     ^~~~~~~~~
p1393.cpp:756:5: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:757:5: error: 'constexpr' does not name a type
  757 |     constexpr year_month_day_last& operator-=(const years& y)  noexcept;
      |     ^~~~~~~~~
p1393.cpp:757:5: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:758:5: error: 'constexpr' does not name a type
  758 |     constexpr chrono::year           year()           const noexcept;
      |     ^~~~~~~~~
p1393.cpp:758:5: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:759:5: error: 'constexpr' does not name a type
  759 |     constexpr chrono::month          month()          const noexcept;
      |     ^~~~~~~~~
p1393.cpp:759:5: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:760:5: error: 'constexpr' does not name a type
  760 |     constexpr chrono::month_day_last month_day_last() const noexcept;
      |     ^~~~~~~~~
p1393.cpp:760:5: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:761:5: error: 'constexpr' does not name a type
  761 |     constexpr chrono::day            day()            const noexcept;
      |     ^~~~~~~~~
p1393.cpp:761:5: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:762:5: error: 'constexpr' does not name a type
  762 |     constexpr          operator sys_days()   const noexcept;
      |     ^~~~~~~~~
p1393.cpp:762:5: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:763:5: error: 'constexpr' does not name a type
  763 |     constexpr explicit operator local_days() const noexcept;
      |     ^~~~~~~~~
p1393.cpp:763:5: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:764:5: error: 'constexpr' does not name a type
  764 |     constexpr bool ok() const noexcept;
      |     ^~~~~~~~~
p1393.cpp:764:5: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:771:1: error: 'constexpr' does not name a type
  771 | constexpr year_month_day_last(const chrono::year& y,
      | ^~~~~~~~~
p1393.cpp:771:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:774:1: error: 'constexpr' does not name a type
  774 | constexpr year_month_day_last& operator+=(const months& m) noexcept;
      | ^~~~~~~~~
p1393.cpp:774:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:777:1: error: 'constexpr' does not name a type
  777 | constexpr year_month_day_last& operator-=(const months& m) noexcept;
      | ^~~~~~~~~
p1393.cpp:777:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:780:1: error: 'constexpr' does not name a type
  780 | constexpr year_month_day_last& operator+=(const years& y) noexcept;
      | ^~~~~~~~~
p1393.cpp:780:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:782:1: error: 'constexpr' does not name a type
  782 | constexpr year_month_day_last& operator-=(const years& y) noexcept;
      | ^~~~~~~~~
p1393.cpp:782:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:784:1: error: 'constexpr' does not name a type
  784 | constexpr chrono::year year() const noexcept;
      | ^~~~~~~~~
p1393.cpp:784:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:786:1: error: 'constexpr' does not name a type
  786 | constexpr chrono::month month() const noexcept;
      | ^~~~~~~~~
p1393.cpp:786:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:788:1: error: 'constexpr' does not name a type
  788 | constexpr chrono::month_day_last month_day_last() const noexcept;
      | ^~~~~~~~~
p1393.cpp:788:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:790:1: error: 'constexpr' does not name a type
  790 | constexpr chrono::day day() const noexcept;
      | ^~~~~~~~~
p1393.cpp:790:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:793:1: error: 'constexpr' does not name a type
  793 | constexpr operator sys_days() const noexcept;
      | ^~~~~~~~~
p1393.cpp:793:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:795:1: error: 'constexpr' does not name a type
  795 | constexpr explicit operator local_days() const noexcept;
      | ^~~~~~~~~
p1393.cpp:795:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:797:1: error: 'constexpr' does not name a type
  797 | constexpr bool ok() const noexcept;
      | ^~~~~~~~~
p1393.cpp:797:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:800:1: error: 'constexpr' does not name a type
  800 | constexpr bool operator==(const year_month_day_last& x, const year_month_day_last& y) noexcept;
      | ^~~~~~~~~
p1393.cpp:800:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:802:40: error: 'year_month_day_last' does not name a type
  802 |                                  const year_month_day_last& y) noexcept;
      |                                        ^~~~~~~~~~~~~~~~~~~
p1393.cpp:804:1: error: expected unqualified-id before 'if'
  804 | if (auto c = x.year() <=> y.year(); c != 0) return c;
      | ^~
p1393.cpp:804:37: error: 'c' does not name a type
  804 | if (auto c = x.year() <=> y.year(); c != 0) return c;
      |                                     ^
p1393.cpp:805:3: error: expected unqualified-id before 'return'
  805 |   return x.month_day_last() <=> y.month_day_last();
      |   ^~~~~~
p1393.cpp:806:1: error: 'constexpr' does not name a type
  806 | constexpr year_month_day_last
      | ^~~~~~~~~
p1393.cpp:806:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:810:17: error: 'months' does not name a type
  810 | operator+(const months& dm, const year_month_day_last& ymdl) noexcept;
      |                 ^~~~~~
p1393.cpp:810:35: error: 'year_month_day_last' does not name a type
  810 | operator+(const months& dm, const year_month_day_last& ymdl) noexcept;
      |                                   ^~~~~~~~~~~~~~~~~~~
p1393.cpp:810:62: error: expected constructor, destructor, or type conversion before 'noexcept'
  810 | operator+(const months& dm, const year_month_day_last& ymdl) noexcept;
      |                                                              ^~~~~~~~
p1393.cpp:813:4: error: 'constexpr' does not name a type
  813 |    constexpr year_month_day_last
      |    ^~~~~~~~~
p1393.cpp:813:4: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:817:1: error: 'constexpr' does not name a type
  817 | constexpr year_month_day_last
      | ^~~~~~~~~
p1393.cpp:817:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:820:19: error: 'years' does not name a type
  820 |   operator+(const years& dy, const year_month_day_last& ymdl) noexcept;
      |                   ^~~~~
p1393.cpp:820:36: error: 'year_month_day_last' does not name a type
  820 |   operator+(const years& dy, const year_month_day_last& ymdl) noexcept;
      |                                    ^~~~~~~~~~~~~~~~~~~
p1393.cpp:820:63: error: expected constructor, destructor, or type conversion before 'noexcept'
  820 |   operator+(const years& dy, const year_month_day_last& ymdl) noexcept;
      |                                                               ^~~~~~~~
p1393.cpp:822:1: error: 'constexpr' does not name a type
  822 | constexpr year_month_day_last
      | ^~~~~~~~~
p1393.cpp:822:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:827:52: error: 'year_month_day_last' does not name a type
  827 | operator<<(basic_ostream<charT, traits>& os, const year_month_day_last& ymdl);
      |                                                    ^~~~~~~~~~~~~~~~~~~
p1393.cpp:829:1: error: expected unqualified-id before 'return'
  829 | return os << format(os.getloc(), STATICALLY-WIDEN<charT>("{}/{:L}"),
      | ^~~~~~
p1393.cpp:859:25: error: expected constructor, destructor, or type conversion before 'noexcept'
  859 | year()            const noexcept;
      |                         ^~~~~~~~
p1393.cpp:860:25: error: expected constructor, destructor, or type conversion before 'noexcept'
  860 | month()           const noexcept;
      |                         ^~~~~~~~
p1393.cpp:861:25: error: expected constructor, destructor, or type conversion before 'noexcept'
  861 | weekday()         const noexcept;
      |                         ^~~~~~~~
p1393.cpp:862:25: error: expected constructor, destructor, or type conversion before 'noexcept'
  862 | index()           const noexcept;
      |                         ^~~~~~~~
p1393.cpp:868:4: error: 'constexpr' does not name a type
  868 |    constexpr year_month_weekday(const chrono::year& y, const chrono::month& m,
      |    ^~~~~~~~~
p1393.cpp:868:4: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:871:1: error: 'constexpr' does not name a type
  871 | constexpr year_month_weekday(const sys_days& dp) noexcept;
      | ^~~~~~~~~
p1393.cpp:871:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:872:1: error: 'constexpr' does not name a type
  872 | constexpr explicit year_month_weekday(const local_days& dp) noexcept;
      | ^~~~~~~~~
p1393.cpp:872:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:874:1: error: 'constexpr' does not name a type
  874 | constexpr year_month_weekday& operator+=(const months& m) noexcept;
      | ^~~~~~~~~
p1393.cpp:874:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:877:1: error: 'constexpr' does not name a type
  877 | constexpr year_month_weekday& operator-=(const months& m) noexcept;
      | ^~~~~~~~~
p1393.cpp:877:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:880:1: error: 'constexpr' does not name a type
  880 | constexpr year_month_weekday& operator+=(const years& y) noexcept;
      | ^~~~~~~~~
p1393.cpp:880:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:882:1: error: 'constexpr' does not name a type
  882 | constexpr year_month_weekday& operator-=(const years& y) noexcept;
      | ^~~~~~~~~
p1393.cpp:882:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:884:1: error: 'constexpr' does not name a type
  884 | constexpr chrono::year year() const noexcept;
      | ^~~~~~~~~
p1393.cpp:884:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:886:1: error: 'constexpr' does not name a type
  886 | constexpr chrono::month month() const noexcept;
      | ^~~~~~~~~
p1393.cpp:886:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:888:1: error: 'constexpr' does not name a type
  888 | constexpr chrono::weekday weekday() const noexcept;
      | ^~~~~~~~~
p1393.cpp:888:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:890:1: error: 'constexpr' does not name a type
  890 | constexpr unsigned index() const noexcept;
      | ^~~~~~~~~
p1393.cpp:890:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:892:1: error: 'constexpr' does not name a type
  892 | constexpr chrono::weekday_indexed weekday_indexed() const noexcept;
      | ^~~~~~~~~
p1393.cpp:892:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:894:1: error: 'constexpr' does not name a type
  894 | constexpr operator sys_days() const noexcept;
      | ^~~~~~~~~
p1393.cpp:894:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:896:1: error: 'constexpr' does not name a type
  896 | constexpr explicit operator local_days() const noexcept;
      | ^~~~~~~~~
p1393.cpp:896:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:900:1: error: 'constexpr' does not name a type
  900 | constexpr bool operator==(const year_month_weekday& x, const year_month_weekday& y) noexcept;
      | ^~~~~~~~~
p1393.cpp:900:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:902:1: error: 'constexpr' does not name a type
  902 | constexpr year_month_weekday operator+(const year_month_weekday& ymwd, const months& dm) noexcept;
      | ^~~~~~~~~
p1393.cpp:902:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:905:1: error: 'constexpr' does not name a type
  905 | constexpr year_month_weekday operator+(const months& dm, const year_month_weekday& ymwd) noexcept;
      | ^~~~~~~~~
p1393.cpp:905:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:908:1: error: 'constexpr' does not name a type
  908 | constexpr year_month_weekday operator-(const year_month_weekday& ymwd, const months& dm) noexcept;
      | ^~~~~~~~~
p1393.cpp:908:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:911:1: error: 'constexpr' does not name a type
  911 | constexpr year_month_weekday operator+(const year_month_weekday& ymwd, const years& dy) noexcept;
      | ^~~~~~~~~
p1393.cpp:911:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:913:1: error: 'constexpr' does not name a type
  913 | constexpr year_month_weekday operator+(const years& dy, const year_month_weekday& ymwd) noexcept;
      | ^~~~~~~~~
p1393.cpp:913:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:915:1: error: 'constexpr' does not name a type
  915 | constexpr year_month_weekday operator-(const year_month_weekday& ymwd, const years& dy) noexcept;
      | ^~~~~~~~~
p1393.cpp:915:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:919:52: error: 'year_month_weekday' does not name a type
  919 | operator<<(basic_ostream<charT, traits>& os, const year_month_weekday& ymwd);
      |                                                    ^~~~~~~~~~~~~~~~~~
p1393.cpp:921:1: error: expected unqualified-id before 'return'
  921 | return os << format(os.getloc(), STATICALLY-WIDEN<charT>("{}/{:L}/{:L}"), ymwd.year(), ymwd.month(), ymwd.weekday_indexed());
      | ^~~~~~
p1393.cpp:928:9: error: 'weekday_last' in namespace 'std::chrono' does not name a type
  928 | chrono::weekday_last wdl_;
      |         ^~~~~~~~~~~~
p1393.cpp:931:3: error: 'constexpr' does not name a type
  931 |   constexpr year_month_weekday_last(const chrono::year& y, const chrono::month& m,
      |   ^~~~~~~~~
p1393.cpp:931:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:935:1: error: 'constexpr' does not name a type
  935 | constexpr year_month_weekday_last& operator+=(const months& m) noexcept;
      | ^~~~~~~~~
p1393.cpp:935:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:936:1: error: 'constexpr' does not name a type
  936 | constexpr year_month_weekday_last& operator-=(const months& m) noexcept;
      | ^~~~~~~~~
p1393.cpp:936:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:937:1: error: 'constexpr' does not name a type
  937 | constexpr year_month_weekday_last& operator+=(const years& y)  noexcept;
      | ^~~~~~~~~
p1393.cpp:937:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:938:1: error: 'constexpr' does not name a type
  938 | constexpr year_month_weekday_last& operator-=(const years& y)  noexcept;
      | ^~~~~~~~~
p1393.cpp:938:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:939:10: error: 'constexpr' does not name a type
  939 |          constexpr chrono::year         year()
      |          ^~~~~~~~~
p1393.cpp:939:10: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:943:10: error: 'constexpr' does not name a type
  943 |          constexpr          operator sys_days()   const noexcept;
      |          ^~~~~~~~~
p1393.cpp:943:10: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:944:10: error: 'constexpr' does not name a type
  944 |          constexpr explicit operator local_days() const noexcept;
      |          ^~~~~~~~~
p1393.cpp:944:10: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:945:10: error: 'constexpr' does not name a type
  945 |          constexpr bool ok() const noexcept;
      |          ^~~~~~~~~
p1393.cpp:945:10: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:951:4: error: 'constexpr' does not name a type
  951 |    constexpr year_month_weekday_last(const chrono::year& y, const chrono::month& m,
      |    ^~~~~~~~~
p1393.cpp:951:4: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:954:1: error: 'constexpr' does not name a type
  954 | constexpr year_month_weekday_last& operator+=(const months& m) noexcept;
      | ^~~~~~~~~
p1393.cpp:954:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:955:1: error: 'constexpr' does not name a type
  955 | constexpr year_month_weekday_last& operator-=(const months& m) noexcept;
      | ^~~~~~~~~
p1393.cpp:955:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:956:7: error: 'noexcept' does not name a type
  956 | const noexcept;
      |       ^~~~~~~~
p1393.cpp:956:7: note: C++11 'noexcept' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:957:7: error: 'noexcept' does not name a type
  957 | const noexcept;
      |       ^~~~~~~~
p1393.cpp:957:7: note: C++11 'noexcept' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:958:7: error: 'noexcept' does not name a type
  958 | const noexcept;
      |       ^~~~~~~~
p1393.cpp:958:7: note: C++11 'noexcept' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:961:1: error: 'constexpr' does not name a type
  961 | constexpr year_month_weekday_last& operator+=(const years& y) noexcept;
      | ^~~~~~~~~
p1393.cpp:961:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:963:1: error: 'constexpr' does not name a type
  963 | constexpr year_month_weekday_last& operator-=(const years& y) noexcept;
      | ^~~~~~~~~
p1393.cpp:963:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:965:1: error: 'constexpr' does not name a type
  965 | constexpr chrono::year year() const noexcept;
      | ^~~~~~~~~
p1393.cpp:965:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:967:1: error: 'constexpr' does not name a type
  967 | constexpr chrono::month month() const noexcept;
      | ^~~~~~~~~
p1393.cpp:967:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:969:1: error: 'constexpr' does not name a type
  969 | constexpr chrono::weekday weekday() const noexcept;
      | ^~~~~~~~~
p1393.cpp:969:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:971:1: error: 'constexpr' does not name a type
  971 | constexpr chrono::weekday_last weekday_last() const noexcept;
      | ^~~~~~~~~
p1393.cpp:971:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:973:1: error: 'constexpr' does not name a type
  973 | constexpr operator sys_days() const noexcept;
      | ^~~~~~~~~
p1393.cpp:973:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:975:1: error: 'constexpr' does not name a type
  975 | constexpr explicit operator local_days() const noexcept;
      | ^~~~~~~~~
p1393.cpp:975:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:979:28: error: 'year_month_weekday_last' does not name a type
  979 |                      const year_month_weekday_last& y) noexcept;
      |                            ^~~~~~~~~~~~~~~~~~~~~~~
p1393.cpp:981:1: error: 'constexpr' does not name a type
  981 | constexpr year_month_weekday_last
      | ^~~~~~~~~
p1393.cpp:981:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:985:1: error: 'constexpr' does not name a type
  985 | constexpr year_month_weekday_last
      | ^~~~~~~~~
p1393.cpp:985:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:989:1: error: 'constexpr' does not name a type
  989 | constexpr year_month_weekday_last
      | ^~~~~~~~~
p1393.cpp:989:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:993:1: error: 'constexpr' does not name a type
  993 | constexpr year_month_weekday_last
      | ^~~~~~~~~
p1393.cpp:993:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:996:1: error: 'constexpr' does not name a type
  996 | constexpr year_month_weekday_last
      | ^~~~~~~~~
p1393.cpp:996:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:999:1: error: 'constexpr' does not name a type
  999 | constexpr year_month_weekday_last
      | ^~~~~~~~~
p1393.cpp:999:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:1004:52: error: 'year_month_weekday_last' does not name a type
 1004 | operator<<(basic_ostream<charT, traits>& os, const year_month_weekday_last& ymwdl);
      |                                                    ^~~~~~~~~~~~~~~~~~~~~~~
p1393.cpp:1006:1: error: expected unqualified-id before 'return'
 1006 | return os << format(os.getloc(), STATICALLY-WIDEN<charT>("{}/{:L}/{:L}"), ymwdl.year(), ymwdl.month(), ymwdl.weekday_last());
      | ^~~~~~
p1393.cpp:1008:1: error: 'constexpr' does not name a type
 1008 | constexpr year_month
      | ^~~~~~~~~
p1393.cpp:1008:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:1014:6: error: 'year_month' does not name a type
 1014 |      year_month ym = 2015y/April;
      |      ^~~~~~~~~~
p1393.cpp:1015:6: error: 'month_day' does not name a type
 1015 |      month_day md1 = April/4;
      |      ^~~~~~~~~
p1393.cpp:1016:6: error: 'month_day' does not name a type
 1016 |      month_day md2 = 4d/April;
      |      ^~~~~~~~~
p1393.cpp:1018:1: warning: 'auto' changes meaning in C++11; please remove it [-Wc++11-compat]
 1018 | auto a = 2015/4/4;
      | ^~~~
      | ----
p1393.cpp:1018:6: error: 'a' does not name a type
 1018 | auto a = 2015/4/4;
      |      ^
p1393.cpp:1019:1: warning: 'auto' changes meaning in C++11; please remove it [-Wc++11-compat]
 1019 | auto b = 2015y/4/4;
      | ^~~~
      | ----
p1393.cpp:1019:6: error: 'b' does not name a type
 1019 | auto b = 2015y/4/4;
      |      ^
p1393.cpp:1020:1: warning: 'auto' changes meaning in C++11; please remove it [-Wc++11-compat]
 1020 | auto c = 2015y/4d/April;
      | ^~~~
      | ----
p1393.cpp:1020:6: error: 'c' does not name a type
 1020 | auto c = 2015y/4d/April;
      |      ^
p1393.cpp:1021:1: warning: 'auto' changes meaning in C++11; please remove it [-Wc++11-compat]
 1021 | auto d = 2015/April/4;
      | ^~~~
      | ----
p1393.cpp:1021:6: error: 'd' does not name a type
 1021 | auto d = 2015/April/4;
      |      ^
p1393.cpp:1026:1: error: 'constexpr' does not name a type
 1026 | constexpr year_month
      | ^~~~~~~~~
p1393.cpp:1026:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:1029:1: error: 'constexpr' does not name a type
 1029 | constexpr month_day
      | ^~~~~~~~~
p1393.cpp:1029:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:1032:1: error: 'constexpr' does not name a type
 1032 | constexpr month_day
      | ^~~~~~~~~
p1393.cpp:1032:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:1035:1: error: 'constexpr' does not name a type
 1035 | constexpr month_day
      | ^~~~~~~~~
p1393.cpp:1035:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:1038:1: error: 'constexpr' does not name a type
 1038 | constexpr month_day
      | ^~~~~~~~~
p1393.cpp:1038:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:1041:1: error: 'constexpr' does not name a type
 1041 | constexpr month_day
      | ^~~~~~~~~
p1393.cpp:1041:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:1044:1: error: 'constexpr' does not name a type
 1044 | constexpr month_day_last
      | ^~~~~~~~~
p1393.cpp:1044:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:1047:1: error: 'constexpr' does not name a type
 1047 | constexpr month_day_last
      | ^~~~~~~~~
p1393.cpp:1047:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:1050:1: error: 'constexpr' does not name a type
 1050 | constexpr month_day_last
      | ^~~~~~~~~
p1393.cpp:1050:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:1053:1: error: 'constexpr' does not name a type
 1053 | constexpr month_day_last
      | ^~~~~~~~~
p1393.cpp:1053:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:1056:1: error: 'constexpr' does not name a type
 1056 | constexpr month_weekday
      | ^~~~~~~~~
p1393.cpp:1056:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:1059:1: error: 'constexpr' does not name a type
 1059 | constexpr month_weekday
      | ^~~~~~~~~
p1393.cpp:1059:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:1062:1: error: 'constexpr' does not name a type
 1062 | constexpr month_weekday
      | ^~~~~~~~~
p1393.cpp:1062:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:1065:1: error: 'constexpr' does not name a type
 1065 | constexpr month_weekday
      | ^~~~~~~~~
p1393.cpp:1065:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:1068:1: error: 'constexpr' does not name a type
 1068 | constexpr month_weekday_last
      | ^~~~~~~~~
p1393.cpp:1068:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:1071:1: error: 'constexpr' does not name a type
 1071 | constexpr month_weekday_last
      | ^~~~~~~~~
p1393.cpp:1071:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:1074:1: error: 'constexpr' does not name a type
 1074 | constexpr month_weekday_last
      | ^~~~~~~~~
p1393.cpp:1074:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:1077:1: error: 'constexpr' does not name a type
 1077 | constexpr month_weekday_last
      | ^~~~~~~~~
p1393.cpp:1077:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:1080:1: error: 'constexpr' does not name a type
 1080 | constexpr year_month_day
      | ^~~~~~~~~
p1393.cpp:1080:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:1083:1: error: 'constexpr' does not name a type
 1083 | constexpr year_month_day
      | ^~~~~~~~~
p1393.cpp:1083:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:1086:1: error: 'constexpr' does not name a type
 1086 | constexpr year_month_day
      | ^~~~~~~~~
p1393.cpp:1086:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:1089:1: error: 'constexpr' does not name a type
 1089 | constexpr year_month_day
      | ^~~~~~~~~
p1393.cpp:1089:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:1092:1: error: 'constexpr' does not name a type
 1092 | constexpr year_month_day
      | ^~~~~~~~~
p1393.cpp:1092:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:1095:1: error: 'constexpr' does not name a type
 1095 | constexpr year_month_day
      | ^~~~~~~~~
p1393.cpp:1095:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:1098:1: error: 'constexpr' does not name a type
 1098 | constexpr year_month_day_last
      | ^~~~~~~~~
p1393.cpp:1098:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:1101:1: error: 'constexpr' does not name a type
 1101 | constexpr year_month_day_last
      | ^~~~~~~~~
p1393.cpp:1101:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:1104:1: error: 'constexpr' does not name a type
 1104 | constexpr year_month_day_last
      | ^~~~~~~~~
p1393.cpp:1104:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:1107:1: error: 'constexpr' does not name a type
 1107 | constexpr year_month_day_last
      | ^~~~~~~~~
p1393.cpp:1107:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:1110:1: error: 'constexpr' does not name a type
 1110 | constexpr year_month_day_last
      | ^~~~~~~~~
p1393.cpp:1110:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:1113:1: error: 'constexpr' does not name a type
 1113 | constexpr year_month_weekday
      | ^~~~~~~~~
p1393.cpp:1113:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:1116:1: error: 'constexpr' does not name a type
 1116 | constexpr year_month_weekday
      | ^~~~~~~~~
p1393.cpp:1116:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:1119:1: error: 'constexpr' does not name a type
 1119 | constexpr year_month_weekday
      | ^~~~~~~~~
p1393.cpp:1119:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:1122:1: error: 'constexpr' does not name a type
 1122 | constexpr year_month_weekday
      | ^~~~~~~~~
p1393.cpp:1122:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:1125:1: error: 'constexpr' does not name a type
 1125 | constexpr year_month_weekday
      | ^~~~~~~~~
p1393.cpp:1125:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:1128:1: error: 'constexpr' does not name a type
 1128 | constexpr year_month_weekday_last
      | ^~~~~~~~~
p1393.cpp:1128:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:1131:1: error: 'constexpr' does not name a type
 1131 | constexpr year_month_weekday_last
      | ^~~~~~~~~
p1393.cpp:1131:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:1134:1: error: 'constexpr' does not name a type
 1134 | constexpr year_month_weekday_last
      | ^~~~~~~~~
p1393.cpp:1134:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:1137:1: error: 'constexpr' does not name a type
 1137 | constexpr year_month_weekday_last
      | ^~~~~~~~~
p1393.cpp:1137:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1393.cpp:1140:1: error: 'constexpr' does not name a type
 1140 | constexpr year_month_weekday_last
      | ^~~~~~~~~
p1393.cpp:1140:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'

$ g++ p1393.cpp -std=2b -o p1393g -I. -Wall
p1393.cpp:35:37: error: 'days' does not name a type; did you mean 'day'?
   35 |     constexpr day& operator+=(const days& d) noexcept;
      |                                     ^~~~
      |                                     day
p1393.cpp:36:37: error: 'days' does not name a type; did you mean 'day'?
   36 |     constexpr day& operator-=(const days& d) noexcept;
      |                                     ^~~~
      |                                     day
p1393.cpp:41:11: error: 'day' does not name a type
   41 | constexpr day& operator++() noexcept;
      |           ^~~
p1393.cpp:47:23: error: ISO C++ forbids declaration of 'day' with no type [-fpermissive]
   47 |    constexpr explicit day(unsigned d) noexcept;
      |                       ^~~
p1393.cpp:47:14: error: 'explicit' outside class declaration
   47 |    constexpr explicit day(unsigned d) noexcept;
      |              ^~~~~~~~
p1393.cpp:48:14: error: 'day' does not name a type
   48 |    constexpr day operator++(int) noexcept;
      |              ^~~
p1393.cpp:51:11: error: 'day' does not name a type
   51 | constexpr day& operator--() noexcept;
      |           ^~~
p1393.cpp:53:11: error: 'day' does not name a type
   53 | constexpr day operator--(int) noexcept;
      |           ^~~
p1393.cpp:56:11: error: 'day' does not name a type
   56 | constexpr day& operator+=(const days& d) noexcept;
      |           ^~~
p1393.cpp:58:11: error: 'day' does not name a type
   58 | constexpr day& operator-=(const days& d) noexcept;
      |           ^~~
p1393.cpp:60:11: error: 'explicit' outside class declaration
   60 | constexpr explicit operator unsigned() const noexcept;
      |           ^~~~~~~~
p1393.cpp:60:46: error: non-member function 'constexpr operator unsigned int()' cannot have cv-qualifier
   60 | constexpr explicit operator unsigned() const noexcept;
      |                                              ^~~~~~~~
p1393.cpp:60:20: error: 'constexpr operator unsigned int()' must be a non-static member function
   60 | constexpr explicit operator unsigned() const noexcept;
      |                    ^~~~~~~~
p1393.cpp:62:27: error: non-member function 'constexpr bool ok()' cannot have cv-qualifier
   62 | constexpr bool ok() const noexcept;
      |                           ^~~~~~~~
p1393.cpp:65:33: error: 'day' does not name a type
   65 | constexpr bool operator==(const day& x, const day& y) noexcept;
      |                                 ^~~
p1393.cpp:65:47: error: 'day' does not name a type
   65 | constexpr bool operator==(const day& x, const day& y) noexcept;
      |                                               ^~~
p1393.cpp:65:16: error: 'constexpr bool operator==(const int&, const int&)' must have an argument of class or enumerated type
   65 | constexpr bool operator==(const day& x, const day& y) noexcept;
      |                ^~~~~~~~
p1393.cpp:67:45: error: 'day' does not name a type
   67 | constexpr strong_ordering operator<=>(const day& x, const day& y) noexcept;
      |                                             ^~~
p1393.cpp:67:59: error: 'day' does not name a type
   67 | constexpr strong_ordering operator<=>(const day& x, const day& y) noexcept;
      |                                                           ^~~
p1393.cpp:67:27: error: 'constexpr std::strong_ordering operator<=>(const int&, const int&)' must have an argument of class or enumerated type
   67 | constexpr strong_ordering operator<=>(const day& x, const day& y) noexcept;
      |                           ^~~~~~~~
p1393.cpp:69:11: error: 'day' does not name a type
   69 | constexpr day operator+(const day& x, const days& y) noexcept;
      |           ^~~
p1393.cpp:71:11: error: 'day' does not name a type
   71 | constexpr day operator+(const days& x, const day& y) noexcept;
      |           ^~~
p1393.cpp:73:11: error: 'day' does not name a type
   73 | constexpr day operator-(const day& x, const days& y) noexcept;
      |           ^~~
p1393.cpp:75:11: error: 'days' does not name a type
   75 | constexpr days operator-(const day& x, const day& y) noexcept;
      |           ^~~~
p1393.cpp:79:56: error: 'day' does not name a type
   79 |     operator<<(basic_ostream<charT, traits>& os, const day& d);
      |                                                        ^~~
p1393.cpp:81:1: error: expected unqualified-id before 'return'
   81 | return os << (d.ok() ?
      | ^~~~~~
p1393.cpp:86:17: error: 'day' is not a type
   86 |                 day& d, basic_string<charT, traits, Alloc>* abbrev = nullptr,
      |                 ^~~
p1393.cpp:87:12: error: 'minutes' has not been declared
   87 |            minutes* offset = nullptr);
      |            ^~~~~~~
p1393.cpp:90:23: warning: literal operator suffixes not preceded by '_' are reserved for future standardization [-Wliteral-suffix]
   90 | constexpr chrono::day operator""d(unsigned long long d) noexcept;
      |                       ^~~~~~~~
p1393.cpp:99:11: error: expected constructor, destructor, or type conversion before '=' token
   99 |   month() = default;
      |           ^
p1393.cpp:100:22: error: ISO C++ forbids declaration of 'month' with no type [-fpermissive]
  100 |   constexpr explicit month(unsigned m) noexcept;
      |                      ^~~~~
p1393.cpp:100:13: error: 'explicit' outside class declaration
  100 |   constexpr explicit month(unsigned m) noexcept;
      |             ^~~~~~~~
p1393.cpp:101:13: error: 'month' does not name a type
  101 |   constexpr month& operator++()    noexcept;
      |             ^~~~~
p1393.cpp:102:13: error: 'month' does not name a type
  102 |   constexpr month  operator++(int) noexcept;
      |             ^~~~~
p1393.cpp:103:13: error: 'month' does not name a type
  103 |   constexpr month& operator--()    noexcept;
      |             ^~~~~
p1393.cpp:104:13: error: 'month' does not name a type
  104 |   constexpr month  operator--(int) noexcept;
      |             ^~~~~
p1393.cpp:105:13: error: 'month' does not name a type
  105 |   constexpr month& operator+=(const months& m) noexcept;
      |             ^~~~~
p1393.cpp:106:13: error: 'month' does not name a type
  106 |   constexpr month& operator-=(const months& m) noexcept;
      |             ^~~~~
p1393.cpp:107:13: error: 'explicit' outside class declaration
  107 |   constexpr explicit operator unsigned() const noexcept;
      |             ^~~~~~~~
p1393.cpp:107:48: error: non-member function 'constexpr std::chrono::operator unsigned int()' cannot have cv-qualifier
  107 |   constexpr explicit operator unsigned() const noexcept;
      |                                                ^~~~~~~~
p1393.cpp:107:22: error: 'constexpr std::chrono::operator unsigned int()' must be a non-static member function
  107 |   constexpr explicit operator unsigned() const noexcept;
      |                      ^~~~~~~~
p1393.cpp:108:29: error: non-member function 'constexpr bool std::chrono::ok()' cannot have cv-qualifier
  108 |   constexpr bool ok() const noexcept;
      |                             ^~~~~~~~
p1393.cpp:114:23: error: ISO C++ forbids declaration of 'month' with no type [-fpermissive]
  114 |    constexpr explicit month(unsigned m) noexcept;
      |                       ^~~~~
p1393.cpp:114:14: error: 'explicit' outside class declaration
  114 |    constexpr explicit month(unsigned m) noexcept;
      |              ^~~~~~~~
p1393.cpp:116:11: error: 'month' does not name a type
  116 | constexpr month& operator++() noexcept;
      |           ^~~~~
p1393.cpp:118:11: error: 'month' does not name a type
  118 | constexpr month operator++(int) noexcept;
      |           ^~~~~
p1393.cpp:121:11: error: 'month' does not name a type
  121 | constexpr month& operator--() noexcept;
      |           ^~~~~
p1393.cpp:123:14: error: 'month' does not name a type
  123 |    constexpr month operator--(int) noexcept;
      |              ^~~~~
p1393.cpp:126:11: error: 'month' does not name a type
  126 | constexpr month& operator+=(const months& m) noexcept;
      |           ^~~~~
p1393.cpp:128:11: error: 'month' does not name a type
  128 | constexpr month& operator-=(const months& m) noexcept;
      |           ^~~~~
p1393.cpp:130:11: error: 'explicit' outside class declaration
  130 | constexpr explicit operator unsigned() const noexcept;
      |           ^~~~~~~~
p1393.cpp:130:46: error: non-member function 'constexpr operator unsigned int()' cannot have cv-qualifier
  130 | constexpr explicit operator unsigned() const noexcept;
      |                                              ^~~~~~~~
p1393.cpp:130:20: error: 'constexpr operator unsigned int()' must be a non-static member function
  130 | constexpr explicit operator unsigned() const noexcept;
      |                    ^~~~~~~~
p1393.cpp:132:27: error: non-member function 'constexpr bool ok()' cannot have cv-qualifier
  132 | constexpr bool ok() const noexcept;
      |                           ^~~~~~~~
p1393.cpp:135:33: error: 'month' does not name a type
  135 | constexpr bool operator==(const month& x, const month& y) noexcept;
      |                                 ^~~~~
p1393.cpp:135:49: error: 'month' does not name a type
  135 | constexpr bool operator==(const month& x, const month& y) noexcept;
      |                                                 ^~~~~
p1393.cpp:135:16: error: 'constexpr bool operator==(const int&, const int&)' must have an argument of class or enumerated type
  135 | constexpr bool operator==(const month& x, const month& y) noexcept;
      |                ^~~~~~~~
p1393.cpp:137:45: error: 'month' does not name a type
  137 | constexpr strong_ordering operator<=>(const month& x, const month& y) noexcept;
      |                                             ^~~~~
p1393.cpp:137:61: error: 'month' does not name a type
  137 | constexpr strong_ordering operator<=>(const month& x, const month& y) noexcept;
      |                                                             ^~~~~
p1393.cpp:137:27: error: 'constexpr std::strong_ordering operator<=>(const int&, const int&)' must have an argument of class or enumerated type
  137 | constexpr strong_ordering operator<=>(const month& x, const month& y) noexcept;
      |                           ^~~~~~~~
p1393.cpp:139:11: error: 'month' does not name a type
  139 | constexpr month operator+(const month& x, const months& y) noexcept;
      |           ^~~~~
p1393.cpp:144:11: error: 'month' does not name a type
  144 | constexpr month operator-(const month& x, const months& y) noexcept;
      |           ^~~~~
p1393.cpp:146:11: error: 'months' does not name a type
  146 | constexpr months operator-(const month& x, const month& y) noexcept;
      |           ^~~~~~
p1393.cpp:151:52: error: 'month' does not name a type
  151 | operator<<(basic_ostream<charT, traits>& os, const month& m);
      |                                                    ^~~~~
p1393.cpp:153:1: error: expected unqualified-id before 'return'
  153 | return os << (m.ok() ?
      | ^~~~~~
p1393.cpp:159:17: error: 'month' is not a type
  159 |                 month& m, basic_string<charT, traits, Alloc>* abbrev = nullptr,
      |                 ^~~~~
p1393.cpp:160:17: error: 'minutes' has not been declared
  160 |                 minutes* offset = nullptr);
      |                 ^~~~~~~
p1393.cpp:158:5: error: redeclaration of 'template<class charT, class traits, class Alloc> std::basic_istream<_CharT, _Traits>& from_stream(std::basic_istream<_CharT, _Traits>&, const charT*, int&, std::__cxx11::basic_string<_CharT, _Traits, _Allocator>*, int*)' may not have default arguments [-fpermissive]
  158 |     from_stream(basic_istream<charT, traits>& is, const charT* fmt,
      |     ^~~~~~~~~~~
p1393.cpp:156:37: error: redefinition of default argument for 'class Alloc'
  156 | template<class charT, class traits, class Alloc = allocator<charT>>
      |                                     ^~~~~
p1393.cpp:83:37: note: original definition appeared here
   83 | template<class charT, class traits, class Alloc = allocator<charT>>
      |                                     ^~~~~
p1393.cpp:170:10: error: expected constructor, destructor, or type conversion before '=' token
  170 |   year() = default;
      |          ^
p1393.cpp:171:22: error: ISO C++ forbids declaration of 'year' with no type [-fpermissive]
  171 |   constexpr explicit year(int y) noexcept;
      |                      ^~~~
p1393.cpp:171:13: error: 'explicit' outside class declaration
  171 |   constexpr explicit year(int y) noexcept;
      |             ^~~~~~~~
p1393.cpp:172:13: error: 'year' does not name a type
  172 |   constexpr year& operator++()    noexcept;
      |             ^~~~
p1393.cpp:173:13: error: 'year' does not name a type
  173 |   constexpr year  operator++(int) noexcept;
      |             ^~~~
p1393.cpp:174:13: error: 'year' does not name a type
  174 |   constexpr year& operator--()    noexcept;
      |             ^~~~
p1393.cpp:175:13: error: 'year' does not name a type
  175 |   constexpr year  operator--(int) noexcept;
      |             ^~~~
p1393.cpp:176:13: error: 'year' does not name a type
  176 |   constexpr year& operator+=(const years& y) noexcept;
      |             ^~~~
p1393.cpp:177:13: error: 'year' does not name a type
  177 |   constexpr year& operator-=(const years& y) noexcept;
      |             ^~~~
p1393.cpp:178:13: error: 'year' does not name a type
  178 |   constexpr year operator+() const noexcept;
      |             ^~~~
p1393.cpp:179:13: error: 'year' does not name a type
  179 |   constexpr year operator-() const noexcept;
      |             ^~~~
p1393.cpp:180:34: error: non-member function 'constexpr bool std::chrono::is_leap()' cannot have cv-qualifier
  180 |   constexpr bool is_leap() const noexcept;
      |                                  ^~~~~~~~
p1393.cpp:181:13: error: 'explicit' outside class declaration
  181 |   constexpr explicit operator int() const noexcept;
      |             ^~~~~~~~
p1393.cpp:181:43: error: non-member function 'constexpr std::chrono::operator int()' cannot have cv-qualifier
  181 |   constexpr explicit operator int() const noexcept;
      |                                           ^~~~~~~~
p1393.cpp:181:22: error: 'constexpr std::chrono::operator int()' must be a non-static member function
  181 |   constexpr explicit operator int() const noexcept;
      |                      ^~~~~~~~
p1393.cpp:182:29: error: non-member function 'constexpr bool std::chrono::ok()' cannot have cv-qualifier
  182 |   constexpr bool ok() const noexcept;
      |                             ^~~~~~~~
p1393.cpp:183:20: error: 'year' does not name a type
  183 |   static constexpr year min() noexcept;
      |                    ^~~~
p1393.cpp:184:20: error: 'year' does not name a type
  184 |   static constexpr year max() noexcept;
      |                    ^~~~
p1393.cpp:190:23: error: ISO C++ forbids declaration of 'year' with no type [-fpermissive]
  190 |    constexpr explicit year(int y) noexcept;
      |                       ^~~~
p1393.cpp:190:14: error: 'explicit' outside class declaration
  190 |    constexpr explicit year(int y) noexcept;
      |              ^~~~~~~~
p1393.cpp:192:11: error: 'year' does not name a type
  192 | constexpr year& operator++() noexcept;
      |           ^~~~
p1393.cpp:194:11: error: 'year' does not name a type
  194 | constexpr year operator++(int) noexcept;
      |           ^~~~
p1393.cpp:198:11: error: 'year' does not name a type
  198 | constexpr year& operator--() noexcept;
      |           ^~~~
p1393.cpp:199:11: error: 'year' does not name a type
  199 | constexpr year operator--(int) noexcept;
      |           ^~~~
p1393.cpp:202:11: error: 'year' does not name a type
  202 | constexpr year& operator+=(const years& y) noexcept;
      |           ^~~~
p1393.cpp:204:11: error: 'year' does not name a type
  204 | constexpr year& operator-=(const years& y) noexcept;
      |           ^~~~
p1393.cpp:206:11: error: 'year' does not name a type
  206 | constexpr year operator+() const noexcept;
      |           ^~~~
p1393.cpp:208:11: error: 'year' does not name a type
  208 | constexpr year year::operator-() const noexcept;
      |           ^~~~
p1393.cpp:210:32: error: non-member function 'constexpr bool is_leap()' cannot have cv-qualifier
  210 | constexpr bool is_leap() const noexcept;
      |                                ^~~~~~~~
p1393.cpp:212:11: error: 'explicit' outside class declaration
  212 | constexpr explicit operator int() const noexcept;
      |           ^~~~~~~~
p1393.cpp:212:41: error: non-member function 'constexpr operator int()' cannot have cv-qualifier
  212 | constexpr explicit operator int() const noexcept;
      |                                         ^~~~~~~~
p1393.cpp:212:20: error: 'constexpr operator int()' must be a non-static member function
  212 | constexpr explicit operator int() const noexcept;
      |                    ^~~~~~~~
p1393.cpp:214:27: error: non-member function 'constexpr bool ok()' cannot have cv-qualifier
  214 | constexpr bool ok() const noexcept;
      |                           ^~~~~~~~
p1393.cpp:216:18: error: 'year' does not name a type
  216 | static constexpr year min() noexcept;
      |                  ^~~~
p1393.cpp:218:18: error: 'year' does not name a type
  218 | static constexpr year max() noexcept;
      |                  ^~~~
p1393.cpp:221:33: error: 'year' does not name a type
  221 | constexpr bool operator==(const year& x, const year& y) noexcept;
      |                                 ^~~~
p1393.cpp:221:48: error: 'year' does not name a type
  221 | constexpr bool operator==(const year& x, const year& y) noexcept;
      |                                                ^~~~
p1393.cpp:221:16: error: 'constexpr bool operator==(const int&, const int&)' must have an argument of class or enumerated type
  221 | constexpr bool operator==(const year& x, const year& y) noexcept;
      |                ^~~~~~~~
p1393.cpp:223:45: error: 'year' does not name a type
  223 | constexpr strong_ordering operator<=>(const year& x, const year& y) noexcept;
      |                                             ^~~~
p1393.cpp:223:60: error: 'year' does not name a type
  223 | constexpr strong_ordering operator<=>(const year& x, const year& y) noexcept;
      |                                                            ^~~~
p1393.cpp:223:27: error: 'constexpr std::strong_ordering operator<=>(const int&, const int&)' must have an argument of class or enumerated type
  223 | constexpr strong_ordering operator<=>(const year& x, const year& y) noexcept;
      |                           ^~~~~~~~
p1393.cpp:225:11: error: 'year' does not name a type
  225 | constexpr year operator+(const year& x, const years& y) noexcept;
      |           ^~~~
p1393.cpp:228:11: error: 'year' does not name a type
  228 | constexpr year operator-(const year& x, const years& y) noexcept;
      |           ^~~~
p1393.cpp:230:11: error: 'years' does not name a type
  230 | constexpr years operator-(const year& x, const year& y) noexcept;
      |           ^~~~~
p1393.cpp:234:56: error: 'year' does not name a type
  234 |     operator<<(basic_ostream<charT, traits>& os, const year& y);
      |                                                        ^~~~
p1393.cpp:236:1: error: expected unqualified-id before 'return'
  236 | return os << (y.ok() ?
      | ^~~~~~
p1393.cpp:241:13: error: 'year' is not a type
  241 |             year& y, basic_string<charT, traits, Alloc>* abbrev = nullptr,
      |             ^~~~
p1393.cpp:242:13: error: 'minutes' has not been declared
  242 |             minutes* offset = nullptr);
      |             ^~~~~~~
p1393.cpp:240:1: error: redeclaration of 'template<class charT, class traits, class Alloc> std::basic_istream<_CharT, _Traits>& from_stream(std::basic_istream<_CharT, _Traits>&, const charT*, int&, std::__cxx11::basic_string<_CharT, _Traits, _Allocator>*, int*)' may not have default arguments [-fpermissive]
  240 | from_stream(basic_istream<charT, traits>& is, const charT* fmt,
      | ^~~~~~~~~~~
p1393.cpp:238:37: error: redefinition of default argument for 'class Alloc'
  238 | template<class charT, class traits, class Alloc = allocator<charT>>
      |                                     ^~~~~
p1393.cpp:83:37: note: original definition appeared here
   83 | template<class charT, class traits, class Alloc = allocator<charT>>
      |                                     ^~~~~
p1393.cpp:245:19: error: 'year' in namespace 'std::chrono' does not name a type
  245 | constexpr chrono::year operator""y(unsigned long long y) noexcept;
      |                   ^~~~
p1393.cpp:171:22: note: 'constexpr int std::chrono::year(int)' declared here
  171 |   constexpr explicit year(int y) noexcept;
      |                      ^~~~
p1393.cpp:255:13: error: expected constructor, destructor, or type conversion before '=' token
  255 |   weekday() = default;
      |             ^
p1393.cpp:256:22: error: ISO C++ forbids declaration of 'weekday' with no type [-fpermissive]
  256 |   constexpr explicit weekday(unsigned wd) noexcept;
      |                      ^~~~~~~
p1393.cpp:256:13: error: 'explicit' outside class declaration
  256 |   constexpr explicit weekday(unsigned wd) noexcept;
      |             ^~~~~~~~
p1393.cpp:257:27: error: 'sys_days' does not name a type
  257 |   constexpr weekday(const sys_days& dp) noexcept;
      |                           ^~~~~~~~
p1393.cpp:257:13: error: ISO C++ forbids declaration of 'weekday' with no type [-fpermissive]
  257 |   constexpr weekday(const sys_days& dp) noexcept;
      |             ^~~~~~~
p1393.cpp:258:36: error: 'local_days' does not name a type
  258 |   constexpr explicit weekday(const local_days& dp) noexcept;
      |                                    ^~~~~~~~~~
p1393.cpp:258:22: error: ISO C++ forbids declaration of 'weekday' with no type [-fpermissive]
  258 |   constexpr explicit weekday(const local_days& dp) noexcept;
      |                      ^~~~~~~
p1393.cpp:258:13: error: 'explicit' outside class declaration
  258 |   constexpr explicit weekday(const local_days& dp) noexcept;
      |             ^~~~~~~~
p1393.cpp:259:13: error: 'weekday' does not name a type
  259 |   constexpr weekday& operator++()    noexcept;
      |             ^~~~~~~
p1393.cpp:260:13: error: 'weekday' does not name a type
  260 |   constexpr weekday  operator++(int) noexcept;
      |             ^~~~~~~
p1393.cpp:261:13: error: 'weekday' does not name a type
  261 |   constexpr weekday& operator--()    noexcept;
      |             ^~~~~~~
p1393.cpp:262:13: error: 'weekday' does not name a type
  262 |   constexpr weekday  operator--(int) noexcept;
      |             ^~~~~~~
p1393.cpp:263:13: error: 'weekday' does not name a type
  263 |   constexpr weekday& operator+=(const days& d) noexcept;
      |             ^~~~~~~
p1393.cpp:264:13: error: 'weekday' does not name a type
  264 |   constexpr weekday& operator-=(const days& d) noexcept;
      |             ^~~~~~~
p1393.cpp:265:41: error: non-member function 'constexpr unsigned int std::chrono::c_encoding()' cannot have cv-qualifier
  265 |   constexpr unsigned c_encoding() const noexcept;
      |                                         ^~~~~~~~
p1393.cpp:266:43: error: non-member function 'constexpr unsigned int std::chrono::iso_encoding()' cannot have cv-qualifier
  266 |   constexpr unsigned iso_encoding() const noexcept;
      |                                           ^~~~~~~~
p1393.cpp:267:29: error: non-member function 'constexpr bool std::chrono::ok()' cannot have cv-qualifier
  267 |   constexpr bool ok() const noexcept;
      |                             ^~~~~~~~
p1393.cpp:268:13: error: 'weekday_indexed' does not name a type
  268 |   constexpr weekday_indexed operator[](unsigned index) const noexcept;
      |             ^~~~~~~~~~~~~~~
p1393.cpp:269:13: error: 'weekday_last' does not name a type
  269 |   constexpr weekday_last    operator[](last_spec) const noexcept;
      |             ^~~~~~~~~~~~
p1393.cpp:275:20: error: ISO C++ forbids declaration of 'weekday' with no type [-fpermissive]
  275 | constexpr explicit weekday(unsigned wd) noexcept;
      |                    ^~~~~~~
p1393.cpp:275:11: error: 'explicit' outside class declaration
  275 | constexpr explicit weekday(unsigned wd) noexcept;
      |           ^~~~~~~~
p1393.cpp:277:25: error: 'sys_days' does not name a type
  277 | constexpr weekday(const sys_days& dp) noexcept;
      |                         ^~~~~~~~
p1393.cpp:277:11: error: ISO C++ forbids declaration of 'weekday' with no type [-fpermissive]
  277 | constexpr weekday(const sys_days& dp) noexcept;
      |           ^~~~~~~
p1393.cpp:280:34: error: 'local_days' does not name a type
  280 | constexpr explicit weekday(const local_days& dp) noexcept;
      |                                  ^~~~~~~~~~
p1393.cpp:280:20: error: ISO C++ forbids declaration of 'weekday' with no type [-fpermissive]
  280 | constexpr explicit weekday(const local_days& dp) noexcept;
      |                    ^~~~~~~
p1393.cpp:280:11: error: 'explicit' outside class declaration
  280 | constexpr explicit weekday(const local_days& dp) noexcept;
      |           ^~~~~~~~
p1393.cpp:283:11: error: 'weekday' does not name a type
  283 | constexpr weekday& operator++() noexcept;
      |           ^~~~~~~
p1393.cpp:285:11: error: 'weekday' does not name a type
  285 | constexpr weekday operator++(int) noexcept;
      |           ^~~~~~~
p1393.cpp:288:11: error: 'weekday' does not name a type
  288 | constexpr weekday& operator--() noexcept;
      |           ^~~~~~~
p1393.cpp:290:11: error: 'weekday' does not name a type
  290 | constexpr weekday operator--(int) noexcept;
      |           ^~~~~~~
p1393.cpp:293:11: error: 'weekday' does not name a type
  293 | constexpr weekday& operator+=(const days& d) noexcept;
      |           ^~~~~~~
p1393.cpp:295:11: error: 'weekday' does not name a type
  295 | constexpr weekday& operator-=(const days& d) noexcept;
      |           ^~~~~~~
p1393.cpp:297:39: error: non-member function 'constexpr unsigned int c_encoding()' cannot have cv-qualifier
  297 | constexpr unsigned c_encoding() const noexcept;
      |                                       ^~~~~~~~
p1393.cpp:299:41: error: non-member function 'constexpr unsigned int iso_encoding()' cannot have cv-qualifier
  299 | constexpr unsigned iso_encoding() const noexcept;
      |                                         ^~~~~~~~
p1393.cpp:301:27: error: non-member function 'constexpr bool ok()' cannot have cv-qualifier
  301 | constexpr bool ok() const noexcept;
      |                           ^~~~~~~~
p1393.cpp:303:11: error: 'weekday_indexed' does not name a type
  303 | constexpr weekday_indexed operator[](unsigned index) const noexcept;
      |           ^~~~~~~~~~~~~~~
p1393.cpp:305:11: error: 'weekday_last' does not name a type
  305 | constexpr weekday_last operator[](last_spec) const noexcept;
      |           ^~~~~~~~~~~~
p1393.cpp:307:11: error: 'weekday' does not name a type
  307 | constexpr weekday operator+(const weekday& x, const days& y) noexcept;
      |           ^~~~~~~
p1393.cpp:309:33: error: 'weekday' does not name a type
  309 | constexpr bool operator==(const weekday& x, const weekday& y) noexcept;
      |                                 ^~~~~~~
p1393.cpp:309:51: error: 'weekday' does not name a type
  309 | constexpr bool operator==(const weekday& x, const weekday& y) noexcept;
      |                                                   ^~~~~~~
p1393.cpp:309:16: error: 'constexpr bool operator==(const int&, const int&)' must have an argument of class or enumerated type
  309 | constexpr bool operator==(const weekday& x, const weekday& y) noexcept;
      |                ^~~~~~~~
p1393.cpp:312:1: error: 'weekday' does not name a type
  312 | weekday{modulo(static_cast<long long>(x.wd_) + y.count(), 7)}
      | ^~~~~~~
p1393.cpp:316:11: error: 'weekday' does not name a type
  316 | constexpr weekday operator+(const days& x, const weekday& y) noexcept;
      |           ^~~~~~~
p1393.cpp:318:11: error: 'weekday' does not name a type
  318 | constexpr weekday operator-(const weekday& x, const days& y) noexcept;
      |           ^~~~~~~
p1393.cpp:320:11: error: 'days' does not name a type
  320 | constexpr days operator-(const weekday& x, const weekday& y) noexcept;
      |           ^~~~
p1393.cpp:325:52: error: 'weekday' does not name a type
  325 | operator<<(basic_ostream<charT, traits>& os, const weekday& wd);
      |                                                    ^~~~~~~
p1393.cpp:327:1: error: expected unqualified-id before 'return'
  327 | return os << (wd.ok() ?
      | ^~~~~~
p1393.cpp:333:13: error: 'weekday' is not a type
  333 |             weekday& wd, basic_string<charT, traits, Alloc>* abbrev = nullptr,
      |             ^~~~~~~
p1393.cpp:334:13: error: 'minutes' has not been declared
  334 |             minutes* offset = nullptr);
      |             ^~~~~~~
p1393.cpp:332:1: error: redeclaration of 'template<class charT, class traits, class Alloc> std::basic_istream<_CharT, _Traits>& from_stream(std::basic_istream<_CharT, _Traits>&, const charT*, int&, std::__cxx11::basic_string<_CharT, _Traits, _Allocator>*, int*)' may not have default arguments [-fpermissive]
  332 | from_stream(basic_istream<charT, traits>& is, const charT* fmt,
      | ^~~~~~~~~~~
p1393.cpp:330:37: error: redefinition of default argument for 'class Alloc'
  330 | template<class charT, class traits, class Alloc = allocator<charT>>
      |                                     ^~~~~
p1393.cpp:83:37: note: original definition appeared here
   83 | template<class charT, class traits, class Alloc = allocator<charT>>
      |                                     ^~~~~
p1393.cpp:341:13: error: 'weekday' in namespace 'std::chrono' does not name a type
  341 |     chrono::weekday  wd_;
      |             ^~~~~~~
p1393.cpp:346:43: error: 'weekday' in namespace 'std::chrono' does not name a type
  346 |   constexpr weekday_indexed(const chrono::weekday& wd, unsigned index) noexcept;
      |                                           ^~~~~~~
p1393.cpp:348:28: error: 'weekday' in namespace 'std::chrono' does not name a type
  348 |          constexpr chrono::weekday weekday() const noexcept;
      |                            ^~~~~~~
p1393.cpp:355:22: error: 'Sunday' was not declared in this scope
  355 | constexpr auto wdi = Sunday[2]; // wdi is the second Sunday of an as yet unspecified month
      |                      ^~~~~~
p1393.cpp:356:32: error: 'Sunday' was not declared in this scope
  356 | static_assert(wdi.weekday() == Sunday);
      |                                ^~~~~~
p1393.cpp:360:44: error: 'weekday' in namespace 'std::chrono' does not name a type
  360 |    constexpr weekday_indexed(const chrono::weekday& wd, unsigned index) noexcept;
      |                                            ^~~~~~~
p1393.cpp:360:14: error: ISO C++ forbids declaration of 'weekday_indexed' with no type [-fpermissive]
  360 |    constexpr weekday_indexed(const chrono::weekday& wd, unsigned index) noexcept;
      |              ^~~~~~~~~~~~~~~
p1393.cpp:361:19: error: 'weekday' in namespace 'std::chrono' does not name a type
  361 | constexpr chrono::weekday weekday() const noexcept;
      |                   ^~~~~~~
p1393.cpp:363:34: error: non-member function 'constexpr unsigned int index()' cannot have cv-qualifier
  363 | constexpr unsigned index() const noexcept;
      |                                  ^~~~~~~~
p1393.cpp:365:27: error: non-member function 'constexpr bool ok()' cannot have cv-qualifier
  365 | constexpr bool ok() const noexcept;
      |                           ^~~~~~~~
p1393.cpp:368:33: error: 'weekday_indexed' does not name a type
  368 | constexpr bool operator==(const weekday_indexed& x, const weekday_indexed& y) noexcept;
      |                                 ^~~~~~~~~~~~~~~
p1393.cpp:368:59: error: 'weekday_indexed' does not name a type
  368 | constexpr bool operator==(const weekday_indexed& x, const weekday_indexed& y) noexcept;
      |                                                           ^~~~~~~~~~~~~~~
p1393.cpp:368:16: error: 'constexpr bool operator==(const int&, const int&)' must have an argument of class or enumerated type
  368 | constexpr bool operator==(const weekday_indexed& x, const weekday_indexed& y) noexcept;
      |                ^~~~~~~~
p1393.cpp:372:52: error: 'weekday_indexed' does not name a type
  372 | operator<<(basic_ostream<charT, traits>& os, const weekday_indexed& wdi);
      |                                                    ^~~~~~~~~~~~~~~
p1393.cpp:375:4: error: expected unqualified-id before 'return'
  375 |    return os << (i >= 1 && i <= 5 ?
      |    ^~~~~~
p1393.cpp:395:22: error: 'Sunday' was not declared in this scope
  395 | constexpr auto wdl = Sunday[last]; // wdl is the last Sunday of an as yet unspecified month
      |                      ^~~~~~
p1393.cpp:395:29: error: 'last' was not declared in this scope
  395 | constexpr auto wdl = Sunday[last]; // wdl is the last Sunday of an as yet unspecified month
      |                             ^~~~
p1393.cpp:396:37: error: 'Sunday' was not declared in this scope
  396 |      static_assert(wdl.weekday() == Sunday);
      |                                     ^~~~~~
p1393.cpp:399:50: error: 'weekday' in namespace 'std::chrono' does not name a type
  399 |    constexpr explicit weekday_last(const chrono::weekday& wd) noexcept;
      |                                                  ^~~~~~~
p1393.cpp:399:23: error: ISO C++ forbids declaration of 'weekday_last' with no type [-fpermissive]
  399 |    constexpr explicit weekday_last(const chrono::weekday& wd) noexcept;
      |                       ^~~~~~~~~~~~
p1393.cpp:399:14: error: 'explicit' outside class declaration
  399 |    constexpr explicit weekday_last(const chrono::weekday& wd) noexcept;
      |              ^~~~~~~~
p1393.cpp:401:19: error: 'weekday' in namespace 'std::chrono' does not name a type
  401 | constexpr chrono::weekday weekday() const noexcept;
      |                   ^~~~~~~
p1393.cpp:403:27: error: non-member function 'constexpr bool ok()' cannot have cv-qualifier
  403 | constexpr bool ok() const noexcept;
      |                           ^~~~~~~~
p1393.cpp:406:33: error: 'weekday_last' does not name a type
  406 | constexpr bool operator==(const weekday_last& x, const weekday_last& y) noexcept;
      |                                 ^~~~~~~~~~~~
p1393.cpp:406:56: error: 'weekday_last' does not name a type
  406 | constexpr bool operator==(const weekday_last& x, const weekday_last& y) noexcept;
      |                                                        ^~~~~~~~~~~~
p1393.cpp:406:16: error: 'constexpr bool operator==(const int&, const int&)' must have an argument of class or enumerated type
  406 | constexpr bool operator==(const weekday_last& x, const weekday_last& y) noexcept;
      |                ^~~~~~~~
p1393.cpp:410:52: error: 'weekday_last' does not name a type
  410 | operator<<(basic_ostream<charT, traits>& os, const weekday_last& wdl);
      |                                                    ^~~~~~~~~~~~
p1393.cpp:412:1: error: expected unqualified-id before 'return'
  412 | return os << format(os.getloc(), STATICALLY-WIDEN<charT>("{:L}[last]"), wdl.weekday());
      | ^~~~~~
p1393.cpp:417:15: error: 'month' in namespace 'std::chrono' does not name a type
  417 |       chrono::month m_;
      |               ^~~~~
p1393.cpp:100:22: note: 'constexpr int std::chrono::month(unsigned int)' declared here
  100 |   constexpr explicit month(unsigned m) noexcept;
      |                      ^~~~~
p1393.cpp:422:39: error: 'month' in namespace 'std::chrono' does not name a type
  422 |     constexpr month_day(const chrono::month& m, const chrono::day& d) noexcept;
      |                                       ^~~~~
p1393.cpp:100:22: note: 'constexpr int std::chrono::month(unsigned int)' declared here
  100 |   constexpr explicit month(unsigned m) noexcept;
      |                      ^~~~~
p1393.cpp:423:23: error: 'month' in namespace 'std::chrono' does not name a type
  423 |     constexpr chrono::month month() const noexcept;
      |                       ^~~~~
p1393.cpp:100:22: note: 'constexpr int std::chrono::month(unsigned int)' declared here
  100 |   constexpr explicit month(unsigned m) noexcept;
      |                      ^~~~~
p1393.cpp:430:38: error: 'month' in namespace 'std::chrono' does not name a type
  430 |    constexpr month_day(const chrono::month& m, const chrono::day& d) noexcept;
      |                                      ^~~~~
p1393.cpp:100:22: note: 'constexpr int std::chrono::month(unsigned int)' declared here
  100 |   constexpr explicit month(unsigned m) noexcept;
      |                      ^~~~~
p1393.cpp:430:14: error: ISO C++ forbids declaration of 'month_day' with no type [-fpermissive]
  430 |    constexpr month_day(const chrono::month& m, const chrono::day& d) noexcept;
      |              ^~~~~~~~~
p1393.cpp:432:19: error: 'month' in namespace 'std::chrono' does not name a type
  432 | constexpr chrono::month month() const noexcept;
      |                   ^~~~~
p1393.cpp:100:22: note: 'constexpr int std::chrono::month(unsigned int)' declared here
  100 |   constexpr explicit month(unsigned m) noexcept;
      |                      ^~~~~
p1393.cpp:433:35: error: non-member function 'constexpr std::chrono::day day()' cannot have cv-qualifier
  433 | constexpr chrono::day day() const noexcept;
      |                                   ^~~~~~~~
p1393.cpp:435:27: error: non-member function 'constexpr bool ok()' cannot have cv-qualifier
  435 | constexpr bool ok() const noexcept;
      |                           ^~~~~~~~
p1393.cpp:438:33: error: 'month_day' does not name a type
  438 | constexpr bool operator==(const month_day& x, const month_day& y) noexcept;
      |                                 ^~~~~~~~~
p1393.cpp:438:53: error: 'month_day' does not name a type
  438 | constexpr bool operator==(const month_day& x, const month_day& y) noexcept;
      |                                                     ^~~~~~~~~
p1393.cpp:438:16: error: 'constexpr bool operator==(const int&, const int&)' must have an argument of class or enumerated type
  438 | constexpr bool operator==(const month_day& x, const month_day& y) noexcept;
      |                ^~~~~~~~
p1393.cpp:440:45: error: 'month_day' does not name a type
  440 | constexpr strong_ordering operator<=>(const month_day& x, const month_day& y) noexcept;
      |                                             ^~~~~~~~~
p1393.cpp:440:65: error: 'month_day' does not name a type
  440 | constexpr strong_ordering operator<=>(const month_day& x, const month_day& y) noexcept;
      |                                                                 ^~~~~~~~~
p1393.cpp:440:27: error: 'constexpr std::strong_ordering operator<=>(const int&, const int&)' must have an argument of class or enumerated type
  440 | constexpr strong_ordering operator<=>(const month_day& x, const month_day& y) noexcept;
      |                           ^~~~~~~~
p1393.cpp:442:1: error: expected unqualified-id before 'if'
  442 | if (auto c = x.month() <=> y.month(); c != 0) return c;
      | ^~
p1393.cpp:442:39: error: 'c' does not name a type
  442 | if (auto c = x.month() <=> y.month(); c != 0) return c;
      |                                       ^
p1393.cpp:443:3: error: expected unqualified-id before 'return'
  443 |   return x.day() <=> y.day();
      |   ^~~~~~
p1393.cpp:446:1: error: expected unqualified-id before '}' token
  446 | }
      | ^
p1393.cpp:446:1: error: expected declaration before '}' token
p1393.cpp:447:26: error: 'charT' was not declared in this scope; did you mean 'char'?
  447 | operator<<(basic_ostream<charT, traits>& os, const month_day& md);
      |                          ^~~~~
      |                          char
p1393.cpp:447:33: error: 'traits' was not declared in this scope
  447 | operator<<(basic_ostream<charT, traits>& os, const month_day& md);
      |                                 ^~~~~~
p1393.cpp:447:39: error: template argument 1 is invalid
  447 | operator<<(basic_ostream<charT, traits>& os, const month_day& md);
      |                                       ^
p1393.cpp:447:39: error: template argument 2 is invalid
p1393.cpp:447:52: error: 'month_day' does not name a type
  447 | operator<<(basic_ostream<charT, traits>& os, const month_day& md);
      |                                                    ^~~~~~~~~
p1393.cpp:447:66: error: expected constructor, destructor, or type conversion before ';' token
  447 | operator<<(basic_ostream<charT, traits>& os, const month_day& md);
      |                                                                  ^
p1393.cpp:449:1: error: expected unqualified-id before 'return'
  449 | return os << format(os.getloc(), STATICALLY-WIDEN<charT>("{:L}/{}"),
      | ^~~~~~
p1393.cpp:454:13: error: 'month_day' is not a type
  454 |             month_day& md, basic_string<charT, traits, Alloc>* abbrev = nullptr,
      |             ^~~~~~~~~
p1393.cpp:455:13: error: 'minutes' has not been declared
  455 |             minutes* offset = nullptr);
      |             ^~~~~~~
p1393.cpp:453:1: error: redeclaration of 'template<class charT, class traits, class Alloc> std::basic_istream<_CharT, _Traits>& from_stream(std::basic_istream<_CharT, _Traits>&, const charT*, int&, std::__cxx11::basic_string<_CharT, _Traits, _Allocator>*, int*)' may not have default arguments [-fpermissive]
  453 | from_stream(basic_istream<charT, traits>& is, const charT* fmt,
      | ^~~~~~~~~~~
p1393.cpp:451:37: error: redefinition of default argument for 'class Alloc'
  451 | template<class charT, class traits, class Alloc = allocator<charT>>
      |                                     ^~~~~
p1393.cpp:83:37: note: original definition appeared here
   83 | template<class charT, class traits, class Alloc = allocator<charT>>
      |                                     ^~~~~
p1393.cpp:461:15: error: 'month' in namespace 'std::chrono' does not name a type
  461 |       chrono::month m_;
      |               ^~~~~
p1393.cpp:100:22: note: 'constexpr int std::chrono::month(unsigned int)' declared here
  100 |   constexpr explicit month(unsigned m) noexcept;
      |                      ^~~~~
p1393.cpp:463:51: error: 'month' in namespace 'std::chrono' does not name a type
  463 |   constexpr explicit month_day_last(const chrono::month& m) noexcept;
      |                                                   ^~~~~
p1393.cpp:100:22: note: 'constexpr int std::chrono::month(unsigned int)' declared here
  100 |   constexpr explicit month(unsigned m) noexcept;
      |                      ^~~~~
p1393.cpp:464:21: error: 'month' in namespace 'std::chrono' does not name a type
  464 |   constexpr chrono::month month() const noexcept;
      |                     ^~~~~
p1393.cpp:100:22: note: 'constexpr int std::chrono::month(unsigned int)' declared here
  100 |   constexpr explicit month(unsigned m) noexcept;
      |                      ^~~~~
p1393.cpp:471:22: error: 'February' was not declared in this scope
  471 | constexpr auto mdl = February/last; // mdl is the last day of February of an as yet unspecified year
      |                      ^~~~~~~~
p1393.cpp:471:31: error: 'last' was not declared in this scope
  471 | constexpr auto mdl = February/last; // mdl is the last day of February of an as yet unspecified year
      |                               ^~~~
p1393.cpp:472:30: error: 'February' was not declared in this scope
  472 | static_assert(mdl.month() == February);
      |                              ^~~~~~~~
p1393.cpp:474:49: error: 'month' in namespace 'std::chrono' does not name a type
  474 | constexpr explicit month_day_last(const chrono::month& m) noexcept;
      |                                                 ^~~~~
p1393.cpp:100:22: note: 'constexpr int std::chrono::month(unsigned int)' declared here
  100 |   constexpr explicit month(unsigned m) noexcept;
      |                      ^~~~~
p1393.cpp:474:20: error: ISO C++ forbids declaration of 'month_day_last' with no type [-fpermissive]
  474 | constexpr explicit month_day_last(const chrono::month& m) noexcept;
      |                    ^~~~~~~~~~~~~~
p1393.cpp:474:11: error: 'explicit' outside class declaration
  474 | constexpr explicit month_day_last(const chrono::month& m) noexcept;
      |           ^~~~~~~~
p1393.cpp:476:11: error: 'month' does not name a type
  476 | constexpr month month() const noexcept;
      |           ^~~~~
p1393.cpp:478:27: error: non-member function 'constexpr bool std::chrono::ok()' cannot have cv-qualifier
  478 | constexpr bool ok() const noexcept;
      |                           ^~~~~~~~
p1393.cpp:480:33: error: 'month_day_last' does not name a type
  480 | constexpr bool operator==(const month_day_last& x, const month_day_last& y) noexcept;
      |                                 ^~~~~~~~~~~~~~
p1393.cpp:480:58: error: 'month_day_last' does not name a type
  480 | constexpr bool operator==(const month_day_last& x, const month_day_last& y) noexcept;
      |                                                          ^~~~~~~~~~~~~~
p1393.cpp:480:16: error: 'constexpr bool std::chrono::operator==(const int&, const int&)' must have an argument of class or enumerated type
  480 | constexpr bool operator==(const month_day_last& x, const month_day_last& y) noexcept;
      |                ^~~~~~~~
p1393.cpp:482:45: error: 'month_day_last' does not name a type
  482 | constexpr strong_ordering operator<=>(const month_day_last& x, const month_day_last& y) noexcept;
      |                                             ^~~~~~~~~~~~~~
p1393.cpp:482:70: error: 'month_day_last' does not name a type
  482 | constexpr strong_ordering operator<=>(const month_day_last& x, const month_day_last& y) noexcept;
      |                                                                      ^~~~~~~~~~~~~~
p1393.cpp:482:27: error: 'constexpr std::strong_ordering std::chrono::operator<=>(const int&, const int&)' must have an argument of class or enumerated type
  482 | constexpr strong_ordering operator<=>(const month_day_last& x, const month_day_last& y) noexcept;
      |                           ^~~~~~~~
p1393.cpp:486:52: error: 'month_day_last' does not name a type
  486 | operator<<(basic_ostream<charT, traits>& os, const month_day_last& mdl);
      |                                                    ^~~~~~~~~~~~~~
p1393.cpp:488:1: error: expected unqualified-id before 'return'
  488 | return os << format(os.getloc(), STATICALLY-WIDEN<charT>("{:L}/last"), mdl.month());
      | ^~~~~~
p1393.cpp:494:15: error: 'month' in namespace 'std::chrono' does not name a type
  494 |       chrono::month           m_;
      |               ^~~~~
p1393.cpp:100:22: note: 'constexpr int std::chrono::month(unsigned int)' declared here
  100 |   constexpr explicit month(unsigned m) noexcept;
      |                      ^~~~~
p1393.cpp:498:43: error: 'month' in namespace 'std::chrono' does not name a type
  498 |     constexpr month_weekday(const chrono::month& m, const chrono::weekday_indexed& wdi) noexcept;
      |                                           ^~~~~
p1393.cpp:100:22: note: 'constexpr int std::chrono::month(unsigned int)' declared here
  100 |   constexpr explicit month(unsigned m) noexcept;
      |                      ^~~~~
p1393.cpp:499:23: error: 'month' in namespace 'std::chrono' does not name a type
  499 |     constexpr chrono::month           month()           const noexcept;
      |                       ^~~~~
p1393.cpp:100:22: note: 'constexpr int std::chrono::month(unsigned int)' declared here
  100 |   constexpr explicit month(unsigned m) noexcept;
      |                      ^~~~~
p1393.cpp:506:3: error: 'February' was not declared in this scope
  506 | = February/Tuesday[3]; // mwd is the third Tuesday of February of an as yet unspecified year
      |   ^~~~~~~~
p1393.cpp:506:12: error: 'Tuesday' was not declared in this scope
  506 | = February/Tuesday[3]; // mwd is the third Tuesday of February of an as yet unspecified year
      |            ^~~~~~~
p1393.cpp:507:35: error: 'February' was not declared in this scope
  507 |      static_assert(mwd.month() == February);
      |                                   ^~~~~~~~
p1393.cpp:508:45: error: 'Tuesday' was not declared in this scope
  508 |      static_assert(mwd.weekday_indexed() == Tuesday[3]);
      |                                             ^~~~~~~
p1393.cpp:511:42: error: 'month' in namespace 'std::chrono' does not name a type
  511 |    constexpr month_weekday(const chrono::month& m, const chrono::weekday_indexed& wdi) noexcept;
      |                                          ^~~~~
p1393.cpp:100:22: note: 'constexpr int std::chrono::month(unsigned int)' declared here
  100 |   constexpr explicit month(unsigned m) noexcept;
      |                      ^~~~~
p1393.cpp:511:14: error: ISO C++ forbids declaration of 'month_weekday' with no type [-fpermissive]
  511 |    constexpr month_weekday(const chrono::month& m, const chrono::weekday_indexed& wdi) noexcept;
      |              ^~~~~~~~~~~~~
p1393.cpp:514:59: error: non-member function 'constexpr std::chrono::weekday_indexed weekday_indexed()' cannot have cv-qualifier
  514 | constexpr chrono::weekday_indexed weekday_indexed() const noexcept;
      |                                                           ^~~~~~~~
p1393.cpp:516:27: error: non-member function 'constexpr bool ok()' cannot have cv-qualifier
  516 | constexpr bool ok() const noexcept;
      |                           ^~~~~~~~
p1393.cpp:519:33: error: 'month_weekday' does not name a type
  519 | constexpr bool operator==(const month_weekday& x, const month_weekday& y) noexcept;
      |                                 ^~~~~~~~~~~~~
p1393.cpp:519:57: error: 'month_weekday' does not name a type
  519 | constexpr bool operator==(const month_weekday& x, const month_weekday& y) noexcept;
      |                                                         ^~~~~~~~~~~~~
p1393.cpp:519:16: error: 'constexpr bool operator==(const int&, const int&)' must have an argument of class or enumerated type
  519 | constexpr bool operator==(const month_weekday& x, const month_weekday& y) noexcept;
      |                ^~~~~~~~
p1393.cpp:523:52: error: 'month_weekday' does not name a type
  523 | operator<<(basic_ostream<charT, traits>& os, const month_weekday& mwd);
      |                                                    ^~~~~~~~~~~~~
p1393.cpp:525:1: error: expected unqualified-id before 'return'
  525 | return os << format(os.getloc(), STATICALLY-WIDEN<charT>("{:L}/{:L}"),
      | ^~~~~~
p1393.cpp:531:13: error: 'month' in namespace 'std::chrono' does not name a type
  531 |     chrono::month        m_;
      |             ^~~~~
p1393.cpp:100:22: note: 'constexpr int std::chrono::month(unsigned int)' declared here
  100 |   constexpr explicit month(unsigned m) noexcept;
      |                      ^~~~~
p1393.cpp:532:13: error: 'weekday_last' in namespace 'std::chrono' does not name a type
  532 |     chrono::weekday_last wdl_;
      |             ^~~~~~~~~~~~
p1393.cpp:535:48: error: 'month' in namespace 'std::chrono' does not name a type
  535 |     constexpr month_weekday_last(const chrono::month& m,
      |                                                ^~~~~
p1393.cpp:100:22: note: 'constexpr int std::chrono::month(unsigned int)' declared here
  100 |   constexpr explicit month(unsigned m) noexcept;
      |                      ^~~~~
p1393.cpp:536:48: error: 'weekday_last' in namespace 'std::chrono' does not name a type
  536 |                                  const chrono::weekday_last& wdl) noexcept;
      |                                                ^~~~~~~~~~~~
p1393.cpp:537:23: error: 'month' in namespace 'std::chrono' does not name a type
  537 |     constexpr chrono::month        month()        const noexcept;
      |                       ^~~~~
p1393.cpp:100:22: note: 'constexpr int std::chrono::month(unsigned int)' declared here
  100 |   constexpr explicit month(unsigned m) noexcept;
      |                      ^~~~~
p1393.cpp:538:23: error: 'weekday_last' in namespace 'std::chrono' does not name a type
  538 |     constexpr chrono::weekday_last weekday_last() const noexcept;
      |                       ^~~~~~~~~~~~
p1393.cpp:544:3: error: 'February' was not declared in this scope
  544 | = February/Tuesday[last]; // mwd is the last Tuesday of February of an as yet unspecified year
      |   ^~~~~~~~
p1393.cpp:544:12: error: 'Tuesday' was not declared in this scope
  544 | = February/Tuesday[last]; // mwd is the last Tuesday of February of an as yet unspecified year
      |            ^~~~~~~
p1393.cpp:544:20: error: 'last' was not declared in this scope
  544 | = February/Tuesday[last]; // mwd is the last Tuesday of February of an as yet unspecified year
      |                    ^~~~
p1393.cpp:545:35: error: 'February' was not declared in this scope
  545 |      static_assert(mwd.month() == February);
      |                                   ^~~~~~~~
p1393.cpp:546:42: error: 'Tuesday' was not declared in this scope
  546 |      static_assert(mwd.weekday_last() == Tuesday[last]);
      |                                          ^~~~~~~
p1393.cpp:546:50: error: 'last' was not declared in this scope
  546 |      static_assert(mwd.weekday_last() == Tuesday[last]);
      |                                                  ^~~~
p1393.cpp:549:47: error: 'month' in namespace 'std::chrono' does not name a type
  549 |    constexpr month_weekday_last(const chrono::month& m,
      |                                               ^~~~~
p1393.cpp:100:22: note: 'constexpr int std::chrono::month(unsigned int)' declared here
  100 |   constexpr explicit month(unsigned m) noexcept;
      |                      ^~~~~
p1393.cpp:550:47: error: 'weekday_last' in namespace 'std::chrono' does not name a type
  550 |                                 const chrono::weekday_last& wdl) noexcept;
      |                                               ^~~~~~~~~~~~
p1393.cpp:549:14: error: ISO C++ forbids declaration of 'month_weekday_last' with no type [-fpermissive]
  549 |    constexpr month_weekday_last(const chrono::month& m,
      |              ^~~~~~~~~~~~~~~~~~
p1393.cpp:553:19: error: 'weekday_last' in namespace 'std::chrono' does not name a type
  553 | constexpr chrono::weekday_last weekday_last() const noexcept;
      |                   ^~~~~~~~~~~~
p1393.cpp:555:27: error: non-member function 'constexpr bool ok()' cannot have cv-qualifier
  555 | constexpr bool ok() const noexcept;
      |                           ^~~~~~~~
p1393.cpp:558:33: error: 'month_weekday_last' does not name a type
  558 | constexpr bool operator==(const month_weekday_last& x, const month_weekday_last& y) noexcept;
      |                                 ^~~~~~~~~~~~~~~~~~
p1393.cpp:558:62: error: 'month_weekday_last' does not name a type
  558 | constexpr bool operator==(const month_weekday_last& x, const month_weekday_last& y) noexcept;
      |                                                              ^~~~~~~~~~~~~~~~~~
p1393.cpp:558:16: error: 'constexpr bool operator==(const int&, const int&)' must have an argument of class or enumerated type
  558 | constexpr bool operator==(const month_weekday_last& x, const month_weekday_last& y) noexcept;
      |                ^~~~~~~~
p1393.cpp:559:8: error: found ':' in nested-name-specifier, expected '::'
  559 | Returns: x.month() == y.month() && x.weekday_last() == y.weekday_last().
      |        ^
      |        ::
p1393.cpp:559:1: error: 'Returns' does not name a type
  559 | Returns: x.month() == y.month() && x.weekday_last() == y.weekday_last().
      | ^~~~~~~
p1393.cpp:564:1: error: expected unqualified-id before 'return'
  564 | return os << format(os.getloc(), STATICALLY-WIDEN<charT>("{:L}/{:L}"),
      | ^~~~~~
p1393.cpp:570:15: error: 'year' in namespace 'std::chrono' does not name a type
  570 |       chrono::year  y_;
      |               ^~~~
p1393.cpp:171:22: note: 'constexpr int std::chrono::year(int)' declared here
  171 |   constexpr explicit year(int y) noexcept;
      |                      ^~~~
p1393.cpp:571:15: error: 'month' in namespace 'std::chrono' does not name a type
  571 |       chrono::month m_;
      |               ^~~~~
p1393.cpp:100:22: note: 'constexpr int std::chrono::month(unsigned int)' declared here
  100 |   constexpr explicit month(unsigned m) noexcept;
      |                      ^~~~~
p1393.cpp:575:38: error: 'year' in namespace 'std::chrono' does not name a type
  575 |   constexpr year_month(const chrono::year& y, const chrono::month& m) noexcept;
      |                                      ^~~~
p1393.cpp:171:22: note: 'constexpr int std::chrono::year(int)' declared here
  171 |   constexpr explicit year(int y) noexcept;
      |                      ^~~~
p1393.cpp:575:61: error: 'month' in namespace 'std::chrono' does not name a type
  575 |   constexpr year_month(const chrono::year& y, const chrono::month& m) noexcept;
      |                                                             ^~~~~
p1393.cpp:100:22: note: 'constexpr int std::chrono::month(unsigned int)' declared here
  100 |   constexpr explicit month(unsigned m) noexcept;
      |                      ^~~~~
p1393.cpp:576:21: error: 'year' in namespace 'std::chrono' does not name a type
  576 |   constexpr chrono::year  year()  const noexcept;
      |                     ^~~~
p1393.cpp:171:22: note: 'constexpr int std::chrono::year(int)' declared here
  171 |   constexpr explicit year(int y) noexcept;
      |                      ^~~~
p1393.cpp:577:21: error: 'month' in namespace 'std::chrono' does not name a type
  577 |   constexpr chrono::month month() const noexcept;
      |                     ^~~~~
p1393.cpp:100:22: note: 'constexpr int std::chrono::month(unsigned int)' declared here
  100 |   constexpr explicit month(unsigned m) noexcept;
      |                      ^~~~~
p1393.cpp:578:42: error: 'months' does not name a type; did you mean 'month'?
  578 |   constexpr year_month& operator+=(const months& dm) noexcept;
      |                                          ^~~~~~
      |                                          month
p1393.cpp:579:42: error: 'months' does not name a type; did you mean 'month'?
  579 |   constexpr year_month& operator-=(const months& dm) noexcept;
      |                                          ^~~~~~
      |                                          month
p1393.cpp:580:42: error: 'years' does not name a type; did you mean 'year'?
  580 |   constexpr year_month& operator+=(const years& dy)  noexcept;
      |                                          ^~~~~
      |                                          year
p1393.cpp:580:25: error: 'constexpr std::chrono::year_month& std::chrono::year_month::operator+=(const int&)' cannot be overloaded with 'constexpr std::chrono::year_month& std::chrono::year_month::operator+=(const int&)'
  580 |   constexpr year_month& operator+=(const years& dy)  noexcept;
      |                         ^~~~~~~~
p1393.cpp:578:25: note: previous declaration 'constexpr std::chrono::year_month& std::chrono::year_month::operator+=(const int&)'
  578 |   constexpr year_month& operator+=(const months& dm) noexcept;
      |                         ^~~~~~~~
p1393.cpp:581:42: error: 'years' does not name a type; did you mean 'year'?
  581 |   constexpr year_month& operator-=(const years& dy)  noexcept;
      |                                          ^~~~~
      |                                          year
p1393.cpp:581:25: error: 'constexpr std::chrono::year_month& std::chrono::year_month::operator-=(const int&)' cannot be overloaded with 'constexpr std::chrono::year_month& std::chrono::year_month::operator-=(const int&)'
  581 |   constexpr year_month& operator-=(const years& dy)  noexcept;
      |                         ^~~~~~~~
p1393.cpp:579:25: note: previous declaration 'constexpr std::chrono::year_month& std::chrono::year_month::operator-=(const int&)'
  579 |   constexpr year_month& operator-=(const months& dm) noexcept;
      |                         ^~~~~~~~
p1393.cpp:588:39: error: 'year' in namespace 'std::chrono' does not name a type
  588 |    constexpr year_month(const chrono::year& y, const chrono::month& m) noexcept;
      |                                       ^~~~
p1393.cpp:171:22: note: 'constexpr int std::chrono::year(int)' declared here
  171 |   constexpr explicit year(int y) noexcept;
      |                      ^~~~
p1393.cpp:588:62: error: 'month' in namespace 'std::chrono' does not name a type
  588 |    constexpr year_month(const chrono::year& y, const chrono::month& m) noexcept;
      |                                                              ^~~~~
p1393.cpp:100:22: note: 'constexpr int std::chrono::month(unsigned int)' declared here
  100 |   constexpr explicit month(unsigned m) noexcept;
      |                      ^~~~~
p1393.cpp:588:14: error: ISO C++ forbids declaration of 'year_month' with no type [-fpermissive]
  588 |    constexpr year_month(const chrono::year& y, const chrono::month& m) noexcept;
      |              ^~~~~~~~~~
p1393.cpp:591:19: error: 'month' in namespace 'std::chrono' does not name a type
  591 | constexpr chrono::month month() const noexcept;
      |                   ^~~~~
p1393.cpp:100:22: note: 'constexpr int std::chrono::month(unsigned int)' declared here
  100 |   constexpr explicit month(unsigned m) noexcept;
      |                      ^~~~~
p1393.cpp:593:11: error: 'year_month' does not name a type
  593 | constexpr year_month& operator+=(const months& dm) noexcept;
      |           ^~~~~~~~~~
p1393.cpp:596:11: error: 'year_month' does not name a type
  596 | constexpr year_month& operator-=(const months& dm) noexcept;
      |           ^~~~~~~~~~
p1393.cpp:599:11: error: 'year_month' does not name a type
  599 | constexpr year_month& operator+=(const years& dy) noexcept;
      |           ^~~~~~~~~~
p1393.cpp:601:11: error: 'year_month' does not name a type
  601 | constexpr year_month& operator-=(const years& dy) noexcept;
      |           ^~~~~~~~~~
p1393.cpp:603:27: error: non-member function 'constexpr bool ok()' cannot have cv-qualifier
  603 | constexpr bool ok() const noexcept;
      |                           ^~~~~~~~
p1393.cpp:606:33: error: 'year_month' does not name a type
  606 | constexpr bool operator==(const year_month& x, const year_month& y) noexcept;
      |                                 ^~~~~~~~~~
p1393.cpp:606:54: error: 'year_month' does not name a type
  606 | constexpr bool operator==(const year_month& x, const year_month& y) noexcept;
      |                                                      ^~~~~~~~~~
p1393.cpp:606:16: error: 'constexpr bool operator==(const int&, const int&)' must have an argument of class or enumerated type
  606 | constexpr bool operator==(const year_month& x, const year_month& y) noexcept;
      |                ^~~~~~~~
p1393.cpp:608:45: error: 'year_month' does not name a type
  608 | constexpr strong_ordering operator<=>(const year_month& x, const year_month& y) noexcept;
      |                                             ^~~~~~~~~~
p1393.cpp:608:66: error: 'year_month' does not name a type
  608 | constexpr strong_ordering operator<=>(const year_month& x, const year_month& y) noexcept;
      |                                                                  ^~~~~~~~~~
p1393.cpp:608:27: error: 'constexpr std::strong_ordering operator<=>(const int&, const int&)' must have an argument of class or enumerated type
  608 | constexpr strong_ordering operator<=>(const year_month& x, const year_month& y) noexcept;
      |                           ^~~~~~~~
p1393.cpp:610:1: error: expected unqualified-id before 'if'
  610 | if (auto c = x.year() <=> y.year(); c != 0) return c;
      | ^~
p1393.cpp:610:37: error: 'c' does not name a type
  610 | if (auto c = x.year() <=> y.year(); c != 0) return c;
      |                                     ^
p1393.cpp:611:8: error: expected unqualified-id before 'return'
  611 |        return x.month() <=> y.month();
      |        ^~~~~~
p1393.cpp:612:11: error: 'year_month' does not name a type
  612 | constexpr year_month operator+(const year_month& ym, const months& dm) noexcept;
      |           ^~~~~~~~~~
p1393.cpp:615:11: error: 'year_month' does not name a type
  615 | constexpr year_month operator+(const months& dm, const year_month& ym) noexcept;
      |           ^~~~~~~~~~
p1393.cpp:618:11: error: 'year_month' does not name a type
  618 | constexpr year_month operator-(const year_month& ym, const months& dm) noexcept;
      |           ^~~~~~~~~~
p1393.cpp:621:11: error: 'months' does not name a type
  621 | constexpr months operator-(const year_month& x, const year_month& y) noexcept;
      |           ^~~~~~
p1393.cpp:623:1: error: 'x' does not name a type
  623 | x.year() - y.year() + months{static_cast<int>(unsigned{x.month()}) -
      | ^
p1393.cpp:625:11: error: 'year_month' does not name a type
  625 | constexpr year_month operator+(const year_month& ym, const years& dy) noexcept;
      |           ^~~~~~~~~~
p1393.cpp:627:11: error: 'year_month' does not name a type
  627 | constexpr year_month operator+(const years& dy, const year_month& ym) noexcept;
      |           ^~~~~~~~~~
p1393.cpp:629:11: error: 'year_month' does not name a type
  629 | constexpr year_month operator-(const year_month& ym, const years& dy) noexcept;
      |           ^~~~~~~~~~
p1393.cpp:633:52: error: 'year_month' does not name a type
  633 | operator<<(basic_ostream<charT, traits>& os, const year_month& ym);
      |                                                    ^~~~~~~~~~
p1393.cpp:635:1: error: expected unqualified-id before 'return'
  635 | return os << format(os.getloc(), STATICALLY-WIDEN<charT>("{}/{:L}"), ym.year(), ym.month());
      | ^~~~~~
p1393.cpp:639:17: error: 'year_month' is not a type
  639 |                 year_month& ym, basic_string<charT, traits, Alloc>* abbrev = nullptr,
      |                 ^~~~~~~~~~
p1393.cpp:640:17: error: 'minutes' has not been declared
  640 |                 minutes* offset = nullptr);
      |                 ^~~~~~~
p1393.cpp:638:5: error: redeclaration of 'template<class charT, class traits, class Alloc> std::basic_istream<_CharT, _Traits>& from_stream(std::basic_istream<_CharT, _Traits>&, const charT*, int&, std::__cxx11::basic_string<_CharT, _Traits, _Allocator>*, int*)' may not have default arguments [-fpermissive]
  638 |     from_stream(basic_istream<charT, traits>& is, const charT* fmt,
      |     ^~~~~~~~~~~
p1393.cpp:636:37: error: redefinition of default argument for 'class Alloc'
  636 | template<class charT, class traits, class Alloc = allocator<charT>>
      |                                     ^~~~~
p1393.cpp:83:37: note: original definition appeared here
   83 | template<class charT, class traits, class Alloc = allocator<charT>>
      |                                     ^~~~~
p1393.cpp:642:41: error: expected initializer before ')' token
  642 |                     const chrono::day& d) noexcept;
      |                                         ^
p1393.cpp:649:13: error: 'year' in namespace 'std::chrono' does not name a type
  649 |     chrono::year  y_;
      |             ^~~~
p1393.cpp:171:22: note: 'constexpr int std::chrono::year(int)' declared here
  171 |   constexpr explicit year(int y) noexcept;
      |                      ^~~~
p1393.cpp:650:13: error: 'month' in namespace 'std::chrono' does not name a type
  650 |     chrono::month m_;
      |             ^~~~~
p1393.cpp:100:22: note: 'constexpr int std::chrono::month(unsigned int)' declared here
  100 |   constexpr explicit month(unsigned m) noexcept;
      |                      ^~~~~
p1393.cpp:655:44: error: 'year' in namespace 'std::chrono' does not name a type
  655 |     constexpr year_month_day(const chrono::year& y, const chrono::month& m,
      |                                            ^~~~
p1393.cpp:171:22: note: 'constexpr int std::chrono::year(int)' declared here
  171 |   constexpr explicit year(int y) noexcept;
      |                      ^~~~
p1393.cpp:655:67: error: 'month' in namespace 'std::chrono' does not name a type
  655 |     constexpr year_month_day(const chrono::year& y, const chrono::month& m,
      |                                                                   ^~~~~
p1393.cpp:100:22: note: 'constexpr int std::chrono::month(unsigned int)' declared here
  100 |   constexpr explicit month(unsigned m) noexcept;
      |                      ^~~~~
p1393.cpp:657:36: error: 'year_month_day_last' does not name a type; did you mean 'year_month_day'?
  657 |     constexpr year_month_day(const year_month_day_last& ymdl) noexcept;
      |                                    ^~~~~~~~~~~~~~~~~~~
      |                                    year_month_day
p1393.cpp:658:36: error: 'sys_days' does not name a type
  658 |     constexpr year_month_day(const sys_days& dp) noexcept;
      |                                    ^~~~~~~~
p1393.cpp:658:15: error: 'constexpr std::chrono::year_month_day::year_month_day(const int&)' cannot be overloaded with 'constexpr std::chrono::year_month_day::year_month_day(const int&)'
  658 |     constexpr year_month_day(const sys_days& dp) noexcept;
      |               ^~~~~~~~~~~~~~
p1393.cpp:657:15: note: previous declaration 'constexpr std::chrono::year_month_day::year_month_day(const int&)'
  657 |     constexpr year_month_day(const year_month_day_last& ymdl) noexcept;
      |               ^~~~~~~~~~~~~~
p1393.cpp:659:45: error: 'local_days' does not name a type
  659 |     constexpr explicit year_month_day(const local_days& dp) noexcept;
      |                                             ^~~~~~~~~~
p1393.cpp:659:24: error: 'constexpr std::chrono::year_month_day::year_month_day(const int&)' cannot be overloaded with 'constexpr std::chrono::year_month_day::year_month_day(const int&)'
  659 |     constexpr explicit year_month_day(const local_days& dp) noexcept;
      |                        ^~~~~~~~~~~~~~
p1393.cpp:657:15: note: previous declaration 'constexpr std::chrono::year_month_day::year_month_day(const int&)'
  657 |     constexpr year_month_day(const year_month_day_last& ymdl) noexcept;
      |               ^~~~~~~~~~~~~~
p1393.cpp:660:48: error: 'months' does not name a type; did you mean 'month'?
  660 |     constexpr year_month_day& operator+=(const months& m) noexcept;
      |                                                ^~~~~~
      |                                                month
p1393.cpp:661:48: error: 'months' does not name a type; did you mean 'month'?
  661 |     constexpr year_month_day& operator-=(const months& m) noexcept;
      |                                                ^~~~~~
      |                                                month
p1393.cpp:662:48: error: 'years' does not name a type; did you mean 'year'?
  662 |     constexpr year_month_day& operator+=(const years& y)  noexcept;
      |                                                ^~~~~
      |                                                year
p1393.cpp:662:31: error: 'constexpr std::chrono::year_month_day& std::chrono::year_month_day::operator+=(const int&)' cannot be overloaded with 'constexpr std::chrono::year_month_day& std::chrono::year_month_day::operator+=(const int&)'
  662 |     constexpr year_month_day& operator+=(const years& y)  noexcept;
      |                               ^~~~~~~~
p1393.cpp:660:31: note: previous declaration 'constexpr std::chrono::year_month_day& std::chrono::year_month_day::operator+=(const int&)'
  660 |     constexpr year_month_day& operator+=(const months& m) noexcept;
      |                               ^~~~~~~~
p1393.cpp:663:48: error: 'years' does not name a type; did you mean 'year'?
  663 |     constexpr year_month_day& operator-=(const years& y)  noexcept;
      |                                                ^~~~~
      |                                                year
p1393.cpp:663:31: error: 'constexpr std::chrono::year_month_day& std::chrono::year_month_day::operator-=(const int&)' cannot be overloaded with 'constexpr std::chrono::year_month_day& std::chrono::year_month_day::operator-=(const int&)'
  663 |     constexpr year_month_day& operator-=(const years& y)  noexcept;
      |                               ^~~~~~~~
p1393.cpp:661:31: note: previous declaration 'constexpr std::chrono::year_month_day& std::chrono::year_month_day::operator-=(const int&)'
  661 |     constexpr year_month_day& operator-=(const months& m) noexcept;
      |                               ^~~~~~~~
p1393.cpp:664:23: error: 'year' in namespace 'std::chrono' does not name a type
  664 |     constexpr chrono::year  year()  const noexcept;
      |                       ^~~~
p1393.cpp:171:22: note: 'constexpr int std::chrono::year(int)' declared here
  171 |   constexpr explicit year(int y) noexcept;
      |                      ^~~~
p1393.cpp:665:23: error: 'month' in namespace 'std::chrono' does not name a type
  665 |     constexpr chrono::month month() const noexcept;
      |                       ^~~~~
p1393.cpp:100:22: note: 'constexpr int std::chrono::month(unsigned int)' declared here
  100 |   constexpr explicit month(unsigned m) noexcept;
      |                      ^~~~~
p1393.cpp:667:33: error: expected type-specifier before 'sys_days'
  667 |     constexpr          operator sys_days()   const noexcept;
      |                                 ^~~~~~~~
p1393.cpp:668:33: error: expected type-specifier before 'local_days'
  668 |     constexpr explicit operator local_days() const noexcept;
      |                                 ^~~~~~~~~~
p1393.cpp:675:40: error: 'year' in namespace 'std::chrono' does not name a type
  675 | constexpr year_month_day(const chrono::year& y, const chrono::month& m,
      |                                        ^~~~
p1393.cpp:171:22: note: 'constexpr int std::chrono::year(int)' declared here
  171 |   constexpr explicit year(int y) noexcept;
      |                      ^~~~
p1393.cpp:675:63: error: 'month' in namespace 'std::chrono' does not name a type
  675 | constexpr year_month_day(const chrono::year& y, const chrono::month& m,
      |                                                               ^~~~~
p1393.cpp:100:22: note: 'constexpr int std::chrono::month(unsigned int)' declared here
  100 |   constexpr explicit month(unsigned m) noexcept;
      |                      ^~~~~
p1393.cpp:676:35: error: 'year_month_day_last' does not name a type
  676 |    constexpr year_month_day(const year_month_day_last& ymdl) noexcept;
      |                                   ^~~~~~~~~~~~~~~~~~~
p1393.cpp:676:14: error: ISO C++ forbids declaration of 'year_month_day' with no type [-fpermissive]
  676 |    constexpr year_month_day(const year_month_day_last& ymdl) noexcept;
      |              ^~~~~~~~~~~~~~
p1393.cpp:676:4: error: a parameter cannot be declared 'constexpr'
  676 |    constexpr year_month_day(const year_month_day_last& ymdl) noexcept;
      |    ^~~~~~~~~
p1393.cpp:676:70: error: expected ')' before ';' token
  676 |    constexpr year_month_day(const year_month_day_last& ymdl) noexcept;
      |                                                                      ^
      |                                                                      )
p1393.cpp:675:25: note: to match this '('
  675 | constexpr year_month_day(const chrono::year& y, const chrono::month& m,
      |                         ^
p1393.cpp:675:11: error: ISO C++ forbids declaration of 'year_month_day' with no type [-fpermissive]
  675 | constexpr year_month_day(const chrono::year& y, const chrono::month& m,
      |           ^~~~~~~~~~~~~~
p1393.cpp:679:32: error: 'sys_days' does not name a type
  679 | constexpr year_month_day(const sys_days& dp) noexcept;
      |                                ^~~~~~~~
p1393.cpp:679:11: error: ISO C++ forbids declaration of 'year_month_day' with no type [-fpermissive]
  679 | constexpr year_month_day(const sys_days& dp) noexcept;
      |           ^~~~~~~~~~~~~~
p1393.cpp:681:41: error: 'local_days' does not name a type
  681 | constexpr explicit year_month_day(const local_days& dp) noexcept;
      |                                         ^~~~~~~~~~
p1393.cpp:681:20: error: ISO C++ forbids declaration of 'year_month_day' with no type [-fpermissive]
  681 | constexpr explicit year_month_day(const local_days& dp) noexcept;
      |                    ^~~~~~~~~~~~~~
p1393.cpp:681:11: error: 'explicit' outside class declaration
  681 | constexpr explicit year_month_day(const local_days& dp) noexcept;
      |           ^~~~~~~~
p1393.cpp:685:11: error: 'year_month_day' does not name a type
  685 | constexpr year_month_day& operator-=(const months& m) noexcept;
      |           ^~~~~~~~~~~~~~
p1393.cpp:688:11: error: 'year_month_day' does not name a type
  688 | constexpr year_month_day& year_month_day::operator+=(const years& y) noexcept;
      |           ^~~~~~~~~~~~~~
p1393.cpp:690:11: error: 'year_month_day' does not name a type
  690 | constexpr year_month_day& year_month_day::operator-=(const years& y) noexcept;
      |           ^~~~~~~~~~~~~~
p1393.cpp:692:19: error: 'year' in namespace 'std::chrono' does not name a type
  692 | constexpr chrono::year year() const noexcept;
      |                   ^~~~
p1393.cpp:171:22: note: 'constexpr int std::chrono::year(int)' declared here
  171 |   constexpr explicit year(int y) noexcept;
      |                      ^~~~
p1393.cpp:694:19: error: 'month' in namespace 'std::chrono' does not name a type
  694 | constexpr chrono::month month() const noexcept;
      |                   ^~~~~
p1393.cpp:100:22: note: 'constexpr int std::chrono::month(unsigned int)' declared here
  100 |   constexpr explicit month(unsigned m) noexcept;
      |                      ^~~~~
p1393.cpp:696:35: error: non-member function 'constexpr std::chrono::day day()' cannot have cv-qualifier
  696 | constexpr chrono::day day() const noexcept;
      |                                   ^~~~~~~~
p1393.cpp:698:20: error: expected type-specifier before 'sys_days'
  698 | constexpr operator sys_days() const noexcept;
      |                    ^~~~~~~~
p1393.cpp:701:36: error: expected ',' before '{' token
  701 |        static_assert(year_month_day{sys_days{2017y/January/0}}  == 2016y/December/31);
      |                                    ^
      |                                    ,
p1393.cpp:701:36: error: expected string-literal before '{' token
p1393.cpp:701:36: error: expected ')' before '{' token
  701 |        static_assert(year_month_day{sys_days{2017y/January/0}}  == 2016y/December/31);
      |                     ~              ^
      |                                    )
p1393.cpp:702:36: error: expected ',' before '{' token
  702 |        static_assert(year_month_day{sys_days{2017y/January/31}} == 2017y/January/31);
      |                                    ^
      |                                    ,
p1393.cpp:702:36: error: expected string-literal before '{' token
p1393.cpp:702:36: error: expected ')' before '{' token
  702 |        static_assert(year_month_day{sys_days{2017y/January/31}} == 2017y/January/31);
      |                     ~              ^
      |                                    )
p1393.cpp:703:36: error: expected ',' before '{' token
  703 |        static_assert(year_month_day{sys_days{2017y/January/32}} == 2017y/February/1);
      |                                    ^
      |                                    ,
p1393.cpp:703:36: error: expected string-literal before '{' token
p1393.cpp:703:36: error: expected ')' before '{' token
  703 |        static_assert(year_month_day{sys_days{2017y/January/32}} == 2017y/February/1);
      |                     ~              ^
      |                                    )
p1393.cpp:704:29: error: expected type-specifier before 'local_days'
  704 | constexpr explicit operator local_days() const noexcept;
      |                             ^~~~~~~~~~
p1393.cpp:708:33: error: 'year_month_day' does not name a type
  708 | constexpr bool operator==(const year_month_day& x, const year_month_day& y) noexcept;
      |                                 ^~~~~~~~~~~~~~
p1393.cpp:708:58: error: 'year_month_day' does not name a type
  708 | constexpr bool operator==(const year_month_day& x, const year_month_day& y) noexcept;
      |                                                          ^~~~~~~~~~~~~~
p1393.cpp:708:16: error: 'constexpr bool operator==(const int&, const int&)' must have an argument of class or enumerated type
  708 | constexpr bool operator==(const year_month_day& x, const year_month_day& y) noexcept;
      |                ^~~~~~~~
p1393.cpp:710:45: error: 'year_month_day' does not name a type
  710 | constexpr strong_ordering operator<=>(const year_month_day& x, const year_month_day& y) noexcept;
      |                                             ^~~~~~~~~~~~~~
p1393.cpp:710:70: error: 'year_month_day' does not name a type
  710 | constexpr strong_ordering operator<=>(const year_month_day& x, const year_month_day& y) noexcept;
      |                                                                      ^~~~~~~~~~~~~~
p1393.cpp:710:27: error: 'constexpr std::strong_ordering operator<=>(const int&, const int&)' must have an argument of class or enumerated type
  710 | constexpr strong_ordering operator<=>(const year_month_day& x, const year_month_day& y) noexcept;
      |                           ^~~~~~~~
p1393.cpp:712:3: error: expected unqualified-id before 'if'
  712 |   if (auto c = x.year() <=> y.year(); c != 0) return c;
      |   ^~
p1393.cpp:712:39: error: 'c' does not name a type
  712 |   if (auto c = x.year() <=> y.year(); c != 0) return c;
      |                                       ^
p1393.cpp:713:3: error: expected unqualified-id before 'if'
  713 |   if (auto c = x.month() <=> y.month(); c != 0) return c;
      |   ^~
p1393.cpp:713:41: error: 'c' does not name a type
  713 |   if (auto c = x.month() <=> y.month(); c != 0) return c;
      |                                         ^
p1393.cpp:714:3: error: expected unqualified-id before 'return'
  714 |   return x.day() <=> y.day();
      |   ^~~~~~
p1393.cpp:715:11: error: 'year_month_day' does not name a type
  715 | constexpr year_month_day operator+(const year_month_day& ymd, const months& dm) noexcept;
      |           ^~~~~~~~~~~~~~
p1393.cpp:719:11: error: 'year_month_day' does not name a type
  719 | constexpr year_month_day operator+(const months& dm, const year_month_day& ymd) noexcept;
      |           ^~~~~~~~~~~~~~
p1393.cpp:722:11: error: 'year_month_day' does not name a type
  722 | constexpr year_month_day operator-(const year_month_day& ymd, const months& dm) noexcept;
      |           ^~~~~~~~~~~~~~
p1393.cpp:725:11: error: 'year_month_day' does not name a type
  725 | constexpr year_month_day operator+(const year_month_day& ymd, const years& dy) noexcept;
      |           ^~~~~~~~~~~~~~
p1393.cpp:728:11: error: 'year_month_day' does not name a type
  728 | constexpr year_month_day operator+(const years& dy, const year_month_day& ymd) noexcept;
      |           ^~~~~~~~~~~~~~
p1393.cpp:730:11: error: 'year_month_day' does not name a type
  730 | constexpr year_month_day operator-(const year_month_day& ymd, const years& dy) noexcept;
      |           ^~~~~~~~~~~~~~
p1393.cpp:734:56: error: 'year_month_day' does not name a type
  734 |     operator<<(basic_ostream<charT, traits>& os, const year_month_day& ymd);
      |                                                        ^~~~~~~~~~~~~~
p1393.cpp:736:1: error: expected unqualified-id before 'return'
  736 | return os << (ymd.ok() ?
      | ^~~~~~
p1393.cpp:741:17: error: 'year_month_day' is not a type
  741 |                 year_month_day& ymd, basic_string<charT, traits, Alloc>* abbrev = nullptr,
      |                 ^~~~~~~~~~~~~~
p1393.cpp:742:12: error: 'minutes' has not been declared
  742 |            minutes* offset = nullptr);
      |            ^~~~~~~
p1393.cpp:740:5: error: redeclaration of 'template<class charT, class traits, class Alloc> std::basic_istream<_CharT, _Traits>& from_stream(std::basic_istream<_CharT, _Traits>&, const charT*, int&, std::__cxx11::basic_string<_CharT, _Traits, _Allocator>*, int*)' may not have default arguments [-fpermissive]
  740 |     from_stream(basic_istream<charT, traits>& is, const charT* fmt,
      |     ^~~~~~~~~~~
p1393.cpp:738:37: error: redefinition of default argument for 'class Alloc'
  738 | template<class charT, class traits, class Alloc = allocator<charT>>
      |                                     ^~~~~
p1393.cpp:83:37: note: original definition appeared here
   83 | template<class charT, class traits, class Alloc = allocator<charT>>
      |                                     ^~~~~
p1393.cpp:749:15: error: 'year' in namespace 'std::chrono' does not name a type
  749 |       chrono::year           y_;
      |               ^~~~
p1393.cpp:171:22: note: 'constexpr int std::chrono::year(int)' declared here
  171 |   constexpr explicit year(int y) noexcept;
      |                      ^~~~
p1393.cpp:750:15: error: 'month_day_last' in namespace 'std::chrono' does not name a type
  750 |       chrono::month_day_last mdl_;
      |               ^~~~~~~~~~~~~~
p1393.cpp:474:20: note: 'constexpr int std::chrono::month_day_last(const int&)' declared here
  474 | constexpr explicit month_day_last(const chrono::month& m) noexcept;
      |                    ^~~~~~~~~~~~~~
p1393.cpp:752:47: error: 'year' in namespace 'std::chrono' does not name a type
  752 |   constexpr year_month_day_last(const chrono::year& y,
      |                                               ^~~~
p1393.cpp:171:22: note: 'constexpr int std::chrono::year(int)' declared here
  171 |   constexpr explicit year(int y) noexcept;
      |                      ^~~~
p1393.cpp:753:49: error: 'month_day_last' in namespace 'std::chrono' does not name a type
  753 |                                   const chrono::month_day_last& mdl) noexcept;
      |                                                 ^~~~~~~~~~~~~~
p1393.cpp:474:20: note: 'constexpr int std::chrono::month_day_last(const int&)' declared here
  474 | constexpr explicit month_day_last(const chrono::month& m) noexcept;
      |                    ^~~~~~~~~~~~~~
p1393.cpp:754:53: error: 'months' does not name a type; did you mean 'month'?
  754 |     constexpr year_month_day_last& operator+=(const months& m) noexcept;
      |                                                     ^~~~~~
      |                                                     month
p1393.cpp:755:53: error: 'months' does not name a type; did you mean 'month'?
  755 |     constexpr year_month_day_last& operator-=(const months& m) noexcept;
      |                                                     ^~~~~~
      |                                                     month
p1393.cpp:756:53: error: 'years' does not name a type; did you mean 'year'?
  756 |     constexpr year_month_day_last& operator+=(const years& y)  noexcept;
      |                                                     ^~~~~
      |                                                     year
p1393.cpp:756:36: error: 'constexpr std::chrono::year_month_day_last& std::chrono::year_month_day_last::operator+=(const int&)' cannot be overloaded with 'constexpr std::chrono::year_month_day_last& std::chrono::year_month_day_last::operator+=(const int&)'
  756 |     constexpr year_month_day_last& operator+=(const years& y)  noexcept;
      |                                    ^~~~~~~~
p1393.cpp:754:36: note: previous declaration 'constexpr std::chrono::year_month_day_last& std::chrono::year_month_day_last::operator+=(const int&)'
  754 |     constexpr year_month_day_last& operator+=(const months& m) noexcept;
      |                                    ^~~~~~~~
p1393.cpp:757:53: error: 'years' does not name a type; did you mean 'year'?
  757 |     constexpr year_month_day_last& operator-=(const years& y)  noexcept;
      |                                                     ^~~~~
      |                                                     year
p1393.cpp:757:36: error: 'constexpr std::chrono::year_month_day_last& std::chrono::year_month_day_last::operator-=(const int&)' cannot be overloaded with 'constexpr std::chrono::year_month_day_last& std::chrono::year_month_day_last::operator-=(const int&)'
  757 |     constexpr year_month_day_last& operator-=(const years& y)  noexcept;
      |                                    ^~~~~~~~
p1393.cpp:755:36: note: previous declaration 'constexpr std::chrono::year_month_day_last& std::chrono::year_month_day_last::operator-=(const int&)'
  755 |     constexpr year_month_day_last& operator-=(const months& m) noexcept;
      |                                    ^~~~~~~~
p1393.cpp:758:23: error: 'year' in namespace 'std::chrono' does not name a type
  758 |     constexpr chrono::year           year()           const noexcept;
      |                       ^~~~
p1393.cpp:171:22: note: 'constexpr int std::chrono::year(int)' declared here
  171 |   constexpr explicit year(int y) noexcept;
      |                      ^~~~
p1393.cpp:759:23: error: 'month' in namespace 'std::chrono' does not name a type
  759 |     constexpr chrono::month          month()          const noexcept;
      |                       ^~~~~
p1393.cpp:100:22: note: 'constexpr int std::chrono::month(unsigned int)' declared here
  100 |   constexpr explicit month(unsigned m) noexcept;
      |                      ^~~~~
p1393.cpp:760:23: error: 'month_day_last' in namespace 'std::chrono' does not name a type
  760 |     constexpr chrono::month_day_last month_day_last() const noexcept;
      |                       ^~~~~~~~~~~~~~
p1393.cpp:474:20: note: 'constexpr int std::chrono::month_day_last(const int&)' declared here
  474 | constexpr explicit month_day_last(const chrono::month& m) noexcept;
      |                    ^~~~~~~~~~~~~~
p1393.cpp:762:33: error: expected type-specifier before 'sys_days'
  762 |     constexpr          operator sys_days()   const noexcept;
      |                                 ^~~~~~~~
p1393.cpp:763:33: error: expected type-specifier before 'local_days'
  763 |     constexpr explicit operator local_days() const noexcept;
      |                                 ^~~~~~~~~~
p1393.cpp:771:45: error: 'year' in namespace 'std::chrono' does not name a type
  771 | constexpr year_month_day_last(const chrono::year& y,
      |                                             ^~~~
p1393.cpp:171:22: note: 'constexpr int std::chrono::year(int)' declared here
  171 |   constexpr explicit year(int y) noexcept;
      |                      ^~~~
p1393.cpp:772:48: error: 'month_day_last' in namespace 'std::chrono' does not name a type
  772 |                                  const chrono::month_day_last& mdl) noexcept;
      |                                                ^~~~~~~~~~~~~~
p1393.cpp:474:20: note: 'constexpr int std::chrono::month_day_last(const int&)' declared here
  474 | constexpr explicit month_day_last(const chrono::month& m) noexcept;
      |                    ^~~~~~~~~~~~~~
p1393.cpp:771:11: error: ISO C++ forbids declaration of 'year_month_day_last' with no type [-fpermissive]
  771 | constexpr year_month_day_last(const chrono::year& y,
      |           ^~~~~~~~~~~~~~~~~~~
p1393.cpp:774:11: error: 'year_month_day_last' does not name a type
  774 | constexpr year_month_day_last& operator+=(const months& m) noexcept;
      |           ^~~~~~~~~~~~~~~~~~~
p1393.cpp:777:11: error: 'year_month_day_last' does not name a type
  777 | constexpr year_month_day_last& operator-=(const months& m) noexcept;
      |           ^~~~~~~~~~~~~~~~~~~
p1393.cpp:780:11: error: 'year_month_day_last' does not name a type
  780 | constexpr year_month_day_last& operator+=(const years& y) noexcept;
      |           ^~~~~~~~~~~~~~~~~~~
p1393.cpp:782:11: error: 'year_month_day_last' does not name a type
  782 | constexpr year_month_day_last& operator-=(const years& y) noexcept;
      |           ^~~~~~~~~~~~~~~~~~~
p1393.cpp:784:19: error: 'year' in namespace 'std::chrono' does not name a type
  784 | constexpr chrono::year year() const noexcept;
      |                   ^~~~
p1393.cpp:171:22: note: 'constexpr int std::chrono::year(int)' declared here
  171 |   constexpr explicit year(int y) noexcept;
      |                      ^~~~
p1393.cpp:786:19: error: 'month' in namespace 'std::chrono' does not name a type
  786 | constexpr chrono::month month() const noexcept;
      |                   ^~~~~
p1393.cpp:100:22: note: 'constexpr int std::chrono::month(unsigned int)' declared here
  100 |   constexpr explicit month(unsigned m) noexcept;
      |                      ^~~~~
p1393.cpp:788:19: error: 'month_day_last' in namespace 'std::chrono' does not name a type
  788 | constexpr chrono::month_day_last month_day_last() const noexcept;
      |                   ^~~~~~~~~~~~~~
p1393.cpp:474:20: note: 'constexpr int std::chrono::month_day_last(const int&)' declared here
  474 | constexpr explicit month_day_last(const chrono::month& m) noexcept;
      |                    ^~~~~~~~~~~~~~
p1393.cpp:790:35: error: non-member function 'constexpr std::chrono::day day()' cannot have cv-qualifier
  790 | constexpr chrono::day day() const noexcept;
      |                                   ^~~~~~~~
p1393.cpp:793:20: error: expected type-specifier before 'sys_days'
  793 | constexpr operator sys_days() const noexcept;
      |                    ^~~~~~~~
p1393.cpp:795:29: error: expected type-specifier before 'local_days'
  795 | constexpr explicit operator local_days() const noexcept;
      |                             ^~~~~~~~~~
p1393.cpp:797:27: error: non-member function 'constexpr bool ok()' cannot have cv-qualifier
  797 | constexpr bool ok() const noexcept;
      |                           ^~~~~~~~
p1393.cpp:800:33: error: 'year_month_day_last' does not name a type
  800 | constexpr bool operator==(const year_month_day_last& x, const year_month_day_last& y) noexcept;
      |                                 ^~~~~~~~~~~~~~~~~~~
p1393.cpp:800:63: error: 'year_month_day_last' does not name a type
  800 | constexpr bool operator==(const year_month_day_last& x, const year_month_day_last& y) noexcept;
      |                                                               ^~~~~~~~~~~~~~~~~~~
p1393.cpp:800:16: error: 'constexpr bool operator==(const int&, const int&)' must have an argument of class or enumerated type
  800 | constexpr bool operator==(const year_month_day_last& x, const year_month_day_last& y) noexcept;
      |                ^~~~~~~~
p1393.cpp:802:40: error: 'year_month_day_last' does not name a type
  802 |                                  const year_month_day_last& y) noexcept;
      |                                        ^~~~~~~~~~~~~~~~~~~
p1393.cpp:804:1: error: expected unqualified-id before 'if'
  804 | if (auto c = x.year() <=> y.year(); c != 0) return c;
      | ^~
p1393.cpp:804:37: error: 'c' does not name a type
  804 | if (auto c = x.year() <=> y.year(); c != 0) return c;
      |                                     ^
p1393.cpp:805:3: error: expected unqualified-id before 'return'
  805 |   return x.month_day_last() <=> y.month_day_last();
      |   ^~~~~~
p1393.cpp:806:11: error: 'year_month_day_last' does not name a type
  806 | constexpr year_month_day_last
      |           ^~~~~~~~~~~~~~~~~~~
p1393.cpp:810:17: error: 'months' does not name a type
  810 | operator+(const months& dm, const year_month_day_last& ymdl) noexcept;
      |                 ^~~~~~
p1393.cpp:810:35: error: 'year_month_day_last' does not name a type
  810 | operator+(const months& dm, const year_month_day_last& ymdl) noexcept;
      |                                   ^~~~~~~~~~~~~~~~~~~
p1393.cpp:810:70: error: expected constructor, destructor, or type conversion before ';' token
  810 | operator+(const months& dm, const year_month_day_last& ymdl) noexcept;
      |                                                                      ^
p1393.cpp:813:14: error: 'year_month_day_last' does not name a type
  813 |    constexpr year_month_day_last
      |              ^~~~~~~~~~~~~~~~~~~
p1393.cpp:817:11: error: 'year_month_day_last' does not name a type
  817 | constexpr year_month_day_last
      |           ^~~~~~~~~~~~~~~~~~~
p1393.cpp:820:19: error: 'years' does not name a type
  820 |   operator+(const years& dy, const year_month_day_last& ymdl) noexcept;
      |                   ^~~~~
p1393.cpp:820:36: error: 'year_month_day_last' does not name a type
  820 |   operator+(const years& dy, const year_month_day_last& ymdl) noexcept;
      |                                    ^~~~~~~~~~~~~~~~~~~
p1393.cpp:820:71: error: expected constructor, destructor, or type conversion before ';' token
  820 |   operator+(const years& dy, const year_month_day_last& ymdl) noexcept;
      |                                                                       ^
p1393.cpp:822:11: error: 'year_month_day_last' does not name a type
  822 | constexpr year_month_day_last
      |           ^~~~~~~~~~~~~~~~~~~
p1393.cpp:827:52: error: 'year_month_day_last' does not name a type
  827 | operator<<(basic_ostream<charT, traits>& os, const year_month_day_last& ymdl);
      |                                                    ^~~~~~~~~~~~~~~~~~~
p1393.cpp:829:1: error: expected unqualified-id before 'return'
  829 | return os << format(os.getloc(), STATICALLY-WIDEN<charT>("{}/{:L}"),
      | ^~~~~~
p1393.cpp:859:33: error: expected constructor, destructor, or type conversion before ';' token
  859 | year()            const noexcept;
      |                                 ^
p1393.cpp:860:33: error: expected constructor, destructor, or type conversion before ';' token
  860 | month()           const noexcept;
      |                                 ^
p1393.cpp:861:33: error: expected constructor, destructor, or type conversion before ';' token
  861 | weekday()         const noexcept;
      |                                 ^
p1393.cpp:862:33: error: expected constructor, destructor, or type conversion before ';' token
  862 | index()           const noexcept;
      |                                 ^
p1393.cpp:868:47: error: 'year' in namespace 'std::chrono' does not name a type
  868 |    constexpr year_month_weekday(const chrono::year& y, const chrono::month& m,
      |                                               ^~~~
p1393.cpp:171:22: note: 'constexpr int std::chrono::year(int)' declared here
  171 |   constexpr explicit year(int y) noexcept;
      |                      ^~~~
p1393.cpp:868:70: error: 'month' in namespace 'std::chrono' does not name a type
  868 |    constexpr year_month_weekday(const chrono::year& y, const chrono::month& m,
      |                                                                      ^~~~~
p1393.cpp:100:22: note: 'constexpr int std::chrono::month(unsigned int)' declared here
  100 |   constexpr explicit month(unsigned m) noexcept;
      |                      ^~~~~
p1393.cpp:868:14: error: ISO C++ forbids declaration of 'year_month_weekday' with no type [-fpermissive]
  868 |    constexpr year_month_weekday(const chrono::year& y, const chrono::month& m,
      |              ^~~~~~~~~~~~~~~~~~
p1393.cpp:871:36: error: 'sys_days' does not name a type
  871 | constexpr year_month_weekday(const sys_days& dp) noexcept;
      |                                    ^~~~~~~~
p1393.cpp:871:11: error: ISO C++ forbids declaration of 'year_month_weekday' with no type [-fpermissive]
  871 | constexpr year_month_weekday(const sys_days& dp) noexcept;
      |           ^~~~~~~~~~~~~~~~~~
p1393.cpp:872:45: error: 'local_days' does not name a type
  872 | constexpr explicit year_month_weekday(const local_days& dp) noexcept;
      |                                             ^~~~~~~~~~
p1393.cpp:872:20: error: ISO C++ forbids declaration of 'year_month_weekday' with no type [-fpermissive]
  872 | constexpr explicit year_month_weekday(const local_days& dp) noexcept;
      |                    ^~~~~~~~~~~~~~~~~~
p1393.cpp:872:11: error: 'explicit' outside class declaration
  872 | constexpr explicit year_month_weekday(const local_days& dp) noexcept;
      |           ^~~~~~~~
p1393.cpp:874:11: error: 'year_month_weekday' does not name a type
  874 | constexpr year_month_weekday& operator+=(const months& m) noexcept;
      |           ^~~~~~~~~~~~~~~~~~
p1393.cpp:877:11: error: 'year_month_weekday' does not name a type
  877 | constexpr year_month_weekday& operator-=(const months& m) noexcept;
      |           ^~~~~~~~~~~~~~~~~~
p1393.cpp:880:11: error: 'year_month_weekday' does not name a type
  880 | constexpr year_month_weekday& operator+=(const years& y) noexcept;
      |           ^~~~~~~~~~~~~~~~~~
p1393.cpp:882:11: error: 'year_month_weekday' does not name a type
  882 | constexpr year_month_weekday& operator-=(const years& y) noexcept;
      |           ^~~~~~~~~~~~~~~~~~
p1393.cpp:884:19: error: 'year' in namespace 'std::chrono' does not name a type
  884 | constexpr chrono::year year() const noexcept;
      |                   ^~~~
p1393.cpp:171:22: note: 'constexpr int std::chrono::year(int)' declared here
  171 |   constexpr explicit year(int y) noexcept;
      |                      ^~~~
p1393.cpp:886:19: error: 'month' in namespace 'std::chrono' does not name a type
  886 | constexpr chrono::month month() const noexcept;
      |                   ^~~~~
p1393.cpp:100:22: note: 'constexpr int std::chrono::month(unsigned int)' declared here
  100 |   constexpr explicit month(unsigned m) noexcept;
      |                      ^~~~~
p1393.cpp:888:19: error: 'weekday' in namespace 'std::chrono' does not name a type
  888 | constexpr chrono::weekday weekday() const noexcept;
      |                   ^~~~~~~
p1393.cpp:890:34: error: non-member function 'constexpr unsigned int index()' cannot have cv-qualifier
  890 | constexpr unsigned index() const noexcept;
      |                                  ^~~~~~~~
p1393.cpp:892:59: error: non-member function 'constexpr std::chrono::weekday_indexed weekday_indexed()' cannot have cv-qualifier
  892 | constexpr chrono::weekday_indexed weekday_indexed() const noexcept;
      |                                                           ^~~~~~~~
p1393.cpp:894:20: error: expected type-specifier before 'sys_days'
  894 | constexpr operator sys_days() const noexcept;
      |                    ^~~~~~~~
p1393.cpp:896:29: error: expected type-specifier before 'local_days'
  896 | constexpr explicit operator local_days() const noexcept;
      |                             ^~~~~~~~~~
p1393.cpp:900:33: error: 'year_month_weekday' does not name a type
  900 | constexpr bool operator==(const year_month_weekday& x, const year_month_weekday& y) noexcept;
      |                                 ^~~~~~~~~~~~~~~~~~
p1393.cpp:900:62: error: 'year_month_weekday' does not name a type
  900 | constexpr bool operator==(const year_month_weekday& x, const year_month_weekday& y) noexcept;
      |                                                              ^~~~~~~~~~~~~~~~~~
p1393.cpp:900:16: error: 'constexpr bool operator==(const int&, const int&)' must have an argument of class or enumerated type
  900 | constexpr bool operator==(const year_month_weekday& x, const year_month_weekday& y) noexcept;
      |                ^~~~~~~~
p1393.cpp:902:11: error: 'year_month_weekday' does not name a type
  902 | constexpr year_month_weekday operator+(const year_month_weekday& ymwd, const months& dm) noexcept;
      |           ^~~~~~~~~~~~~~~~~~
p1393.cpp:905:11: error: 'year_month_weekday' does not name a type
  905 | constexpr year_month_weekday operator+(const months& dm, const year_month_weekday& ymwd) noexcept;
      |           ^~~~~~~~~~~~~~~~~~
p1393.cpp:908:11: error: 'year_month_weekday' does not name a type
  908 | constexpr year_month_weekday operator-(const year_month_weekday& ymwd, const months& dm) noexcept;
      |           ^~~~~~~~~~~~~~~~~~
p1393.cpp:911:11: error: 'year_month_weekday' does not name a type
  911 | constexpr year_month_weekday operator+(const year_month_weekday& ymwd, const years& dy) noexcept;
      |           ^~~~~~~~~~~~~~~~~~
p1393.cpp:913:11: error: 'year_month_weekday' does not name a type
  913 | constexpr year_month_weekday operator+(const years& dy, const year_month_weekday& ymwd) noexcept;
      |           ^~~~~~~~~~~~~~~~~~
p1393.cpp:915:11: error: 'year_month_weekday' does not name a type
  915 | constexpr year_month_weekday operator-(const year_month_weekday& ymwd, const years& dy) noexcept;
      |           ^~~~~~~~~~~~~~~~~~
p1393.cpp:919:52: error: 'year_month_weekday' does not name a type
  919 | operator<<(basic_ostream<charT, traits>& os, const year_month_weekday& ymwd);
      |                                                    ^~~~~~~~~~~~~~~~~~
p1393.cpp:921:1: error: expected unqualified-id before 'return'
  921 | return os << format(os.getloc(), STATICALLY-WIDEN<charT>("{}/{:L}/{:L}"), ymwd.year(), ymwd.month(), ymwd.weekday_indexed());
      | ^~~~~~
p1393.cpp:926:9: error: 'year' in namespace 'std::chrono' does not name a type
  926 | chrono::year         y_;
      |         ^~~~
p1393.cpp:171:22: note: 'constexpr int std::chrono::year(int)' declared here
  171 |   constexpr explicit year(int y) noexcept;
      |                      ^~~~
p1393.cpp:927:9: error: 'month' in namespace 'std::chrono' does not name a type
  927 | chrono::month        m_;
      |         ^~~~~
p1393.cpp:100:22: note: 'constexpr int std::chrono::month(unsigned int)' declared here
  100 |   constexpr explicit month(unsigned m) noexcept;
      |                      ^~~~~
p1393.cpp:928:9: error: 'weekday_last' in namespace 'std::chrono' does not name a type
  928 | chrono::weekday_last wdl_;
      |         ^~~~~~~~~~~~
p1393.cpp:931:51: error: 'year' in namespace 'std::chrono' does not name a type
  931 |   constexpr year_month_weekday_last(const chrono::year& y, const chrono::month& m,
      |                                                   ^~~~
p1393.cpp:171:22: note: 'constexpr int std::chrono::year(int)' declared here
  171 |   constexpr explicit year(int y) noexcept;
      |                      ^~~~
p1393.cpp:931:74: error: 'month' in namespace 'std::chrono' does not name a type
  931 |   constexpr year_month_weekday_last(const chrono::year& y, const chrono::month& m,
      |                                                                          ^~~~~
p1393.cpp:100:22: note: 'constexpr int std::chrono::month(unsigned int)' declared here
  100 |   constexpr explicit month(unsigned m) noexcept;
      |                      ^~~~~
p1393.cpp:932:15: error: 'weekday_last' in namespace 'std::chrono' does not name a type
  932 | const chrono::weekday_last& wdl) noexcept;
      |               ^~~~~~~~~~~~
p1393.cpp:935:53: error: 'months' does not name a type; did you mean 'month'?
  935 | constexpr year_month_weekday_last& operator+=(const months& m) noexcept;
      |                                                     ^~~~~~
      |                                                     month
p1393.cpp:936:53: error: 'months' does not name a type; did you mean 'month'?
  936 | constexpr year_month_weekday_last& operator-=(const months& m) noexcept;
      |                                                     ^~~~~~
      |                                                     month
p1393.cpp:937:53: error: 'years' does not name a type; did you mean 'year'?
  937 | constexpr year_month_weekday_last& operator+=(const years& y)  noexcept;
      |                                                     ^~~~~
      |                                                     year
p1393.cpp:937:36: error: 'constexpr std::chrono::year_month_weekday_last& std::chrono::year_month_weekday_last::operator+=(const int&)' cannot be overloaded with 'constexpr std::chrono::year_month_weekday_last& std::chrono::year_month_weekday_last::operator+=(const int&)'
  937 | constexpr year_month_weekday_last& operator+=(const years& y)  noexcept;
      |                                    ^~~~~~~~
p1393.cpp:935:36: note: previous declaration 'constexpr std::chrono::year_month_weekday_last& std::chrono::year_month_weekday_last::operator+=(const int&)'
  935 | constexpr year_month_weekday_last& operator+=(const months& m) noexcept;
      |                                    ^~~~~~~~
p1393.cpp:938:53: error: 'years' does not name a type; did you mean 'year'?
  938 | constexpr year_month_weekday_last& operator-=(const years& y)  noexcept;
      |                                                     ^~~~~
      |                                                     year
p1393.cpp:938:36: error: 'constexpr std::chrono::year_month_weekday_last& std::chrono::year_month_weekday_last::operator-=(const int&)' cannot be overloaded with 'constexpr std::chrono::year_month_weekday_last& std::chrono::year_month_weekday_last::operator-=(const int&)'
  938 | constexpr year_month_weekday_last& operator-=(const years& y)  noexcept;
      |                                    ^~~~~~~~
p1393.cpp:936:36: note: previous declaration 'constexpr std::chrono::year_month_weekday_last& std::chrono::year_month_weekday_last::operator-=(const int&)'
  936 | constexpr year_month_weekday_last& operator-=(const months& m) noexcept;
      |                                    ^~~~~~~~
p1393.cpp:939:28: error: 'year' in namespace 'std::chrono' does not name a type
  939 |          constexpr chrono::year         year()
      |                            ^~~~
p1393.cpp:171:22: note: 'constexpr int std::chrono::year(int)' declared here
  171 |   constexpr explicit year(int y) noexcept;
      |                      ^~~~
p1393.cpp:943:38: error: expected type-specifier before 'sys_days'
  943 |          constexpr          operator sys_days()   const noexcept;
      |                                      ^~~~~~~~
p1393.cpp:944:38: error: expected type-specifier before 'local_days'
  944 |          constexpr explicit operator local_days() const noexcept;
      |                                      ^~~~~~~~~~
p1393.cpp:951:52: error: 'year' in namespace 'std::chrono' does not name a type
  951 |    constexpr year_month_weekday_last(const chrono::year& y, const chrono::month& m,
      |                                                    ^~~~
p1393.cpp:171:22: note: 'constexpr int std::chrono::year(int)' declared here
  171 |   constexpr explicit year(int y) noexcept;
      |                      ^~~~
p1393.cpp:951:75: error: 'month' in namespace 'std::chrono' does not name a type
  951 |    constexpr year_month_weekday_last(const chrono::year& y, const chrono::month& m,
      |                                                                           ^~~~~
p1393.cpp:100:22: note: 'constexpr int std::chrono::month(unsigned int)' declared here
  100 |   constexpr explicit month(unsigned m) noexcept;
      |                      ^~~~~
p1393.cpp:952:52: error: 'weekday_last' in namespace 'std::chrono' does not name a type
  952 |                                      const chrono::weekday_last& wdl) noexcept;
      |                                                    ^~~~~~~~~~~~
p1393.cpp:951:14: error: ISO C++ forbids declaration of 'year_month_weekday_last' with no type [-fpermissive]
  951 |    constexpr year_month_weekday_last(const chrono::year& y, const chrono::month& m,
      |              ^~~~~~~~~~~~~~~~~~~~~~~
p1393.cpp:954:11: error: 'year_month_weekday_last' does not name a type
  954 | constexpr year_month_weekday_last& operator+=(const months& m) noexcept;
      |           ^~~~~~~~~~~~~~~~~~~~~~~
p1393.cpp:955:11: error: 'year_month_weekday_last' does not name a type
  955 | constexpr year_month_weekday_last& operator-=(const months& m) noexcept;
      |           ^~~~~~~~~~~~~~~~~~~~~~~
p1393.cpp:956:7: error: expected unqualified-id before 'noexcept'
  956 | const noexcept;
      |       ^~~~~~~~
p1393.cpp:957:7: error: expected unqualified-id before 'noexcept'
  957 | const noexcept;
      |       ^~~~~~~~
p1393.cpp:958:7: error: expected unqualified-id before 'noexcept'
  958 | const noexcept;
      |       ^~~~~~~~
p1393.cpp:961:11: error: 'year_month_weekday_last' does not name a type
  961 | constexpr year_month_weekday_last& operator+=(const years& y) noexcept;
      |           ^~~~~~~~~~~~~~~~~~~~~~~
p1393.cpp:963:11: error: 'year_month_weekday_last' does not name a type
  963 | constexpr year_month_weekday_last& operator-=(const years& y) noexcept;
      |           ^~~~~~~~~~~~~~~~~~~~~~~
p1393.cpp:965:19: error: 'year' in namespace 'std::chrono' does not name a type
  965 | constexpr chrono::year year() const noexcept;
      |                   ^~~~
p1393.cpp:171:22: note: 'constexpr int std::chrono::year(int)' declared here
  171 |   constexpr explicit year(int y) noexcept;
      |                      ^~~~
p1393.cpp:967:19: error: 'month' in namespace 'std::chrono' does not name a type
  967 | constexpr chrono::month month() const noexcept;
      |                   ^~~~~
p1393.cpp:100:22: note: 'constexpr int std::chrono::month(unsigned int)' declared here
  100 |   constexpr explicit month(unsigned m) noexcept;
      |                      ^~~~~
p1393.cpp:969:19: error: 'weekday' in namespace 'std::chrono' does not name a type
  969 | constexpr chrono::weekday weekday() const noexcept;
      |                   ^~~~~~~
p1393.cpp:971:19: error: 'weekday_last' in namespace 'std::chrono' does not name a type
  971 | constexpr chrono::weekday_last weekday_last() const noexcept;
      |                   ^~~~~~~~~~~~
p1393.cpp:973:20: error: expected type-specifier before 'sys_days'
  973 | constexpr operator sys_days() const noexcept;
      |                    ^~~~~~~~
p1393.cpp:975:29: error: expected type-specifier before 'local_days'
  975 | constexpr explicit operator local_days() const noexcept;
      |                             ^~~~~~~~~~
p1393.cpp:979:28: error: 'year_month_weekday_last' does not name a type
  979 |                      const year_month_weekday_last& y) noexcept;
      |                            ^~~~~~~~~~~~~~~~~~~~~~~
p1393.cpp:981:11: error: 'year_month_weekday_last' does not name a type
  981 | constexpr year_month_weekday_last
      |           ^~~~~~~~~~~~~~~~~~~~~~~
p1393.cpp:985:11: error: 'year_month_weekday_last' does not name a type
  985 | constexpr year_month_weekday_last
      |           ^~~~~~~~~~~~~~~~~~~~~~~
p1393.cpp:989:11: error: 'year_month_weekday_last' does not name a type
  989 | constexpr year_month_weekday_last
      |           ^~~~~~~~~~~~~~~~~~~~~~~
p1393.cpp:993:11: error: 'year_month_weekday_last' does not name a type
  993 | constexpr year_month_weekday_last
      |           ^~~~~~~~~~~~~~~~~~~~~~~
p1393.cpp:996:11: error: 'year_month_weekday_last' does not name a type
  996 | constexpr year_month_weekday_last
      |           ^~~~~~~~~~~~~~~~~~~~~~~
p1393.cpp:999:11: error: 'year_month_weekday_last' does not name a type
  999 | constexpr year_month_weekday_last
      |           ^~~~~~~~~~~~~~~~~~~~~~~
p1393.cpp:1004:52: error: 'year_month_weekday_last' does not name a type
 1004 | operator<<(basic_ostream<charT, traits>& os, const year_month_weekday_last& ymwdl);
      |                                                    ^~~~~~~~~~~~~~~~~~~~~~~
p1393.cpp:1006:1: error: expected unqualified-id before 'return'
 1006 | return os << format(os.getloc(), STATICALLY-WIDEN<charT>("{}/{:L}/{:L}"), ymwdl.year(), ymwdl.month(), ymwdl.weekday_last());
      | ^~~~~~
p1393.cpp:1008:11: error: 'year_month' does not name a type
 1008 | constexpr year_month
      |           ^~~~~~~~~~
p1393.cpp:1014:6: error: 'year_month' does not name a type
 1014 |      year_month ym = 2015y/April;
      |      ^~~~~~~~~~
p1393.cpp:1015:6: error: 'month_day' does not name a type
 1015 |      month_day md1 = April/4;
      |      ^~~~~~~~~
p1393.cpp:1016:6: error: 'month_day' does not name a type
 1016 |      month_day md2 = 4d/April;
      |      ^~~~~~~~~
p1393.cpp:1019:10: error: unable to find numeric literal operator 'operator""y'
 1019 | auto b = 2015y/4/4;
      |          ^~~~~
p1393.cpp:1019:10: note: use '-fext-numeric-literals' to enable more built-in suffixes
p1393.cpp:1020:10: error: unable to find numeric literal operator 'operator""y'
 1020 | auto c = 2015y/4d/April;
      |          ^~~~~
p1393.cpp:1020:10: note: use '-fext-numeric-literals' to enable more built-in suffixes
p1393.cpp:1020:19: error: 'April' was not declared in this scope
 1020 | auto c = 2015y/4d/April;
      |                   ^~~~~
p1393.cpp:1021:15: error: 'April' was not declared in this scope
 1021 | auto d = 2015/April/4;
      |               ^~~~~
p1393.cpp:1026:11: error: 'year_month' does not name a type
 1026 | constexpr year_month
      |           ^~~~~~~~~~
p1393.cpp:1029:11: error: 'month_day' does not name a type
 1029 | constexpr month_day
      |           ^~~~~~~~~
p1393.cpp:1032:11: error: 'month_day' does not name a type
 1032 | constexpr month_day
      |           ^~~~~~~~~
p1393.cpp:1035:11: error: 'month_day' does not name a type
 1035 | constexpr month_day
      |           ^~~~~~~~~
p1393.cpp:1038:11: error: 'month_day' does not name a type
 1038 | constexpr month_day
      |           ^~~~~~~~~
p1393.cpp:1041:11: error: 'month_day' does not name a type
 1041 | constexpr month_day
      |           ^~~~~~~~~
p1393.cpp:1044:11: error: 'month_day_last' does not name a type
 1044 | constexpr month_day_last
      |           ^~~~~~~~~~~~~~
p1393.cpp:1047:11: error: 'month_day_last' does not name a type
 1047 | constexpr month_day_last
      |           ^~~~~~~~~~~~~~
p1393.cpp:1050:11: error: 'month_day_last' does not name a type
 1050 | constexpr month_day_last
      |           ^~~~~~~~~~~~~~
p1393.cpp:1053:11: error: 'month_day_last' does not name a type
 1053 | constexpr month_day_last
      |           ^~~~~~~~~~~~~~
p1393.cpp:1056:11: error: 'month_weekday' does not name a type
 1056 | constexpr month_weekday
      |           ^~~~~~~~~~~~~
p1393.cpp:1059:11: error: 'month_weekday' does not name a type
 1059 | constexpr month_weekday
      |           ^~~~~~~~~~~~~
p1393.cpp:1062:11: error: 'month_weekday' does not name a type
 1062 | constexpr month_weekday
      |           ^~~~~~~~~~~~~
p1393.cpp:1065:11: error: 'month_weekday' does not name a type
 1065 | constexpr month_weekday
      |           ^~~~~~~~~~~~~
p1393.cpp:1068:11: error: 'month_weekday_last' does not name a type
 1068 | constexpr month_weekday_last
      |           ^~~~~~~~~~~~~~~~~~
p1393.cpp:1071:11: error: 'month_weekday_last' does not name a type
 1071 | constexpr month_weekday_last
      |           ^~~~~~~~~~~~~~~~~~
p1393.cpp:1074:11: error: 'month_weekday_last' does not name a type
 1074 | constexpr month_weekday_last
      |           ^~~~~~~~~~~~~~~~~~
p1393.cpp:1077:11: error: 'month_weekday_last' does not name a type
 1077 | constexpr month_weekday_last
      |           ^~~~~~~~~~~~~~~~~~
p1393.cpp:1080:11: error: 'year_month_day' does not name a type
 1080 | constexpr year_month_day
      |           ^~~~~~~~~~~~~~
p1393.cpp:1083:11: error: 'year_month_day' does not name a type
 1083 | constexpr year_month_day
      |           ^~~~~~~~~~~~~~
p1393.cpp:1086:11: error: 'year_month_day' does not name a type
 1086 | constexpr year_month_day
      |           ^~~~~~~~~~~~~~
p1393.cpp:1089:11: error: 'year_month_day' does not name a type
 1089 | constexpr year_month_day
      |           ^~~~~~~~~~~~~~
p1393.cpp:1092:11: error: 'year_month_day' does not name a type
 1092 | constexpr year_month_day
      |           ^~~~~~~~~~~~~~
p1393.cpp:1095:11: error: 'year_month_day' does not name a type
 1095 | constexpr year_month_day
      |           ^~~~~~~~~~~~~~
p1393.cpp:1098:11: error: 'year_month_day_last' does not name a type
 1098 | constexpr year_month_day_last
      |           ^~~~~~~~~~~~~~~~~~~
p1393.cpp:1101:11: error: 'year_month_day_last' does not name a type
 1101 | constexpr year_month_day_last
      |           ^~~~~~~~~~~~~~~~~~~
p1393.cpp:1104:11: error: 'year_month_day_last' does not name a type
 1104 | constexpr year_month_day_last
      |           ^~~~~~~~~~~~~~~~~~~
p1393.cpp:1107:11: error: 'year_month_day_last' does not name a type
 1107 | constexpr year_month_day_last
      |           ^~~~~~~~~~~~~~~~~~~
p1393.cpp:1110:11: error: 'year_month_day_last' does not name a type
 1110 | constexpr year_month_day_last
      |           ^~~~~~~~~~~~~~~~~~~
p1393.cpp:1113:11: error: 'year_month_weekday' does not name a type
 1113 | constexpr year_month_weekday
      |           ^~~~~~~~~~~~~~~~~~
p1393.cpp:1116:11: error: 'year_month_weekday' does not name a type
 1116 | constexpr year_month_weekday
      |           ^~~~~~~~~~~~~~~~~~
p1393.cpp:1119:11: error: 'year_month_weekday' does not name a type
 1119 | constexpr year_month_weekday
      |           ^~~~~~~~~~~~~~~~~~
p1393.cpp:1122:11: error: 'year_month_weekday' does not name a type
 1122 | constexpr year_month_weekday
      |           ^~~~~~~~~~~~~~~~~~
p1393.cpp:1125:11: error: 'year_month_weekday' does not name a type
 1125 | constexpr year_month_weekday
      |           ^~~~~~~~~~~~~~~~~~
p1393.cpp:1128:11: error: 'year_month_weekday_last' does not name a type
 1128 | constexpr year_month_weekday_last
      |           ^~~~~~~~~~~~~~~~~~~~~~~
p1393.cpp:1131:11: error: 'year_month_weekday_last' does not name a type
 1131 | constexpr year_month_weekday_last
      |           ^~~~~~~~~~~~~~~~~~~~~~~
p1393.cpp:1134:11: error: 'year_month_weekday_last' does not name a type
 1134 | constexpr year_month_weekday_last
      |           ^~~~~~~~~~~~~~~~~~~~~~~
p1393.cpp:1137:11: error: 'year_month_weekday_last' does not name a type
 1137 | constexpr year_month_weekday_last
      |           ^~~~~~~~~~~~~~~~~~~~~~~
p1393.cpp:1140:11: error: 'year_month_weekday_last' does not name a type
 1140 | constexpr year_month_weekday_last
      |           ^~~~~~~~~~~~~~~~~~~~~~~
p1393.cpp:90:23: warning: inline function 'constexpr std::chrono::day operator""d(long long unsigned int)' used but never defined
   90 | constexpr chrono::day operator""d(unsigned long long d) noexcept;
      |                       ^~~~~~~~

検討事項(agenda)

コンパイルエラーを取るか、コンパイルエラーの理由を解説する。

応用例1 AUTOSAR C++

AUTOSARでC++のコーディング標準を作っている。 
MISRA-C++コーディング標準の改訂をまたずに、C++14に対応したかったためかもしれない。 

Autosar Guidelines C++14 example code compile list

MISRA C++, AUTOSAR C++について

応用例2 MISRA C/C++

MISRA C まとめ #include

MISRA C++ 5-0-16

応用例3 CERT C/C++

SEI CERT C++ Coding Standard AA. Bibliography 確認中。

MISRA C/C++, AUTOSAR C++, CERT C/C++とC/C++工業標準をコンパイルする

応用例4 箱庭 

箱庭ではUnityをはじめC++を使っているらしい。 

ここでコンパイルしたコードと同じようなコードを使っているか、
ここで出たコンパイルエラーと同じようなエラーがでたかを
いろいろな版のコンパイラでコンパイルして確認していく。

仮想戦略会議「箱庭」

お盆には「箱庭」記事を書きましょう「もくもく会」の題材になる(1)

お盆には「箱庭」記事を書きましょう「もくもく会」の題材になる(2)

参考資料(reference)

エンジニア夏休み企画 個人開発

自己参考資料(self reference)

関連する自己参照以外は、こちらの先頭に移転。

C言語(C++)に対する誤解、曲解、無理解、爽快。

#include "N4910.h"

C++N4910資料の改善点

dockerにclang

docker gnu(gcc/g++) and llvm(clang/clang++)

コンパイル用shell script C版(clangとgcc)とC++版(clang++とg++)

C++N4910:2022 tag follower 300人超えました。ありがとうございます。

astyle 使ってみた

【個人開発】 効率的な背景 <エンジニア夏休み企画>

<この記事は個人の過去の経験に基づく個人の感想です。現在所属する組織、業務とは関係がありません。>

文書履歴(document history)

ver. 0.01 初稿  20220820

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?