0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

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

Last updated at Posted at 2022-08-18

はじめに(Introduction)

N4910 Working Draft, Standard for Programming Language C++

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

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

背景(back ground)

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

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

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

コンパイラの実装状況

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

作業方針(sequence)

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

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

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

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

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

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

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

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

編纂器(Compiler)

clang++ --version

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

g++- --version

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

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

文書履歴(document history)

ver. 0.01 初稿  20220818

0
0
0

Register as a new user and use Qiita more conveniently

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?