はじめに(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)
// 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)
$ 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