VOOZH about

URL: https://qiita.com/kaizen_nagoya/items/4b7a739f6716b9db2fc6

⇱ 29 Time library [time] 29.2 Header <chrono> synopsis [time.syn]C++N4910:2022 (672) p1356.cpp #個人開発 - Qiita


👁 Image
0

Go to list of users who liked

1

Share on X(Twitter)

Share on Facebook

Add to Hatena Bookmark

More than 1 year has passed since last update.

@kaizen_nagoya(Dr. Kiyoshi Ogawa)

29 Time library [time] 29.2 Header <chrono> synopsis [time.syn]C++N4910:2022 (672) p1356.cpp

0
Last updated at Posted at 2022-08-18

はじめに(Introduction)

N4910 Working Draft, Standard for Programming Language C++
http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/n4910.pdf

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つの情報に基づいています。
https://stackoverflow.com
http://ja.cppreference.com/

cpprefjp - C++日本語リファレンス
https://cpprefjp.github.io/

コンパイラの実装状況
https://cpprefjp.github.io/implementation-status.html

また
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 Time library [time] 29.2 Header synopsis [time.syn]C++N4910:2022 (672) p1356.cpp

算譜(source code)

p1356.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 Time library [time] 29.2 Header <chrono> synopsis [time.syn]C++N4910:2022 (672) p1356.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.2 Header <chrono> synopsis
#include <compare> // see 17.11.1namespace std::chrono {
// 29.5, class template duration
template<class Rep, class Period = ratio<1>> class duration;
// 29.6, class template time_point
template<class Clock, class Duration = typename Clock::duration> class time_point;
}
namespace std {
// 29.4.3, common_type specializations
template<class Rep1, class Period1, class Rep2, class Period2>
struct common_type<chrono::duration<Rep1, Period1>,
 chrono::duration<Rep2, Period2>>;
template<class Clock, class Duration1, class Duration2>
struct common_type<chrono::time_point<Clock, Duration1>,
 chrono::time_point<Clock, Duration2>>;
}
namespace std::chrono {
// 29.4, customization traits
template<class Rep> struct treat_as_floating_point;
template<class Rep>
[time.syn]
inline constexpr bool treat_as_floating_point_v = treat_as_floating_point<Rep>::value;
template<class Rep> struct duration_values;
template<class T> struct is_clock;
template<class T> inline constexpr bool is_clock_v = is_clock<T>::value;
// 29.5.6, duration arithmetic
template<class Rep1, class Period1, class Rep2, class Period2>
constexpr common_type_t<duration<Rep1, Period1>, duration<Rep2, Period2>>
 operator+(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs);
template<class Rep1, class Period1, class Rep2, class Period2>
constexpr common_type_t<duration<Rep1, Period1>, duration<Rep2, Period2>>
 operator-(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs);
template<class Rep1, class Period, class Rep2>
constexpr duration<common_type_t<Rep1, Rep2>, Period>
operator*(const duration<Rep1, Period>& d, const Rep2& s);
template<class Rep1, class Rep2, class Period>
constexpr duration<common_type_t<Rep1, Rep2>, Period>
operator*(const Rep1& s, const duration<Rep2, Period>& d);
template<class Rep1, class Period, class Rep2>
constexpr duration<common_type_t<Rep1, Rep2>, Period>
operator/(const duration<Rep1, Period>& d, const Rep2& s);
template<class Rep1, class Period1, class Rep2, class Period2>
constexpr common_type_t<Rep1, Rep2>
operator/(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs);
template<class Rep1, class Period, class Rep2>
constexpr duration<common_type_t<Rep1, Rep2>, Period>
operator%(const duration<Rep1, Period>& d, const Rep2& s);
template<class Rep1, class Period1, class Rep2, class Period2>
constexpr common_type_t<duration<Rep1, Period1>, duration<Rep2, Period2>>
 operator%(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs);
// 29.5.7, duration comparisons
template<class Rep1, class Period1, class Rep2, class Period2>
constexpr bool operator==(const duration<Rep1, Period1>& lhs,
 const duration<Rep2, Period2>& rhs);
template<class Rep1, class Period1, class Rep2, class Period2>
constexpr bool operator< (const duration<Rep1, Period1>& lhs,
 const duration<Rep2, Period2>& rhs);
template<class Rep1, class Period1, class Rep2, class Period2>
constexpr bool operator> (const duration<Rep1, Period1>& lhs,
 const duration<Rep2, Period2>& rhs);
template<class Rep1, class Period1, class Rep2, class Period2>
constexpr bool operator<=(const duration<Rep1, Period1>& lhs,
 const duration<Rep2, Period2>& rhs);
template<class Rep1, class Period1, class Rep2, class Period2>
constexpr bool operator>=(const duration<Rep1, Period1>& lhs,
 const duration<Rep2, Period2>& rhs);
template<class Rep1, class Period1, class Rep2, class Period2> requires see below
constexpr auto operator<=>(const duration<Rep1, Period1>& lhs,
 const duration<Rep2, Period2>& rhs);
// 29.5.8, conversions
template<class ToDuration, class Rep, class Period>
constexpr ToDuration duration_cast(const duration<Rep, Period>& d);
template<class ToDuration, class Rep, class Period>
constexpr ToDuration floor(const duration<Rep, Period>& d);
template<class ToDuration, class Rep, class Period>
constexpr ToDuration ceil(const duration<Rep, Period>& d);
template<class ToDuration, class Rep, class Period>
constexpr ToDuration round(const duration<Rep, Period>& d);
// 29.5.11, duration I/O
template<class charT, class traits, class Rep, class Period>
basic_ostream<charT, traits>&
operator<<(basic_ostream<charT, traits>& os,
 const duration<Rep, Period>& d);
template<class charT, class traits, class Rep, class Period, class Alloc = allocator<charT>>
basic_istream<charT, traits>&
from_stream(basic_istream<charT, traits>& is, const charT* fmt,
 duration<Rep, Period>& d,
 basic_string<charT, traits, Alloc>* abbrev = nullptr,
 minutes* offset = nullptr);
// convenience typedefs
using nanoseconds = duration<signed integer type of at least 64 bits, nano>;
using microseconds = duration<signed integer type of at least 55 bits, micro>;
using milliseconds = duration<signed integer type of at least 45 bits, milli>;
using seconds = duration<signed integer type of at least 35 bits>;
using minutes = duration<signed integer type of at least 29 bits, ratio< 60>>;
using hours = duration<signed integer type of at least 23 bits, ratio<3600>>;
using days = duration<signed integer type of at least 25 bits,
 ratio_multiply<ratio<24>, hours::period>>;
using weeks = duration<signed integer type of at least 22 bits, ratio_multiply<ratio<7>, days::period>>;
using years = duration<signed integer type of at least 17 bits,
 ratio_multiply<ratio<146097, 400>, days::period>>;
using months = duration<signed integer type of at least 20 bits, ratio_divide<years::period, ratio<12>>>;
// 29.6.6, time_point arithmetic
template<class Clock, class Duration1, class Rep2, class Period2>
constexpr time_point<Clock, common_type_t<Duration1, duration<Rep2, Period2>>>
operator+(const time_point<Clock, Duration1>& lhs, const duration<Rep2, Period2>& rhs);
template<class Rep1, class Period1, class Clock, class Duration2>
constexpr time_point<Clock, common_type_t<duration<Rep1, Period1>, Duration2>>
 operator+(const duration<Rep1, Period1>& lhs, const time_point<Clock, Duration2>& rhs);
template<class Clock, class Duration1, class Rep2, class Period2>
constexpr time_point<Clock, common_type_t<Duration1, duration<Rep2, Period2>>>
operator-(const time_point<Clock, Duration1>& lhs, const duration<Rep2, Period2>& rhs);
template<class Clock, class Duration1, class Duration2>
constexpr common_type_t<Duration1, Duration2>
operator-(const time_point<Clock, Duration1>& lhs,
 const time_point<Clock, Duration2>& rhs);
// 29.6.7, time_point comparisons
template<class Clock, class Duration1, class Duration2>
constexpr bool operator==(const time_point<Clock, Duration1>& lhs,
 const time_point<Clock, Duration2>& rhs);
template<class Clock, class Duration1, class Duration2>
constexpr bool operator< (const time_point<Clock, Duration1>& lhs,
 const time_point<Clock, Duration2>& rhs);
template<class Clock, class Duration1, class Duration2>
constexpr bool operator> (const time_point<Clock, Duration1>& lhs,
 const time_point<Clock, Duration2>& rhs);
template<class Clock, class Duration1, class Duration2>
constexpr bool operator<=(const time_point<Clock, Duration1>& lhs,
 const time_point<Clock, Duration2>& rhs);
template<class Clock, class Duration1, class Duration2>
constexpr bool operator>=(const time_point<Clock, Duration1>& lhs,
 const time_point<Clock, Duration2>& rhs);
template<class Clock, class Duration1, three_way_comparable_with<Duration1> Duration2>
constexpr auto operator<=>(const time_point<Clock, Duration1>& lhs,
 const time_point<Clock, Duration2>& rhs);
// 29.6.8, conversions
template<class ToDuration, class Clock, class Duration>
constexpr time_point<Clock, ToDuration>
time_point_cast(const time_point<Clock, Duration>& t);
template<class ToDuration, class Clock, class Duration>
constexpr time_point<Clock, ToDuration> floor(const time_point<Clock, Duration>& tp);
template<class ToDuration, class Clock, class Duration>
constexpr time_point<Clock, ToDuration> ceil(const time_point<Clock, Duration>& tp);
template<class ToDuration, class Clock, class Duration>
constexpr time_point<Clock, ToDuration> round(const time_point<Clock, Duration>& tp);
// 29.5.10, specialized algorithms
template<class Rep, class Period>
constexpr duration<Rep, Period> abs(duration<Rep, Period> d);
// 29.7.2, class system_clock
class system_clock;
template<class Duration>
using sys_time = time_point<system_clock, Duration>;
using sys_seconds = sys_time<seconds>;
using sys_days = sys_time<days>;
template<class charT, class traits, class Duration>
basic_ostream<charT, traits>&
operator<<(basic_ostream<charT, traits>& os, const sys_time<Duration>& tp);
template<class charT, class traits>
basic_ostream<charT, traits>&
operator<<(basic_ostream<charT, traits>& os, const sys_days& dp);
template<class charT, class traits, class Duration, class Alloc = allocator<charT>>
basic_istream<charT, traits>&
from_stream(basic_istream<charT, traits>& is, const charT* fmt,
 sys_time<Duration>& tp,
 basic_string<charT, traits, Alloc>* abbrev = nullptr,
 minutes* offset = nullptr);
// 29.7.3, class utc_clock
class utc_clock;
template<class Duration>
using utc_time = time_point<utc_clock, Duration>;
using utc_seconds = utc_time<seconds>;
template<class charT, class traits, class Duration>
basic_ostream<charT, traits>&
operator<<(basic_ostream<charT, traits>& os, const utc_time<Duration>& t);
template<class charT, class traits, class Duration, class Alloc = allocator<charT>>
basic_istream<charT, traits>&
from_stream(basic_istream<charT, traits>& is, const charT* fmt,
 utc_time<Duration>& tp,
 basic_string<charT, traits, Alloc>* abbrev = nullptr,
 minutes* offset = nullptr);
struct leap_second_info;
template<class Duration>
leap_second_info get_leap_second_info(const utc_time<Duration>& ut);
// 29.7.4, class tai_clock
class tai_clock;
template<class Duration>
using tai_time = time_point<tai_clock, Duration>;
using tai_seconds = tai_time<seconds>;
template<class charT, class traits, class Duration>
basic_ostream<charT, traits>&
operator<<(basic_ostream<charT, traits>& os, const tai_time<Duration>& t);
template<class charT, class traits, class Duration, class Alloc = allocator<charT>>
basic_istream<charT, traits>&
from_stream(basic_istream<charT, traits>& is, const charT* fmt,
 tai_time<Duration>& tp,
 basic_string<charT, traits, Alloc>* abbrev = nullptr,
 minutes* offset = nullptr);
// 29.7.5, class gps_clock
class gps_clock;
template<class Duration>
using gps_time = time_point<gps_clock, Duration>;
using gps_seconds = gps_time<seconds>;
template<class charT, class traits, class Duration>
basic_ostream<charT, traits>&
operator<<(basic_ostream<charT, traits>& os, const gps_time<Duration>& t);
template<class charT, class traits, class Duration, class Alloc = allocator<charT>>
basic_istream<charT, traits>&
from_stream(basic_istream<charT, traits>& is, const charT* fmt,
 gps_time<Duration>& tp,
 basic_string<charT, traits, Alloc>* abbrev = nullptr,
 minutes* offset = nullptr);
// 29.7.6, type file_clock
using file_clock = see below;
template<class Duration>
using file_time = time_point<file_clock, Duration>;
template<class charT, class traits, class Duration>
basic_ostream<charT, traits>&
operator<<(basic_ostream<charT, traits>& os, const file_time<Duration>& tp);
template<class charT, class traits, class Duration, class Alloc = allocator<charT>>
basic_istream<charT, traits>&
from_stream(basic_istream<charT, traits>& is, const charT* fmt,
 file_time<Duration>& tp,
 basic_string<charT, traits, Alloc>* abbrev = nullptr,
 minutes* offset = nullptr);
// 29.7.7, class steady_clock
class steady_clock;
// 29.7.8, class high_resolution_clock
class high_resolution_clock;
// 29.7.9, local time
struct local_t {};
template<class Duration>
using local_time = time_point<local_t, Duration>;
using local_seconds = local_time<seconds>;
using local_days = local_time<days>;
template<class charT, class traits, class Duration>
basic_ostream<charT, traits>&
operator<<(basic_ostream<charT, traits>& os, const local_time<Duration>& tp);
template<class charT, class traits, class Duration, class Alloc = allocator<charT>>
basic_istream<charT, traits>&
from_stream(basic_istream<charT, traits>& is, const charT* fmt,
 local_time<Duration>& tp,
 basic_string<charT, traits, Alloc>* abbrev = nullptr,
 minutes* offset = nullptr);
// 29.7.10, time_point conversions
template<class DestClock, class SourceClock>
struct clock_time_conversion;
template<class DestClock, class SourceClock, class Duration>
auto clock_cast(const time_point<SourceClock, Duration>& t);
// 29.8.2, class last_spec
struct last_spec;
// 29.8.3, class day
class day;
constexpr bool operator==(const day& x, const day& y) noexcept;
constexpr strong_ordering operator<=>(const day& x, const day& y) noexcept;
constexpr day operator+(const day& x, const days& y) noexcept;
constexpr day operator+(const days& x, const day& y) noexcept;
constexpr day operator-(const day& x, const days& y) noexcept;
constexpr days operator-(const day& x, const day& y) noexcept;
template<class charT, class traits>
basic_ostream<charT, traits>&
operator<<(basic_ostream<charT, traits>& os, const 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);
// 29.8.4, class month
class month;
constexpr bool operator==(const month& x, const month& y) noexcept;
constexpr strong_ordering operator<=>(const month& x, const month& y) noexcept;
constexpr month operator+(const month& x, const months& y) noexcept;
constexpr month operator+(const months& x, const month& y) noexcept;
constexpr month operator-(const month& x, const months& y) noexcept;
constexpr months operator-(const month& x, const month& y) noexcept;
template<class charT, class traits>
basic_ostream<charT, traits>&
operator<<(basic_ostream<charT, traits>& os, const month& 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);
// 29.8.5, class year
class year;
constexpr bool operator==(const year& x, const year& y) noexcept;
constexpr strong_ordering operator<=>(const year& x, const year& y) noexcept;
constexpr year operator+(const year& x, const years& y) noexcept;
constexpr year operator+(const years& x, const year& y) noexcept;
constexpr year operator-(const year& x, const years& y) noexcept;
constexpr years operator-(const year& x, const year& y) noexcept;
template<class charT, class traits>
basic_ostream<charT, traits>&
operator<<(basic_ostream<charT, traits>& os, const 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);
// 29.8.6, class weekday
class weekday;
constexpr bool operator==(const weekday& x, const weekday& y) noexcept;
constexpr weekday operator+(const weekday& x, const days& y) noexcept;
constexpr weekday operator+(const days& x, const weekday& y) noexcept;
constexpr weekday operator-(const weekday& x, const days& y) noexcept;
constexpr days operator-(const weekday& x, const weekday& y) noexcept;
template<class charT, class traits>
basic_ostream<charT, traits>&
operator<<(basic_ostream<charT, traits>& os, const weekday& 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);
// 29.8.7, class weekday_indexed
class weekday_indexed;
constexpr bool operator==(const weekday_indexed& x, const weekday_indexed& y) noexcept;
template<class charT, class traits>
basic_ostream<charT, traits>&
operator<<(basic_ostream<charT, traits>& os, const weekday_indexed& wdi);
// 29.8.8, class weekday_last
class weekday_last;
constexpr bool operator==(const weekday_last& x, const weekday_last& y) noexcept;
template<class charT, class traits>
basic_ostream<charT, traits>&
operator<<(basic_ostream<charT, traits>& os, const weekday_last& wdl);
// 29.8.9, class month_day
class month_day;
constexpr bool operator==(const month_day& x, const month_day& y) noexcept;
constexpr strong_ordering operator<=>(const month_day& x, const month_day& y) noexcept;
template<class charT, class traits>
basic_ostream<charT, traits>&
operator<<(basic_ostream<charT, traits>& os, const month_day& md);
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);
// 29.8.10, class month_day_last
class month_day_last;
constexpr bool operator==(const month_day_last& x, const month_day_last& y) noexcept;
constexpr strong_ordering operator<=>(const month_day_last& x,
 const month_day_last& y) noexcept;
template<class charT, class traits>
basic_ostream<charT, traits>&
operator<<(basic_ostream<charT, traits>& os, const month_day_last& mdl);
// 29.8.11, class month_weekday
class month_weekday;
constexpr bool operator==(const month_weekday& x, const month_weekday& y) noexcept;
template<class charT, class traits>
basic_ostream<charT, traits>&
operator<<(basic_ostream<charT, traits>& os, const month_weekday& mwd);
// 29.8.12, class month_weekday_last
class month_weekday_last;
constexpr bool operator==(const month_weekday_last& x, const month_weekday_last& y) noexcept;
template<class charT, class traits>
basic_ostream<charT, traits>&
operator<<(basic_ostream<charT, traits>& os, const month_weekday_last& mwdl);
// 29.8.13, class year_month
class year_month;
constexpr bool operator==(const year_month& x, const year_month& y) noexcept;
constexpr strong_ordering operator<=>(const year_month& x, const year_month& y) noexcept;
constexpr year_month operator+(const year_month& ym, const months& dm) noexcept;
constexpr year_month operator+(const months& dm, const year_month& ym) noexcept;
constexpr year_month operator-(const year_month& ym, const months& dm) noexcept;
constexpr months operator-(const year_month& x, const year_month& y) noexcept;
constexpr year_month operator+(const year_month& ym, const years& dy) noexcept;
constexpr year_month operator+(const years& dy, const year_month& ym) noexcept;
constexpr year_month operator-(const year_month& ym, const years& dy) noexcept;
template<class charT, class traits>
basic_ostream<charT, traits>&
operator<<(basic_ostream<charT, traits>& os, const year_month& ym);
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);
// 29.8.14, class year_month_day
class year_month_day;
constexpr bool operator==(const year_month_day& x, const year_month_day& y) noexcept;
constexpr strong_ordering operator<=>(const year_month_day& x,
 const year_month_day& y) noexcept;
constexpr year_month_day operator+(const year_month_day& ymd, const months& dm) noexcept;
constexpr year_month_day operator+(const months& dm, const year_month_day& ymd) noexcept;
constexpr year_month_day operator+(const year_month_day& ymd, const years& dy) noexcept;
constexpr year_month_day operator+(const years& dy, const year_month_day& ymd) noexcept;
constexpr year_month_day operator-(const year_month_day& ymd, const months& dm) noexcept;
constexpr year_month_day operator-(const year_month_day& ymd, const years& dy) noexcept;
template<class charT, class traits>
basic_ostream<charT, traits>&
operator<<(basic_ostream<charT, traits>& os, const year_month_day& 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);
// 29.8.15, class year_month_day_last
class year_month_day_last;
constexpr bool operator==(const year_month_day_last& x,
 const year_month_day_last& y) noexcept;
constexpr strong_ordering operator<=>(const year_month_day_last& x,
 const year_month_day_last& y) noexcept;
constexpr year_month_day_last
operator+(const year_month_day_last& ymdl, const months& dm) noexcept;
constexpr year_month_day_last
operator+(const months& dm, const year_month_day_last& ymdl) noexcept;
constexpr year_month_day_last
operator+(const year_month_day_last& ymdl, const years& dy) noexcept;
constexpr year_month_day_last
operator+(const years& dy, const year_month_day_last& ymdl) noexcept;
constexpr year_month_day_last
operator-(const year_month_day_last& ymdl, const months& dm) noexcept;
constexpr year_month_day_last
operator-(const year_month_day_last& ymdl, const years& dy) noexcept;
template<class charT, class traits>
basic_ostream<charT, traits>&
operator<<(basic_ostream<charT, traits>& os, const year_month_day_last& ymdl);
// 29.8.16, class year_month_weekday
class year_month_weekday;
constexpr bool operator==(const year_month_weekday& x,
 const year_month_weekday& y) noexcept;
constexpr year_month_weekday
operator+(const year_month_weekday& ymwd, const months& dm) noexcept;
constexpr year_month_weekday
operator+(const months& dm, const year_month_weekday& ymwd) noexcept;
constexpr year_month_weekday
operator+(const year_month_weekday& ymwd, const years& dy) noexcept;
constexpr year_month_weekday
operator+(const years& dy, const year_month_weekday& ymwd) noexcept;
constexpr year_month_weekday
operator-(const year_month_weekday& ymwd, const months& dm) noexcept;
constexpr year_month_weekday
operator-(const year_month_weekday& ymwd, const years& dy) noexcept;
template<class charT, class traits>
basic_ostream<charT, traits>&
operator<<(basic_ostream<charT, traits>& os, const year_month_weekday& ymwdi);
// 29.8.17, class year_month_weekday_last
class year_month_weekday_last;
constexpr bool operator==(const year_month_weekday_last& x,
 const year_month_weekday_last& y) noexcept;
constexpr year_month_weekday_last
operator+(const year_month_weekday_last& ymwdl, const months& dm) noexcept;
constexpr year_month_weekday_last
operator+(const months& dm, const year_month_weekday_last& ymwdl) noexcept;
constexpr year_month_weekday_last
operator+(const year_month_weekday_last& ymwdl, const years& dy) noexcept;
constexpr year_month_weekday_last
operator+(const years& dy, const year_month_weekday_last& ymwdl) noexcept;
constexpr year_month_weekday_last
operator-(const year_month_weekday_last& ymwdl, const months& dm) noexcept;
constexpr year_month_weekday_last
operator-(const year_month_weekday_last& ymwdl, const years& dy) noexcept;
template<class charT, class traits>
basic_ostream<charT, traits>&
operator<<(basic_ostream<charT, traits>& os, const year_month_weekday_last& ymwdl);
// 29.8.18, civil calendar conventional syntax operators
constexpr year_month
operator/(const year& y, const month& m) noexcept;
constexpr year_month
operator/(const year& y, int m) noexcept;
constexpr month_day
operator/(const month& m, const day& d) noexcept;
constexpr month_day
operator/(const month& m, int d) noexcept;
constexpr month_day
operator/(int m, const day& d) noexcept;
constexpr month_day
operator/(const day& d, const month& m) noexcept;
constexpr month_day
operator/(const day& d, int m) noexcept;
constexpr month_day_last
operator/(const month& m, last_spec) noexcept;
constexpr month_day_last
operator/(int m, last_spec) noexcept;
constexpr month_day_last
operator/(last_spec, const month& m) noexcept;
constexpr month_day_last
operator/(last_spec, int m) noexcept;
constexpr month_weekday
operator/(const month& m, const weekday_indexed& wdi) noexcept;
constexpr month_weekday
operator/(int m, const weekday_indexed& wdi) noexcept;
constexpr month_weekday
operator/(const weekday_indexed& wdi, const month& m) noexcept;
constexpr month_weekday
operator/(const weekday_indexed& wdi, int m) noexcept;
constexpr month_weekday_last
operator/(const month& m, const weekday_last& wdl) noexcept;
constexpr month_weekday_last
operator/(int m, const weekday_last& wdl) noexcept;
constexpr month_weekday_last
operator/(const weekday_last& wdl, const month& m) noexcept;
constexpr month_weekday_last
operator/(const weekday_last& wdl, int m) noexcept;
constexpr year_month_day
operator/(const year_month& ym, const day& d) noexcept;
constexpr year_month_day
operator/(const year_month& ym, int d) noexcept;
constexpr year_month_day
operator/(const year& y, const month_day& md) noexcept;
constexpr year_month_day
operator/(int y, const month_day& md) noexcept;
constexpr year_month_day
operator/(const month_day& md, const year& y) noexcept;
constexpr year_month_day
operator/(const month_day& md, int y) noexcept;
constexpr year_month_day_last
operator/(const year_month& ym, last_spec) noexcept;
constexpr year_month_day_last
operator/(const year& y, const month_day_last& mdl) noexcept;
constexpr year_month_day_last
operator/(int y, const month_day_last& mdl) noexcept;
constexpr year_month_day_last
operator/(const month_day_last& mdl, const year& y) noexcept;
constexpr year_month_day_last
operator/(const month_day_last& mdl, int y) noexcept;
constexpr year_month_weekday
operator/(const year_month& ym, const weekday_indexed& wdi) noexcept;
constexpr year_month_weekday
operator/(const year& y, const month_weekday& mwd) noexcept;
constexpr year_month_weekday
operator/(int y, const month_weekday& mwd) noexcept;
constexpr year_month_weekday
operator/(const month_weekday& mwd, const year& y) noexcept;
constexpr year_month_weekday
operator/(const month_weekday& mwd, int y) noexcept;
constexpr year_month_weekday_last
operator/(const year_month& ym, const weekday_last& wdl) noexcept;
constexpr year_month_weekday_last
operator/(const year& y, const month_weekday_last& mwdl) noexcept;
constexpr year_month_weekday_last
operator/(int y, const month_weekday_last& mwdl) noexcept;
constexpr year_month_weekday_last
operator/(const month_weekday_last& mwdl, const year& y) noexcept;
constexpr year_month_weekday_last
operator/(const month_weekday_last& mwdl, int y) noexcept;
// 29.9, class template hh_mm_ss
template<class Duration> class hh_mm_ss;
template<class charT, class traits, class Duration>
basic_ostream<charT, traits>&
operator<<(basic_ostream<charT, traits>& os, const hh_mm_ss<Duration>& hms);
// 29.10, 12/24 hour functions
constexpr bool is_am(const hours& h) noexcept;
constexpr bool is_pm(const hours& h) noexcept;
constexpr hours make12(const hours& h) noexcept;
constexpr hours make24(const hours& h, bool is_pm) noexcept;
// 29.11.2, time zone database
struct tzdb;
class tzdb_list;
// 29.11.2.3, time zone database access
const tzdb& get_tzdb();
tzdb_list& get_tzdb_list();
const time_zone* locate_zone(string_view tz_name);
const time_zone* current_zone();
// 29.11.2.4, remote time zone database support
const tzdb& reload_tzdb();
string remote_version();
// 29.11.3, exception classes
class nonexistent_local_time;
class ambiguous_local_time;
// 29.11.4, information classes
struct sys_info;
template<class charT, class traits>
basic_ostream<charT, traits>&
operator<<(basic_ostream<charT, traits>& os, const sys_info& si);
struct local_info;
template<class charT, class traits>
basic_ostream<charT, traits>&
operator<<(basic_ostream<charT, traits>& os, const local_info& li);
// 29.11.5, class time_zone
enum class choose {earliest, latest};
class time_zone;
bool operator==(const time_zone& x, const time_zone& y) noexcept;
strong_ordering operator<=>(const time_zone& x, const time_zone& y) noexcept;
// 29.11.6, class template zoned_traits
template<class T> struct zoned_traits;
// 29.11.7, class template zoned_time
template<class Duration, class TimeZonePtr = const time_zone*> class zoned_time;
using zoned_seconds = zoned_time<seconds>;
template<class Duration1, class Duration2, class TimeZonePtr>
bool operator==(const zoned_time<Duration1, TimeZonePtr>& x,
 const zoned_time<Duration2, TimeZonePtr>& y);
template<class charT, class traits, class Duration, class TimeZonePtr>
basic_ostream<charT, traits>&
operator<<(basic_ostream<charT, traits>& os,
 const zoned_time<Duration, TimeZonePtr>& t);
// 29.11.8, leap second support
class leap_second;
constexpr bool operator==(const leap_second& x, const leap_second& y);
constexpr strong_ordering operator<=>(const leap_second& x, const leap_second& y);
template<class Duration>
constexpr bool operator==(const leap_second& x, const sys_time<Duration>& y);
template<class Duration>
constexpr bool operator< (const leap_second& x, const sys_time<Duration>& y);
template<class Duration>
constexpr bool operator< (const sys_time<Duration>& x, const leap_second& y);
template<class Duration>
constexpr bool operator> (const leap_second& x, const sys_time<Duration>& y);
template<class Duration>
constexpr bool operator> (const sys_time<Duration>& x, const leap_second& y);
template<class Duration>
constexpr bool operator<=(const leap_second& x, const sys_time<Duration>& y);
template<class Duration>
constexpr bool operator<=(const sys_time<Duration>& x, const leap_second& y);
template<class Duration>
constexpr bool operator>=(const leap_second& x, const sys_time<Duration>& y);
template<class Duration>
constexpr bool operator>=(const sys_time<Duration>& x, const leap_second& y);
template<class Duration>
requires three_way_comparable_with<sys_seconds, sys_time<Duration>>
 constexpr auto operator<=>(const leap_second& x, const sys_time<Duration>& y);
// 29.11.9, class time_zone_link
class time_zone_link;
bool operator==(const time_zone_link& x, const time_zone_link& y);
strong_ordering operator<=>(const time_zone_link& x, const time_zone_link& y);
// 29.12, formatting
template<class Duration> struct local-time-format-t ; // exposition only
template<class Duration>
local-time-format-t <Duration>
local_time_format(local_time<Duration> time, const string* abbrev = nullptr,
 const seconds* offset_sec = nullptr);
}
namespace std {
template<class Rep, class Period, class charT>
struct formatter<chrono::duration<Rep, Period>, charT>;
template<class Duration, class charT>
struct formatter<chrono::sys_time<Duration>, charT>;
template<class Duration, class charT>
struct formatter<chrono::utc_time<Duration>, charT>;
template<class Duration, class charT>
struct formatter<chrono::tai_time<Duration>, charT>;
template<class Duration, class charT>
struct formatter<chrono::gps_time<Duration>, charT>;
template<class Duration, class charT>
struct formatter<chrono::file_time<Duration>, charT>;
template<class Duration, class charT>
struct formatter<chrono::local_time<Duration>, charT>;
template<class Duration, class charT>
struct formatter<chrono::local-time-format-t<Duration>, charT>;
template<class charT> struct formatter<chrono::day, charT>;
template<class charT> struct formatter<chrono::month, charT>;
template<class charT> struct formatter<chrono::year, charT>;
template<class charT> struct formatter<chrono::weekday, charT>;
template<class charT> struct formatter<chrono::weekday_indexed, charT>;
template<class charT> struct formatter<chrono::weekday_last, charT>;
template<class charT> struct formatter<chrono::month_day, charT>;
template<class charT> struct formatter<chrono::month_day_last, charT>;
template<class charT> struct formatter<chrono::month_weekday, charT>;
template<class charT> struct formatter<chrono::month_weekday_last, charT>;
template<class charT> struct formatter<chrono::year_month, charT>;
template<class charT> struct formatter<chrono::year_month_day, charT>;
template<class charT> struct formatter<chrono::year_month_day_last, charT>;
template<class charT> struct formatter<chrono::year_month_weekday, charT>;
template<class charT> struct formatter<chrono::year_month_weekday_last, charT>;
template<class Rep, class Period, class charT>
struct formatter<chrono::hh_mm_ss<duration<Rep, Period>>, charT>;
template<class charT> struct formatter<chrono::sys_info, charT>;
template<class charT> struct formatter<chrono::local_info, charT>;
template<class Duration, class TimeZonePtr, class charT>
struct formatter<chrono::zoned_time<Duration, TimeZonePtr>, charT>;
}
namespace std::chrono {
// 29.13, parsing
template<class charT, class Parsable>
unspecified
parse(const charT* fmt, Parsable& tp);
template<class charT, class traits, class Alloc, class Parsable>
unspecified
parse(const basic_string<charT, traits, Alloc>& fmt, Parsable& tp);
template<class charT, class traits, class Alloc, class Parsable>
unspecified
parse(const charT* fmt, Parsable& tp,
 basic_string<charT, traits, Alloc>& abbrev);
template<class charT, class traits, class Alloc, class Parsable>
unspecified
parse(const basic_string<charT, traits, Alloc>& fmt, Parsable& tp,
 basic_string<charT, traits, Alloc>& abbrev);
template<class charT, class Parsable>
unspecified
parse(const charT* fmt, Parsable& tp, minutes& offset);
template<class charT, class traits, class Alloc, class Parsable>
unspecified
parse(const basic_string<charT, traits, Alloc>& fmt, Parsable& tp,
 minutes& offset);
template<class charT, class traits, class Alloc, class Parsable>
unspecified
parse(const charT* fmt, Parsable& tp,
 basic_string<charT, traits, Alloc>& abbrev, minutes& offset);
template<class charT, class traits, class Alloc, class Parsable>
unspecified
parse(const basic_string<charT, traits, Alloc>& fmt, Parsable& tp,
 basic_string<charT, traits, Alloc>& abbrev, minutes& offset);
// calendrical constants
inline constexpr last_spec last{};
inline constexpr weekday Sunday{0};
inline constexpr weekday Monday{1};
inline constexpr weekday Tuesday{2};
inline constexpr weekday Wednesday{3};
inline constexpr weekday Thursday{4};
inline constexpr weekday Friday{5};
inline constexpr weekday Saturday{6};
inline constexpr month January{1};
inline constexpr month February{2};
inline constexpr month March{3};
inline constexpr month April{4};
inline constexpr month May{5};
inline constexpr month June{6};
inline constexpr month July{7};
inline constexpr month August{8};
inline constexpr month September{9};
inline constexpr month October{10};
inline constexpr month November{11};
inline constexpr month December{12};
}
namespace std::inline literals::inline chrono_literals {
// 29.5.9, suffixes for duration literals
constexpr chrono::hours
constexpr chrono::duration<unspecified, ratio<3600, 1>> operator""h(long double);
constexpr chrono::minutes operator""min(unsigned long long);
constexpr chrono::duration<unspecified, ratio<60, 1>> operator""min(long double);
constexpr chrono::seconds operator""s(unsigned long long);
constexpr chrono::duration<unspecified > operator""s(long double);
constexpr chrono::milliseconds operator""ms(unsigned long long);
constexpr chrono::duration<unspecified, milli> operator""ms(long double);
operator""h(unsigned long long);
constexpr chrono::microseconds operator""us(unsigned long long);
constexpr chrono::duration<unspecified, micro> operator""us(long double);
constexpr chrono::nanoseconds operator""ns(unsigned long long);
constexpr chrono::duration<unspecified, nano> operator""ns(long double);
// 29.8.3.3, non-member functions
constexpr chrono::day operator""d(unsigned long long d) noexcept;
// 29.8.5.3, non-member functions
constexpr chrono::year operator""y(unsigned long long y) noexcept;
}
namespace std::chrono {
using namespace literals::chrono_literals;
}
int main() {
 cout << n4910 << endl;
 return EXIT_SUCCESS;
}

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

bash
$ clang++ p1356.cpp -std=03 -o p1356l -I. -Wall
In file included from p1356.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 \
 ^
p1356.cpp:16:14: warning: nested namespace definition is a C++17 extension; define each namespace separately [-Wc++17-extensions]
namespace std::chrono {
 ^~~~~~~~
 { namespace chrono
p1356.cpp:18:46: error: expected expression
template<class Rep, class Period = ratio<1>> class duration;
 ^
p1356.cpp:18:60: error: expected '>'
template<class Rep, class Period = ratio<1>> class duration;
 ^
p1356.cpp:18:41: note: to match this '<'
template<class Rep, class Period = ratio<1>> class duration;
 ^
p1356.cpp:18:60: error: expected ',' or '>' in template-parameter-list
template<class Rep, class Period = ratio<1>> class duration;
 ^
p1356.cpp:18:60: error: declaration does not declare anything
p1356.cpp:25:34: error: no member named 'duration' in namespace 'std::chrono'
 struct common_type<chrono::duration<Rep1, Period1>,
 ~~~~~~~~^
p1356.cpp:25:43: error: 'Rep1' does not refer to a value
 struct common_type<chrono::duration<Rep1, Period1>,
 ^
p1356.cpp:24:16: note: declared here
template<class Rep1, class Period1, class Rep2, class Period2>
 ^
p1356.cpp:25:14: error: explicit specialization of undeclared template struct 'common_type'
 struct common_type<chrono::duration<Rep1, Period1>,
 ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
p1356.cpp:25:57: error: expected unqualified-id
 struct common_type<chrono::duration<Rep1, Period1>,
 ^
p1356.cpp:29:61: error: a space is required between consecutive right angle brackets (use '> >')
 chrono::time_point<Clock, Duration2>>;
 ^~
 > >
p1356.cpp:28:14: error: explicit specialization of non-template struct 'common_type'
 struct common_type<chrono::time_point<Clock, Duration1>,
 ^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
p1356.cpp:28:14: error: redefinition of 'common_type' as different kind of symbol
p1356.cpp:25:14: note: previous definition is here
 struct common_type<chrono::duration<Rep1, Period1>,
 ^
p1356.cpp:81:24: warning: '<=>' is a single token in C++20; add a space to avoid a change in behavior [-Wc++20-compat]
constexpr auto operator<=>(const duration<Rep1, Period1>& lhs,
 ^
 
p1356.cpp:147:27: warning: '<=>' is a single token in C++20; add a space to avoid a change in behavior [-Wc++20-compat]
 constexpr auto operator<=>(const time_point<Clock, Duration1>& lhs,
 ^
 
p1356.cpp:266:35: warning: '<=>' is a single token in C++20; add a space to avoid a change in behavior [-Wc++20-compat]
constexpr strong_ordering operator<=>(const day& x, const day& y) noexcept;
 ^
 
p1356.cpp:282:35: warning: '<=>' is a single token in C++20; add a space to avoid a change in behavior [-Wc++20-compat]
constexpr strong_ordering operator<=>(const month& x, const month& y) noexcept;
 ^
 
p1356.cpp:298:35: warning: '<=>' is a single token in C++20; add a space to avoid a change in behavior [-Wc++20-compat]
constexpr strong_ordering operator<=>(const year& x, const year& y) noexcept;
 ^
 
p1356.cpp:341:35: warning: '<=>' is a single token in C++20; add a space to avoid a change in behavior [-Wc++20-compat]
constexpr strong_ordering operator<=>(const month_day& x, const month_day& y) noexcept;
 ^
 
p1356.cpp:353:35: warning: '<=>' is a single token in C++20; add a space to avoid a change in behavior [-Wc++20-compat]
constexpr strong_ordering operator<=>(const month_day_last& x,
 ^
 
p1356.cpp:373:35: warning: '<=>' is a single token in C++20; add a space to avoid a change in behavior [-Wc++20-compat]
constexpr strong_ordering operator<=>(const year_month& x, const year_month& y) noexcept;
 ^
 
p1356.cpp:392:35: warning: '<=>' is a single token in C++20; add a space to avoid a change in behavior [-Wc++20-compat]
constexpr strong_ordering operator<=>(const year_month_day& x,
 ^
 
p1356.cpp:413:35: warning: '<=>' is a single token in C++20; add a space to avoid a change in behavior [-Wc++20-compat]
constexpr strong_ordering operator<=>(const year_month_day_last& x,
 ^
 
p1356.cpp:584:25: warning: '<=>' is a single token in C++20; add a space to avoid a change in behavior [-Wc++20-compat]
strong_ordering operator<=>(const time_zone& x, const time_zone& y) noexcept;
 ^
 
p1356.cpp:600:35: warning: '<=>' is a single token in C++20; add a space to avoid a change in behavior [-Wc++20-compat]
constexpr strong_ordering operator<=>(const leap_second& x, const leap_second& y);
 ^
 
p1356.cpp:621:26: warning: '<=>' is a single token in C++20; add a space to avoid a change in behavior [-Wc++20-compat]
 constexpr auto operator<=>(const leap_second& x, const sys_time<Duration>& y);
 ^
 
p1356.cpp:625:27: warning: '<=>' is a single token in C++20; add a space to avoid a change in behavior [-Wc++20-compat]
 strong_ordering operator<=>(const time_zone_link& x, const time_zone_link& y);
 ^
 
p1356.cpp:31:16: warning: nested namespace definition is a C++17 extension; define each namespace separately [-Wc++17-extensions]
 namespace std::chrono {
 ^~~~~~~~
 { namespace chrono
p1356.cpp:34:6: error: member reference base type 'time_t (time_t *) throw()' (aka 'long (long *) throw()') is not a structure or union
[time.syn]
 ~~~~^~~~
p1356.cpp:35:3: error: expected unqualified-id
 inline constexpr bool treat_as_floating_point_v = treat_as_floating_point<Rep>::value;
 ^
p1356.cpp:38:26: error: unknown type name 'constexpr'
template<class T> inline constexpr bool is_clock_v = is_clock<T>::value;
 ^
p1356.cpp:38:41: warning: variable templates are a C++14 extension [-Wc++14-extensions]
template<class T> inline constexpr bool is_clock_v = is_clock<T>::value;
 ^
p1356.cpp:38:19: warning: inline variables are a C++17 extension [-Wc++17-extensions]
template<class T> inline constexpr bool is_clock_v = is_clock<T>::value;
 ^
p1356.cpp:41:3: error: unknown type name 'constexpr'
 constexpr common_type_t<duration<Rep1, Period1>, duration<Rep2, Period2>>
 ^
p1356.cpp:41:27: error: use of undeclared identifier 'duration'
 constexpr common_type_t<duration<Rep1, Period1>, duration<Rep2, Period2>>
 ^
p1356.cpp:42:86: error: expected '>'
 operator+(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs);
 ^
p1356.cpp:41:26: note: to match this '<'
 constexpr common_type_t<duration<Rep1, Period1>, duration<Rep2, Period2>>
 ^
p1356.cpp:42:86: error: expected unqualified-id
 operator+(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs);
 ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
18 warnings and 20 errors generated.
$ clang++ p1356.cpp -std=2b -o p1356l -I. -Wall
p1356.cpp:18:36: error: no template named 'ratio'
template<class Rep, class Period = ratio<1>> class duration;
 ^
p1356.cpp:34:6: error: member reference base type 'time_t (time_t *) throw()' (aka 'long (long *) throw()') is not a structure or union
[time.syn]
 ~~~~^~~~
p1356.cpp:35:3: error: expected unqualified-id
 inline constexpr bool treat_as_floating_point_v = treat_as_floating_point<Rep>::value;
 ^
p1356.cpp:80:73: error: use of undeclared identifier 'see'
template<class Rep1, class Period1, class Rep2, class Period2> requires see below
 ^
p1356.cpp:102:17: error: unknown type name 'minutes'
 minutes* offset = nullptr);
 ^
p1356.cpp:104:36: error: expected '>'
using nanoseconds = duration<signed integer type of at least 64 bits, nano>;
 ^
p1356.cpp:104:29: note: to match this '<'
using nanoseconds = duration<signed integer type of at least 64 bits, nano>;
 ^
p1356.cpp:104:36: error: expected ';' after alias declaration
using nanoseconds = duration<signed integer type of at least 64 bits, nano>;
 ^
 ;
p1356.cpp:105:37: error: expected '>'
using microseconds = duration<signed integer type of at least 55 bits, micro>;
 ^
p1356.cpp:105:30: note: to match this '<'
using microseconds = duration<signed integer type of at least 55 bits, micro>;
 ^
p1356.cpp:105:37: error: expected ';' after alias declaration
using microseconds = duration<signed integer type of at least 55 bits, micro>;
 ^
 ;
p1356.cpp:106:37: error: expected '>'
using milliseconds = duration<signed integer type of at least 45 bits, milli>;
 ^
p1356.cpp:106:30: note: to match this '<'
using milliseconds = duration<signed integer type of at least 45 bits, milli>;
 ^
p1356.cpp:106:37: error: expected ';' after alias declaration
using milliseconds = duration<signed integer type of at least 45 bits, milli>;
 ^
 ;
p1356.cpp:107:32: error: expected '>'
using seconds = duration<signed integer type of at least 35 bits>;
 ^
p1356.cpp:107:25: note: to match this '<'
using seconds = duration<signed integer type of at least 35 bits>;
 ^
p1356.cpp:107:32: error: expected ';' after alias declaration
using seconds = duration<signed integer type of at least 35 bits>;
 ^
 ;
p1356.cpp:108:32: error: expected '>'
using minutes = duration<signed integer type of at least 29 bits, ratio< 60>>;
 ^
p1356.cpp:108:25: note: to match this '<'
using minutes = duration<signed integer type of at least 29 bits, ratio< 60>>;
 ^
p1356.cpp:108:32: error: expected ';' after alias declaration
using minutes = duration<signed integer type of at least 29 bits, ratio< 60>>;
 ^
 ;
p1356.cpp:109:30: error: expected '>'
using hours = duration<signed integer type of at least 23 bits, ratio<3600>>;
 ^
p1356.cpp:109:23: note: to match this '<'
using hours = duration<signed integer type of at least 23 bits, ratio<3600>>;
 ^
p1356.cpp:109:30: error: expected ';' after alias declaration
using hours = duration<signed integer type of at least 23 bits, ratio<3600>>;
 ^
 ;
p1356.cpp:110:29: error: expected '>'
using days = duration<signed integer type of at least 25 bits,
 ^
p1356.cpp:110:22: note: to match this '<'
using days = duration<signed integer type of at least 25 bits,
 ^
p1356.cpp:110:29: error: expected ';' after alias declaration
using days = duration<signed integer type of at least 25 bits,
 ^
 ;
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.

$ g++ p1356.cpp -std=03 -o p1356g -I. -Wall
In file included from /usr/local/include/c++/12.1.0/atomic:38,
 from N4910.h:11,
 from p1356.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 \
 | ^~~~~
p1356.cpp:35:10: warning: identifier 'constexpr' is a keyword in C++11 [-Wc++11-compat]
 35 | inline constexpr bool treat_as_floating_point_v = treat_as_floating_point<Rep>::value;
 | ^~~~~~~~~
p1356.cpp:101:62: warning: identifier 'nullptr' is a keyword in C++11 [-Wc++11-compat]
 101 | basic_string<charT, traits, Alloc>* abbrev = nullptr,
 | ^~~~~~~
p1356.cpp:265:55: warning: identifier 'noexcept' is a keyword in C++11 [-Wc++11-compat]
 265 | constexpr bool operator==(const day& x, const day& y) noexcept;
 | ^~~~~~~~
p1356.cpp:18:36: error: 'ratio' does not name a type
 18 | template<class Rep, class Period = ratio<1>> class duration;
 | ^~~~~
p1356.cpp:18:41: error: expected '>' before '<' token
 18 | template<class Rep, class Period = ratio<1>> class duration;
 | ^
p1356.cpp:18:60: error: expected unqualified-id before ';' token
 18 | template<class Rep, class Period = ratio<1>> class duration;
 | ^
p1356.cpp:25:14: error: 'common_type' is not a class template
 25 | struct common_type<chrono::duration<Rep1, Period1>,
 | ^~~~~~~~~~~
p1356.cpp:25:34: error: 'duration' is not a member of 'std::chrono'
 25 | struct common_type<chrono::duration<Rep1, Period1>,
 | ^~~~~~~~
p1356.cpp:25:34: error: 'duration' is not a member of 'std::chrono'
p1356.cpp:25:25: error: expected ';' before ',' token
 25 | struct common_type<chrono::duration<Rep1, Period1>,
 | ^ ~
 | ;
p1356.cpp:28:14: error: 'common_type' is not a class template
 28 | struct common_type<chrono::time_point<Clock, Duration1>,
 | ^~~~~~~~~~~
p1356.cpp:29:61: error: '>>' should be '> >' within a nested template argument list
 29 | chrono::time_point<Clock, Duration2>>;
 | ^~
 | > >
p1356.cpp:28:14: error: 'std::common_type' is not a template
 28 | struct common_type<chrono::time_point<Clock, Duration1>,
 | ^~~~~~~~~~~
p1356.cpp:25:14: note: previous declaration here
 25 | struct common_type<chrono::duration<Rep1, Period1>,
 | ^~~~~~~~~~~
p1356.cpp:34:1: error: expected unqualified-id before '[' token
 34 | [time.syn]
 | ^
p1356.cpp:38:26: error: 'constexpr' does not name a type
 38 | template<class T> inline constexpr bool is_clock_v = is_clock<T>::value;
 | ^~~~~~~~~
p1356.cpp:38:26: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:41:3: error: 'constexpr' does not name a type
 41 | constexpr common_type_t<duration<Rep1, Period1>, duration<Rep2, Period2>>
 | ^~~~~~~~~
p1356.cpp:41:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:44:3: error: 'constexpr' does not name a type
 44 | constexpr common_type_t<duration<Rep1, Period1>, duration<Rep2, Period2>>
 | ^~~~~~~~~
p1356.cpp:44:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:47:3: error: 'constexpr' does not name a type
 47 | constexpr duration<common_type_t<Rep1, Rep2>, Period>
 | ^~~~~~~~~
p1356.cpp:47:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:50:3: error: 'constexpr' does not name a type
 50 | constexpr duration<common_type_t<Rep1, Rep2>, Period>
 | ^~~~~~~~~
p1356.cpp:50:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:53:3: error: 'constexpr' does not name a type
 53 | constexpr duration<common_type_t<Rep1, Rep2>, Period>
 | ^~~~~~~~~
p1356.cpp:53:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:56:3: error: 'constexpr' does not name a type
 56 | constexpr common_type_t<Rep1, Rep2>
 | ^~~~~~~~~
p1356.cpp:56:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:59:3: error: 'constexpr' does not name a type
 59 | constexpr duration<common_type_t<Rep1, Rep2>, Period>
 | ^~~~~~~~~
p1356.cpp:59:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:62:3: error: 'constexpr' does not name a type
 62 | constexpr common_type_t<duration<Rep1, Period1>, duration<Rep2, Period2>>
 | ^~~~~~~~~
p1356.cpp:62:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:66:3: error: 'constexpr' does not name a type
 66 | constexpr bool operator==(const duration<Rep1, Period1>& lhs,
 | ^~~~~~~~~
p1356.cpp:66:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:69:3: error: 'constexpr' does not name a type
 69 | constexpr bool operator< (const duration<Rep1, Period1>& lhs,
 | ^~~~~~~~~
p1356.cpp:69:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:72:3: error: 'constexpr' does not name a type
 72 | constexpr bool operator> (const duration<Rep1, Period1>& lhs,
 | ^~~~~~~~~
p1356.cpp:72:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:75:3: error: 'constexpr' does not name a type
 75 | constexpr bool operator<=(const duration<Rep1, Period1>& lhs,
 | ^~~~~~~~~
p1356.cpp:75:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:78:3: error: 'constexpr' does not name a type
 78 | constexpr bool operator>=(const duration<Rep1, Period1>& lhs,
 | ^~~~~~~~~
p1356.cpp:78:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:80:64: error: 'requires' does not name a type
 80 | template<class Rep1, class Period1, class Rep2, class Period2> requires see below
 | ^~~~~~~~
p1356.cpp:80:64: note: 'requires' only available with '-std=c++20' or '-fconcepts'
p1356.cpp:85:3: error: 'constexpr' does not name a type
 85 | constexpr ToDuration duration_cast(const duration<Rep, Period>& d);
 | ^~~~~~~~~
p1356.cpp:85:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:87:3: error: 'constexpr' does not name a type
 87 | constexpr ToDuration floor(const duration<Rep, Period>& d);
 | ^~~~~~~~~
p1356.cpp:87:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:89:3: error: 'constexpr' does not name a type
 89 | constexpr ToDuration ceil(const duration<Rep, Period>& d);
 | ^~~~~~~~~
p1356.cpp:89:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:91:3: error: 'constexpr' does not name a type
 91 | constexpr ToDuration round(const duration<Rep, Period>& d);
 | ^~~~~~~~~
p1356.cpp:91:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:96:22: error: 'duration' does not name a type
 96 | const duration<Rep, Period>& d);
 | ^~~~~~~~
p1356.cpp:96:30: error: expected ',' or '...' before '<' token
 96 | const duration<Rep, Period>& d);
 | ^
p1356.cpp:97:91: error: spurious '>>', use '>' to terminate a template argument list
 97 | template<class charT, class traits, class Rep, class Period, class Alloc = allocator<charT>>
 | ^~
p1356.cpp:97:76: error: two or more data types in declaration of 'type name'
 97 | template<class charT, class traits, class Rep, class Period, class Alloc = allocator<charT>>
 | ^~~~~~~~~~~~~~~~~
p1356.cpp:99:5: error: expected '>' before 'from_stream'
 99 | from_stream(basic_istream<charT, traits>& is, const charT* fmt,
 | ^~~~~~~~~~~
p1356.cpp:102:43: error: expected unqualified-id before ';' token
 102 | minutes* offset = nullptr);
 | ^
p1356.cpp:104:7: error: expected nested-name-specifier before 'nanoseconds'
 104 | using nanoseconds = duration<signed integer type of at least 64 bits, nano>;
 | ^~~~~~~~~~~
p1356.cpp:105:7: error: expected nested-name-specifier before 'microseconds'
 105 | using microseconds = duration<signed integer type of at least 55 bits, micro>;
 | ^~~~~~~~~~~~
p1356.cpp:106:7: error: expected nested-name-specifier before 'milliseconds'
 106 | using milliseconds = duration<signed integer type of at least 45 bits, milli>;
 | ^~~~~~~~~~~~
p1356.cpp:107:7: error: expected nested-name-specifier before 'seconds'
 107 | using seconds = duration<signed integer type of at least 35 bits>;
 | ^~~~~~~
p1356.cpp:108:7: error: expected nested-name-specifier before 'minutes'
 108 | using minutes = duration<signed integer type of at least 29 bits, ratio< 60>>;
 | ^~~~~~~
p1356.cpp:109:7: error: expected nested-name-specifier before 'hours'
 109 | using hours = duration<signed integer type of at least 23 bits, ratio<3600>>;
 | ^~~~~
p1356.cpp:110:7: error: expected nested-name-specifier before 'days'
 110 | using days = duration<signed integer type of at least 25 bits,
 | ^~~~
p1356.cpp:112:7: error: expected nested-name-specifier before 'weeks'
 112 | using weeks = duration<signed integer type of at least 22 bits, ratio_multiply<ratio<7>, days::period>>;
 | ^~~~~
p1356.cpp:113:7: error: expected nested-name-specifier before 'years'
 113 | using years = duration<signed integer type of at least 17 bits,
 | ^~~~~
p1356.cpp:115:7: error: expected nested-name-specifier before 'months'
 115 | using months = duration<signed integer type of at least 20 bits, ratio_divide<years::period, ratio<12>>>;
 | ^~~~~~
p1356.cpp:118:3: error: 'constexpr' does not name a type
 118 | constexpr time_point<Clock, common_type_t<Duration1, duration<Rep2, Period2>>>
 | ^~~~~~~~~
p1356.cpp:118:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:121:3: error: 'constexpr' does not name a type
 121 | constexpr time_point<Clock, common_type_t<duration<Rep1, Period1>, Duration2>>
 | ^~~~~~~~~
p1356.cpp:121:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:124:3: error: 'constexpr' does not name a type
 124 | constexpr time_point<Clock, common_type_t<Duration1, duration<Rep2, Period2>>>
 | ^~~~~~~~~
p1356.cpp:124:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:127:3: error: 'constexpr' does not name a type
 127 | constexpr common_type_t<Duration1, Duration2>
 | ^~~~~~~~~
p1356.cpp:127:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:132:4: error: 'constexpr' does not name a type
 132 | constexpr bool operator==(const time_point<Clock, Duration1>& lhs,
 | ^~~~~~~~~
p1356.cpp:132:4: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:135:4: error: 'constexpr' does not name a type
 135 | constexpr bool operator< (const time_point<Clock, Duration1>& lhs,
 | ^~~~~~~~~
p1356.cpp:135:4: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:138:4: error: 'constexpr' does not name a type
 138 | constexpr bool operator> (const time_point<Clock, Duration1>& lhs,
 | ^~~~~~~~~
p1356.cpp:138:4: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:141:4: error: 'constexpr' does not name a type
 141 | constexpr bool operator<=(const time_point<Clock, Duration1>& lhs,
 | ^~~~~~~~~
p1356.cpp:141:4: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:144:4: error: 'constexpr' does not name a type
 144 | constexpr bool operator>=(const time_point<Clock, Duration1>& lhs,
 | ^~~~~~~~~
p1356.cpp:144:4: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:146:40: error: 'three_way_comparable_with' has not been declared
 146 | template<class Clock, class Duration1, three_way_comparable_with<Duration1> Duration2>
 | ^~~~~~~~~~~~~~~~~~~~~~~~~
p1356.cpp:146:65: error: expected '>' before '<' token
 146 | template<class Clock, class Duration1, three_way_comparable_with<Duration1> Duration2>
 | ^
p1356.cpp:147:4: error: 'constexpr' does not name a type
 147 | constexpr auto operator<=>(const time_point<Clock, Duration1>& lhs,
 | ^~~~~~~~~
p1356.cpp:147:4: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:151:3: error: 'constexpr' does not name a type
 151 | constexpr time_point<Clock, ToDuration>
 | ^~~~~~~~~
p1356.cpp:151:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:154:3: error: 'constexpr' does not name a type
 154 | constexpr time_point<Clock, ToDuration> floor(const time_point<Clock, Duration>& tp);
 | ^~~~~~~~~
p1356.cpp:154:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:156:3: error: 'constexpr' does not name a type
 156 | constexpr time_point<Clock, ToDuration> ceil(const time_point<Clock, Duration>& tp);
 | ^~~~~~~~~
p1356.cpp:156:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:158:3: error: 'constexpr' does not name a type
 158 | constexpr time_point<Clock, ToDuration> round(const time_point<Clock, Duration>& tp);
 | ^~~~~~~~~
p1356.cpp:158:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:161:3: error: 'constexpr' does not name a type
 161 | constexpr duration<Rep, Period> abs(duration<Rep, Period> d);
 | ^~~~~~~~~
p1356.cpp:161:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:165:3: error: expected unqualified-id before 'using'
 165 | using sys_time = time_point<system_clock, Duration>;
 | ^~~~~
p1356.cpp:166:7: error: expected nested-name-specifier before 'sys_seconds'
 166 | using sys_seconds = sys_time<seconds>;
 | ^~~~~~~~~~~
p1356.cpp:167:7: error: expected nested-name-specifier before 'sys_days'
 167 | using sys_days = sys_time<days>;
 | ^~~~~~~~
p1356.cpp:170:56: error: 'sys_time' does not name a type
 170 | operator<<(basic_ostream<charT, traits>& os, const sys_time<Duration>& tp);
 | ^~~~~~~~
p1356.cpp:170:64: error: expected ',' or '...' before '<' token
 170 | operator<<(basic_ostream<charT, traits>& os, const sys_time<Duration>& tp);
 | ^
p1356.cpp:173:56: error: 'sys_days' does not name a type
 173 | operator<<(basic_ostream<charT, traits>& os, const sys_days& dp);
 | ^~~~~~~~
p1356.cpp:174:82: error: spurious '>>', use '>' to terminate a template argument list
 174 | template<class charT, class traits, class Duration, class Alloc = allocator<charT>>
 | ^~
p1356.cpp:174:67: error: two or more data types in declaration of 'type name'
 174 | template<class charT, class traits, class Duration, class Alloc = allocator<charT>>
 | ^~~~~~~~~~~~~~~~~
p1356.cpp:176:5: error: expected '>' before 'from_stream'
 176 | from_stream(basic_istream<charT, traits>& is, const charT* fmt,
 | ^~~~~~~~~~~
p1356.cpp:179:43: error: expected unqualified-id before ';' token
 179 | minutes* offset = nullptr);
 | ^
p1356.cpp:183:3: error: expected unqualified-id before 'using'
 183 | using utc_time = time_point<utc_clock, Duration>;
 | ^~~~~
p1356.cpp:184:7: error: expected nested-name-specifier before 'utc_seconds'
 184 | using utc_seconds = utc_time<seconds>;
 | ^~~~~~~~~~~
p1356.cpp:187:56: error: 'utc_time' does not name a type
 187 | operator<<(basic_ostream<charT, traits>& os, const utc_time<Duration>& t);
 | ^~~~~~~~
p1356.cpp:187:64: error: expected ',' or '...' before '<' token
 187 | operator<<(basic_ostream<charT, traits>& os, const utc_time<Duration>& t);
 | ^
p1356.cpp:188:82: error: spurious '>>', use '>' to terminate a template argument list
 188 | template<class charT, class traits, class Duration, class Alloc = allocator<charT>>
 | ^~
p1356.cpp:188:67: error: two or more data types in declaration of 'type name'
 188 | template<class charT, class traits, class Duration, class Alloc = allocator<charT>>
 | ^~~~~~~~~~~~~~~~~
p1356.cpp:190:5: error: expected '>' before 'from_stream'
 190 | from_stream(basic_istream<charT, traits>& is, const charT* fmt,
 | ^~~~~~~~~~~
p1356.cpp:193:43: error: expected unqualified-id before ';' token
 193 | minutes* offset = nullptr);
 | ^
p1356.cpp:196:47: error: 'utc_time' does not name a type
 196 | leap_second_info get_leap_second_info(const utc_time<Duration>& ut);
 | ^~~~~~~~
p1356.cpp:196:55: error: expected ',' or '...' before '<' token
 196 | leap_second_info get_leap_second_info(const utc_time<Duration>& ut);
 | ^
p1356.cpp:200:3: error: expected unqualified-id before 'using'
 200 | using tai_time = time_point<tai_clock, Duration>;
 | ^~~~~
p1356.cpp:201:7: error: expected nested-name-specifier before 'tai_seconds'
 201 | using tai_seconds = tai_time<seconds>;
 | ^~~~~~~~~~~
p1356.cpp:204:52: error: 'tai_time' does not name a type
 204 | operator<<(basic_ostream<charT, traits>& os, const tai_time<Duration>& t);
 | ^~~~~~~~
p1356.cpp:204:60: error: expected ',' or '...' before '<' token
 204 | operator<<(basic_ostream<charT, traits>& os, const tai_time<Duration>& t);
 | ^
p1356.cpp:205:82: error: spurious '>>', use '>' to terminate a template argument list
 205 | template<class charT, class traits, class Duration, class Alloc = allocator<charT>>
 | ^~
p1356.cpp:205:67: error: two or more data types in declaration of 'type name'
 205 | template<class charT, class traits, class Duration, class Alloc = allocator<charT>>
 | ^~~~~~~~~~~~~~~~~
p1356.cpp:207:5: error: expected '>' before 'from_stream'
 207 | from_stream(basic_istream<charT, traits>& is, const charT* fmt,
 | ^~~~~~~~~~~
p1356.cpp:210:43: error: expected unqualified-id before ';' token
 210 | minutes* offset = nullptr);
 | ^
p1356.cpp:214:3: error: expected unqualified-id before 'using'
 214 | using gps_time = time_point<gps_clock, Duration>;
 | ^~~~~
p1356.cpp:215:7: error: expected nested-name-specifier before 'gps_seconds'
 215 | using gps_seconds = gps_time<seconds>;
 | ^~~~~~~~~~~
p1356.cpp:218:56: error: 'gps_time' does not name a type
 218 | operator<<(basic_ostream<charT, traits>& os, const gps_time<Duration>& t);
 | ^~~~~~~~
p1356.cpp:218:64: error: expected ',' or '...' before '<' token
 218 | operator<<(basic_ostream<charT, traits>& os, const gps_time<Duration>& t);
 | ^
p1356.cpp:219:82: error: spurious '>>', use '>' to terminate a template argument list
 219 | template<class charT, class traits, class Duration, class Alloc = allocator<charT>>
 | ^~
p1356.cpp:219:67: error: two or more data types in declaration of 'type name'
 219 | template<class charT, class traits, class Duration, class Alloc = allocator<charT>>
 | ^~~~~~~~~~~~~~~~~
p1356.cpp:221:5: error: expected '>' before 'from_stream'
 221 | from_stream(basic_istream<charT, traits>& is, const charT* fmt,
 | ^~~~~~~~~~~
p1356.cpp:224:43: error: expected unqualified-id before ';' token
 224 | minutes* offset = nullptr);
 | ^
p1356.cpp:226:7: error: expected nested-name-specifier before 'file_clock'
 226 | using file_clock = see below;
 | ^~~~~~~~~~
p1356.cpp:228:3: error: expected unqualified-id before 'using'
 228 | using file_time = time_point<file_clock, Duration>;
 | ^~~~~
p1356.cpp:231:56: error: 'file_time' does not name a type
 231 | operator<<(basic_ostream<charT, traits>& os, const file_time<Duration>& tp);
 | ^~~~~~~~~
p1356.cpp:231:65: error: expected ',' or '...' before '<' token
 231 | operator<<(basic_ostream<charT, traits>& os, const file_time<Duration>& tp);
 | ^
p1356.cpp:232:82: error: spurious '>>', use '>' to terminate a template argument list
 232 | template<class charT, class traits, class Duration, class Alloc = allocator<charT>>
 | ^~
p1356.cpp:232:67: error: two or more data types in declaration of 'type name'
 232 | template<class charT, class traits, class Duration, class Alloc = allocator<charT>>
 | ^~~~~~~~~~~~~~~~~
p1356.cpp:234:5: error: expected '>' before 'from_stream'
 234 | from_stream(basic_istream<charT, traits>& is, const charT* fmt,
 | ^~~~~~~~~~~
p1356.cpp:237:43: error: expected unqualified-id before ';' token
 237 | minutes* offset = nullptr);
 | ^
p1356.cpp:244:3: error: expected unqualified-id before 'using'
 244 | using local_time = time_point<local_t, Duration>;
 | ^~~~~
p1356.cpp:245:7: error: expected nested-name-specifier before 'local_seconds'
 245 | using local_seconds = local_time<seconds>;
 | ^~~~~~~~~~~~~
p1356.cpp:246:7: error: expected nested-name-specifier before 'local_days'
 246 | using local_days = local_time<days>;
 | ^~~~~~~~~~
p1356.cpp:249:56: error: 'local_time' does not name a type; did you mean 'local_t'?
 249 | operator<<(basic_ostream<charT, traits>& os, const local_time<Duration>& tp);
 | ^~~~~~~~~~
 | local_t
p1356.cpp:249:66: error: expected ',' or '...' before '<' token
 249 | operator<<(basic_ostream<charT, traits>& os, const local_time<Duration>& tp);
 | ^
p1356.cpp:250:82: error: spurious '>>', use '>' to terminate a template argument list
 250 | template<class charT, class traits, class Duration, class Alloc = allocator<charT>>
 | ^~
p1356.cpp:250:67: error: two or more data types in declaration of 'type name'
 250 | template<class charT, class traits, class Duration, class Alloc = allocator<charT>>
 | ^~~~~~~~~~~~~~~~~
p1356.cpp:252:5: error: expected '>' before 'from_stream'
 252 | from_stream(basic_istream<charT, traits>& is, const charT* fmt,
 | ^~~~~~~~~~~
p1356.cpp:255:43: error: expected unqualified-id before ';' token
 255 | minutes* offset = nullptr);
 | ^
p1356.cpp:260:3: warning: 'auto' changes meaning in C++11; please remove it [-Wc++11-compat]
 260 | auto clock_cast(const time_point<SourceClock, Duration>& t);
 | ^~~~
 | ----
p1356.cpp:260:8: error: ISO C++ forbids declaration of 'clock_cast' with no type [-fpermissive]
 260 | auto clock_cast(const time_point<SourceClock, Duration>& t);
 | ^~~~~~~~~~
p1356.cpp:260:3: error: top-level declaration of 'clock_cast' specifies 'auto'
 260 | auto clock_cast(const time_point<SourceClock, Duration>& t);
 | ^~~~
p1356.cpp:260:3: error: storage class 'auto' invalid for function 'clock_cast'
p1356.cpp:265:1: error: 'constexpr' does not name a type
 265 | constexpr bool operator==(const day& x, const day& y) noexcept;
 | ^~~~~~~~~
p1356.cpp:265:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:266:1: error: 'constexpr' does not name a type
 266 | constexpr strong_ordering operator<=>(const day& x, const day& y) noexcept;
 | ^~~~~~~~~
p1356.cpp:266:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:267:1: error: 'constexpr' does not name a type
 267 | constexpr day operator+(const day& x, const days& y) noexcept;
 | ^~~~~~~~~
p1356.cpp:267:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:268:1: error: 'constexpr' does not name a type
 268 | constexpr day operator+(const days& x, const day& y) noexcept;
 | ^~~~~~~~~
p1356.cpp:268:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:269:1: error: 'constexpr' does not name a type
 269 | constexpr day operator-(const day& x, const days& y) noexcept;
 | ^~~~~~~~~
p1356.cpp:269:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:270:1: error: 'constexpr' does not name a type
 270 | constexpr days operator-(const day& x, const day& y) noexcept;
 | ^~~~~~~~~
p1356.cpp:270:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:274:66: error: spurious '>>', use '>' to terminate a template argument list
 274 | template<class charT, class traits, class Alloc = allocator<charT>>
 | ^~
p1356.cpp:274:51: error: two or more data types in declaration of 'type name'
 274 | template<class charT, class traits, class Alloc = allocator<charT>>
 | ^~~~~~~~~~~~~~~~~
p1356.cpp:276:5: error: expected '>' before 'from_stream'
 276 | from_stream(basic_istream<charT, traits>& is, const charT* fmt,
 | ^~~~~~~~~~~
p1356.cpp:278:43: error: expected unqualified-id before ';' token
 278 | minutes* offset = nullptr);
 | ^
p1356.cpp:281:1: error: 'constexpr' does not name a type
 281 | constexpr bool operator==(const month& x, const month& y) noexcept;
 | ^~~~~~~~~
p1356.cpp:281:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:282:1: error: 'constexpr' does not name a type
 282 | constexpr strong_ordering operator<=>(const month& x, const month& y) noexcept;
 | ^~~~~~~~~
p1356.cpp:282:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:283:1: error: 'constexpr' does not name a type
 283 | constexpr month operator+(const month& x, const months& y) noexcept;
 | ^~~~~~~~~
p1356.cpp:283:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:284:1: error: 'constexpr' does not name a type
 284 | constexpr month operator+(const months& x, const month& y) noexcept;
 | ^~~~~~~~~
p1356.cpp:284:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:285:1: error: 'constexpr' does not name a type
 285 | constexpr month operator-(const month& x, const months& y) noexcept;
 | ^~~~~~~~~
p1356.cpp:285:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:286:1: error: 'constexpr' does not name a type
 286 | constexpr months operator-(const month& x, const month& y) noexcept;
 | ^~~~~~~~~
p1356.cpp:286:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:290:66: error: spurious '>>', use '>' to terminate a template argument list
 290 | template<class charT, class traits, class Alloc = allocator<charT>>
 | ^~
p1356.cpp:290:51: error: two or more data types in declaration of 'type name'
 290 | template<class charT, class traits, class Alloc = allocator<charT>>
 | ^~~~~~~~~~~~~~~~~
p1356.cpp:292:5: error: expected '>' before 'from_stream'
 292 | from_stream(basic_istream<charT, traits>& is, const charT* fmt,
 | ^~~~~~~~~~~
p1356.cpp:294:43: error: expected unqualified-id before ';' token
 294 | minutes* offset = nullptr);
 | ^
p1356.cpp:297:1: error: 'constexpr' does not name a type
 297 | constexpr bool operator==(const year& x, const year& y) noexcept;
 | ^~~~~~~~~
p1356.cpp:297:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:298:1: error: 'constexpr' does not name a type
 298 | constexpr strong_ordering operator<=>(const year& x, const year& y) noexcept;
 | ^~~~~~~~~
p1356.cpp:298:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:299:1: error: 'constexpr' does not name a type
 299 | constexpr year operator+(const year& x, const years& y) noexcept;
 | ^~~~~~~~~
p1356.cpp:299:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:300:1: error: 'constexpr' does not name a type
 300 | constexpr year operator+(const years& x, const year& y) noexcept;
 | ^~~~~~~~~
p1356.cpp:300:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:301:1: error: 'constexpr' does not name a type
 301 | constexpr year operator-(const year& x, const years& y) noexcept;
 | ^~~~~~~~~
p1356.cpp:301:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:302:1: error: 'constexpr' does not name a type
 302 | constexpr years operator-(const year& x, const year& y) noexcept;
 | ^~~~~~~~~
p1356.cpp:302:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:306:66: error: spurious '>>', use '>' to terminate a template argument list
 306 | template<class charT, class traits, class Alloc = allocator<charT>>
 | ^~
p1356.cpp:306:51: error: two or more data types in declaration of 'type name'
 306 | template<class charT, class traits, class Alloc = allocator<charT>>
 | ^~~~~~~~~~~~~~~~~
p1356.cpp:308:5: error: expected '>' before 'from_stream'
 308 | from_stream(basic_istream<charT, traits>& is, const charT* fmt,
 | ^~~~~~~~~~~
p1356.cpp:310:43: error: expected unqualified-id before ';' token
 310 | minutes* offset = nullptr);
 | ^
p1356.cpp:313:1: error: 'constexpr' does not name a type
 313 | constexpr bool operator==(const weekday& x, const weekday& y) noexcept;
 | ^~~~~~~~~
p1356.cpp:313:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:314:1: error: 'constexpr' does not name a type
 314 | constexpr weekday operator+(const weekday& x, const days& y) noexcept;
 | ^~~~~~~~~
p1356.cpp:314:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:315:1: error: 'constexpr' does not name a type
 315 | constexpr weekday operator+(const days& x, const weekday& y) noexcept;
 | ^~~~~~~~~
p1356.cpp:315:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:316:1: error: 'constexpr' does not name a type
 316 | constexpr weekday operator-(const weekday& x, const days& y) noexcept;
 | ^~~~~~~~~
p1356.cpp:316:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:317:1: error: 'constexpr' does not name a type
 317 | constexpr days operator-(const weekday& x, const weekday& y) noexcept;
 | ^~~~~~~~~
p1356.cpp:317:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:321:66: error: spurious '>>', use '>' to terminate a template argument list
 321 | template<class charT, class traits, class Alloc = allocator<charT>>
 | ^~
p1356.cpp:321:51: error: two or more data types in declaration of 'type name'
 321 | template<class charT, class traits, class Alloc = allocator<charT>>
 | ^~~~~~~~~~~~~~~~~
p1356.cpp:323:5: error: expected '>' before 'from_stream'
 323 | from_stream(basic_istream<charT, traits>& is, const charT* fmt,
 | ^~~~~~~~~~~
p1356.cpp:325:43: error: expected unqualified-id before ';' token
 325 | minutes* offset = nullptr);
 | ^
p1356.cpp:328:1: error: 'constexpr' does not name a type
 328 | constexpr bool operator==(const weekday_indexed& x, const weekday_indexed& y) noexcept;
 | ^~~~~~~~~
p1356.cpp:328:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:334:1: error: 'constexpr' does not name a type
 334 | constexpr bool operator==(const weekday_last& x, const weekday_last& y) noexcept;
 | ^~~~~~~~~
p1356.cpp:334:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:340:1: error: 'constexpr' does not name a type
 340 | constexpr bool operator==(const month_day& x, const month_day& y) noexcept;
 | ^~~~~~~~~
p1356.cpp:340:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:341:1: error: 'constexpr' does not name a type
 341 | constexpr strong_ordering operator<=>(const month_day& x, const month_day& y) noexcept;
 | ^~~~~~~~~
p1356.cpp:341:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:345:66: error: spurious '>>', use '>' to terminate a template argument list
 345 | template<class charT, class traits, class Alloc = allocator<charT>>
 | ^~
p1356.cpp:345:51: error: two or more data types in declaration of 'type name'
 345 | template<class charT, class traits, class Alloc = allocator<charT>>
 | ^~~~~~~~~~~~~~~~~
p1356.cpp:347:5: error: expected '>' before 'from_stream'
 347 | from_stream(basic_istream<charT, traits>& is, const charT* fmt,
 | ^~~~~~~~~~~
p1356.cpp:349:43: error: expected unqualified-id before ';' token
 349 | minutes* offset = nullptr);
 | ^
p1356.cpp:352:1: error: 'constexpr' does not name a type
 352 | constexpr bool operator==(const month_day_last& x, const month_day_last& y) noexcept;
 | ^~~~~~~~~
p1356.cpp:352:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:353:1: error: 'constexpr' does not name a type
 353 | constexpr strong_ordering operator<=>(const month_day_last& x,
 | ^~~~~~~~~
p1356.cpp:353:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:360:1: error: 'constexpr' does not name a type
 360 | constexpr bool operator==(const month_weekday& x, const month_weekday& y) noexcept;
 | ^~~~~~~~~
p1356.cpp:360:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:366:1: error: 'constexpr' does not name a type
 366 | constexpr bool operator==(const month_weekday_last& x, const month_weekday_last& y) noexcept;
 | ^~~~~~~~~
p1356.cpp:366:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:372:1: error: 'constexpr' does not name a type
 372 | constexpr bool operator==(const year_month& x, const year_month& y) noexcept;
 | ^~~~~~~~~
p1356.cpp:372:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:373:1: error: 'constexpr' does not name a type
 373 | constexpr strong_ordering operator<=>(const year_month& x, const year_month& y) noexcept;
 | ^~~~~~~~~
p1356.cpp:373:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:374:1: error: 'constexpr' does not name a type
 374 | constexpr year_month operator+(const year_month& ym, const months& dm) noexcept;
 | ^~~~~~~~~
p1356.cpp:374:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:375:1: error: 'constexpr' does not name a type
 375 | constexpr year_month operator+(const months& dm, const year_month& ym) noexcept;
 | ^~~~~~~~~
p1356.cpp:375:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:376:1: error: 'constexpr' does not name a type
 376 | constexpr year_month operator-(const year_month& ym, const months& dm) noexcept;
 | ^~~~~~~~~
p1356.cpp:376:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:377:1: error: 'constexpr' does not name a type
 377 | constexpr months operator-(const year_month& x, const year_month& y) noexcept;
 | ^~~~~~~~~
p1356.cpp:377:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:378:1: error: 'constexpr' does not name a type
 378 | constexpr year_month operator+(const year_month& ym, const years& dy) noexcept;
 | ^~~~~~~~~
p1356.cpp:378:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:379:1: error: 'constexpr' does not name a type
 379 | constexpr year_month operator+(const years& dy, const year_month& ym) noexcept;
 | ^~~~~~~~~
p1356.cpp:379:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:380:1: error: 'constexpr' does not name a type
 380 | constexpr year_month operator-(const year_month& ym, const years& dy) noexcept;
 | ^~~~~~~~~
p1356.cpp:380:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:384:66: error: spurious '>>', use '>' to terminate a template argument list
 384 | template<class charT, class traits, class Alloc = allocator<charT>>
 | ^~
p1356.cpp:384:51: error: two or more data types in declaration of 'type name'
 384 | template<class charT, class traits, class Alloc = allocator<charT>>
 | ^~~~~~~~~~~~~~~~~
p1356.cpp:386:5: error: expected '>' before 'from_stream'
 386 | from_stream(basic_istream<charT, traits>& is, const charT* fmt,
 | ^~~~~~~~~~~
p1356.cpp:388:43: error: expected unqualified-id before ';' token
 388 | minutes* offset = nullptr);
 | ^
p1356.cpp:391:1: error: 'constexpr' does not name a type
 391 | constexpr bool operator==(const year_month_day& x, const year_month_day& y) noexcept;
 | ^~~~~~~~~
p1356.cpp:391:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:392:1: error: 'constexpr' does not name a type
 392 | constexpr strong_ordering operator<=>(const year_month_day& x,
 | ^~~~~~~~~
p1356.cpp:392:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:394:1: error: 'constexpr' does not name a type
 394 | constexpr year_month_day operator+(const year_month_day& ymd, const months& dm) noexcept;
 | ^~~~~~~~~
p1356.cpp:394:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:395:1: error: 'constexpr' does not name a type
 395 | constexpr year_month_day operator+(const months& dm, const year_month_day& ymd) noexcept;
 | ^~~~~~~~~
p1356.cpp:395:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:396:1: error: 'constexpr' does not name a type
 396 | constexpr year_month_day operator+(const year_month_day& ymd, const years& dy) noexcept;
 | ^~~~~~~~~
p1356.cpp:396:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:397:1: error: 'constexpr' does not name a type
 397 | constexpr year_month_day operator+(const years& dy, const year_month_day& ymd) noexcept;
 | ^~~~~~~~~
p1356.cpp:397:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:398:1: error: 'constexpr' does not name a type
 398 | constexpr year_month_day operator-(const year_month_day& ymd, const months& dm) noexcept;
 | ^~~~~~~~~
p1356.cpp:398:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:399:1: error: 'constexpr' does not name a type
 399 | constexpr year_month_day operator-(const year_month_day& ymd, const years& dy) noexcept;
 | ^~~~~~~~~
p1356.cpp:399:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:403:66: error: spurious '>>', use '>' to terminate a template argument list
 403 | template<class charT, class traits, class Alloc = allocator<charT>>
 | ^~
p1356.cpp:403:51: error: two or more data types in declaration of 'type name'
 403 | template<class charT, class traits, class Alloc = allocator<charT>>
 | ^~~~~~~~~~~~~~~~~
p1356.cpp:405:5: error: expected '>' before 'from_stream'
 405 | from_stream(basic_istream<charT, traits>& is, const charT* fmt,
 | ^~~~~~~~~~~
p1356.cpp:408:43: error: expected unqualified-id before ';' token
 408 | minutes* offset = nullptr);
 | ^
p1356.cpp:411:1: error: 'constexpr' does not name a type
 411 | constexpr bool operator==(const year_month_day_last& x,
 | ^~~~~~~~~
p1356.cpp:411:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:413:1: error: 'constexpr' does not name a type
 413 | constexpr strong_ordering operator<=>(const year_month_day_last& x,
 | ^~~~~~~~~
p1356.cpp:413:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:415:1: error: 'constexpr' does not name a type
 415 | constexpr year_month_day_last
 | ^~~~~~~~~
p1356.cpp:415:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:417:1: error: 'constexpr' does not name a type
 417 | constexpr year_month_day_last
 | ^~~~~~~~~
p1356.cpp:417:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:419:1: error: 'constexpr' does not name a type
 419 | constexpr year_month_day_last
 | ^~~~~~~~~
p1356.cpp:419:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:421:1: error: 'constexpr' does not name a type
 421 | constexpr year_month_day_last
 | ^~~~~~~~~
p1356.cpp:421:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:423:1: error: 'constexpr' does not name a type
 423 | constexpr year_month_day_last
 | ^~~~~~~~~
p1356.cpp:423:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:425:1: error: 'constexpr' does not name a type
 425 | constexpr year_month_day_last
 | ^~~~~~~~~
p1356.cpp:425:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:432:1: error: 'constexpr' does not name a type
 432 | constexpr bool operator==(const year_month_weekday& x,
 | ^~~~~~~~~
p1356.cpp:432:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:434:1: error: 'constexpr' does not name a type
 434 | constexpr year_month_weekday
 | ^~~~~~~~~
p1356.cpp:434:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:436:1: error: 'constexpr' does not name a type
 436 | constexpr year_month_weekday
 | ^~~~~~~~~
p1356.cpp:436:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:438:1: error: 'constexpr' does not name a type
 438 | constexpr year_month_weekday
 | ^~~~~~~~~
p1356.cpp:438:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:440:1: error: 'constexpr' does not name a type
 440 | constexpr year_month_weekday
 | ^~~~~~~~~
p1356.cpp:440:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:442:1: error: 'constexpr' does not name a type
 442 | constexpr year_month_weekday
 | ^~~~~~~~~
p1356.cpp:442:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:444:1: error: 'constexpr' does not name a type
 444 | constexpr year_month_weekday
 | ^~~~~~~~~
p1356.cpp:444:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:451:1: error: 'constexpr' does not name a type
 451 | constexpr bool operator==(const year_month_weekday_last& x,
 | ^~~~~~~~~
p1356.cpp:451:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:453:1: error: 'constexpr' does not name a type
 453 | constexpr year_month_weekday_last
 | ^~~~~~~~~
p1356.cpp:453:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:455:1: error: 'constexpr' does not name a type
 455 | constexpr year_month_weekday_last
 | ^~~~~~~~~
p1356.cpp:455:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:457:1: error: 'constexpr' does not name a type
 457 | constexpr year_month_weekday_last
 | ^~~~~~~~~
p1356.cpp:457:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:459:1: error: 'constexpr' does not name a type
 459 | constexpr year_month_weekday_last
 | ^~~~~~~~~
p1356.cpp:459:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:461:1: error: 'constexpr' does not name a type
 461 | constexpr year_month_weekday_last
 | ^~~~~~~~~
p1356.cpp:461:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:463:1: error: 'constexpr' does not name a type
 463 | constexpr year_month_weekday_last
 | ^~~~~~~~~
p1356.cpp:463:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:469:1: error: 'constexpr' does not name a type
 469 | constexpr year_month
 | ^~~~~~~~~
p1356.cpp:469:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:471:1: error: 'constexpr' does not name a type
 471 | constexpr year_month
 | ^~~~~~~~~
p1356.cpp:471:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:473:1: error: 'constexpr' does not name a type
 473 | constexpr month_day
 | ^~~~~~~~~
p1356.cpp:473:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:475:1: error: 'constexpr' does not name a type
 475 | constexpr month_day
 | ^~~~~~~~~
p1356.cpp:475:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:477:1: error: 'constexpr' does not name a type
 477 | constexpr month_day
 | ^~~~~~~~~
p1356.cpp:477:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:479:1: error: 'constexpr' does not name a type
 479 | constexpr month_day
 | ^~~~~~~~~
p1356.cpp:479:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:481:1: error: 'constexpr' does not name a type
 481 | constexpr month_day
 | ^~~~~~~~~
p1356.cpp:481:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:483:1: error: 'constexpr' does not name a type
 483 | constexpr month_day_last
 | ^~~~~~~~~
p1356.cpp:483:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:485:1: error: 'constexpr' does not name a type
 485 | constexpr month_day_last
 | ^~~~~~~~~
p1356.cpp:485:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:487:1: error: 'constexpr' does not name a type
 487 | constexpr month_day_last
 | ^~~~~~~~~
p1356.cpp:487:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:489:1: error: 'constexpr' does not name a type
 489 | constexpr month_day_last
 | ^~~~~~~~~
p1356.cpp:489:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:491:1: error: 'constexpr' does not name a type
 491 | constexpr month_weekday
 | ^~~~~~~~~
p1356.cpp:491:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:493:1: error: 'constexpr' does not name a type
 493 | constexpr month_weekday
 | ^~~~~~~~~
p1356.cpp:493:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:495:1: error: 'constexpr' does not name a type
 495 | constexpr month_weekday
 | ^~~~~~~~~
p1356.cpp:495:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:497:1: error: 'constexpr' does not name a type
 497 | constexpr month_weekday
 | ^~~~~~~~~
p1356.cpp:497:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:499:1: error: 'constexpr' does not name a type
 499 | constexpr month_weekday_last
 | ^~~~~~~~~
p1356.cpp:499:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:501:1: error: 'constexpr' does not name a type
 501 | constexpr month_weekday_last
 | ^~~~~~~~~
p1356.cpp:501:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:503:1: error: 'constexpr' does not name a type
 503 | constexpr month_weekday_last
 | ^~~~~~~~~
p1356.cpp:503:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:505:1: error: 'constexpr' does not name a type
 505 | constexpr month_weekday_last
 | ^~~~~~~~~
p1356.cpp:505:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:507:1: error: 'constexpr' does not name a type
 507 | constexpr year_month_day
 | ^~~~~~~~~
p1356.cpp:507:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:509:1: error: 'constexpr' does not name a type
 509 | constexpr year_month_day
 | ^~~~~~~~~
p1356.cpp:509:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:511:1: error: 'constexpr' does not name a type
 511 | constexpr year_month_day
 | ^~~~~~~~~
p1356.cpp:511:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:513:1: error: 'constexpr' does not name a type
 513 | constexpr year_month_day
 | ^~~~~~~~~
p1356.cpp:513:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:515:1: error: 'constexpr' does not name a type
 515 | constexpr year_month_day
 | ^~~~~~~~~
p1356.cpp:515:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:517:1: error: 'constexpr' does not name a type
 517 | constexpr year_month_day
 | ^~~~~~~~~
p1356.cpp:517:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:519:1: error: 'constexpr' does not name a type
 519 | constexpr year_month_day_last
 | ^~~~~~~~~
p1356.cpp:519:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:521:1: error: 'constexpr' does not name a type
 521 | constexpr year_month_day_last
 | ^~~~~~~~~
p1356.cpp:521:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:523:1: error: 'constexpr' does not name a type
 523 | constexpr year_month_day_last
 | ^~~~~~~~~
p1356.cpp:523:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:525:1: error: 'constexpr' does not name a type
 525 | constexpr year_month_day_last
 | ^~~~~~~~~
p1356.cpp:525:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:527:1: error: 'constexpr' does not name a type
 527 | constexpr year_month_day_last
 | ^~~~~~~~~
p1356.cpp:527:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:529:1: error: 'constexpr' does not name a type
 529 | constexpr year_month_weekday
 | ^~~~~~~~~
p1356.cpp:529:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:531:1: error: 'constexpr' does not name a type
 531 | constexpr year_month_weekday
 | ^~~~~~~~~
p1356.cpp:531:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:533:1: error: 'constexpr' does not name a type
 533 | constexpr year_month_weekday
 | ^~~~~~~~~
p1356.cpp:533:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:535:1: error: 'constexpr' does not name a type
 535 | constexpr year_month_weekday
 | ^~~~~~~~~
p1356.cpp:535:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:537:1: error: 'constexpr' does not name a type
 537 | constexpr year_month_weekday
 | ^~~~~~~~~
p1356.cpp:537:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:539:1: error: 'constexpr' does not name a type
 539 | constexpr year_month_weekday_last
 | ^~~~~~~~~
p1356.cpp:539:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:541:1: error: 'constexpr' does not name a type
 541 | constexpr year_month_weekday_last
 | ^~~~~~~~~
p1356.cpp:541:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:543:1: error: 'constexpr' does not name a type
 543 | constexpr year_month_weekday_last
 | ^~~~~~~~~
p1356.cpp:543:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:545:1: error: 'constexpr' does not name a type
 545 | constexpr year_month_weekday_last
 | ^~~~~~~~~
p1356.cpp:545:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:547:1: error: 'constexpr' does not name a type
 547 | constexpr year_month_weekday_last
 | ^~~~~~~~~
p1356.cpp:547:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:555:1: error: 'constexpr' does not name a type
 555 | constexpr bool is_am(const hours& h) noexcept;
 | ^~~~~~~~~
p1356.cpp:555:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:556:1: error: 'constexpr' does not name a type
 556 | constexpr bool is_pm(const hours& h) noexcept;
 | ^~~~~~~~~
p1356.cpp:556:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:557:1: error: 'constexpr' does not name a type
 557 | constexpr hours make12(const hours& h) noexcept;
 | ^~~~~~~~~
p1356.cpp:557:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:558:1: error: 'constexpr' does not name a type
 558 | constexpr hours make24(const hours& h, bool is_pm) noexcept;
 | ^~~~~~~~~
p1356.cpp:558:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:565:7: error: 'time_zone' does not name a type; did you mean 'time_point'?
 565 | const time_zone* locate_zone(string_view tz_name); const time_zone* current_zone();
 | ^~~~~~~~~
 | time_point
p1356.cpp:565:58: error: 'time_zone' does not name a type; did you mean 'time_point'?
 565 | const time_zone* locate_zone(string_view tz_name); const time_zone* current_zone();
 | ^~~~~~~~~
 | time_point
p1356.cpp:582:1: warning: scoped enums only available with '-std=c++11' or '-std=gnu++11' [-Wc++11-extensions]
 582 | enum class choose {earliest, latest}; class time_zone;
 | ^~~~
p1356.cpp:583:57: error: expected initializer before 'noexcept'
 583 | bool operator==(const time_zone& x, const time_zone& y) noexcept;
 | ^~~~~~~~
p1356.cpp:584:1: error: 'strong_ordering' does not name a type
 584 | strong_ordering operator<=>(const time_zone& x, const time_zone& y) noexcept;
 | ^~~~~~~~~~~~~~~
p1356.cpp:589:7: error: expected nested-name-specifier before 'zoned_seconds'
 589 | using zoned_seconds = zoned_time<seconds>;
 | ^~~~~~~~~~~~~
p1356.cpp:599:1: error: 'constexpr' does not name a type
 599 | constexpr bool operator==(const leap_second& x, const leap_second& y);
 | ^~~~~~~~~
p1356.cpp:599:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:600:1: error: 'constexpr' does not name a type
 600 | constexpr strong_ordering operator<=>(const leap_second& x, const leap_second& y);
 | ^~~~~~~~~
p1356.cpp:600:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:602:3: error: 'constexpr' does not name a type
 602 | constexpr bool operator==(const leap_second& x, const sys_time<Duration>& y);
 | ^~~~~~~~~
p1356.cpp:602:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:604:3: error: 'constexpr' does not name a type
 604 | constexpr bool operator< (const leap_second& x, const sys_time<Duration>& y);
 | ^~~~~~~~~
p1356.cpp:604:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:606:3: error: 'constexpr' does not name a type
 606 | constexpr bool operator< (const sys_time<Duration>& x, const leap_second& y);
 | ^~~~~~~~~
p1356.cpp:606:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:608:3: error: 'constexpr' does not name a type
 608 | constexpr bool operator> (const leap_second& x, const sys_time<Duration>& y);
 | ^~~~~~~~~
p1356.cpp:608:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:610:3: error: 'constexpr' does not name a type
 610 | constexpr bool operator> (const sys_time<Duration>& x, const leap_second& y);
 | ^~~~~~~~~
p1356.cpp:610:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:612:3: error: 'constexpr' does not name a type
 612 | constexpr bool operator<=(const leap_second& x, const sys_time<Duration>& y);
 | ^~~~~~~~~
p1356.cpp:612:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:614:3: error: 'constexpr' does not name a type
 614 | constexpr bool operator<=(const sys_time<Duration>& x, const leap_second& y);
 | ^~~~~~~~~
p1356.cpp:614:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:616:3: error: 'constexpr' does not name a type
 616 | constexpr bool operator>=(const leap_second& x, const sys_time<Duration>& y);
 | ^~~~~~~~~
p1356.cpp:616:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:618:3: error: 'constexpr' does not name a type
 618 | constexpr bool operator>=(const sys_time<Duration>& x, const leap_second& y);
 | ^~~~~~~~~
p1356.cpp:618:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:620:3: error: 'requires' does not name a type
 620 | requires three_way_comparable_with<sys_seconds, sys_time<Duration>>
 | ^~~~~~~~
p1356.cpp:620:3: note: 'requires' only available with '-std=c++20' or '-fconcepts'
p1356.cpp:625:3: error: 'strong_ordering' does not name a type
 625 | strong_ordering operator<=>(const time_zone_link& x, const time_zone_link& y);
 | ^~~~~~~~~~~~~~~
p1356.cpp:627:38: error: expected unqualified-id before '-' token
 627 | template<class Duration> struct local-time-format-t ; // exposition only
 | ^
p1356.cpp:629:6: error: expected unqualified-id before '-' token
 629 | local-time-format-t <Duration>
 | ^
p1356.cpp:635:12: error: 'formatter' is not a class template
 635 | struct formatter<chrono::duration<Rep, Period>, charT>;
 | ^~~~~~~~~
p1356.cpp:635:30: error: 'duration' is not a member of 'std::chrono'
 635 | struct formatter<chrono::duration<Rep, Period>, charT>;
 | ^~~~~~~~
p1356.cpp:635:30: error: 'duration' is not a member of 'std::chrono'
p1356.cpp:635:21: error: expected ';' before ',' token
 635 | struct formatter<chrono::duration<Rep, Period>, charT>;
 | ^ ~
 | ;
p1356.cpp:637:12: error: 'formatter' is not a class template
 637 | struct formatter<chrono::sys_time<Duration>, charT>;
 | ^~~~~~~~~
p1356.cpp:637:30: error: 'sys_time' is not a member of 'std::chrono'
 637 | struct formatter<chrono::sys_time<Duration>, charT>;
 | ^~~~~~~~
p1356.cpp:637:30: error: 'sys_time' is not a member of 'std::chrono'
p1356.cpp:637:21: error: expected ';' before ',' token
 637 | struct formatter<chrono::sys_time<Duration>, charT>;
 | ^ ~
 | ;
p1356.cpp:639:12: error: 'formatter' is not a class template
 639 | struct formatter<chrono::utc_time<Duration>, charT>;
 | ^~~~~~~~~
p1356.cpp:639:30: error: 'utc_time' is not a member of 'std::chrono'
 639 | struct formatter<chrono::utc_time<Duration>, charT>;
 | ^~~~~~~~
p1356.cpp:639:30: error: 'utc_time' is not a member of 'std::chrono'
p1356.cpp:639:21: error: expected ';' before ',' token
 639 | struct formatter<chrono::utc_time<Duration>, charT>;
 | ^ ~
 | ;
p1356.cpp:641:12: error: 'formatter' is not a class template
 641 | struct formatter<chrono::tai_time<Duration>, charT>;
 | ^~~~~~~~~
p1356.cpp:641:30: error: 'tai_time' is not a member of 'std::chrono'
 641 | struct formatter<chrono::tai_time<Duration>, charT>;
 | ^~~~~~~~
p1356.cpp:641:30: error: 'tai_time' is not a member of 'std::chrono'
p1356.cpp:641:21: error: expected ';' before ',' token
 641 | struct formatter<chrono::tai_time<Duration>, charT>;
 | ^ ~
 | ;
p1356.cpp:643:12: error: 'formatter' is not a class template
 643 | struct formatter<chrono::gps_time<Duration>, charT>;
 | ^~~~~~~~~
p1356.cpp:643:30: error: 'gps_time' is not a member of 'std::chrono'
 643 | struct formatter<chrono::gps_time<Duration>, charT>;
 | ^~~~~~~~
p1356.cpp:643:30: error: 'gps_time' is not a member of 'std::chrono'
p1356.cpp:643:21: error: expected ';' before ',' token
 643 | struct formatter<chrono::gps_time<Duration>, charT>;
 | ^ ~
 | ;
p1356.cpp:645:12: error: 'formatter' is not a class template
 645 | struct formatter<chrono::file_time<Duration>, charT>;
 | ^~~~~~~~~
p1356.cpp:645:30: error: 'file_time' is not a member of 'std::chrono'
 645 | struct formatter<chrono::file_time<Duration>, charT>;
 | ^~~~~~~~~
p1356.cpp:645:30: error: 'file_time' is not a member of 'std::chrono'
p1356.cpp:645:21: error: expected ';' before ',' token
 645 | struct formatter<chrono::file_time<Duration>, charT>;
 | ^ ~
 | ;
p1356.cpp:647:12: error: 'formatter' is not a class template
 647 | struct formatter<chrono::local_time<Duration>, charT>;
 | ^~~~~~~~~
p1356.cpp:647:30: error: 'local_time' is not a member of 'std::chrono'; did you mean 'local_t'?
 647 | struct formatter<chrono::local_time<Duration>, charT>;
 | ^~~~~~~~~~
 | local_t
p1356.cpp:647:30: error: 'local_time' is not a member of 'std::chrono'; did you mean 'local_t'?
 647 | struct formatter<chrono::local_time<Duration>, charT>;
 | ^~~~~~~~~~
 | local_t
p1356.cpp:647:21: error: expected ';' before ',' token
 647 | struct formatter<chrono::local_time<Duration>, charT>;
 | ^ ~
 | ;
p1356.cpp:649:8: error: 'formatter' is not a class template
 649 | struct formatter<chrono::local-time-format-t<Duration>, charT>; template<class charT> struct formatter<chrono::day, charT>;
 | ^~~~~~~~~
p1356.cpp:649:8: error: 'std::formatter' is not a template
p1356.cpp:635:12: note: previous declaration here
 635 | struct formatter<chrono::duration<Rep, Period>, charT>;
 | ^~~~~~~~~
p1356.cpp:649:94: error: 'formatter' is not a class template
 649 | t formatter<chrono::local-time-format-t<Duration>, charT>; template<class charT> struct formatter<chrono::day, charT>;
 | ^~~~~~~~~

p1356.cpp:649:94: error: 'std::formatter' is not a template
p1356.cpp:635:12: note: previous declaration here
 635 | struct formatter<chrono::duration<Rep, Period>, charT>;
 | ^~~~~~~~~
p1356.cpp:650:30: error: 'formatter' is not a class template
 650 | template<class charT> struct formatter<chrono::month, charT>;
 | ^~~~~~~~~
p1356.cpp:650:30: error: 'std::formatter' is not a template
p1356.cpp:635:12: note: previous declaration here
 635 | struct formatter<chrono::duration<Rep, Period>, charT>;
 | ^~~~~~~~~
p1356.cpp:651:30: error: 'formatter' is not a class template
 651 | template<class charT> struct formatter<chrono::year, charT>;
 | ^~~~~~~~~
p1356.cpp:651:30: error: 'std::formatter' is not a template
p1356.cpp:635:12: note: previous declaration here
 635 | struct formatter<chrono::duration<Rep, Period>, charT>;
 | ^~~~~~~~~
p1356.cpp:652:30: error: 'formatter' is not a class template
 652 | template<class charT> struct formatter<chrono::weekday, charT>;
 | ^~~~~~~~~
p1356.cpp:652:30: error: 'std::formatter' is not a template
p1356.cpp:635:12: note: previous declaration here
 635 | struct formatter<chrono::duration<Rep, Period>, charT>;
 | ^~~~~~~~~
p1356.cpp:653:30: error: 'formatter' is not a class template
 653 | template<class charT> struct formatter<chrono::weekday_indexed, charT>; template<class charT> struct formatter<chrono::weekday_last, charT>; template<class charT> struct formatter<chrono::month_day, charT>; template<class charT> struct formatter<chrono::month_day_last, charT>; template<class charT> struct formatter<chrono::month_weekday, charT>; template<class charT> struct formatter<chrono::month_weekday_last, charT>; template<class charT> struct formatter<chrono::year_month, charT>; template<class charT> struct formatter<chrono::year_month_day, charT>; template<class charT> struct formatter<chrono::year_month_day_last, charT>; template<class charT> struct formatter<chrono::year_month_weekday, charT>; template<class charT> struct formatter<chrono::year_month_weekday_last, charT>; template<class Rep, class Period, class charT>
 | ^~~~~~~~~
p1356.cpp:653:30: error: 'std::formatter' is not a template
p1356.cpp:635:12: note: previous declaration here
 635 | struct formatter<chrono::duration<Rep, Period>, charT>;
 | ^~~~~~~~~
p1356.cpp:653:102: error: 'formatter' is not a class template
 653 | s charT> struct formatter<chrono::weekday_indexed, charT>; template<class charT> struct formatter<chrono::weekday_last, charT>; template<class charT> struct formatter<chrono::month_day, charT>; template<class charT> struct formatter<chrono::month_day_last, charT>; template<class charT> struct formatter<chrono::month_weekday, charT>; template<class charT> struct formatter<chrono::month_weekday_last, charT>; template<class charT> struct formatter<chrono::year_month, charT>; template<class charT> struct formatter<chrono::year_month_day, charT>; template<class charT> struct formatter<chrono::year_month_day_last, charT>; template<class charT> struct formatter<chrono::year_month_weekday, charT>; template<class charT> struct formatter<chrono::year_month_weekday_last, charT>; template<class Rep, class Period, class charT>
 | ^~~~~~~~~

p1356.cpp:653:102: error: 'std::formatter' is not a template
p1356.cpp:635:12: note: previous declaration here
 635 | struct formatter<chrono::duration<Rep, Period>, charT>;
 | ^~~~~~~~~
p1356.cpp:653:171: error: 'formatter' is not a class template
 653 | lass charT> struct formatter<chrono::weekday_last, charT>; template<class charT> struct formatter<chrono::month_day, charT>; template<class charT> struct formatter<chrono::month_day_last, charT>; template<class charT> struct formatter<chrono::month_weekday, charT>; template<class charT> struct formatter<chrono::month_weekday_last, charT>; template<class charT> struct formatter<chrono::year_month, charT>; template<class charT> struct formatter<chrono::year_month_day, charT>; template<class charT> struct formatter<chrono::year_month_day_last, charT>; template<class charT> struct formatter<chrono::year_month_weekday, charT>; template<class charT> struct formatter<chrono::year_month_weekday_last, charT>; template<class Rep, class Period, class charT>
 | ^~~~~~~~~

p1356.cpp:653:171: error: 'std::formatter' is not a template
p1356.cpp:635:12: note: previous declaration here
 635 | struct formatter<chrono::duration<Rep, Period>, charT>;
 | ^~~~~~~~~
p1356.cpp:653:237: error: 'formatter' is not a class template
 653 | e<class charT> struct formatter<chrono::month_day, charT>; template<class charT> struct formatter<chrono::month_day_last, charT>; template<class charT> struct formatter<chrono::month_weekday, charT>; template<class charT> struct formatter<chrono::month_weekday_last, charT>; template<class charT> struct formatter<chrono::year_month, charT>; template<class charT> struct formatter<chrono::year_month_day, charT>; template<class charT> struct formatter<chrono::year_month_day_last, charT>; template<class charT> struct formatter<chrono::year_month_weekday, charT>; template<class charT> struct formatter<chrono::year_month_weekday_last, charT>; template<class Rep, class Period, class charT>
 | ^~~~~~~~~

p1356.cpp:653:237: error: 'std::formatter' is not a template
p1356.cpp:635:12: note: previous declaration here
 635 | struct formatter<chrono::duration<Rep, Period>, charT>;
 | ^~~~~~~~~
p1356.cpp:653:308: error: 'formatter' is not a class template
 653 | ss charT> struct formatter<chrono::month_day_last, charT>; template<class charT> struct formatter<chrono::month_weekday, charT>; template<class charT> struct formatter<chrono::month_weekday_last, charT>; template<class charT> struct formatter<chrono::year_month, charT>; template<class charT> struct formatter<chrono::year_month_day, charT>; template<class charT> struct formatter<chrono::year_month_day_last, charT>; template<class charT> struct formatter<chrono::year_month_weekday, charT>; template<class charT> struct formatter<chrono::year_month_weekday_last, charT>; template<class Rep, class Period, class charT>
 | ^~~~~~~~~

p1356.cpp:653:308: error: 'std::formatter' is not a template
p1356.cpp:635:12: note: previous declaration here
 635 | struct formatter<chrono::duration<Rep, Period>, charT>;
 | ^~~~~~~~~
p1356.cpp:653:378: error: 'formatter' is not a class template
 653 | ass charT> struct formatter<chrono::month_weekday, charT>; template<class charT> struct formatter<chrono::month_weekday_last, charT>; template<class charT> struct formatter<chrono::year_month, charT>; template<class charT> struct formatter<chrono::year_month_day, charT>; template<class charT> struct formatter<chrono::year_month_day_last, charT>; template<class charT> struct formatter<chrono::year_month_weekday, charT>; template<class charT> struct formatter<chrono::year_month_weekday_last, charT>; template<class Rep, class Period, class charT>
 | ^~~~~~~~~

p1356.cpp:653:378: error: 'std::formatter' is not a template
p1356.cpp:635:12: note: previous declaration here
 635 | struct formatter<chrono::duration<Rep, Period>, charT>;
 | ^~~~~~~~~
p1356.cpp:653:453: error: 'formatter' is not a class template
 653 | harT> struct formatter<chrono::month_weekday_last, charT>; template<class charT> struct formatter<chrono::year_month, charT>; template<class charT> struct formatter<chrono::year_month_day, charT>; template<class charT> struct formatter<chrono::year_month_day_last, charT>; template<class charT> struct formatter<chrono::year_month_weekday, charT>; template<class charT> struct formatter<chrono::year_month_weekday_last, charT>; template<class Rep, class Period, class charT>
 | ^~~~~~~~~

p1356.cpp:653:453: error: 'std::formatter' is not a template
p1356.cpp:635:12: note: previous declaration here
 635 | struct formatter<chrono::duration<Rep, Period>, charT>;
 | ^~~~~~~~~
p1356.cpp:653:520: error: 'formatter' is not a class template
 653 | <class charT> struct formatter<chrono::year_month, charT>; template<class charT> struct formatter<chrono::year_month_day, charT>; template<class charT> struct formatter<chrono::year_month_day_last, charT>; template<class charT> struct formatter<chrono::year_month_weekday, charT>; template<class charT> struct formatter<chrono::year_month_weekday_last, charT>; template<class Rep, class Period, class charT>
 | ^~~~~~~~~

p1356.cpp:653:520: error: 'std::formatter' is not a template
p1356.cpp:635:12: note: previous declaration here
 635 | struct formatter<chrono::duration<Rep, Period>, charT>;
 | ^~~~~~~~~
p1356.cpp:653:591: error: 'formatter' is not a class template
 653 | ss charT> struct formatter<chrono::year_month_day, charT>; template<class charT> struct formatter<chrono::year_month_day_last, charT>; template<class charT> struct formatter<chrono::year_month_weekday, charT>; template<class charT> struct formatter<chrono::year_month_weekday_last, charT>; template<class Rep, class Period, class charT>
 | ^~~~~~~~~

p1356.cpp:653:591: error: 'std::formatter' is not a template
p1356.cpp:635:12: note: previous declaration here
 635 | struct formatter<chrono::duration<Rep, Period>, charT>;
 | ^~~~~~~~~
p1356.cpp:653:667: error: 'formatter' is not a class template
 653 | arT> struct formatter<chrono::year_month_day_last, charT>; template<class charT> struct formatter<chrono::year_month_weekday, charT>; template<class charT> struct formatter<chrono::year_month_weekday_last, charT>; template<class Rep, class Period, class charT>
 | ^~~~~~~~~

p1356.cpp:653:667: error: 'std::formatter' is not a template
p1356.cpp:635:12: note: previous declaration here
 635 | struct formatter<chrono::duration<Rep, Period>, charT>;
 | ^~~~~~~~~
p1356.cpp:653:742: error: 'formatter' is not a class template
 653 | harT> struct formatter<chrono::year_month_weekday, charT>; template<class charT> struct formatter<chrono::year_month_weekday_last, charT>; template<class Rep, class Period, class charT>
 | ^~~~~~~~~

p1356.cpp:653:742: error: 'std::formatter' is not a template
p1356.cpp:635:12: note: previous declaration here
 635 | struct formatter<chrono::duration<Rep, Period>, charT>;
 | ^~~~~~~~~
p1356.cpp:654:12: error: 'formatter' is not a class template
 654 | struct formatter<chrono::hh_mm_ss<duration<Rep, Period>>, charT>;
 | ^~~~~~~~~
p1356.cpp:654:39: error: 'duration' was not declared in this scope
 654 | struct formatter<chrono::hh_mm_ss<duration<Rep, Period>>, charT>;
 | ^~~~~~~~
p1356.cpp:654:59: error: '>>' should be '> >' within a nested template argument list
 654 | struct formatter<chrono::hh_mm_ss<duration<Rep, Period>>, charT>;
 | ^~
 | > >
p1356.cpp:654:53: error: wrong number of template arguments (2, should be 1)
 654 | struct formatter<chrono::hh_mm_ss<duration<Rep, Period>>, charT>;
 | ^~~~~~
p1356.cpp:550:32: note: provided for 'template<class Duration> class std::chrono::hh_mm_ss'
 550 | template<class Duration> class hh_mm_ss;
 | ^~~~~~~~
p1356.cpp:654:21: error: expected ';' before ',' token
 654 | struct formatter<chrono::hh_mm_ss<duration<Rep, Period>>, charT>;
 | ^ ~
 | ;
p1356.cpp:655:32: error: 'formatter' is not a class template
 655 | template<class charT> struct formatter<chrono::sys_info, charT>;
 | ^~~~~~~~~
p1356.cpp:655:32: error: 'std::formatter' is not a template
p1356.cpp:635:12: note: previous declaration here
 635 | struct formatter<chrono::duration<Rep, Period>, charT>;
 | ^~~~~~~~~
p1356.cpp:656:32: error: 'formatter' is not a class template
 656 | template<class charT> struct formatter<chrono::local_info, charT>;
 | ^~~~~~~~~
p1356.cpp:656:32: error: 'std::formatter' is not a template
p1356.cpp:635:12: note: previous declaration here
 635 | struct formatter<chrono::duration<Rep, Period>, charT>;
 | ^~~~~~~~~
p1356.cpp:658:12: error: 'formatter' is not a class template
 658 | struct formatter<chrono::zoned_time<Duration, TimeZonePtr>, charT>;
 | ^~~~~~~~~
p1356.cpp:658:12: error: 'std::formatter' is not a template
p1356.cpp:635:12: note: previous declaration here
 635 | struct formatter<chrono::duration<Rep, Period>, charT>;
 | ^~~~~~~~~
p1356.cpp:663:1: error: 'unspecified' does not name a type
 663 | unspecified
 | ^~~~~~~~~~~
p1356.cpp:666:1: error: 'unspecified' does not name a type
 666 | unspecified
 | ^~~~~~~~~~~
p1356.cpp:669:1: error: 'unspecified' does not name a type
 669 | unspecified
 | ^~~~~~~~~~~
p1356.cpp:673:1: error: 'unspecified' does not name a type
 673 | unspecified
 | ^~~~~~~~~~~
p1356.cpp:677:1: error: 'unspecified' does not name a type
 677 | unspecified
 | ^~~~~~~~~~~
p1356.cpp:680:1: error: 'unspecified' does not name a type
 680 | unspecified
 | ^~~~~~~~~~~
p1356.cpp:684:1: error: 'unspecified' does not name a type
 684 | unspecified
 | ^~~~~~~~~~~
p1356.cpp:688:1: error: 'unspecified' does not name a type
 688 | unspecified
 | ^~~~~~~~~~~
p1356.cpp:692:8: error: 'constexpr' does not name a type
 692 | inline constexpr last_spec last{};
 | ^~~~~~~~~
p1356.cpp:692:8: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:693:8: error: 'constexpr' does not name a type
 693 | inline constexpr weekday Sunday{0};
 | ^~~~~~~~~
p1356.cpp:693:8: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:694:8: error: 'constexpr' does not name a type
 694 | inline constexpr weekday Monday{1};
 | ^~~~~~~~~
p1356.cpp:694:8: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:695:8: error: 'constexpr' does not name a type
 695 | inline constexpr weekday Tuesday{2};
 | ^~~~~~~~~
p1356.cpp:695:8: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:696:8: error: 'constexpr' does not name a type
 696 | inline constexpr weekday Wednesday{3};
 | ^~~~~~~~~
p1356.cpp:696:8: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:697:8: error: 'constexpr' does not name a type
 697 | inline constexpr weekday Thursday{4};
 | ^~~~~~~~~
p1356.cpp:697:8: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:698:8: error: 'constexpr' does not name a type
 698 | inline constexpr weekday Friday{5};
 | ^~~~~~~~~
p1356.cpp:698:8: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:699:8: error: 'constexpr' does not name a type
 699 | inline constexpr weekday Saturday{6};
 | ^~~~~~~~~
p1356.cpp:699:8: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:700:8: error: 'constexpr' does not name a type
 700 | inline constexpr month January{1};
 | ^~~~~~~~~
p1356.cpp:700:8: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:701:8: error: 'constexpr' does not name a type
 701 | inline constexpr month February{2};
 | ^~~~~~~~~
p1356.cpp:701:8: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:702:8: error: 'constexpr' does not name a type
 702 | inline constexpr month March{3};
 | ^~~~~~~~~
p1356.cpp:702:8: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:703:8: error: 'constexpr' does not name a type
 703 | inline constexpr month April{4};
 | ^~~~~~~~~
p1356.cpp:703:8: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:704:8: error: 'constexpr' does not name a type
 704 | inline constexpr month May{5};
 | ^~~~~~~~~
p1356.cpp:704:8: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:705:8: error: 'constexpr' does not name a type
 705 | inline constexpr month June{6};
 | ^~~~~~~~~
p1356.cpp:705:8: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:706:8: error: 'constexpr' does not name a type
 706 | inline constexpr month July{7};
 | ^~~~~~~~~
p1356.cpp:706:8: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:707:8: error: 'constexpr' does not name a type
 707 | inline constexpr month August{8};
 | ^~~~~~~~~
p1356.cpp:707:8: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:708:8: error: 'constexpr' does not name a type
 708 | inline constexpr month September{9};
 | ^~~~~~~~~
p1356.cpp:708:8: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:709:8: error: 'constexpr' does not name a type
 709 | inline constexpr month October{10};
 | ^~~~~~~~~
p1356.cpp:709:8: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:710:8: error: 'constexpr' does not name a type
 710 | inline constexpr month November{11};
 | ^~~~~~~~~
p1356.cpp:710:8: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:711:8: error: 'constexpr' does not name a type
 711 | inline constexpr month December{12};
 | ^~~~~~~~~
p1356.cpp:711:8: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:715:1: error: 'constexpr' does not name a type
 715 | constexpr chrono::hours
 | ^~~~~~~~~
p1356.cpp:715:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:717:1: error: 'constexpr' does not name a type
 717 | constexpr chrono::minutes operator""min(unsigned long long); constexpr chrono::duration<unspecified, ratio<60, 1>> operator""min(long double);
 | ^~~~~~~~~
p1356.cpp:717:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:717:62: error: 'constexpr' does not name a type
 717 | constexpr chrono::minutes operator""min(unsigned long long); constexpr chrono::duration<unspecified, ratio<60, 1>> operator""min(long double);
 | ^~~~~~~~~
p1356.cpp:717:62: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:718:1: error: 'constexpr' does not name a type
 718 | constexpr chrono::seconds operator""s(unsigned long long); constexpr chrono::duration<unspecified > operator""s(long double);
 | ^~~~~~~~~
p1356.cpp:718:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:718:60: error: 'constexpr' does not name a type
 718 | constexpr chrono::seconds operator""s(unsigned long long); constexpr chrono::duration<unspecified > operator""s(long double);
 | ^~~~~~~~~
p1356.cpp:718:60: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:719:1: error: 'constexpr' does not name a type
 719 | constexpr chrono::milliseconds operator""ms(unsigned long long); constexpr chrono::duration<unspecified, milli> operator""ms(long double);
 | ^~~~~~~~~
p1356.cpp:719:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:719:66: error: 'constexpr' does not name a type
 719 | constexpr chrono::milliseconds operator""ms(unsigned long long); constexpr chrono::duration<unspecified, milli> operator""ms(long double);
 | ^~~~~~~~~
p1356.cpp:719:66: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:720:1: warning: user-defined literals only available with '-std=c++11' or '-std=gnu++11' [-Wc++11-extensions]
 720 | operator""h(unsigned long long);
 | ^~~~~~~~
p1356.cpp:720:1: warning: user-defined literals only available with '-std=c++11' or '-std=gnu++11' [-Wc++11-extensions]
p1356.cpp:720:1: warning: user-defined literals only available with '-std=c++11' or '-std=gnu++11' [-Wc++11-extensions]
p1356.cpp:720:1: warning: user-defined literals only available with '-std=c++11' or '-std=gnu++11' [-Wc++11-extensions]
p1356.cpp:720:32: error: expected constructor, destructor, or type conversion before ';' token
 720 | operator""h(unsigned long long);
 | ^
p1356.cpp:721:1: error: 'constexpr' does not name a type
 721 | constexpr chrono::microseconds operator""us(unsigned long long); constexpr chrono::duration<unspecified, micro> operator""us(long double);
 | ^~~~~~~~~
p1356.cpp:721:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:721:66: error: 'constexpr' does not name a type
 721 | constexpr chrono::microseconds operator""us(unsigned long long); constexpr chrono::duration<unspecified, micro> operator""us(long double);
 | ^~~~~~~~~
p1356.cpp:721:66: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:722:1: error: 'constexpr' does not name a type
 722 | constexpr chrono::nanoseconds operator""ns(unsigned long long); constexpr chrono::duration<unspecified, nano> operator""ns(long double);
 | ^~~~~~~~~
p1356.cpp:722:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:722:65: error: 'constexpr' does not name a type
 722 | constexpr chrono::nanoseconds operator""ns(unsigned long long); constexpr chrono::duration<unspecified, nano> operator""ns(long double);
 | ^~~~~~~~~
p1356.cpp:722:65: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:724:1: error: 'constexpr' does not name a type
 724 | constexpr chrono::day operator""d(unsigned long long d) noexcept;
 | ^~~~~~~~~
p1356.cpp:724:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1356.cpp:726:5: error: 'constexpr' does not name a type
 726 | constexpr chrono::year operator""y(unsigned long long y) noexcept;
 | ^~~~~~~~~
p1356.cpp:726:5: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'

$ g++ p1356.cpp -std=2b -o p1356g -I. -Wall
p1356.cpp:18:36: error: 'ratio' does not name a type
 18 | template<class Rep, class Period = ratio<1>> class duration;
 | ^~~~~
p1356.cpp:18:41: error: expected '>' before '<' token
 18 | template<class Rep, class Period = ratio<1>> class duration;
 | ^
p1356.cpp:18:60: error: expected unqualified-id before ';' token
 18 | template<class Rep, class Period = ratio<1>> class duration;
 | ^
p1356.cpp:25:34: error: 'duration' is not a member of 'std::chrono'
 25 | struct common_type<chrono::duration<Rep1, Period1>,
 | ^~~~~~~~
p1356.cpp:25:56: error: template argument 1 is invalid
 25 | struct common_type<chrono::duration<Rep1, Period1>,
 | ^
p1356.cpp:34:1: error: expected unqualified-id before '[' token
 34 | [time.syn]
 | ^
p1356.cpp:41:27: error: 'duration' was not declared in this scope
 41 | constexpr common_type_t<duration<Rep1, Period1>, duration<Rep2, Period2>>
 | ^~~~~~~~
p1356.cpp:41:49: error: template argument 1 is invalid
 41 | constexpr common_type_t<duration<Rep1, Period1>, duration<Rep2, Period2>>
 | ^
p1356.cpp:41:50: error: expected unqualified-id before ',' token
 41 | constexpr common_type_t<duration<Rep1, Period1>, duration<Rep2, Period2>>
 | ^
p1356.cpp:44:27: error: 'duration' was not declared in this scope
 44 | constexpr common_type_t<duration<Rep1, Period1>, duration<Rep2, Period2>>
 | ^~~~~~~~
p1356.cpp:44:49: error: template argument 1 is invalid
 44 | constexpr common_type_t<duration<Rep1, Period1>, duration<Rep2, Period2>>
 | ^
p1356.cpp:44:50: error: expected unqualified-id before ',' token
 44 | constexpr common_type_t<duration<Rep1, Period1>, duration<Rep2, Period2>>
 | ^
p1356.cpp:47:13: error: 'duration' does not name a type
 47 | constexpr duration<common_type_t<Rep1, Rep2>, Period>
 | ^~~~~~~~
p1356.cpp:50:13: error: 'duration' does not name a type
 50 | constexpr duration<common_type_t<Rep1, Rep2>, Period>
 | ^~~~~~~~
p1356.cpp:53:13: error: 'duration' does not name a type
 53 | constexpr duration<common_type_t<Rep1, Rep2>, Period>
 | ^~~~~~~~
p1356.cpp:57:21: error: 'duration' does not name a type
 57 | operator/(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs);
 | ^~~~~~~~
p1356.cpp:57:29: error: expected ',' or '...' before '<' token
 57 | operator/(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs);
 | ^
p1356.cpp:57:5: error: 'constexpr std::common_type_t<Rep1, Rep2> std::chrono::operator/(int)' must have an argument of class or enumerated type
 57 | operator/(const duration<Rep1, Period1>& lhs, const duration<Rep2, Period2>& rhs);
 | ^~~~~~~~
p1356.cpp:59:13: error: 'duration' does not name a type
 59 | constexpr duration<common_type_t<Rep1, Rep2>, Period>
 | ^~~~~~~~
p1356.cpp:62:27: error: 'duration' was not declared in this scope
 62 | constexpr common_type_t<duration<Rep1, Period1>, duration<Rep2, Period2>>
 | ^~~~~~~~
p1356.cpp:62:49: error: template argument 1 is invalid
 62 | constexpr common_type_t<duration<Rep1, Period1>, duration<Rep2, Period2>>
 | ^
p1356.cpp:62:50: error: expected unqualified-id before ',' token
 62 | constexpr common_type_t<duration<Rep1, Period1>, duration<Rep2, Period2>>
 | ^
p1356.cpp:66:35: error: 'duration' does not name a type
 66 | constexpr bool operator==(const duration<Rep1, Period1>& lhs,
 | ^~~~~~~~
p1356.cpp:66:43: error: expected ',' or '...' before '<' token
 66 | constexpr bool operator==(const duration<Rep1, Period1>& lhs,
 | ^
p1356.cpp:66:18: error: 'constexpr bool std::chrono::operator==(int)' must have an argument of class or enumerated type
 66 | constexpr bool operator==(const duration<Rep1, Period1>& lhs,
 | ^~~~~~~~
p1356.cpp:69:35: error: 'duration' does not name a type
 69 | constexpr bool operator< (const duration<Rep1, Period1>& lhs,
 | ^~~~~~~~
p1356.cpp:69:43: error: expected ',' or '...' before '<' token
 69 | constexpr bool operator< (const duration<Rep1, Period1>& lhs,
 | ^
p1356.cpp:69:18: error: 'constexpr bool std::chrono::operator<(int)' must have an argument of class or enumerated type
 69 | constexpr bool operator< (const duration<Rep1, Period1>& lhs,
 | ^~~~~~~~
p1356.cpp:72:35: error: 'duration' does not name a type
 72 | constexpr bool operator> (const duration<Rep1, Period1>& lhs,
 | ^~~~~~~~
p1356.cpp:72:43: error: expected ',' or '...' before '<' token
 72 | constexpr bool operator> (const duration<Rep1, Period1>& lhs,
 | ^
p1356.cpp:72:18: error: 'constexpr bool std::chrono::operator>(int)' must have an argument of class or enumerated type
 72 | constexpr bool operator> (const duration<Rep1, Period1>& lhs,
 | ^~~~~~~~
p1356.cpp:75:35: error: 'duration' does not name a type
 75 | constexpr bool operator<=(const duration<Rep1, Period1>& lhs,
 | ^~~~~~~~
p1356.cpp:75:43: error: expected ',' or '...' before '<' token
 75 | constexpr bool operator<=(const duration<Rep1, Period1>& lhs,
 | ^
p1356.cpp:75:18: error: 'constexpr bool std::chrono::operator<=(int)' must have an argument of class or enumerated type
 75 | constexpr bool operator<=(const duration<Rep1, Period1>& lhs,
 | ^~~~~~~~
p1356.cpp:78:35: error: 'duration' does not name a type
 78 | constexpr bool operator>=(const duration<Rep1, Period1>& lhs,
 | ^~~~~~~~
p1356.cpp:78:43: error: expected ',' or '...' before '<' token
 78 | constexpr bool operator>=(const duration<Rep1, Period1>& lhs,
 | ^
p1356.cpp:78:18: error: 'constexpr bool std::chrono::operator>=(int)' must have an argument of class or enumerated type
 78 | constexpr bool operator>=(const duration<Rep1, Period1>& lhs,
 | ^~~~~~~~
p1356.cpp:80:77: error: 'below' does not name a type
 80 | template<class Rep1, class Period1, class Rep2, class Period2> requires see below
 | ^~~~~
p1356.cpp:85:44: error: 'duration' does not name a type; did you mean 'ToDuration'?
 85 | constexpr ToDuration duration_cast(const duration<Rep, Period>& d);
 | ^~~~~~~~
 | ToDuration
p1356.cpp:85:52: error: expected ',' or '...' before '<' token
 85 | constexpr ToDuration duration_cast(const duration<Rep, Period>& d);
 | ^
p1356.cpp:87:36: error: 'duration' does not name a type; did you mean 'ToDuration'?
 87 | constexpr ToDuration floor(const duration<Rep, Period>& d);
 | ^~~~~~~~
 | ToDuration
p1356.cpp:87:44: error: expected ',' or '...' before '<' token
 87 | constexpr ToDuration floor(const duration<Rep, Period>& d);
 | ^
p1356.cpp:89:35: error: 'duration' does not name a type; did you mean 'ToDuration'?
 89 | constexpr ToDuration ceil(const duration<Rep, Period>& d);
 | ^~~~~~~~
 | ToDuration
p1356.cpp:89:43: error: expected ',' or '...' before '<' token
 89 | constexpr ToDuration ceil(const duration<Rep, Period>& d);
 | ^
p1356.cpp:91:36: error: 'duration' does not name a type; did you mean 'ToDuration'?
 91 | constexpr ToDuration round(const duration<Rep, Period>& d);
 | ^~~~~~~~
 | ToDuration
p1356.cpp:91:44: error: expected ',' or '...' before '<' token
 91 | constexpr ToDuration round(const duration<Rep, Period>& d);
 | ^
p1356.cpp:96:22: error: 'duration' does not name a type
 96 | const duration<Rep, Period>& d);
 | ^~~~~~~~
p1356.cpp:96:30: error: expected ',' or '...' before '<' token
 96 | const duration<Rep, Period>& d);
 | ^
p1356.cpp:100:17: error: 'duration' has not been declared
 100 | duration<Rep, Period>& d,
 | ^~~~~~~~
p1356.cpp:100:25: error: expected ',' or '...' before '<' token
 100 | duration<Rep, Period>& d,
 | ^
p1356.cpp:104:21: error: 'duration' does not name a type
 104 | using nanoseconds = duration<signed integer type of at least 64 bits, nano>;
 | ^~~~~~~~
p1356.cpp:105:22: error: 'duration' does not name a type
 105 | using microseconds = duration<signed integer type of at least 55 bits, micro>;
 | ^~~~~~~~
p1356.cpp:106:22: error: 'duration' does not name a type
 106 | using milliseconds = duration<signed integer type of at least 45 bits, milli>;
 | ^~~~~~~~
p1356.cpp:107:17: error: 'duration' does not name a type
 107 | using seconds = duration<signed integer type of at least 35 bits>;
 | ^~~~~~~~
p1356.cpp:108:17: error: 'duration' does not name a type
 108 | using minutes = duration<signed integer type of at least 29 bits, ratio< 60>>;
 | ^~~~~~~~
p1356.cpp:109:15: error: 'duration' does not name a type
 109 | using hours = duration<signed integer type of at least 23 bits, ratio<3600>>;
 | ^~~~~~~~
p1356.cpp:110:14: error: 'duration' does not name a type
 110 | using days = duration<signed integer type of at least 25 bits,
 | ^~~~~~~~
p1356.cpp:112:15: error: 'duration' does not name a type
 112 | using weeks = duration<signed integer type of at least 22 bits, ratio_multiply<ratio<7>, days::period>>;
 | ^~~~~~~~
p1356.cpp:113:15: error: 'duration' does not name a type
 113 | using years = duration<signed integer type of at least 17 bits,
 | ^~~~~~~~
p1356.cpp:115:16: error: 'duration' does not name a type
 115 | using months = duration<signed integer type of at least 20 bits, ratio_divide<years::period, ratio<12>>>;
 | ^~~~~~~~
p1356.cpp:118:56: error: 'duration' was not declared in this scope; did you mean 'Duration1'?
 118 | constexpr time_point<Clock, common_type_t<Duration1, duration<Rep2, Period2>>>
 | ^~~~~~~~
 | Duration1
p1356.cpp:118:78: error: template argument 2 is invalid
 118 | constexpr time_point<Clock, common_type_t<Duration1, duration<Rep2, Period2>>>
 | ^~
p1356.cpp:118:80: error: template argument 2 is invalid
 118 | constexpr time_point<Clock, common_type_t<Duration1, duration<Rep2, Period2>>>
 | ^
p1356.cpp:119:62: error: 'duration' does not name a type; did you mean 'Duration1'?
 119 | operator+(const time_point<Clock, Duration1>& lhs, const duration<Rep2, Period2>& rhs);
 | ^~~~~~~~
 | Duration1
p1356.cpp:119:70: error: expected ',' or '...' before '<' token
 119 | operator+(const time_point<Clock, Duration1>& lhs, const duration<Rep2, Period2>& rhs);
 | ^
p1356.cpp:121:45: error: 'duration' was not declared in this scope; did you mean 'Duration2'?
 121 | constexpr time_point<Clock, common_type_t<duration<Rep1, Period1>, Duration2>>
 | ^~~~~~~~
 | Duration2
p1356.cpp:121:67: error: template argument 1 is invalid
 121 | constexpr time_point<Clock, common_type_t<duration<Rep1, Period1>, Duration2>>
 | ^
p1356.cpp:121:70: error: wrong number of template arguments (3, should be at least 1)
 121 | constexpr time_point<Clock, common_type_t<duration<Rep1, Period1>, Duration2>>
 | ^~~~~~~~~
p1356.cpp:20:76: note: provided for 'template<class Clock, class Duration> class std::chrono::time_point'
 20 | template<class Clock, class Duration = typename Clock::duration> class time_point;
 | ^~~~~~~~~~
p1356.cpp:121:79: error: expected unqualified-id before '>' token
 121 | constexpr time_point<Clock, common_type_t<duration<Rep1, Period1>, Duration2>>
 | ^~
p1356.cpp:124:56: error: 'duration' was not declared in this scope; did you mean 'Duration1'?
 124 | constexpr time_point<Clock, common_type_t<Duration1, duration<Rep2, Period2>>>
 | ^~~~~~~~
 | Duration1
p1356.cpp:124:78: error: template argument 2 is invalid
 124 | constexpr time_point<Clock, common_type_t<Duration1, duration<Rep2, Period2>>>
 | ^~
p1356.cpp:124:80: error: template argument 2 is invalid
 124 | constexpr time_point<Clock, common_type_t<Duration1, duration<Rep2, Period2>>>
 | ^
p1356.cpp:125:62: error: 'duration' does not name a type; did you mean 'Duration1'?
 125 | operator-(const time_point<Clock, Duration1>& lhs, const duration<Rep2, Period2>& rhs);
 | ^~~~~~~~
 | Duration1
p1356.cpp:125:70: error: expected ',' or '...' before '<' token
 125 | operator-(const time_point<Clock, Duration1>& lhs, const duration<Rep2, Period2>& rhs);
 | ^
p1356.cpp:161:13: error: 'duration' does not name a type
 161 | constexpr duration<Rep, Period> abs(duration<Rep, Period> d);
 | ^~~~~~~~
p1356.cpp:166:30: error: 'seconds' was not declared in this scope; did you mean 'ends'?
 166 | using sys_seconds = sys_time<seconds>;
 | ^~~~~~~
 | ends
p1356.cpp:166:37: error: template argument 1 is invalid
 166 | using sys_seconds = sys_time<seconds>;
 | ^
p1356.cpp:167:30: error: 'days' was not declared in this scope
 167 | using sys_days = sys_time<days>;
 | ^~~~
p1356.cpp:167:34: error: template argument 1 is invalid
 167 | using sys_days = sys_time<days>;
 | ^
p1356.cpp:173:56: error: 'sys_days' does not name a type
 173 | operator<<(basic_ostream<charT, traits>& os, const sys_days& dp);
 | ^~~~~~~~
p1356.cpp:179:17: error: 'minutes' has not been declared
 179 | minutes* offset = nullptr);
 | ^~~~~~~
p1356.cpp:184:30: error: 'seconds' was not declared in this scope; did you mean 'ends'?
 184 | using utc_seconds = utc_time<seconds>;
 | ^~~~~~~
 | ends
p1356.cpp:184:37: error: template argument 1 is invalid
 184 | using utc_seconds = utc_time<seconds>;
 | ^
p1356.cpp:193:17: error: 'minutes' has not been declared
 193 | minutes* offset = nullptr);
 | ^~~~~~~
p1356.cpp:201:30: error: 'seconds' was not declared in this scope; did you mean 'ends'?
 201 | using tai_seconds = tai_time<seconds>;
 | ^~~~~~~
 | ends
p1356.cpp:201:37: error: template argument 1 is invalid
 201 | using tai_seconds = tai_time<seconds>;
 | ^
p1356.cpp:210:17: error: 'minutes' has not been declared
 210 | minutes* offset = nullptr);
 | ^~~~~~~
p1356.cpp:215:30: error: 'seconds' was not declared in this scope; did you mean 'ends'?
 215 | using gps_seconds = gps_time<seconds>;
 | ^~~~~~~
 | ends
p1356.cpp:215:37: error: template argument 1 is invalid
 215 | using gps_seconds = gps_time<seconds>;
 | ^
p1356.cpp:224:17: error: 'minutes' has not been declared
 224 | minutes* offset = nullptr);
 | ^~~~~~~
p1356.cpp:226:20: error: 'see' does not name a type
 226 | using file_clock = see below;
 | ^~~
p1356.cpp:228:32: error: 'file_clock' was not declared in this scope; did you mean 'is_clock'?
 228 | using file_time = time_point<file_clock, Duration>;
 | ^~~~~~~~~~
 | is_clock
p1356.cpp:228:52: error: template argument 1 is invalid
 228 | using file_time = time_point<file_clock, Duration>;
 | ^
p1356.cpp:231:56: error: 'file_time' does not name a type
 231 | operator<<(basic_ostream<charT, traits>& os, const file_time<Duration>& tp);
 | ^~~~~~~~~
p1356.cpp:231:65: error: expected ',' or '...' before '<' token
 231 | operator<<(basic_ostream<charT, traits>& os, const file_time<Duration>& tp);
 | ^
p1356.cpp:235:17: error: 'file_time' has not been declared
 235 | file_time<Duration>& tp,
 | ^~~~~~~~~
p1356.cpp:235:26: error: expected ',' or '...' before '<' token
 235 | file_time<Duration>& tp,
 | ^
p1356.cpp:245:34: error: 'seconds' was not declared in this scope; did you mean 'ends'?
 245 | using local_seconds = local_time<seconds>;
 | ^~~~~~~
 | ends
p1356.cpp:245:41: error: template argument 1 is invalid
 245 | using local_seconds = local_time<seconds>;
 | ^
p1356.cpp:246:34: error: 'days' was not declared in this scope
 246 | using local_days = local_time<days>;
 | ^~~~
p1356.cpp:246:38: error: template argument 1 is invalid
 246 | using local_days = local_time<days>;
 | ^
p1356.cpp:255:17: error: 'minutes' has not been declared
 255 | minutes* offset = nullptr);
 | ^~~~~~~
p1356.cpp:267:47: error: 'days' does not name a type; did you mean 'day'?
 267 | constexpr day operator+(const day& x, const days& y) noexcept;
 | ^~~~
 | day
p1356.cpp:268:32: error: 'days' does not name a type; did you mean 'day'?
 268 | constexpr day operator+(const days& x, const day& y) noexcept;
 | ^~~~
 | day
p1356.cpp:269:47: error: 'days' does not name a type; did you mean 'day'?
 269 | constexpr day operator-(const day& x, const days& y) noexcept;
 | ^~~~
 | day
p1356.cpp:270:11: error: 'days' does not name a type; did you mean 'day'?
 270 | constexpr days operator-(const day& x, const day& y) noexcept;
 | ^~~~
 | day
p1356.cpp:278:17: error: 'minutes' has not been declared
 278 | minutes* offset = nullptr);
 | ^~~~~~~
p1356.cpp:283:51: error: 'months' does not name a type; did you mean 'month'?
 283 | constexpr month operator+(const month& x, const months& y) noexcept;
 | ^~~~~~
 | month
p1356.cpp:284:34: error: 'months' does not name a type; did you mean 'month'?
 284 | constexpr month operator+(const months& x, const month& y) noexcept;
 | ^~~~~~
 | month
p1356.cpp:285:51: error: 'months' does not name a type; did you mean 'month'?
 285 | constexpr month operator-(const month& x, const months& y) noexcept;
 | ^~~~~~
 | month
p1356.cpp:286:11: error: 'months' does not name a type; did you mean 'month'?
 286 | constexpr months operator-(const month& x, const month& y) noexcept;
 | ^~~~~~
 | month
p1356.cpp:294:17: error: 'minutes' has not been declared
 294 | minutes* offset = nullptr);
 | ^~~~~~~
p1356.cpp:299:49: error: 'years' does not name a type; did you mean 'year'?
 299 | constexpr year operator+(const year& x, const years& y) noexcept;
 | ^~~~~
 | year
p1356.cpp:300:33: error: 'years' does not name a type; did you mean 'year'?
 300 | constexpr year operator+(const years& x, const year& y) noexcept;
 | ^~~~~
 | year
p1356.cpp:301:49: error: 'years' does not name a type; did you mean 'year'?
 301 | constexpr year operator-(const year& x, const years& y) noexcept;
 | ^~~~~
 | year
p1356.cpp:302:11: error: 'years' does not name a type; did you mean 'year'?
 302 | constexpr years operator-(const year& x, const year& y) noexcept;
 | ^~~~~
 | year
p1356.cpp:310:17: error: 'minutes' has not been declared
 310 | minutes* offset = nullptr);
 | ^~~~~~~
p1356.cpp:314:53: error: 'days' does not name a type; did you mean 'day'?
 314 | constexpr weekday operator+(const weekday& x, const days& y) noexcept;
 | ^~~~
 | day
p1356.cpp:315:35: error: 'days' does not name a type; did you mean 'day'?
 315 | constexpr weekday operator+(const days& x, const weekday& y) noexcept;
 | ^~~~
 | day
p1356.cpp:316:53: error: 'days' does not name a type; did you mean 'day'?
 316 | constexpr weekday operator-(const weekday& x, const days& y) noexcept;
 | ^~~~
 | day
p1356.cpp:317:11: error: 'days' does not name a type; did you mean 'day'?
 317 | constexpr days operator-(const weekday& x, const weekday& y) noexcept;
 | ^~~~
 | day
p1356.cpp:325:17: error: 'minutes' has not been declared
 325 | minutes* offset = nullptr);
 | ^~~~~~~
p1356.cpp:349:17: error: 'minutes' has not been declared
 349 | minutes* offset = nullptr);
 | ^~~~~~~
p1356.cpp:374:60: error: 'months' does not name a type; did you mean 'month'?
 374 | constexpr year_month operator+(const year_month& ym, const months& dm) noexcept;
 | ^~~~~~
 | month
p1356.cpp:375:38: error: 'months' does not name a type; did you mean 'month'?
 375 | constexpr year_month operator+(const months& dm, const year_month& ym) noexcept;
 | ^~~~~~
 | month
p1356.cpp:376:60: error: 'months' does not name a type; did you mean 'month'?
 376 | constexpr year_month operator-(const year_month& ym, const months& dm) noexcept;
 | ^~~~~~
 | month
p1356.cpp:377:11: error: 'months' does not name a type; did you mean 'month'?
 377 | constexpr months operator-(const year_month& x, const year_month& y) noexcept;
 | ^~~~~~
 | month
p1356.cpp:378:60: error: 'years' does not name a type; did you mean 'year'?
 378 | constexpr year_month operator+(const year_month& ym, const years& dy) noexcept;
 | ^~~~~
 | year
p1356.cpp:379:38: error: 'years' does not name a type; did you mean 'year'?
 379 | constexpr year_month operator+(const years& dy, const year_month& ym) noexcept;
 | ^~~~~
 | year
p1356.cpp:380:60: error: 'years' does not name a type; did you mean 'year'?
 380 | constexpr year_month operator-(const year_month& ym, const years& dy) noexcept;
 | ^~~~~
 | year
p1356.cpp:388:17: error: 'minutes' has not been declared
 388 | minutes* offset = nullptr);
 | ^~~~~~~
p1356.cpp:394:69: error: 'months' does not name a type; did you mean 'month'?
 394 | constexpr year_month_day operator+(const year_month_day& ymd, const months& dm) noexcept;
 | ^~~~~~
 | month
p1356.cpp:395:42: error: 'months' does not name a type; did you mean 'month'?
 395 | constexpr year_month_day operator+(const months& dm, const year_month_day& ymd) noexcept;
 | ^~~~~~
 | month
p1356.cpp:396:69: error: 'years' does not name a type; did you mean 'year'?
 396 | constexpr year_month_day operator+(const year_month_day& ymd, const years& dy) noexcept;
 | ^~~~~
 | year
p1356.cpp:397:42: error: 'years' does not name a type; did you mean 'year'?
 397 | constexpr year_month_day operator+(const years& dy, const year_month_day& ymd) noexcept;
 | ^~~~~
 | year
p1356.cpp:398:69: error: 'months' does not name a type; did you mean 'month'?
 398 | constexpr year_month_day operator-(const year_month_day& ymd, const months& dm) noexcept;
 | ^~~~~~
 | month
p1356.cpp:399:69: error: 'years' does not name a type; did you mean 'year'?
 399 | constexpr year_month_day operator-(const year_month_day& ymd, const years& dy) noexcept;
 | ^~~~~
 | year
p1356.cpp:408:17: error: 'minutes' has not been declared
 408 | minutes* offset = nullptr);
 | ^~~~~~~
p1356.cpp:416:52: error: 'months' does not name a type; did you mean 'month'?
 416 | operator+(const year_month_day_last& ymdl, const months& dm) noexcept;
 | ^~~~~~
 | month
p1356.cpp:418:19: error: 'months' does not name a type; did you mean 'month'?
 418 | operator+(const months& dm, const year_month_day_last& ymdl) noexcept;
 | ^~~~~~
 | month
p1356.cpp:420:52: error: 'years' does not name a type; did you mean 'year'?
 420 | operator+(const year_month_day_last& ymdl, const years& dy) noexcept;
 | ^~~~~
 | year
p1356.cpp:422:19: error: 'years' does not name a type; did you mean 'year'?
 422 | operator+(const years& dy, const year_month_day_last& ymdl) noexcept;
 | ^~~~~
 | year
p1356.cpp:424:52: error: 'months' does not name a type; did you mean 'month'?
 424 | operator-(const year_month_day_last& ymdl, const months& dm) noexcept;
 | ^~~~~~
 | month
p1356.cpp:426:52: error: 'years' does not name a type; did you mean 'year'?
 426 | operator-(const year_month_day_last& ymdl, const years& dy) noexcept;
 | ^~~~~
 | year
p1356.cpp:435:51: error: 'months' does not name a type; did you mean 'month'?
 435 | operator+(const year_month_weekday& ymwd, const months& dm) noexcept;
 | ^~~~~~
 | month
p1356.cpp:437:19: error: 'months' does not name a type; did you mean 'month'?
 437 | operator+(const months& dm, const year_month_weekday& ymwd) noexcept;
 | ^~~~~~
 | month
p1356.cpp:439:51: error: 'years' does not name a type; did you mean 'year'?
 439 | operator+(const year_month_weekday& ymwd, const years& dy) noexcept;
 | ^~~~~
 | year
p1356.cpp:441:19: error: 'years' does not name a type; did you mean 'year'?
 441 | operator+(const years& dy, const year_month_weekday& ymwd) noexcept;
 | ^~~~~
 | year
p1356.cpp:443:51: error: 'months' does not name a type; did you mean 'month'?
 443 | operator-(const year_month_weekday& ymwd, const months& dm) noexcept;
 | ^~~~~~
 | month
p1356.cpp:445:51: error: 'years' does not name a type; did you mean 'year'?
 445 | operator-(const year_month_weekday& ymwd, const years& dy) noexcept;
 | ^~~~~
 | year
p1356.cpp:454:57: error: 'months' does not name a type; did you mean 'month'?
 454 | operator+(const year_month_weekday_last& ymwdl, const months& dm) noexcept;
 | ^~~~~~
 | month
p1356.cpp:456:19: error: 'months' does not name a type; did you mean 'month'?
 456 | operator+(const months& dm, const year_month_weekday_last& ymwdl) noexcept;
 | ^~~~~~
 | month
p1356.cpp:458:57: error: 'years' does not name a type; did you mean 'year'?
 458 | operator+(const year_month_weekday_last& ymwdl, const years& dy) noexcept;
 | ^~~~~
 | year
p1356.cpp:460:19: error: 'years' does not name a type; did you mean 'year'?
 460 | operator+(const years& dy, const year_month_weekday_last& ymwdl) noexcept;
 | ^~~~~
 | year
p1356.cpp:462:57: error: 'months' does not name a type; did you mean 'month'?
 462 | operator-(const year_month_weekday_last& ymwdl, const months& dm) noexcept;
 | ^~~~~~
 | month
p1356.cpp:464:57: error: 'years' does not name a type; did you mean 'year'?
 464 | operator-(const year_month_weekday_last& ymwdl, const years& dy) noexcept;
 | ^~~~~
 | year
p1356.cpp:555:28: error: 'hours' does not name a type
 555 | constexpr bool is_am(const hours& h) noexcept;
 | ^~~~~
p1356.cpp:556:28: error: 'hours' does not name a type
 556 | constexpr bool is_pm(const hours& h) noexcept;
 | ^~~~~
p1356.cpp:557:11: error: 'hours' does not name a type
 557 | constexpr hours make12(const hours& h) noexcept;
 | ^~~~~
p1356.cpp:558:11: error: 'hours' does not name a type
 558 | constexpr hours make24(const hours& h, bool is_pm) noexcept;
 | ^~~~~
p1356.cpp:565:7: error: 'time_zone' does not name a type; did you mean 'time_point'?
 565 | const time_zone* locate_zone(string_view tz_name); const time_zone* current_zone();
 | ^~~~~~~~~
 | time_point
p1356.cpp:565:58: error: 'time_zone' does not name a type; did you mean 'time_point'?
 565 | const time_zone* locate_zone(string_view tz_name); const time_zone* current_zone();
 | ^~~~~~~~~
 | time_point
p1356.cpp:589:34: error: 'seconds' was not declared in this scope; did you mean 'ends'?
 589 | using zoned_seconds = zoned_time<seconds>;
 | ^~~~~~~
 | ends
p1356.cpp:589:41: error: template argument 1 is invalid
 589 | using zoned_seconds = zoned_time<seconds>;
 | ^
p1356.cpp:620:38: error: 'sys_seconds' was not declared in this scope
 620 | requires three_way_comparable_with<sys_seconds, sys_time<Duration>>
 | ^~~~~~~~~~~
p1356.cpp:620:12: error: template argument 1 is invalid
 620 | requires three_way_comparable_with<sys_seconds, sys_time<Duration>>
 | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
p1356.cpp:627:38: error: expected unqualified-id before '-' token
 627 | template<class Duration> struct local-time-format-t ; // exposition only
 | ^
p1356.cpp:629:6: error: expected unqualified-id before '-' token
 629 | local-time-format-t <Duration>
 | ^
p1356.cpp:635:12: error: 'formatter' is not a class template
 635 | struct formatter<chrono::duration<Rep, Period>, charT>;
 | ^~~~~~~~~
p1356.cpp:635:30: error: 'duration' is not a member of 'std::chrono'; did you mean 'duration_cast'?
 635 | struct formatter<chrono::duration<Rep, Period>, charT>;
 | ^~~~~~~~
 | duration_cast
p1356.cpp:635:21: error: expected ';' before ',' token
 635 | struct formatter<chrono::duration<Rep, Period>, charT>;
 | ^ ~
 | ;
p1356.cpp:637:12: error: 'formatter' is not a class template
 637 | struct formatter<chrono::sys_time<Duration>, charT>;
 | ^~~~~~~~~
p1356.cpp:637:12: error: 'std::formatter' is not a template
p1356.cpp:635:12: note: previous declaration here
 635 | struct formatter<chrono::duration<Rep, Period>, charT>;
 | ^~~~~~~~~
p1356.cpp:639:12: error: 'formatter' is not a class template
 639 | struct formatter<chrono::utc_time<Duration>, charT>;
 | ^~~~~~~~~
p1356.cpp:639:12: error: 'std::formatter' is not a template
p1356.cpp:635:12: note: previous declaration here
 635 | struct formatter<chrono::duration<Rep, Period>, charT>;
 | ^~~~~~~~~
p1356.cpp:641:12: error: 'formatter' is not a class template
 641 | struct formatter<chrono::tai_time<Duration>, charT>;
 | ^~~~~~~~~
p1356.cpp:641:12: error: 'std::formatter' is not a template
p1356.cpp:635:12: note: previous declaration here
 635 | struct formatter<chrono::duration<Rep, Period>, charT>;
 | ^~~~~~~~~
p1356.cpp:643:12: error: 'formatter' is not a class template
 643 | struct formatter<chrono::gps_time<Duration>, charT>;
 | ^~~~~~~~~
p1356.cpp:643:12: error: 'std::formatter' is not a template
p1356.cpp:635:12: note: previous declaration here
 635 | struct formatter<chrono::duration<Rep, Period>, charT>;
 | ^~~~~~~~~
p1356.cpp:645:12: error: 'formatter' is not a class template
 645 | struct formatter<chrono::file_time<Duration>, charT>;
 | ^~~~~~~~~
p1356.cpp:645:30: error: 'file_time' is not a member of 'std::chrono'
 645 | struct formatter<chrono::file_time<Duration>, charT>;
 | ^~~~~~~~~
p1356.cpp:645:21: error: expected ';' before ',' token
 645 | struct formatter<chrono::file_time<Duration>, charT>;
 | ^ ~
 | ;
p1356.cpp:647:12: error: 'formatter' is not a class template
 647 | struct formatter<chrono::local_time<Duration>, charT>;
 | ^~~~~~~~~
p1356.cpp:647:12: error: 'std::formatter' is not a template
p1356.cpp:635:12: note: previous declaration here
 635 | struct formatter<chrono::duration<Rep, Period>, charT>;
 | ^~~~~~~~~
p1356.cpp:649:8: error: 'formatter' is not a class template
 649 | struct formatter<chrono::local-time-format-t<Duration>, charT>; template<class charT> struct formatter<chrono::day, charT>;
 | ^~~~~~~~~
p1356.cpp:649:8: error: 'std::formatter' is not a template
p1356.cpp:635:12: note: previous declaration here
 635 | struct formatter<chrono::duration<Rep, Period>, charT>;
 | ^~~~~~~~~
p1356.cpp:649:94: error: 'formatter' is not a class template
 649 | t formatter<chrono::local-time-format-t<Duration>, charT>; template<class charT> struct formatter<chrono::day, charT>;
 | ^~~~~~~~~

p1356.cpp:649:94: error: 'std::formatter' is not a template
p1356.cpp:635:12: note: previous declaration here
 635 | struct formatter<chrono::duration<Rep, Period>, charT>;
 | ^~~~~~~~~
p1356.cpp:650:30: error: 'formatter' is not a class template
 650 | template<class charT> struct formatter<chrono::month, charT>;
 | ^~~~~~~~~
p1356.cpp:650:30: error: 'std::formatter' is not a template
p1356.cpp:635:12: note: previous declaration here
 635 | struct formatter<chrono::duration<Rep, Period>, charT>;
 | ^~~~~~~~~
p1356.cpp:651:30: error: 'formatter' is not a class template
 651 | template<class charT> struct formatter<chrono::year, charT>;
 | ^~~~~~~~~
p1356.cpp:651:30: error: 'std::formatter' is not a template
p1356.cpp:635:12: note: previous declaration here
 635 | struct formatter<chrono::duration<Rep, Period>, charT>;
 | ^~~~~~~~~
p1356.cpp:652:30: error: 'formatter' is not a class template
 652 | template<class charT> struct formatter<chrono::weekday, charT>;
 | ^~~~~~~~~
p1356.cpp:652:30: error: 'std::formatter' is not a template
p1356.cpp:635:12: note: previous declaration here
 635 | struct formatter<chrono::duration<Rep, Period>, charT>;
 | ^~~~~~~~~
p1356.cpp:653:30: error: 'formatter' is not a class template
 653 | template<class charT> struct formatter<chrono::weekday_indexed, charT>; template<class charT> struct formatter<chrono::weekday_last, charT>; template<class charT> struct formatter<chrono::month_day, charT>; template<class charT> struct formatter<chrono::month_day_last, charT>; template<class charT> struct formatter<chrono::month_weekday, charT>; template<class charT> struct formatter<chrono::month_weekday_last, charT>; template<class charT> struct formatter<chrono::year_month, charT>; template<class charT> struct formatter<chrono::year_month_day, charT>; template<class charT> struct formatter<chrono::year_month_day_last, charT>; template<class charT> struct formatter<chrono::year_month_weekday, charT>; template<class charT> struct formatter<chrono::year_month_weekday_last, charT>; template<class Rep, class Period, class charT>
 | ^~~~~~~~~
p1356.cpp:653:30: error: 'std::formatter' is not a template
p1356.cpp:635:12: note: previous declaration here
 635 | struct formatter<chrono::duration<Rep, Period>, charT>;
 | ^~~~~~~~~
p1356.cpp:653:102: error: 'formatter' is not a class template
 653 | s charT> struct formatter<chrono::weekday_indexed, charT>; template<class charT> struct formatter<chrono::weekday_last, charT>; template<class charT> struct formatter<chrono::month_day, charT>; template<class charT> struct formatter<chrono::month_day_last, charT>; template<class charT> struct formatter<chrono::month_weekday, charT>; template<class charT> struct formatter<chrono::month_weekday_last, charT>; template<class charT> struct formatter<chrono::year_month, charT>; template<class charT> struct formatter<chrono::year_month_day, charT>; template<class charT> struct formatter<chrono::year_month_day_last, charT>; template<class charT> struct formatter<chrono::year_month_weekday, charT>; template<class charT> struct formatter<chrono::year_month_weekday_last, charT>; template<class Rep, class Period, class charT>
 | ^~~~~~~~~

p1356.cpp:653:102: error: 'std::formatter' is not a template
p1356.cpp:635:12: note: previous declaration here
 635 | struct formatter<chrono::duration<Rep, Period>, charT>;
 | ^~~~~~~~~
p1356.cpp:653:171: error: 'formatter' is not a class template
 653 | lass charT> struct formatter<chrono::weekday_last, charT>; template<class charT> struct formatter<chrono::month_day, charT>; template<class charT> struct formatter<chrono::month_day_last, charT>; template<class charT> struct formatter<chrono::month_weekday, charT>; template<class charT> struct formatter<chrono::month_weekday_last, charT>; template<class charT> struct formatter<chrono::year_month, charT>; template<class charT> struct formatter<chrono::year_month_day, charT>; template<class charT> struct formatter<chrono::year_month_day_last, charT>; template<class charT> struct formatter<chrono::year_month_weekday, charT>; template<class charT> struct formatter<chrono::year_month_weekday_last, charT>; template<class Rep, class Period, class charT>
 | ^~~~~~~~~

p1356.cpp:653:171: error: 'std::formatter' is not a template
p1356.cpp:635:12: note: previous declaration here
 635 | struct formatter<chrono::duration<Rep, Period>, charT>;
 | ^~~~~~~~~
p1356.cpp:653:237: error: 'formatter' is not a class template
 653 | e<class charT> struct formatter<chrono::month_day, charT>; template<class charT> struct formatter<chrono::month_day_last, charT>; template<class charT> struct formatter<chrono::month_weekday, charT>; template<class charT> struct formatter<chrono::month_weekday_last, charT>; template<class charT> struct formatter<chrono::year_month, charT>; template<class charT> struct formatter<chrono::year_month_day, charT>; template<class charT> struct formatter<chrono::year_month_day_last, charT>; template<class charT> struct formatter<chrono::year_month_weekday, charT>; template<class charT> struct formatter<chrono::year_month_weekday_last, charT>; template<class Rep, class Period, class charT>
 | ^~~~~~~~~

p1356.cpp:653:237: error: 'std::formatter' is not a template
p1356.cpp:635:12: note: previous declaration here
 635 | struct formatter<chrono::duration<Rep, Period>, charT>;
 | ^~~~~~~~~
p1356.cpp:653:308: error: 'formatter' is not a class template
 653 | ss charT> struct formatter<chrono::month_day_last, charT>; template<class charT> struct formatter<chrono::month_weekday, charT>; template<class charT> struct formatter<chrono::month_weekday_last, charT>; template<class charT> struct formatter<chrono::year_month, charT>; template<class charT> struct formatter<chrono::year_month_day, charT>; template<class charT> struct formatter<chrono::year_month_day_last, charT>; template<class charT> struct formatter<chrono::year_month_weekday, charT>; template<class charT> struct formatter<chrono::year_month_weekday_last, charT>; template<class Rep, class Period, class charT>
 | ^~~~~~~~~

p1356.cpp:653:308: error: 'std::formatter' is not a template
p1356.cpp:635:12: note: previous declaration here
 635 | struct formatter<chrono::duration<Rep, Period>, charT>;
 | ^~~~~~~~~
p1356.cpp:653:378: error: 'formatter' is not a class template
 653 | ass charT> struct formatter<chrono::month_weekday, charT>; template<class charT> struct formatter<chrono::month_weekday_last, charT>; template<class charT> struct formatter<chrono::year_month, charT>; template<class charT> struct formatter<chrono::year_month_day, charT>; template<class charT> struct formatter<chrono::year_month_day_last, charT>; template<class charT> struct formatter<chrono::year_month_weekday, charT>; template<class charT> struct formatter<chrono::year_month_weekday_last, charT>; template<class Rep, class Period, class charT>
 | ^~~~~~~~~

p1356.cpp:653:378: error: 'std::formatter' is not a template
p1356.cpp:635:12: note: previous declaration here
 635 | struct formatter<chrono::duration<Rep, Period>, charT>;
 | ^~~~~~~~~
p1356.cpp:653:453: error: 'formatter' is not a class template
 653 | harT> struct formatter<chrono::month_weekday_last, charT>; template<class charT> struct formatter<chrono::year_month, charT>; template<class charT> struct formatter<chrono::year_month_day, charT>; template<class charT> struct formatter<chrono::year_month_day_last, charT>; template<class charT> struct formatter<chrono::year_month_weekday, charT>; template<class charT> struct formatter<chrono::year_month_weekday_last, charT>; template<class Rep, class Period, class charT>
 | ^~~~~~~~~

p1356.cpp:653:453: error: 'std::formatter' is not a template
p1356.cpp:635:12: note: previous declaration here
 635 | struct formatter<chrono::duration<Rep, Period>, charT>;
 | ^~~~~~~~~
p1356.cpp:653:520: error: 'formatter' is not a class template
 653 | <class charT> struct formatter<chrono::year_month, charT>; template<class charT> struct formatter<chrono::year_month_day, charT>; template<class charT> struct formatter<chrono::year_month_day_last, charT>; template<class charT> struct formatter<chrono::year_month_weekday, charT>; template<class charT> struct formatter<chrono::year_month_weekday_last, charT>; template<class Rep, class Period, class charT>
 | ^~~~~~~~~

p1356.cpp:653:520: error: 'std::formatter' is not a template
p1356.cpp:635:12: note: previous declaration here
 635 | struct formatter<chrono::duration<Rep, Period>, charT>;
 | ^~~~~~~~~
p1356.cpp:653:591: error: 'formatter' is not a class template
 653 | ss charT> struct formatter<chrono::year_month_day, charT>; template<class charT> struct formatter<chrono::year_month_day_last, charT>; template<class charT> struct formatter<chrono::year_month_weekday, charT>; template<class charT> struct formatter<chrono::year_month_weekday_last, charT>; template<class Rep, class Period, class charT>
 | ^~~~~~~~~

p1356.cpp:653:591: error: 'std::formatter' is not a template
p1356.cpp:635:12: note: previous declaration here
 635 | struct formatter<chrono::duration<Rep, Period>, charT>;
 | ^~~~~~~~~
p1356.cpp:653:667: error: 'formatter' is not a class template
 653 | arT> struct formatter<chrono::year_month_day_last, charT>; template<class charT> struct formatter<chrono::year_month_weekday, charT>; template<class charT> struct formatter<chrono::year_month_weekday_last, charT>; template<class Rep, class Period, class charT>
 | ^~~~~~~~~

p1356.cpp:653:667: error: 'std::formatter' is not a template
p1356.cpp:635:12: note: previous declaration here
 635 | struct formatter<chrono::duration<Rep, Period>, charT>;
 | ^~~~~~~~~
p1356.cpp:653:742: error: 'formatter' is not a class template
 653 | harT> struct formatter<chrono::year_month_weekday, charT>; template<class charT> struct formatter<chrono::year_month_weekday_last, charT>; template<class Rep, class Period, class charT>
 | ^~~~~~~~~

p1356.cpp:653:742: error: 'std::formatter' is not a template
p1356.cpp:635:12: note: previous declaration here
 635 | struct formatter<chrono::duration<Rep, Period>, charT>;
 | ^~~~~~~~~
p1356.cpp:654:12: error: 'formatter' is not a class template
 654 | struct formatter<chrono::hh_mm_ss<duration<Rep, Period>>, charT>;
 | ^~~~~~~~~
p1356.cpp:654:39: error: 'duration' was not declared in this scope
 654 | struct formatter<chrono::hh_mm_ss<duration<Rep, Period>>, charT>;
 | ^~~~~~~~
p1356.cpp:654:59: error: wrong number of template arguments (2, should be 1)
 654 | struct formatter<chrono::hh_mm_ss<duration<Rep, Period>>, charT>;
 | ^~
p1356.cpp:550:32: note: provided for 'template<class Duration> class std::chrono::hh_mm_ss'
 550 | template<class Duration> class hh_mm_ss;
 | ^~~~~~~~
p1356.cpp:654:12: error: 'std::formatter' is not a template
 654 | struct formatter<chrono::hh_mm_ss<duration<Rep, Period>>, charT>;
 | ^~~~~~~~~
p1356.cpp:635:12: note: previous declaration here
 635 | struct formatter<chrono::duration<Rep, Period>, charT>;
 | ^~~~~~~~~
p1356.cpp:655:32: error: 'formatter' is not a class template
 655 | template<class charT> struct formatter<chrono::sys_info, charT>;
 | ^~~~~~~~~
p1356.cpp:655:32: error: 'std::formatter' is not a template
p1356.cpp:635:12: note: previous declaration here
 635 | struct formatter<chrono::duration<Rep, Period>, charT>;
 | ^~~~~~~~~
p1356.cpp:656:32: error: 'formatter' is not a class template
 656 | template<class charT> struct formatter<chrono::local_info, charT>;
 | ^~~~~~~~~
p1356.cpp:656:32: error: 'std::formatter' is not a template
p1356.cpp:635:12: note: previous declaration here
 635 | struct formatter<chrono::duration<Rep, Period>, charT>;
 | ^~~~~~~~~
p1356.cpp:658:12: error: 'formatter' is not a class template
 658 | struct formatter<chrono::zoned_time<Duration, TimeZonePtr>, charT>;
 | ^~~~~~~~~
p1356.cpp:658:12: error: 'std::formatter' is not a template
p1356.cpp:635:12: note: previous declaration here
 635 | struct formatter<chrono::duration<Rep, Period>, charT>;
 | ^~~~~~~~~
p1356.cpp:663:1: error: 'unspecified' does not name a type
 663 | unspecified
 | ^~~~~~~~~~~
p1356.cpp:666:1: error: 'unspecified' does not name a type
 666 | unspecified
 | ^~~~~~~~~~~
p1356.cpp:669:1: error: 'unspecified' does not name a type
 669 | unspecified
 | ^~~~~~~~~~~
p1356.cpp:673:1: error: 'unspecified' does not name a type
 673 | unspecified
 | ^~~~~~~~~~~
p1356.cpp:677:1: error: 'unspecified' does not name a type
 677 | unspecified
 | ^~~~~~~~~~~
p1356.cpp:680:1: error: 'unspecified' does not name a type
 680 | unspecified
 | ^~~~~~~~~~~
p1356.cpp:684:1: error: 'unspecified' does not name a type
 684 | unspecified
 | ^~~~~~~~~~~
p1356.cpp:688:1: error: 'unspecified' does not name a type
 688 | unspecified
 | ^~~~~~~~~~~
p1356.cpp:692:28: error: variable 'constexpr const std::chrono::last_spec std::chrono::last' has initializer but incomplete type
 692 | inline constexpr last_spec last{};
 | ^~~~
p1356.cpp:693:26: error: variable 'constexpr const std::chrono::weekday std::chrono::Sunday' has initializer but incomplete type
 693 | inline constexpr weekday Sunday{0};
 | ^~~~~~
p1356.cpp:694:26: error: variable 'constexpr const std::chrono::weekday std::chrono::Monday' has initializer but incomplete type
 694 | inline constexpr weekday Monday{1};
 | ^~~~~~
p1356.cpp:695:26: error: variable 'constexpr const std::chrono::weekday std::chrono::Tuesday' has initializer but incomplete type
 695 | inline constexpr weekday Tuesday{2};
 | ^~~~~~~
p1356.cpp:696:26: error: variable 'constexpr const std::chrono::weekday std::chrono::Wednesday' has initializer but incomplete type
 696 | inline constexpr weekday Wednesday{3};
 | ^~~~~~~~~
p1356.cpp:697:26: error: variable 'constexpr const std::chrono::weekday std::chrono::Thursday' has initializer but incomplete type
 697 | inline constexpr weekday Thursday{4};
 | ^~~~~~~~
p1356.cpp:698:26: error: variable 'constexpr const std::chrono::weekday std::chrono::Friday' has initializer but incomplete type
 698 | inline constexpr weekday Friday{5};
 | ^~~~~~
p1356.cpp:699:26: error: variable 'constexpr const std::chrono::weekday std::chrono::Saturday' has initializer but incomplete type
 699 | inline constexpr weekday Saturday{6};
 | ^~~~~~~~
p1356.cpp:700:24: error: variable 'constexpr const std::chrono::month std::chrono::January' has initializer but incomplete type
 700 | inline constexpr month January{1};
 | ^~~~~~~
p1356.cpp:701:24: error: variable 'constexpr const std::chrono::month std::chrono::February' has initializer but incomplete type
 701 | inline constexpr month February{2};
 | ^~~~~~~~
p1356.cpp:702:24: error: variable 'constexpr const std::chrono::month std::chrono::March' has initializer but incomplete type
 702 | inline constexpr month March{3};
 | ^~~~~
p1356.cpp:703:24: error: variable 'constexpr const std::chrono::month std::chrono::April' has initializer but incomplete type
 703 | inline constexpr month April{4};
 | ^~~~~
p1356.cpp:704:24: error: variable 'constexpr const std::chrono::month std::chrono::May' has initializer but incomplete type
 704 | inline constexpr month May{5};
 | ^~~
p1356.cpp:705:24: error: variable 'constexpr const std::chrono::month std::chrono::June' has initializer but incomplete type
 705 | inline constexpr month June{6};
 | ^~~~
p1356.cpp:706:24: error: variable 'constexpr const std::chrono::month std::chrono::July' has initializer but incomplete type
 706 | inline constexpr month July{7};
 | ^~~~
p1356.cpp:707:24: error: variable 'constexpr const std::chrono::month std::chrono::August' has initializer but incomplete type
 707 | inline constexpr month August{8};
 | ^~~~~~
p1356.cpp:708:24: error: variable 'constexpr const std::chrono::month std::chrono::September' has initializer but incomplete type
 708 | inline constexpr month September{9};
 | ^~~~~~~~~
p1356.cpp:709:24: error: variable 'constexpr const std::chrono::month std::chrono::October' has initializer but incomplete type
 709 | inline constexpr month October{10};
 | ^~~~~~~
p1356.cpp:710:24: error: variable 'constexpr const std::chrono::month std::chrono::November' has initializer but incomplete type
 710 | inline constexpr month November{11};
 | ^~~~~~~~
p1356.cpp:711:24: error: variable 'constexpr const std::chrono::month std::chrono::December' has initializer but incomplete type
 711 | inline constexpr month December{12};
 | ^~~~~~~~
p1356.cpp:715:19: error: 'hours' in namespace 'std::chrono' does not name a type
 715 | constexpr chrono::hours
 | ^~~~~
p1356.cpp:717:19: error: 'minutes' in namespace 'std::chrono' does not name a type
 717 | constexpr chrono::minutes operator""min(unsigned long long); constexpr chrono::duration<unspecified, ratio<60, 1>> operator""min(long double);
 | ^~~~~~~
p1356.cpp:717:80: error: 'duration' in namespace 'std::chrono' does not name a template type; did you mean duration_cast'?
 717 | constexpr chrono::minutes operator""min(unsigned long long); constexpr chrono::duration<unspecified, ratio<60, 1>> operator""min(long double);
 | ^~~~~~~~
 | duration_cast
p1356.cpp:718:19: error: 'seconds' in namespace 'std::chrono' does not name a type
 718 | constexpr chrono::seconds operator""s(unsigned long long); constexpr chrono::duration<unspecified > operator""s(long double);
 | ^~~~~~~
p1356.cpp:718:78: error: 'duration' in namespace 'std::chrono' does not name a template type; did you mean duration_cast'?
 718 | constexpr chrono::seconds operator""s(unsigned long long); constexpr chrono::duration<unspecified > operator""s(long double);
 | ^~~~~~~~
 | duration_cast
p1356.cpp:719:19: error: 'milliseconds' in namespace 'std::chrono' does not name a type
 719 | constexpr chrono::milliseconds operator""ms(unsigned long long); constexpr chrono::duration<unspecified, milli> operator""ms(long double);
 | ^~~~~~~~~~~~
p1356.cpp:719:84: error: 'duration' in namespace 'std::chrono' does not name a template type; did you mean duration_cast'?
 719 | constexpr chrono::milliseconds operator""ms(unsigned long long); constexpr chrono::duration<unspecified, milli> operator""ms(long double);
 | ^~~~~~~~
 | duration_cast
p1356.cpp:720:32: error: expected constructor, destructor, or type conversion before ';' token
 720 | operator""h(unsigned long long);
 | ^
p1356.cpp:721:19: error: 'microseconds' in namespace 'std::chrono' does not name a type
 721 | constexpr chrono::microseconds operator""us(unsigned long long); constexpr chrono::duration<unspecified, micro> operator""us(long double);
 | ^~~~~~~~~~~~
p1356.cpp:721:84: error: 'duration' in namespace 'std::chrono' does not name a template type; did you mean duration_cast'?
 721 | constexpr chrono::microseconds operator""us(unsigned long long); constexpr chrono::duration<unspecified, micro> operator""us(long double);
 | ^~~~~~~~
 | duration_cast
p1356.cpp:722:19: error: 'nanoseconds' in namespace 'std::chrono' does not name a type
 722 | constexpr chrono::nanoseconds operator""ns(unsigned long long); constexpr chrono::duration<unspecified, nano> operator""ns(long double);
 | ^~~~~~~~~~~
p1356.cpp:722:83: error: 'duration' in namespace 'std::chrono' does not name a template type; did you mean duration_cast'?
 722 | constexpr chrono::nanoseconds operator""ns(unsigned long long); constexpr chrono::duration<unspecified, nano> operator""ns(long double);
 | ^~~~~~~~
 | duration_cast
p1356.cpp:724:23: warning: literal operator suffixes not preceded by '_' are reserved for future standardization [-Wliteral-suffix]
 724 | constexpr chrono::day operator""d(unsigned long long d) noexcept;
 | ^~~~~~~~
p1356.cpp:726:28: warning: literal operator suffixes not preceded by '_' are reserved for future standardization [-Wliteral-suffix]
 726 | constexpr chrono::year operator""y(unsigned long long y) noexcept;
 | ^~~~~~~~

検討事項(agenda)

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

応用例1 AUTOSAR C++

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

Autosar Guidelines C++14 example code compile list

応用例2 MISRA C++

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

MISRA C++ 5-0-16

応用例3 CERT C++

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

応用例4 箱庭 

箱庭もくもく会 #10 日時:2022/09/14(水) 17:30-19:30

箱庭では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 使ってみた

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

https://qiita.com/kaizen_nagoya/items/3ebab436e63731e4b885
<この項は書きかけです。順次追記します。>
This article is not completed. I will add some words and/or centences in order.
Este artículo no está completo. Agregaré algunas palabras en orden.

知人資料

' @kazuo_reve 私が効果を確認した「小川メソッド」
https://qiita.com/kazuo_reve/items/a3ea1d9171deeccc04da

' @kazuo_reve 新人の方によく展開している有益な情報
https://qiita.com/kazuo_reve/items/d1a3f0ee48e24bba38f1

' @kazuo_reve Vモデルについて勘違いしていたと思ったこと
https://qiita.com/kazuo_reve/items/46fddb094563bd9b2e1e

自己記事一覧

Qiitaで逆リンクを表示しなくなったような気がする。時々、スマフォで表示するとあらわっることがあり、完全に削除したのではなさそう。

4月以降、せっせとリンクリストを作り、統計を取って確率を説明しようとしている。
2025年2月末を目標にしている。

一覧の一覧( The directory of directories of mine.) Qiita(100)
https://qiita.com/kaizen_nagoya/items/7eb0e006543886138f39

仮説(0)一覧(目標100現在40)
https://qiita.com/kaizen_nagoya/items/f000506fe1837b3590df

Qiita(0)Qiita関連記事一覧(自分)
https://qiita.com/kaizen_nagoya/items/58db5fbf036b28e9dfa6

Error一覧 error(0)
https://qiita.com/kaizen_nagoya/items/48b6cbc8d68eae2c42b8

C++ Support(0) 
https://qiita.com/kaizen_nagoya/items/8720d26f762369a80514

Coding(0) Rules, C, Secure, MISRA and so on
https://qiita.com/kaizen_nagoya/items/400725644a8a0e90fbb0

Ethernet 記事一覧 Ethernet(0)
https://qiita.com/kaizen_nagoya/items/88d35e99f74aefc98794

Wireshark 一覧 wireshark(0)、Ethernet(48)
https://qiita.com/kaizen_nagoya/items/fbed841f61875c4731d0

線網(Wi-Fi)空中線(antenna)(0) 記事一覧(118/300目標)
https://qiita.com/kaizen_nagoya/items/5e5464ac2b24bd4cd001

なぜdockerで機械学習するか 書籍・ソース一覧作成中 (目標100)
https://qiita.com/kaizen_nagoya/items/ddd12477544bf5ba85e2

プログラムちょい替え(0)一覧:4件
https://qiita.com/kaizen_nagoya/items/296d87ef4bfd516bc394

言語処理100本ノックをdockerで。python覚えるのに最適。:10+12
https://qiita.com/kaizen_nagoya/items/7e7eb7c543e0c18438c4

Python(0)記事をまとめたい。
https://qiita.com/kaizen_nagoya/items/088c57d70ab6904ebb53

安全(0)安全工学シンポジウムに向けて: 21
https://qiita.com/kaizen_nagoya/items/c5d78f3def8195cb2409

プログラマによる、プログラマのための、統計(0)と確率のプログラミングとその後
https://qiita.com/kaizen_nagoya/items/6e9897eb641268766909

転職(0)一覧
https://qiita.com/kaizen_nagoya/items/f77520d378d33451d6fe

技術士(0)一覧
https://qiita.com/kaizen_nagoya/items/ce4ccf4eb9c5600b89ea

Reserchmap(0) 一覧
https://qiita.com/kaizen_nagoya/items/506c79e562f406c4257e

物理記事 上位100
https://qiita.com/kaizen_nagoya/items/66e90fe31fbe3facc6ff

量子(0) 計算機, 量子力学
https://qiita.com/kaizen_nagoya/items/1cd954cb0eed92879fd4

数学関連記事100
https://qiita.com/kaizen_nagoya/items/d8dadb49a6397e854c6d

coq(0) 一覧
https://qiita.com/kaizen_nagoya/items/d22f9995cf2173bc3b13

統計(0)一覧
https://qiita.com/kaizen_nagoya/items/80d3b221807e53e88aba

図(0) state, sequence and timing. UML and お絵描き
https://qiita.com/kaizen_nagoya/items/60440a882146aeee9e8f

色(0) 記事100書く切り口
https://qiita.com/kaizen_nagoya/items/22331c0335ed34326b9b

品質一覧
https://qiita.com/kaizen_nagoya/items/2b99b8e9db6d94b2e971

言語・文学記事 100
https://qiita.com/kaizen_nagoya/items/42d58d5ef7fb53c407d6

医工連携関連記事一覧
https://qiita.com/kaizen_nagoya/items/6ab51c12ba51bc260a82

水の資料集(0) 方針と成果
https://qiita.com/kaizen_nagoya/items/f5dbb30087ea732b52aa

自動車 記事 100
https://qiita.com/kaizen_nagoya/items/f7f0b9ab36569ad409c5

通信記事100
https://qiita.com/kaizen_nagoya/items/1d67de5e1cd207b05ef7

日本語(0)一欄
https://qiita.com/kaizen_nagoya/items/7498dcfa3a9ba7fd1e68

英語(0) 一覧
https://qiita.com/kaizen_nagoya/items/680e3f5cbf9430486c7d

音楽 一覧(0)
https://qiita.com/kaizen_nagoya/items/b6e5f42bbfe3bbe40f5d

@kazuo_reve 新人の方によく展開している有益な情報」確認一覧
https://qiita.com/kaizen_nagoya/items/b9380888d1e5a042646b

鉄道(0)鉄道のシステム考察はてっちゃんがてつだってくれる
https://qiita.com/kaizen_nagoya/items/faa4ea03d91d901a618a

OSEK OS設計の基礎 OSEK(100)
https://qiita.com/kaizen_nagoya/items/7528a22a14242d2d58a3

coding (101) 一覧を作成し始めた。omake:最近のQiitaで表示しない5つの事象
https://qiita.com/kaizen_nagoya/items/20667f09f19598aedb68

官公庁・学校・公的団体(NPOを含む)システムの課題、官(0)
https://qiita.com/kaizen_nagoya/items/04ee6eaf7ec13d3af4c3

「はじめての」シリーズ  ベクタージャパン 
https://qiita.com/kaizen_nagoya/items/2e41634f6e21a3cf74eb

AUTOSAR(0)Qiita記事一覧, OSEK(75)
https://qiita.com/kaizen_nagoya/items/89c07961b59a8754c869

プログラマが知っていると良い「公序良俗」
https://qiita.com/kaizen_nagoya/items/9fe7c0dfac2fbd77a945

LaTeX(0) 一覧 
https://qiita.com/kaizen_nagoya/items/e3f7dafacab58c499792

自動制御、制御工学一覧(0)
https://qiita.com/kaizen_nagoya/items/7767a4e19a6ae1479e6b

Rust(0) 一覧 
https://qiita.com/kaizen_nagoya/items/5e8bb080ba6ca0281927

programの本質は計画だ。programは設計だ。
https://qiita.com/kaizen_nagoya/items/c8545a769c246a458c27

登壇直後版 色使い(JIS安全色) Qiita Engineer Festa 2023〜私しか得しないニッチな技術でLT〜 スライド編 0.15
https://qiita.com/kaizen_nagoya/items/f0d3070d839f4f735b2b

プログラマが知っていると良い「公序良俗」
https://qiita.com/kaizen_nagoya/items/9fe7c0dfac2fbd77a945

逆も真:社会人が最初に確かめるとよいこと。OSEK(69)、Ethernet(59)
https://qiita.com/kaizen_nagoya/items/39afe4a728a31b903ddc

統計の嘘。仮説(127)
https://qiita.com/kaizen_nagoya/items/63b48ecf258a3471c51b

自分の言葉だけで論理展開できるのが天才なら、文章の引用だけで論理展開できるのが秀才だ。仮説(136)
https://qiita.com/kaizen_nagoya/items/97cf07b9e24f860624dd

参考文献駆動執筆(references driven writing)・デンソークリエイト編
https://qiita.com/kaizen_nagoya/items/b27b3f58b8bf265a5cd1

「何を」よりも「誰を」。10年後のために今見習いたい人たち
https://qiita.com/kaizen_nagoya/items/8045978b16eb49d572b2

Qiitaの記事に3段階または5段階で到達するための方法
https://qiita.com/kaizen_nagoya/items/6e9298296852325adc5e

出力(output)と呼ばないで。これは状態(state)です。
https://qiita.com/kaizen_nagoya/items/80b8b5913b2748867840

祝休日・謹賀新年 2025年の目標
https://qiita.com/kaizen_nagoya/items/dfa34827932f99c59bbc

Qiita 1年間をまとめた「振り返りページ」@2024
https://qiita.com/kaizen_nagoya/items/ed6be239119c99b15828

2024 参加・主催Calendarと投稿記事一覧 Qiita(248)
https://qiita.com/kaizen_nagoya/items/d80b8fbac2496df7827f

主催Calendar2024分析 Qiita(254)
https://qiita.com/kaizen_nagoya/items/15807336d583076f70bc

Calendar 統計
https://qiita.com/kaizen_nagoya/items/e315558dcea8ee3fe43e

LLM 関連 Calendar 2024
https://qiita.com/kaizen_nagoya/items/c36033cf66862d5496fa

Large Language Model Related Calendar
https://qiita.com/kaizen_nagoya/items/3beb0bc3fb71e3ae6d66

博士論文 Calendar 2024 を開催します。
https://qiita.com/kaizen_nagoya/items/51601357efbcaf1057d0

博士論文(0)関連記事一覧
https://qiita.com/kaizen_nagoya/items/8f223a760e607b705e78

coding (101) 一覧を作成し始めた。omake:最近のQiitaで表示しない5つの事象
https://qiita.com/kaizen_nagoya/items/20667f09f19598aedb68

あなたは「勘違いまとめ」から、勘違いだと言っていることが勘違いだといくつ見つけられますか。人間の間違い(human error(125))の種類と対策
https://qiita.com/kaizen_nagoya/items/ae391b77fffb098b8fb4

プログラマの「プログラムが書ける」思い込みは強みだ。3つの理由。仮説(168)統計と確率(17) , OSEK(79)
https://qiita.com/kaizen_nagoya/items/bc5dd86e414de402ec29

出力(output)と呼ばないで。これは状態(state)です。
https://qiita.com/kaizen_nagoya/items/80b8b5913b2748867840

これからの情報伝達手段の在り方について考えてみよう。炎上と便乗。
https://qiita.com/kaizen_nagoya/items/71a09077ac195214f0db

ISO/IEC JTC1 SC7 Software and System Engineering
https://qiita.com/kaizen_nagoya/items/48b43f0f6976a078d907

アクセシビリティの知見を発信しよう!(再び)
https://qiita.com/kaizen_nagoya/items/03457eb9ee74105ee618

統計論及確率論輪講(再び)
https://qiita.com/kaizen_nagoya/items/590874ccfca988e85ea3

読者の心をグッと惹き寄せる7つの魔法
https://qiita.com/kaizen_nagoya/items/b1b5e89bd5c0a211d862

@kazuo_reve 新人の方によく展開している有益な情報」確認一覧
https://qiita.com/kaizen_nagoya/items/b9380888d1e5a042646b

ソースコードで議論しよう。日本語で議論するの止めましょう(あるプログラミング技術の議論報告)
https://qiita.com/kaizen_nagoya/items/8b9811c80f3338c6c0b0

脳内コンパイラの3つの危険
https://qiita.com/kaizen_nagoya/items/7025cf2d7bd9f276e382

心理学の本を読むよりはコンパイラ書いた方がよくね。仮説(34)
https://qiita.com/kaizen_nagoya/items/fa715732cc148e48880e

NASAを超えるつもりがあれば読んでください。
https://qiita.com/kaizen_nagoya/items/e81669f9cb53109157f6

データサイエンティストの気づき!「勉強して仕事に役立てない人。大嫌い!!」『それ自分かも?』ってなった!!!
https://qiita.com/kaizen_nagoya/items/d85830d58d8dd7f71d07

「ぼくの好きな先生」「人がやらないことをやれ」プログラマになるまで。仮説(37) 
https://qiita.com/kaizen_nagoya/items/53e4bded9fe5f724b3c4

なぜ経済学徒を辞め、計算機屋になったか(経済学部入学前・入学後・卒業後対応) 転職(1)
https://qiita.com/kaizen_nagoya/items/06335a1d24c099733f64

プログラミング言語教育のXYZ。 仮説(52)
https://qiita.com/kaizen_nagoya/items/1950c5810fb5c0b07be4

【24卒向け】9ヶ月後に年収1000万円を目指す。二つの関門と三つの道。
https://qiita.com/kaizen_nagoya/items/fb5bff147193f726ad25

「【25卒向け】Qiita Career Meetup for STUDENT」予習の勧め
https://qiita.com/kaizen_nagoya/items/00eadb8a6e738cb6336f

大学入試不合格でも筆記試験のない大学に入って卒業できる。卒業しなくても博士になれる。
https://qiita.com/kaizen_nagoya/items/74adec99f396d64b5fd5

全世界の不登校の子供たち「博士論文」を書こう。世界子供博士論文遠隔実践中心 安全(99)
https://qiita.com/kaizen_nagoya/items/912d69032c012bcc84f2

日本のプログラマが世界で戦える16分野。仮説(53),統計と確率(25) 転職(32)、Ethernet(58)
https://qiita.com/kaizen_nagoya/items/a7e634a996cdd02bc53b

小川メソッド 覚え(書きかけ)
https://qiita.com/kaizen_nagoya/items/3593d72eca551742df68

DoCAP(ドゥーキャップ)って何ですか?
https://qiita.com/kaizen_nagoya/items/47e0e6509ab792c43327

views 20,000越え自己記事一覧
https://qiita.com/kaizen_nagoya/items/58e8bd6450957cdecd81

Views1万越え、もうすぐ1万記事一覧 最近いいねをいただいた213記事
https://qiita.com/kaizen_nagoya/items/d2b805717a92459ce853

amazon 殿堂入りNo1レビュアになるまで。仮説(102)
https://qiita.com/kaizen_nagoya/items/83259d18921ce75a91f4

100以上いいねをいただいた記事16選
https://qiita.com/kaizen_nagoya/items/f8d958d9084ffbd15d2a

水道局10年(1976,4-1986,3)を振り返る
https://qiita.com/kaizen_nagoya/items/707fcf6fae230dd349bf

小川清最終講義、最終講義(再)計画, Ethernet(100) 英語(100) 安全(100)
https://qiita.com/kaizen_nagoya/items/e2df642e3951e35e6a53

<この記事は個人の過去の経験に基づく個人の感想です。現在所属する組織、業務とは関係がありません。>
This article is an individual impression based on my individual experience. It has nothing to do with the organization or business to which I currently belong.
Este artículo es una impresión personal basada en mi experiencia personal. No tiene nada que ver con la organización o empresa a la que pertenezco actualmente.

文書履歴(document history)

ver. 0.01 初稿  20220818

最後までおよみいただきありがとうございました。

いいね 💚、フォローをお願いします。

Thank you very much for reading to the last sentence.

Please press the like icon 💚 and follow me for your happy life.

Muchas gracias por leer hasta la última oración.

Por favor, haz clic en el ícono Me gusta 💚 y sígueme para tener una vida feliz.

0

Go to list of users who liked

1
0

Go to list of comments

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

Go to list of users who liked

1