LoginSignup
0
0

More than 1 year has passed since last update.

29.11 Time zones [time.zone] C++N4910:2022 (678) p1424.cpp

Last updated at Posted at 2022-08-21

はじめに(Introduction)

N4910 Working Draft, Standard for Programming Language C++

C++ n4910は、ISO/IEC JTC1 SC22 WG21の作業原案(Working Draft)です。
公式のISO/IEC 14882原本ではありません。
ISO/IEC JTC1 SC22 のWG21を含むいくつかのWGでは、可能な限り作業文書を公開し、幅広い意見を求めています。

ISO/IEC JTC1 SC7からISO/IEC JTC1 SC22リエゾンとして、2000年頃、C/C++の品質向上に貢献しようとした活動をしていたことがあります。その頃は、まだISO/IEC TS 17961の原案が出る前です。Cの精神が優勢で、セキュリティ対策は補助的な位置付けでした。ISO/IEC TS 17961の制定と、C/C++のライブラリ類の見直しと、C++の進化はどんどん進んでいきます。 

進化の具合が、どちらに行こうとしているかは、コンパイルて実行させてみないとわかりません。C/C++の規格案の電子ファイルは、そのままコンパイルできる形式であるとよいと主張してきました。MISRA-C/C++, CERTC/C++でも同様です。MISRA-C/C++は、Example Suiteという形で、コード断片をコンパイルできる形で提供するようになりました。

一連の記事はコード断片をコンパイルできる形にする方法を検討してコンパイル、リンク、実行して、規格案の原文と処理系(g++, Clang++)との違いを確認し、技術内容を検討し、ISO/IEC JTC1 SC22 WG21にフィードバックするために用います。
また、CERT C++, MISRA C++等のコーディング標準のコード断片をコンパイルする際の参考にさせていただこうと考えています。CERT C++, MISRA C++が標準化の動きとの時間的なずれがあれば確認できれば幸いです。また、boostライブラリとの関連、Linux OS, 箱庭プロジェクト、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.11 Time zones [time.zone] C++N4910:2022 (678) p1424.cpp

算譜(source code)

p1424.cpp
// C++N4910 Committee Draft, Standard for Programming Language C++
// http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/n4910.pdf
const char * n4910 = "29.11 Time zones [time.zone] C++N4910:2022 (678) p1424.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.11.1 In general [time.zone.general]
// 29.11.2 Time zone database [time.zone.db]
// 29.11.2.1 Class tzdb  [time.zone.db.tzdb]
namespace std::chrono {
struct tzdb {
    string version;
    vector<time_zone> zones;
    vector<time_zone_link> links;
    vector<leap_second>    leap_seconds;
    const time_zone* locate_zone(string_view tz_name) const;
    const time_zone* current_zone() const;
};
}
// Returns:— If zones contains an element tz for which tz.name() == tz_name, a pointer to tz;
// — otherwise, if links contains an element tz_l for which tz_l.name() == tz_name, then a pointer to the element tz of zones for which tz.name() == tz_l.target().
// [Note 1: A time_zone_link specifies an alternative name for a time_zone. —end note]
// Throws: If a const time_zone* cannot be found as described in the
// Returns: element, throws a runtime_error.
// [Note 2: On non-exceptional return, the return value is always a pointer to a valid time_zone. —end note]
//  Each vector in a tzdb object is sorted to enable fast lookup.
const time_zone* locate_zone(string_view tz_name) const;
const time_zone* current_zone() const;
// Returns: A pointer to the time zone which the computer has set as its local time zone.
// 29.11.2.2 Class tzdb_list [time.zone.db.list]
namespace std::chrono {
class tzdb_list {
public:
    tzdb_list(const tzdb_list&) = delete;
    tzdb_list& operator=(const tzdb_list&) = delete;
// unspecified additional constructors
    class const_iterator;
    const tzdb& front() const noexcept;
    const_iterator erase_after(const_iterator p);
    const_iterator begin() const noexcept;
    const_iterator end()   const noexcept;
    const_iterator cbegin() const noexcept;
    const_iterator cend()   const noexcept;
};
}
//  The tzdb_list database is a singleton; the unique object of type tzdb_list can be accessed via the get_tzdb_list() function.
// [Note 1: This access is only needed for those applications that need to have long uptimes and have a need to update the time zone database while running. Other applications can implicitly access the front() of this list via the read-only namespace scope functions get_tzdb(), locate_zone(), and current_zone().
// The tzdb_list object contains a list of tzdb objects.
//  tzdb_list::const_iterator is a constant iterator which meets the Cpp17ForwardIterator requirements and has a value type of tzdb.
const tzdb& front() const noexcept;
// Synchronization: This operation is thread-safe with respect to reload_tzdb(). [Note 2: reload_tzdb() pushes a new tzdb onto the front of this container. —end note] Returns: A reference to the first tzdb in the container.
const_iterator erase_after(const_iterator p);
// Preconditions: The iterator following p is dereferenceable. Effects: Erases the tzdb referred to by the iterator following p.
// Postconditions: No pointers, references, or iterators are invalidated except those referring to the erased tzdb.
// Effects: This function first checks the version of the remote time zone database. If the versions of the local and remote databases are the same, there are no effects. Otherwise the remote database is pushed to the front of the tzdb_list accessed by get_tzdb_list().
// Synchronization: This function is thread-safe with respect to get_tzdb_list().front() and get_- tzdb_list().erase_after().
// Postconditions: No pointers, references, or iterators are invalidated.
// Returns: get_tzdb_list().front().
// Throws: runtime_error if for any reason a reference cannot be returned to a valid tzdb.
// [Note 3: It is not possible to erase the tzdb referred to by begin().
// Returns: An iterator pointing to the element following the one that was erased, or end() if no such element exists. Throws: Nothing.
//  The local time zone database is that supplied by the implementation when the program first accesses the database, for example via current_zone(). While the program is running, the implementation may choose to update the time zone database. This update shall not impact the program in any way unless the program calls the functions in this subclause. This potentially updated time zone database is referred to as the remote time zone database.
const tzdb& reload_tzdb();
const_iterator begin() const noexcept;
// Returns: An iterator referring to the first tzdb in the container. const_iterator end() const noexcept;
// Returns: An iterator referring to the position one past the last tzdb in the container. const_iterator cbegin() const noexcept;
// Returns: begin().
const_iterator cend() const noexcept;
// Returns: end().
// 29.11.2.3 Time zone database access [time.zone.db.access]
tzdb_list& get_tzdb_list();
// Effects: If this is the first access to the time zone database, initializes the database. If this call initializes the database, the resulting database will be a tzdb_list holding a single initialized tzdb.
// Synchronization: It is safe to call this function from multiple threads at one time. Returns: A reference to the database.
// Throws: runtime_error if for any reason a reference cannot be returned to a valid tzdb_list containing one or more valid tzdbs.
const tzdb& get_tzdb();
// Returns: get_tzdb_list().front().
const time_zone* locate_zone(string_view tz_name);
// Returns: get_tzdb().locate_zone(tz_name).
// [Note 1: The time zone database will be initialized if this is the first reference to the database.
const time_zone* current_zone();
// Returns: get_tzdb().current_zone().
// 29.11.2.4 Remote time zone database support [time.zone.db.remote]
// Preconditions: i.result == local_info::nonexistent is true.
// Effects: Initializes the base class with a sequence of char equivalent to that produced by os.str()
// initialized as shown below:
ostringstream os;
os << tp << " is in a gap between\n"
   << local_seconds{i.first.end.time_since_epoch()} + i.first.offset << ' '
   << i.first.abbrev << " and\n"
   << local_seconds{i.second.begin.time_since_epoch()} + i.second.offset << ' '
   << i.second.abbrev
   << " which are both equivalent to\n"
   << i.first.end << " UTC";
// [Example 1:
#include <chrono>
#include <iostream>
int main() {
    using namespace std::chrono;
    try {
        auto zt = zoned_time{"America/New_York",
                             local_days{Sunday[2]/March/2016} + 2h + 30min};
    } catch (const nonexistent_local_time& e) {
        std::cout << e.what() << '\n';
        main2();
    }
}
//Produces the output:       2016-03-13 02:30:00 is in a gap between 2016-03-13 02:00:00 EST and   2016-03-13 03:00:00 EDT which are both equivalent to    2016-03-13 07:00:00 UTC
// 29.11.3.2 Class ambiguous_local_time [time.zone.exception.ambig]
namespace std::chrono {
class ambiguous_local_time : public runtime_error {
public:
    template<class Duration>
    ambiguous_local_time(const local_time<Duration>& tp, const local_info& i);
};
}
string remote_version();
// Returns: The latest remote database version.
// [Note 1: This can be compared with get_tzdb().version to discover if the local and remote databases are equivalent.
// 29.11.3 Exception classes [time.zone.exception]
// 29.11.3.1 Class nonexistent_local_time  [time.zone.exception.nonexist]
namespace std::chrono {
class nonexistent_local_time : public runtime_error {
public:
    template<class Duration>
    nonexistent_local_time(const local_time<Duration>& tp, const local_info& i);
};
}
//  nonexistent_local_time is thrown when an attempt is made to convert a non-existent local_time to a sys_time without specifying choose::earliest or choose::latest.
template<class Duration>
nonexistent_local_time(const local_time<Duration>& tp, const local_info& i);
// Preconditions: i.result == local_info::ambiguous is true.
// Effects: Initializes the base class with a sequence of char equivalent to that produced by os.str()
initialized as shown below:
ostringstream os;
os << tp << " is ambiguous.  It could be\n"
   << tp << ' ' << i.first.abbrev << " == "
   << tp - i.first.offset << " UTC or\n"
   << tp << ' ' << i.second.abbrev  << " == "
   << tp - i.second.offset  << " UTC";
// [Example 1:
#include <chrono>
#include <iostream>
int main3() {
    using namespace std::chrono;
    try {
        auto zt = zoned_time{"America/New_York",
                             local_days{Sunday[1]/November/2016} + 1h + 30min};
//  ambiguous_local_time is thrown when an attempt is made to convert an ambiguous local_time to a sys_time without specifying choose::earliest or choose::latest.
        template<class Duration>
        ambiguous_local_time(const local_time<Duration>& tp, const local_info& i);
    } catch (const ambiguous_local_time& e) {
        std::cout << e.what() << '\n';
    }
}
// Produces the output:       2016-11-06 01:30:00 is ambiguous.  It could be       2016-11-06 01:30:00 EDT == 2016-11-06 05:30:00 UTC or 2016-11-06 01:30:00 EST == 2016-11-06 06:30:00 UTC
// 29.11.4 Information classes [time.zone.info]
// 29.11.4.1 Class sys_info[time.zone.info.sys]
namespace std::chrono {
struct sys_info {
    sys_seconds
    sys_seconds
    seconds
    minutes
    string
    begin;
    end;
    offset;
    save;
    abbrev;
};
}
//  A sys_info object can be obtained from the combination of a time_zone and either a sys_time or local_- time. It can also be obtained from a zoned_time, which is effectively a pair of a time_zone and sys_time.
//  [Note 1: This type provides a low-level interface to time zone information. Typical conversions from sys_time to local_time will use this class implicitly, not explicitly. —end note]
//  The begin and end data members indicate that, for the associated time_zone and time_point, the offset and abbrev are in effect in the range [begin, end). This information can be used to efficiently iterate the transitions of a time_zone.
//  The offset data member indicates the UTC offset in effect for the associated time_zone and time_point. The relationship between local_time and sys_time is:   offset = local_time - sys_time
// The save data member is extra information not normally needed for conversion between local_time and sys_time. If save != 0min, this sys_info is said to be on “daylight saving” time, and offset - save
// — When a local_time to sys_time conversion is unique, result == unique, first will be filled out with the correct sys_info, and second will be zero-initialized.
// — If the conversion stems from a nonexistent local_time then result == nonexistent, first will be filled out with the sys_info that ends just prior to the local_time, and second will be filled out with the sys_info that begins just after the local_time.
// — If the conversion stems from an ambiguous local_time, then result == ambiguous, first will be filled out with the sys_info that ends just after the local_time, and second will be filled out with the sys_info that starts just before the local_time.
operator<<(basic_ostream<charT, traits>& os, const sys_info& r);
// Effects: Streams out the sys_info object r in an unspecified format. // Returns: os.
// 29.11.4.2 Class local_info[time.zone.info.local]
namespace std::chrono {
struct local_info {
static constexpr int unique = 0 :
                                  static constexpr int nonexistent = 1;
static constexpr int ambiguous = 2:
                                     int result;
    sys_info first;
    sys_info second;
};
}
// suggests what offset this time_zone might use if it were off daylight saving time. However, this information should not be taken as authoritative. The only sure way to get such information is to query the time_zone with a time_point that returns a sys_info where save == 0min. There is no guarantee what time_point might return such a sys_info except that it is guaranteed not to be in the range [begin, end) (if save != 0min for this sys_info).
//  The abbrev data member indicates the current abbreviation used for the associated time_zone and time_- point. Abbreviations are not unique among the time_zones, and so one cannot reliably map abbreviations back to a time_zone and UTC offset.
template<class charT, class traits>
basic_ostream<charT, traits>&
template<class charT, class traits>
basic_ostream<charT, traits>&
operator<<(basic_ostream<charT, traits>& os, const local_info& r);
// Effects: Streams out the local_info object r in an unspecified format. // Returns: os.
// 29.11.5 Class time_zone [time.zone.timezone]
// 29.11.5.1 Overview [time.zone.overview]
namespace std::chrono {
class time_zone {
public:
    time_zone(time_zone&&) = default;
    time_zone& operator=(time_zone&&) = default;
// unspecified additional constructors
    string_view name() const noexcept;
//  [Note 1: This type provides a low-level interface to time zone information. Typical conversions from local_time to sys_time will use this class implicitly, not explicitly. —end note]
//  Describes the result of converting a local_time to a sys_time as follows:
    template<class Duration> sys_info   get_info(const sys_time<Duration>& st)   const;
    template<class Duration> local_info get_info(const local_time<Duration>& tp) const;
    template<class Duration>
    sys_time<common_type_t<Duration, seconds>>
                                            to_sys(const local_time<Duration>& tp) const;
    template<class Duration>
    sys_time<common_type_t<Duration, seconds>>
                                            to_sys(const local_time<Duration>& tp, choose z) const;
    template<class Duration>
    local_time<common_type_t<Duration, seconds>>
            to_local(const sys_time<Duration>& tp) const;
};
}
//  A time_zone represents all time zone transitions for a specific geographic area. time_zone construction is unspecified, and performed as part of database initialization.
// [Note 1: const time_zone objects can be accessed via functions such as locate_zone.
// 29.11.5.2 Member functions [time.zone.members]
string_view name() const noexcept;
// Returns: The name of the time_zone.
// [Example 1: "America/New_York". —end example]
template<class Duration>
sys_info get_info(const sys_time<Duration>& st) const;
// Returns: A sys_info i for which st is in the range [i.begin, i.end).
template<class Duration>
local_info get_info(const local_time<Duration>& tp) const;
// Returns: A local_info for tp.
template<class Duration>
sys_time<common_type_t<Duration, seconds>>
                                        to_sys(const local_time<Duration>& tp) const;
// Returns: A sys_time that is at least as fine as seconds, and will be finer if the argument tp has finer precision. This sys_time is the UTC equivalent of tp according to the rules of this time_zone.
// Throws: If the conversion from tp to a sys_time is ambiguous, throws ambiguous_local_time. If the tp represents a non-existent time between two UTC time_points, throws nonexistent_local_time.
template<class Duration>
sys_time<common_type_t<Duration, seconds>>
                                        to_sys(const local_time<Duration>& tp, choose z) const;
// Returns: A sys_time that is at least as fine as seconds, and will be finer if the argument tp has finer precision. This sys_time is the UTC equivalent of tp according to the rules of this time_- zone. If the conversion from tp to a sys_time is ambiguous, returns the earlier sys_time if z == choose::earliest, and returns the later sys_time if z == choose::latest. If the tp represents a non-existent time between two UTC time_points, then the two UTC time_points will be the same, and that UTC time_point will be returned.
template<class Duration>
local_time<common_type_t<Duration, seconds>>
        to_local(const sys_time<Duration>& tp) const;
// Returns: The local_time associated with tp and this time_zone.
namespace std::chrono {
template<> struct zoned_traits<const time_zone*> {
    static const time_zone* default_zone();
    static const time_zone* locate_zone(string_view name);
};
}
static const time_zone* default_zone();
// Returns: std::chrono::locate_zone("UTC").
static const time_zone* locate_zone(string_view name);
// 29.11.5.3 Non-member functions [time.zone.nonmembers]
bool operator==(const time_zone& x, const time_zone& y) noexcept;
// Returns: x.name() == y.name().
strong_ordering operator<=>(const time_zone& x, const time_zone& y) noexcept;
// Returns: x.name() <=> y.name().
// 29.11.6 Class template zoned_traits [time.zone.zonedtraits]
namespace std::chrono {
template<class T> struct zoned_traits {};
}
//  zoned_traits provides a means for customizing the behavior of zoned_time<Duration, TimeZonePtr> for the zoned_time default constructor, and constructors taking string_view. A specialization for const time_zone* is provided by the implementation:
// Returns: std::chrono::locate_zone(name).
// 29.11.7 Class template zoned_time [time.zone.zonedtime]
// 29.11.7.1 Overview [time.zone.zonedtime.overview]
namespace std::chrono {
template<class Duration, class TimeZonePtr = const time_zone*>
class zoned_time {
public:
    using duration = common_type_t<Duration, seconds>;
private:
    TimeZonePtr        zone_;
    sys_time<duration> tp_;
    using traits = zoned_traits<TimeZonePtr>;
// exposition only // exposition only
// exposition only
public:
    zoned_time();
    zoned_time(const zoned_time&) = default;
    zoned_time& operator=(const zoned_time&) = default;
    zoned_time(const sys_time<Duration>& st);
    explicit zoned_time(TimeZonePtr z);
    explicit zoned_time(string_view name);
    template<class Duration2>
    zoned_time(const zoned_time<Duration2, TimeZonePtr>& zt);
    zoned_time(TimeZonePtr z,    const sys_time<Duration>& st);
    zoned_time(string_view name, const sys_time<Duration>& st);
    zoned_time(TimeZonePtr z,    const local_time<Duration>& tp);
    zoned_time(string_view name, const local_time<Duration>& tp);
    zoned_time(TimeZonePtr z,    const local_time<Duration>& tp, choose c);
    zoned_time(string_view name, const local_time<Duration>& tp, choose c);
};
template<class Duration2, class TimeZonePtr2>
zoned_time(TimeZonePtr z, const zoned_time<Duration2, TimeZonePtr2>& zt);
template<class Duration2, class TimeZonePtr2>
zoned_time(TimeZonePtr z, const zoned_time<Duration2, TimeZonePtr2>& zt, choose);
template<class Duration2, class TimeZonePtr2>
zoned_time(string_view name, const zoned_time<Duration2, TimeZonePtr2>& zt);
template<class Duration2, class TimeZonePtr2>
zoned_time(string_view name, const zoned_time<Duration2, TimeZonePtr2>& zt, choose);
zoned_time& operator=(const sys_time<Duration>& st);
zoned_time& operator=(const local_time<Duration>& ut);
operator sys_time<duration>() const;
explicit operator local_time<duration>() const;
TimeZonePtr          get_time_zone()  const;
local_time<duration> get_local_time() const;
sys_time<duration>   get_sys_time() const;
sys_info             get_info() const;
zoned_time() -> zoned_time<seconds>;
template<class Duration>
zoned_time(sys_time<Duration>)
-> zoned_time<common_type_t<Duration, seconds>>;
template<class TimeZonePtrOrName>
using time-zone-representation = // exposition only
    conditional_t<is_convertible_v<TimeZonePtrOrName, string_view>,
    const time_zone*,
    remove_cvref_t<TimeZonePtrOrName>>;
template<class TimeZonePtrOrName>
zoned_time(TimeZonePtrOrName&&)
-> zoned_time<seconds, time-zone-representation<TimeZonePtrOrName>>;
template<class TimeZonePtrOrName, class Duration>
zoned_time(TimeZonePtrOrName&&, sys_time<Duration>)
-> zoned_time<common_type_t<Duration, seconds>, time-zone-representation <TimeZonePtrOrName>>;
template<class TimeZonePtrOrName, class Duration>
zoned_time(TimeZonePtrOrName&&, local_time<Duration>,
           choose = choose::earliest)
-> zoned_time<common_type_t<Duration, seconds>,
time-zone-representation <TimeZonePtrOrName>>;
template<class Duration, class TimeZonePtrOrName, class TimeZonePtr2>
zoned_time(TimeZonePtrOrName&&, zoned_time<Duration, TimeZonePtr2>,
           choose = choose::earliest)
-> zoned_time<common_type_t<Duration, seconds>,
time-zone-representation <TimeZonePtrOrName>>;
}
//  zoned_time represents a logical pairing of a time_zone and a time_point with precision Duration. zoned_- time<Duration> maintains the invariant that it always refers to a valid time zone and represents a point in time that exists and is not ambiguous in that time zone.
//  If Duration is not a specialization of chrono::duration, the program is ill-formed.
//  Every constructor of zoned_time that accepts a string_view as its first parameter does not participate in class template argument deduction (12.2.2.9).
// Constraints: traits::default_zone() is a well-formed expression.
// Effects: Initializes zone_ with traits::default_zone() and default constructs tp_.
// 29.11.7.2 Constructors [time.zone.zonedtime.ctor]
zoned_time();
zoned_time(const sys_time<Duration>& st);
// Constraints: traits::default_zone() is a well-formed expression.
// Effects: Initializes zone_ with traits::default_zone() and tp_ with st.
explicit zoned_time(TimeZonePtr z);
// Preconditions: z refers to a time zone.
// Effects: Initializes zone_ with std::move(z) and default constructs tp_.
explicit zoned_time(string_view name);
// Constraints: traits::locate_zone(string_view{}) is a well-formed expression and zoned_time is constructible from the return type of traits::locate_zone(string_view{}).
// Effects: Initializes zone_ with traits::locate_zone(name) and default constructs tp_. template<class Duration2>
zoned_time(const zoned_time<Duration2, TimeZonePtr>& y);
// Constraints: is_convertible_v<sys_time<Duration2>, sys_time<Duration>> is true. Effects: Initializes zone_ with y.zone_ and tp_ with y.tp_.
zoned_time(TimeZonePtr z, const sys_time<Duration>& st);
// Preconditions: z refers to a time zone.
// Effects: Initializes zone_ with std::move(z) and tp_ with st.
zoned_time(string_view name, const sys_time<Duration>& st);
// Constraints: zoned_time is constructible from the return type of traits::locate_zone(name) and st.
// Effects: Equivalent to construction with {traits::locate_zone(name), st}.
zoned_time(TimeZonePtr z, const local_time<Duration>& tp);
// Constraints: is_convertible_v<    decltype(declval<TimeZonePtr&>()->to_sys(local_time<Duration>{})),    sys_time<duration>>
// is true.
// Preconditions: z refers to a time zone.
// Effects: Initializes zone_ with std::move(z) and tp_ with zone_->to_sys(tp).
zoned_time(string_view name, const local_time<Duration>& tp);
// Constraints: zoned_time is constructible from the return type of traits::locate_zone(name) and tp.
// Effects: Equivalent to construction with {traits::locate_zone(name), tp}.
zoned_time(TimeZonePtr z, const local_time<Duration>& tp, choose c);
// Constraints:is_convertible_v<decltype(declval<TimeZonePtr&>()->to_sys(local_time<Duration>{}, choose::earliest)),sys_time<duration>>
// is true.
// Preconditions: z refers to a time zone.
// Effects: Initializes zone_ with std::move(z) and tp_ with zone_->to_sys(tp, c). zoned_time(string_view name, const local_time<Duration>& tp, choose c);
// Constraints: zoned_time is constructible from the return type of traits::locate_zone(name), local_time<Duration>, and choose.
// Effects: Equivalent to construction with {traits::locate_zone(name), tp, c}. template<class Duration2, class TimeZonePtr2>
zoned_time(TimeZonePtr z, const zoned_time<Duration2, TimeZonePtr2>& y);
// Constraints: is_convertible_v<sys_time<Duration2>, sys_time<Duration>> is true. Preconditions: z refers to a valid time zone.
// Effects: Initializes zone_ with std::move(z) and tp_ with y.tp_.
template<class Duration2, class TimeZonePtr2>
zoned_time(TimeZonePtr z, const zoned_time<Duration2, TimeZonePtr2>& y, choose);
// Constraints: is_convertible_v<sys_time<Duration2>, sys_time<Duration>> is true. Preconditions: z refers to a valid time zone.
// Effects: Equivalent to construction with {z, y}.
// [Note 1: The choose parameter has no effect.
template<class Duration2, class TimeZonePtr2>
zoned_time(string_view name, const zoned_time<Duration2, TimeZonePtr2>& y);
// Constraints: zoned_time is constructible from the return type of traits::locate_zone(name) and the type zoned_time<Duration2, TimeZonePtr2>.
// Effects: Equivalent to construction with {traits::locate_zone(name), y}. template<class Duration2, class TimeZonePtr2>
zoned_time(string_view name, const zoned_time<Duration2, TimeZonePtr2>& y, choose c);
// Constraints: zoned_time is constructible from the return type of traits::locate_zone(name), the type zoned_time<Duration2, TimeZonePtr2>, and the type choose.
// Effects: Equivalent to construction with {traits::locate_zone(name), y, c}. [Note 2: The choose parameter has no effect. —end note]
// 29.11.7.3 Member functions [time.zone.zonedtime.members]
zoned_time& operator=(const sys_time<Duration>& st);
// Effects: After assignment, get_sys_time() == st. This assignment has no effect on the return value of get_time_zone().
// Returns: *this.
zoned_time& operator=(const local_time<Duration>& lt);
// Effects: After assignment, get_local_time() == lt. This assignment has no effect on the return value of get_time_zone().
// Returns: *this.
operator sys_time<duration>() const;
// Returns: get_sys_time().
explicit operator local_time<duration>() const;
// Returns: get_local_time().
TimeZonePtr get_time_zone() const;
// Returns: zone_.
local_time<duration> get_local_time() const;
// Returns: zone_->to_local(tp_).
sys_time<duration> get_sys_time() const;
// Returns: tp_.
sys_info get_info() const;
// Returns: zone_->get_info(tp_).
// 29.11.7.4 Non-member functions [time.zone.zonedtime.nonmembers]
template<class Duration1, class Duration2, class TimeZonePtr>
bool operator==(const zoned_time<Duration1, TimeZonePtr>& x,
}
const zoned_time<Duration2, TimeZonePtr>& y);
// Returns: x.zone_ == y.zone_ && x.tp_ == y.tp_.
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);
// Effects: Equivalent to:
return os << format(os.getloc(), STATICALLY-WIDEN("{:L%F %T %Z}"), t);
// 9.11.8 Class leap_second [time.zone.leap]
// 29.11.8.1 Overview [time.zone.leap.overview]
namespace std::chrono {
class leap_second {
public:
    leap_second(const leap_second&) = default;
    leap_second& operator=(const leap_second&) = default;
// unspecified additional constructors
    constexpr sys_seconds date() const noexcept;
    constexpr seconds value() const noexcept;
};
}
//  Objects of type leap_second representing the date and value of the leap second insertions are constructed and stored in the time zone database when initialized.
// [Example 1 :
for (auto& l : get_tzdb().leap_seconds)
    if (l <= 2018y/March/17d)
        cout << l.date() << ": " << l.value() << '\n';
// Produces the output:
/*     1972-07-01 00:00:00: 1s
     1973-01-01 00:00:00: 1s
     1974-01-01 00:00:00: 1s
     1975-01-01 00:00:00: 1s
     1976-01-01 00:00:00: 1s
     1977-01-01 00:00:00: 1s
     1978-01-01 00:00:00: 1s
     1979-01-01 00:00:00: 1s
     1980-01-01 00:00:00: 1s
     1981-07-01 00:00:00: 1s
     1982-07-01 00:00:00: 1s
     1983-07-01 00:00:00: 1s
     1985-07-01 00:00:00: 1s
     1988-01-01 00:00:00: 1s
     1990-01-01 00:00:00: 1s
     1991-01-01 00:00:00: 1s
     1992-07-01 00:00:00: 1s
     1993-07-01 00:00:00: 1s
     1994-07-01 00:00:00: 1s
     1996-01-01 00:00:00: 1s
     1997-07-01 00:00:00: 1s
     1999-01-01 00:00:00: 1s
     2006-01-01 00:00:00: 1s
     2009-01-01 00:00:00: 1s
     2012-07-01 00:00:00: 1s
     2015-07-01 00:00:00: 1s
     2017-01-01 00:00:00: 1s */
// 29.11.8.2 Member functions [time.zone.leap.members]
constexpr sys_seconds date() const noexcept;
// Returns: The date and time at which the leap second was inserted.
constexpr seconds value() const noexcept;
// Returns: +1s to indicate a positive leap second or -1s to indicate a negative leap second.
// [Note 1: All leap seconds inserted up through 2019 were positive leap seconds.
// 29.11.8.3 Non-member functions [time.zone.leap.nonmembers]
constexpr bool operator==(const leap_second& x, const leap_second& y) noexcept;
// Returns: x.date() == y.date().
constexpr strong_ordering operator<=>(const leap_second& x, const leap_second& y) noexcept;
// Returns: x.date() <=> y.date().
template<class Duration>
constexpr bool operator==(const leap_second& x, const sys_time<Duration>& y) noexcept;
// Returns: x.date() == y.
template<class Duration>
constexpr bool operator<(const leap_second& x, const sys_time<Duration>& y) noexcept;
// Returns: x.date() < y.
template<class Duration>
constexpr bool operator<(const sys_time<Duration>& x, const leap_second& y) noexcept;
// Returns: x < y.date().
template<class Duration>
constexpr bool operator>(const leap_second& x, const sys_time<Duration>& y) noexcept;
// Returns: y < x.
template<class Duration>
constexpr bool operator>(const sys_time<Duration>& x, const leap_second& y) noexcept;
// Returns: y < x.
template<class Duration>
constexpr bool operator<=(const leap_second& x, const sys_time<Duration>& y) noexcept;
// Returns: !(y < x).
template<class Duration>
constexpr bool operator<=(const sys_time<Duration>& x, const leap_second& y) noexcept;
// Returns: !(y < x).
template<class Duration>
constexpr bool operator>=(const leap_second& x, const sys_time<Duration>& y) noexcept;
// Returns: !(x < y).
template<class Duration>
constexpr bool operator>=(const sys_time<Duration>& x, const leap_second& y) noexcept;
// Returns: !(x < 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) noexcept;
// Returns: x.date() <=> y.
// 29.11.9 Class time_zone_link [time.zone.link]
// 29.11.9.1 Overview [time.zone.link.overview]
namespace std::chrono {
class time_zone_link {
public:
    time_zone_link(time_zone_link&&) = default;
    time_zone_link& operator=(time_zone_link&&) = default;
// unspecified additional constructors
    string_view name()   const noexcept;
    string_view target() const noexcept;
};
}
//  A time_zone_link specifies an alternative name for a time_zone. time_zone_links are constructed when the time zone database is initialized.
// 29.11.9.2 Member functions [time.zone.link.members]
string_view name() const noexcept;
// Returns: The alternative name for the time zone.
string_view target() const noexcept;
// Returns: The name of the time_zone for which this time_zone_link provides an alternative name.
// 29.11.9.3 Non-member functions [time.zone.link.nonmembers]
bool operator==(const time_zone_link& x, const time_zone_link& y) noexcept;
// Returns: x.name() == y.name().
strong_ordering operator<=>(const time_zone_link& x, const time_zone_link& y) noexcept;
// Returns: x.name() <=> y.name().
int main2() {
    cout  <<  n4910 << endl;
    return EXIT_SUCCESS;
}

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

bash
$ clang++ p1424.cpp -std=03 -o p1424l -I. -Wall
In file included from p1424.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 \
 ^
p1424.cpp:17:16: warning: nested namespace definition is a C++17 extension; define each namespace separately [-Wc++17-extensions]
  namespace std::chrono {
               ^~~~~~~~
                { namespace chrono
p1424.cpp:20:14: error: use of undeclared identifier 'time_zone'; did you mean 'timezone'?
      vector<time_zone> zones;
             ^~~~~~~~~
             timezone
/usr/include/time.h:175:17: note: 'timezone' declared here
extern long int timezone;
                ^
p1424.cpp:20:14: error: template argument for template type parameter must be a type
      vector<time_zone> zones;
             ^~~~~~~~~
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/bits/stl_vector.h:388:21: note: template parameter is declared here
  template<typename _Tp, typename _Alloc = std::allocator<_Tp> >
                    ^
p1424.cpp:21:14: error: use of undeclared identifier 'time_zone_link'
      vector<time_zone_link> links;
             ^
p1424.cpp:22:14: error: use of undeclared identifier 'leap_second'
      vector<leap_second>    leap_seconds;
             ^
p1424.cpp:23:13: error: unknown type name 'time_zone'; did you mean 'time_base'?
      const time_zone* locate_zone(string_view tz_name) const;
            ^~~~~~~~~
            time_base
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/bits/localefwd.h:175:9: note: 'time_base' declared here
  class time_base;
        ^
p1424.cpp:23:36: error: unknown type name 'string_view'
      const time_zone* locate_zone(string_view tz_name) const;
                                   ^
p1424.cpp:24:13: error: unknown type name 'time_zone'; did you mean 'time_base'?
      const time_zone* current_zone() const;
            ^~~~~~~~~
            time_base
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/bits/localefwd.h:175:9: note: 'time_base' declared here
  class time_base;
        ^
p1424.cpp:34:10: error: unknown type name 'time_zone'; did you mean 'time_base'?
   const time_zone* locate_zone(string_view tz_name) const;
         ^~~~~~~~~
         time_base
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/bits/localefwd.h:175:9: note: 'time_base' declared here
  class time_base;
        ^
p1424.cpp:34:33: error: unknown type name 'string_view'
   const time_zone* locate_zone(string_view tz_name) const;
                                ^
p1424.cpp:34:54: error: non-member function cannot have 'const' qualifier
   const time_zone* locate_zone(string_view tz_name) const;
                                                     ^~~~~
p1424.cpp:35:7: error: unknown type name 'time_zone'; did you mean 'time_base'?
const time_zone* current_zone() const;
      ^~~~~~~~~
      time_base
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/bits/localefwd.h:175:9: note: 'time_base' declared here
  class time_base;
        ^
p1424.cpp:35:33: error: non-member function cannot have 'const' qualifier
const time_zone* current_zone() const;
                                ^~~~~
p1424.cpp:38:16: warning: nested namespace definition is a C++17 extension; define each namespace separately [-Wc++17-extensions]
  namespace std::chrono {
               ^~~~~~~~
                { namespace chrono
p1424.cpp:41:37: warning: deleted function definitions are a C++11 extension [-Wc++11-extensions]
      tzdb_list(const tzdb_list&) = delete;
                                    ^
p1424.cpp:42:48: warning: deleted function definitions are a C++11 extension [-Wc++11-extensions]
      tzdb_list& operator=(const tzdb_list&) = delete;
                                               ^
p1424.cpp:45:32: error: expected ';' at end of declaration list
      const tzdb& front() const noexcept;
                               ^
                               ;
p1424.cpp:47:35: error: expected ';' at end of declaration list
      const_iterator begin() const noexcept;
                                  ^
                                  ;
p1424.cpp:48:35: error: expected ';' at end of declaration list
      const_iterator end()   const noexcept;
                                  ^
                                  ;
p1424.cpp:49:36: error: expected ';' at end of declaration list
      const_iterator cbegin() const noexcept;
                                   ^
                                   ;
p1424.cpp:50:36: error: expected ';' at end of declaration list
      const_iterator cend()   const noexcept;
                                   ^
                                   ;
p1424.cpp:57:10: error: unknown type name 'tzdb'
   const tzdb& front() const noexcept;
         ^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
4 warnings and 20 errors generated.
$ clang++ p1424.cpp -std=2b -o p1424l -I. -Wall
p1424.cpp:20:14: error: use of undeclared identifier 'time_zone'; did you mean 'timezone'?
      vector<time_zone> zones;
             ^~~~~~~~~
             timezone
/usr/include/time.h:175:17: note: 'timezone' declared here
extern long int timezone;
                ^
p1424.cpp:20:14: error: template argument for template type parameter must be a type
      vector<time_zone> zones;
             ^~~~~~~~~
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/bits/stl_vector.h:388:21: note: template parameter is declared here
  template<typename _Tp, typename _Alloc = std::allocator<_Tp> >
                    ^
p1424.cpp:21:14: error: use of undeclared identifier 'time_zone_link'
      vector<time_zone_link> links;
             ^
p1424.cpp:22:14: error: use of undeclared identifier 'leap_second'
      vector<leap_second>    leap_seconds;
             ^
p1424.cpp:23:13: error: unknown type name 'time_zone'; did you mean 'time_base'?
      const time_zone* locate_zone(string_view tz_name) const;
            ^~~~~~~~~
            time_base
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/bits/localefwd.h:175:9: note: 'time_base' declared here
  class time_base;
        ^
p1424.cpp:24:13: error: unknown type name 'time_zone'; did you mean 'time_base'?
      const time_zone* current_zone() const;
            ^~~~~~~~~
            time_base
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/bits/localefwd.h:175:9: note: 'time_base' declared here
  class time_base;
        ^
p1424.cpp:34:10: error: unknown type name 'time_zone'; did you mean 'time_base'?
   const time_zone* locate_zone(string_view tz_name) const;
         ^~~~~~~~~
         time_base
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/bits/localefwd.h:175:9: note: 'time_base' declared here
  class time_base;
        ^
p1424.cpp:34:54: error: non-member function cannot have 'const' qualifier
   const time_zone* locate_zone(string_view tz_name) const;
                                                     ^~~~~
p1424.cpp:35:7: error: unknown type name 'time_zone'; did you mean 'time_base'?
const time_zone* current_zone() const;
      ^~~~~~~~~
      time_base
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/bits/localefwd.h:175:9: note: 'time_base' declared here
  class time_base;
        ^
p1424.cpp:35:33: error: non-member function cannot have 'const' qualifier
const time_zone* current_zone() const;
                                ^~~~~
p1424.cpp:57:10: error: unknown type name 'tzdb'
   const tzdb& front() const noexcept;
         ^
p1424.cpp:57:24: error: non-member function cannot have 'const' qualifier
   const tzdb& front() const noexcept;
                       ^~~~~~
p1424.cpp:59:1: error: unknown type name 'const_iterator'; did you mean 'std::_Bit_const_iterator::const_iterator'?
const_iterator erase_after(const_iterator p);
^~~~~~~~~~~~~~
std::_Bit_const_iterator::const_iterator
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/bits/stl_bvector.h:332:34: note: 'std::_Bit_const_iterator::const_iterator' declared here
    typedef _Bit_const_iterator  const_iterator;
                                 ^
p1424.cpp:59:28: error: unknown type name 'const_iterator'; did you mean 'std::_Bit_const_iterator::const_iterator'?
const_iterator erase_after(const_iterator p);
                           ^~~~~~~~~~~~~~
                           std::_Bit_const_iterator::const_iterator
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/bits/stl_bvector.h:332:34: note: 'std::_Bit_const_iterator::const_iterator' declared here
    typedef _Bit_const_iterator  const_iterator;
                                 ^
p1424.cpp:70:10: error: unknown type name 'tzdb'
   const tzdb& reload_tzdb();
         ^
p1424.cpp:71:1: error: unknown type name 'const_iterator'; did you mean 'std::_Bit_const_iterator::const_iterator'?
const_iterator begin() const noexcept;
^~~~~~~~~~~~~~
std::_Bit_const_iterator::const_iterator
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/bits/stl_bvector.h:332:34: note: 'std::_Bit_const_iterator::const_iterator' declared here
    typedef _Bit_const_iterator  const_iterator;
                                 ^
p1424.cpp:71:24: error: non-member function cannot have 'const' qualifier
const_iterator begin() const noexcept;
                       ^~~~~~
p1424.cpp:75:1: error: unknown type name 'const_iterator'; did you mean 'std::_Bit_const_iterator::const_iterator'?
const_iterator cend() const noexcept;
^~~~~~~~~~~~~~
std::_Bit_const_iterator::const_iterator
/usr/bin/../lib/gcc/x86_64-linux-gnu/10/../../../../include/c++/10/bits/stl_bvector.h:332:34: note: 'std::_Bit_const_iterator::const_iterator' declared here
    typedef _Bit_const_iterator  const_iterator;
                                 ^
p1424.cpp:75:23: error: non-member function cannot have 'const' qualifier
const_iterator cend() const noexcept;
                      ^~~~~~
fatal error: too many errors emitted, stopping now [-ferror-limit=]
20 errors generated.

$ g++ p1424.cpp -std=03 -o p1424g -I. -Wall
In file included from /usr/local/include/c++/12.1.0/atomic:38,
                 from N4910.h:11,
                 from p1424.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 \
      |  ^~~~~
p1424.cpp:45:33: warning: identifier 'noexcept' is a keyword in C++11 [-Wc++11-compat]
   45 |       const tzdb& front() const noexcept;
      |                                 ^~~~~~~~
p1424.cpp:108:68: error: invalid suffix "h" on integer constant
  108 |                                 local_days{Sunday[2]/March/2016} + 2h + 30min};
      |                                                                    ^~
p1424.cpp:108:73: error: invalid suffix "min" on integer constant
  108 |                                 local_days{Sunday[2]/March/2016} + 2h + 30min};
      |                                                                         ^~~~~
p1424.cpp:151:66: error: invalid suffix "h" on integer constant
  151 |                            local_days{Sunday[1]/November/2016} + 1h + 30min};
      |                                                                  ^~
p1424.cpp:151:71: error: invalid suffix "min" on integer constant
  151 |                            local_days{Sunday[1]/November/2016} + 1h + 30min};
      |                                                                       ^~~~~
p1424.cpp:188:14: warning: identifier 'constexpr' is a keyword in C++11 [-Wc++11-compat]
  188 |       static constexpr int unique = 0 :
      |              ^~~~~~~~~
p1424.cpp:442:17: error: invalid suffix "y" on integer constant
  442 |        if (l <= 2018y/March/17d)
      |                 ^~~~~
p1424.cpp:442:29: error: invalid suffix "d" on integer constant
  442 |        if (l <= 2018y/March/17d)
      |                             ^~~
p1424.cpp:20:14: error: 'time_zone' was not declared in this scope; did you mean 'timezone'?
   20 |       vector<time_zone> zones;
      |              ^~~~~~~~~
      |              timezone
p1424.cpp:20:23: error: template argument 1 is invalid
   20 |       vector<time_zone> zones;
      |                       ^
p1424.cpp:20:23: error: template argument 2 is invalid
p1424.cpp:21:14: error: 'time_zone_link' was not declared in this scope
   21 |       vector<time_zone_link> links;
      |              ^~~~~~~~~~~~~~
p1424.cpp:21:28: error: template argument 1 is invalid
   21 |       vector<time_zone_link> links;
      |                            ^
p1424.cpp:21:28: error: template argument 2 is invalid
p1424.cpp:22:14: error: 'leap_second' was not declared in this scope
   22 |       vector<leap_second>    leap_seconds;
      |              ^~~~~~~~~~~
p1424.cpp:22:25: error: template argument 1 is invalid
   22 |       vector<leap_second>    leap_seconds;
      |                         ^
p1424.cpp:22:25: error: template argument 2 is invalid
p1424.cpp:23:13: error: 'time_zone' does not name a type; did you mean 'time_base'?
   23 |       const time_zone* locate_zone(string_view tz_name) const;
      |             ^~~~~~~~~
      |             time_base
p1424.cpp:24:13: error: 'time_zone' does not name a type; did you mean 'time_base'?
   24 |       const time_zone* current_zone() const;
      |             ^~~~~~~~~
      |             time_base
p1424.cpp:34:10: error: 'time_zone' does not name a type
   34 |    const time_zone* locate_zone(string_view tz_name) const;
      |          ^~~~~~~~~
p1424.cpp:35:7: error: 'time_zone' does not name a type
   35 | const time_zone* current_zone() const;
      |       ^~~~~~~~~
p1424.cpp:41:37: warning: defaulted and deleted functions only available with '-std=c++11' or '-std=gnu++11' [-Wc++11-extensions]
   41 |       tzdb_list(const tzdb_list&) = delete;
      |                                     ^~~~~~
p1424.cpp:42:48: warning: defaulted and deleted functions only available with '-std=c++11' or '-std=gnu++11' [-Wc++11-extensions]
   42 |       tzdb_list& operator=(const tzdb_list&) = delete;
      |                                                ^~~~~~
p1424.cpp:45:27: error: expected ';' at end of member declaration
   45 |       const tzdb& front() const noexcept;
      |                           ^~~~~
      |                                ;
p1424.cpp:45:33: error: 'noexcept' does not name a type
   45 |       const tzdb& front() const noexcept;
      |                                 ^~~~~~~~
p1424.cpp:45:33: note: C++11 'noexcept' only available with '-std=c++11' or '-std=gnu++11'
p1424.cpp:47:30: error: expected ';' at end of member declaration
   47 |       const_iterator begin() const noexcept;
      |                              ^~~~~
      |                                   ;
p1424.cpp:47:36: error: 'noexcept' does not name a type
   47 |       const_iterator begin() const noexcept;
      |                                    ^~~~~~~~
p1424.cpp:47:36: note: C++11 'noexcept' only available with '-std=c++11' or '-std=gnu++11'
p1424.cpp:48:30: error: expected ';' at end of member declaration
   48 |       const_iterator end()   const noexcept;
      |                              ^~~~~
      |                                   ;
p1424.cpp:48:36: error: 'noexcept' does not name a type
   48 |       const_iterator end()   const noexcept;
      |                                    ^~~~~~~~
p1424.cpp:48:36: note: C++11 'noexcept' only available with '-std=c++11' or '-std=gnu++11'
p1424.cpp:49:31: error: expected ';' at end of member declaration
   49 |       const_iterator cbegin() const noexcept;
      |                               ^~~~~
      |                                    ;
p1424.cpp:49:37: error: 'noexcept' does not name a type
   49 |       const_iterator cbegin() const noexcept;
      |                                     ^~~~~~~~
p1424.cpp:49:37: note: C++11 'noexcept' only available with '-std=c++11' or '-std=gnu++11'
p1424.cpp:50:31: error: expected ';' at end of member declaration
   50 |       const_iterator cend()   const noexcept;
      |                               ^~~~~
      |                                    ;
p1424.cpp:50:37: error: 'noexcept' does not name a type
   50 |       const_iterator cend()   const noexcept;
      |                                     ^~~~~~~~
p1424.cpp:50:37: note: C++11 'noexcept' only available with '-std=c++11' or '-std=gnu++11'
p1424.cpp:57:10: error: 'tzdb' does not name a type
   57 |    const tzdb& front() const noexcept;
      |          ^~~~
p1424.cpp:59:1: error: 'const_iterator' does not name a type
   59 | const_iterator erase_after(const_iterator p);
      | ^~~~~~~~~~~~~~
p1424.cpp:70:10: error: 'tzdb' does not name a type
   70 |    const tzdb& reload_tzdb();
      |          ^~~~
p1424.cpp:71:1: error: 'const_iterator' does not name a type
   71 | const_iterator begin() const noexcept;
      | ^~~~~~~~~~~~~~
p1424.cpp:75:1: error: 'const_iterator' does not name a type
   75 | const_iterator cend() const noexcept;
      | ^~~~~~~~~~~~~~
p1424.cpp:78:1: error: 'tzdb_list' does not name a type
   78 | tzdb_list& get_tzdb_list();
      | ^~~~~~~~~
p1424.cpp:82:7: error: 'tzdb' does not name a type
   82 | const tzdb& get_tzdb();
      |       ^~~~
p1424.cpp:84:7: error: 'time_zone' does not name a type
   84 | const time_zone* locate_zone(string_view tz_name);
      |       ^~~~~~~~~
p1424.cpp:87:7: error: 'time_zone' does not name a type
   87 | const time_zone* current_zone();
      |       ^~~~~~~~~
p1424.cpp:94:8: error: 'os' does not name a type
   94 |        os << tp << " is in a gap between\n"
      |        ^~
p1424.cpp:95:60: error: expected unqualified-id before '+' token
   95 |           << local_seconds{i.first.end.time_since_epoch()} + i.first.offset << ' '
      |                                                            ^
p1424.cpp:97:63: error: expected unqualified-id before '+' token
   97 |           << local_seconds{i.second.begin.time_since_epoch()} + i.second.offset << ' '
      |                                                               ^
p1424.cpp: In function 'int main()':
p1424.cpp:107:12: warning: 'auto' changes meaning in C++11; please remove it [-Wc++11-compat]
  107 |            auto zt = zoned_time{"America/New_York",
      |            ^~~~
      |            ----
p1424.cpp:107:17: error: 'zt' does not name a type
  107 |            auto zt = zoned_time{"America/New_York",
      |                 ^~
p1424.cpp:109:25: error: ISO C++ forbids declaration of 'nonexistent_local_time' with no type [-fpermissive]
  109 |          } catch (const nonexistent_local_time& e) {
      |                         ^~~~~~~~~~~~~~~~~~~~~~
p1424.cpp:109:47: error: expected ')' before '&' token
  109 |          } catch (const nonexistent_local_time& e) {
      |                  ~                            ^
      |                                               )
p1424.cpp:109:47: error: expected '{' before '&' token
p1424.cpp:109:49: error: 'e' was not declared in this scope
  109 |          } catch (const nonexistent_local_time& e) {
      |                                                 ^
p1424.cpp: At global scope:
p1424.cpp:119:36: error: 'local_time' does not name a type; did you mean 'locale'?
  119 |         ambiguous_local_time(const local_time<Duration>& tp, const local_info& i);
      |                                    ^~~~~~~~~~
      |                                    locale
p1424.cpp:119:46: error: expected ',' or '...' before '<' token
  119 |         ambiguous_local_time(const local_time<Duration>& tp, const local_info& i);
      |                                              ^
p1424.cpp:130:36: error: 'local_time' does not name a type; did you mean 'locale'?
  130 |       nonexistent_local_time(const local_time<Duration>& tp, const local_info& i);
      |                                    ^~~~~~~~~~
      |                                    locale
p1424.cpp:130:46: error: expected ',' or '...' before '<' token
  130 |       nonexistent_local_time(const local_time<Duration>& tp, const local_info& i);
      |                                              ^
p1424.cpp:134:35: error: 'local_time' does not name a type; did you mean 'locale_t'?
  134 |      nonexistent_local_time(const local_time<Duration>& tp, const local_info& i);
      |                                   ^~~~~~~~~~
      |                                   locale_t
p1424.cpp:134:45: error: expected ',' or '...' before '<' token
  134 |      nonexistent_local_time(const local_time<Duration>& tp, const local_info& i);
      |                                             ^
p1424.cpp:134:81: error: expected constructor, destructor, or type conversion before ';' token
  134 |      nonexistent_local_time(const local_time<Duration>& tp, const local_info& i);
      |                                                                                 ^
p1424.cpp:137:1: error: 'initialized' does not name a type
  137 | initialized as shown below:
      | ^~~~~~~~~~~
p1424.cpp:139:3: error: 'os' does not name a type
  139 |   os << tp << " is ambiguous.  It could be\n"
      |   ^~
p1424.cpp: In function 'int main3()':
p1424.cpp:150:7: warning: 'auto' changes meaning in C++11; please remove it [-Wc++11-compat]
  150 |       auto zt = zoned_time{"America/New_York",
      |       ^~~~
      |       ----
p1424.cpp:150:12: error: 'zt' does not name a type
  150 |       auto zt = zoned_time{"America/New_York",
      |            ^~
p1424.cpp:153:4: error: a template declaration cannot appear at block scope
  153 |    template<class Duration>
      |    ^~~~~~~~
p1424.cpp:157:3: warning: no return statement in function returning non-void [-Wreturn-type]
  157 | } }
      |   ^
p1424.cpp: At global scope:
p1424.cpp:163:1: error: 'sys_seconds' does not name a type
  163 | sys_seconds
      | ^~~~~~~~~~~
p1424.cpp:169:1: error: 'end' does not name a type
  169 | end;
      | ^~~
p1424.cpp:170:1: error: 'offset' does not name a type; did you mean 'off_t'?
  170 | offset;
      | ^~~~~~
      | off_t
p1424.cpp:171:1: error: 'save' does not name a type
  171 | save;
      | ^~~~
p1424.cpp:172:1: error: 'abbrev' does not name a type
  172 | abbrev;
      | ^~~~~~
p1424.cpp:183:30: error: 'charT' was not declared in this scope; did you mean 'char'?
  183 |     operator<<(basic_ostream<charT, traits>& os, const sys_info& r);
      |                              ^~~~~
      |                              char
p1424.cpp:183:37: error: 'traits' was not declared in this scope
  183 |     operator<<(basic_ostream<charT, traits>& os, const sys_info& r);
      |                                     ^~~~~~
p1424.cpp:183:43: error: template argument 1 is invalid
  183 |     operator<<(basic_ostream<charT, traits>& os, const sys_info& r);
      |                                           ^
p1424.cpp:183:43: error: template argument 2 is invalid
p1424.cpp:183:56: error: 'sys_info' does not name a type
  183 |     operator<<(basic_ostream<charT, traits>& os, const sys_info& r);
      |                                                        ^~~~~~~~
p1424.cpp:183:68: error: expected constructor, destructor, or type conversion before ';' token
  183 |     operator<<(basic_ostream<charT, traits>& os, const sys_info& r);
      |                                                                    ^
p1424.cpp:188:14: error: 'constexpr' does not name a type
  188 |       static constexpr int unique = 0 :
      |              ^~~~~~~~~
p1424.cpp:188:14: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1424.cpp:190:14: error: 'constexpr' does not name a type
  190 |       static constexpr int ambiguous = 2:
      |              ^~~~~~~~~
p1424.cpp:190:14: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1424.cpp:199:1: error: expected unqualified-id before 'template'
  199 | template<class charT, class traits>
      | ^~~~~~~~
p1424.cpp:208:26: error: expected ',' or '...' before '&&' token
  208 |       time_zone(time_zone&&) = default;
      |                          ^~
p1424.cpp:208:32: warning: defaulted and deleted functions only available with '-std=c++11' or '-std=gnu++11' [-Wc++11-extensions]
  208 |       time_zone(time_zone&&) = default;
      |                                ^~~~~~~
p1424.cpp:208:7: error: invalid constructor; you probably meant 'std::chrono::time_zone (const std::chrono::time_zone&)'
  208 |       time_zone(time_zone&&) = default;
      |       ^~~~~~~~~
p1424.cpp:209:37: error: expected ',' or '...' before '&&' token
  209 |       time_zone& operator=(time_zone&&) = default;
      |                                     ^~
p1424.cpp:209:43: warning: defaulted and deleted functions only available with '-std=c++11' or '-std=gnu++11' [-Wc++11-extensions]
  209 |       time_zone& operator=(time_zone&&) = default;
      |                                           ^~~~~~~
p1424.cpp:211:7: error: 'string_view' does not name a type
  211 |       string_view name() const noexcept;
      |       ^~~~~~~~~~~
p1424.cpp:214:61: error: 'sys_time' does not name a type
  214 |          template<class Duration> sys_info   get_info(const sys_time<Duration>& st)   const;
      |                                                             ^~~~~~~~
p1424.cpp:214:69: error: expected ',' or '...' before '<' token
  214 |          template<class Duration> sys_info   get_info(const sys_time<Duration>& st)   const;
      |                                                                     ^
p1424.cpp:215:61: error: 'local_time' does not name a type
  215 |          template<class Duration> local_info get_info(const local_time<Duration>& tp) const;
      |                                                             ^~~~~~~~~~
p1424.cpp:215:71: error: expected ',' or '...' before '<' token
  215 |          template<class Duration> local_info get_info(const local_time<Duration>& tp) const;
      |                                                                       ^
p1424.cpp:217:12: error: 'sys_time' does not name a type
  217 |            sys_time<common_type_t<Duration, seconds>>
      |            ^~~~~~~~
p1424.cpp:220:12: error: 'sys_time' does not name a type
  220 |            sys_time<common_type_t<Duration, seconds>>
      |            ^~~~~~~~
p1424.cpp:223:12: error: 'local_time' does not name a type
  223 |            local_time<common_type_t<Duration, seconds>>
      |            ^~~~~~~~~~
p1424.cpp:209:18: error: defaulted declaration 'std::chrono::time_zone& std::chrono::time_zone::operator=(std::chrono::time_zone)' does not match the expected signature
  209 |       time_zone& operator=(time_zone&&) = default;
      |                  ^~~~~~~~
p1424.cpp:209:18: note: expected signature: 'std::chrono::time_zone& std::chrono::time_zone::operator=(std::chrono::time_zone&)'
p1424.cpp:229:4: error: 'string_view' does not name a type
  229 |    string_view name() const noexcept;
      |    ^~~~~~~~~~~
p1424.cpp:233:3: error: 'sys_info' does not name a type
  233 |   sys_info get_info(const sys_time<Duration>& st) const;
      |   ^~~~~~~~
p1424.cpp:236:1: error: 'local_info' does not name a type
  236 | local_info get_info(const local_time<Duration>& tp) const;
      | ^~~~~~~~~~
p1424.cpp:239:3: error: 'sys_time' does not name a type
  239 |   sys_time<common_type_t<Duration, seconds>>
      |   ^~~~~~~~
p1424.cpp:244:3: error: 'sys_time' does not name a type
  244 |   sys_time<common_type_t<Duration, seconds>>
      |   ^~~~~~~~
p1424.cpp:248:3: error: 'local_time' does not name a type; did you mean 'locale_t'?
  248 |   local_time<common_type_t<Duration, seconds>>
      |   ^~~~~~~~~~
      |   locale_t
p1424.cpp:252:23: error: 'zoned_traits' is not a class template
  252 |     template<> struct zoned_traits<const time_zone*> {
      |                       ^~~~~~~~~~~~
p1424.cpp:252:54: error: explicit specialization of non-template 'std::chrono::zoned_traits'
  252 |     template<> struct zoned_traits<const time_zone*> {
      |                                                      ^
p1424.cpp:254:43: error: 'string_view' has not been declared
  254 |       static const time_zone* locate_zone(string_view name);
      |                                           ^~~~~~~~~~~
p1424.cpp:257:14: error: 'time_zone' does not name a type
  257 | static const time_zone* default_zone();
      |              ^~~~~~~~~
p1424.cpp:259:14: error: 'time_zone' does not name a type
  259 | static const time_zone* locate_zone(string_view name);
      |              ^~~~~~~~~
p1424.cpp:261:23: error: 'time_zone' does not name a type
  261 | bool operator==(const time_zone& x, const time_zone& y) noexcept;
      |                       ^~~~~~~~~
p1424.cpp:261:43: error: 'time_zone' does not name a type
  261 | bool operator==(const time_zone& x, const time_zone& y) noexcept;
      |                                           ^~~~~~~~~
p1424.cpp:261:57: error: expected initializer before 'noexcept'
  261 | bool operator==(const time_zone& x, const time_zone& y) noexcept;
      |                                                         ^~~~~~~~
p1424.cpp:263:1: error: 'strong_ordering' does not name a type
  263 | strong_ordering operator<=>(const time_zone& x, const time_zone& y) noexcept;
      | ^~~~~~~~~~~~~~~
p1424.cpp:267:30: error: 'std::chrono::zoned_traits' is not a template
  267 |     template<class T> struct zoned_traits {};
      |                              ^~~~~~~~~~~~
p1424.cpp:252:23: note: previous declaration here
  252 |     template<> struct zoned_traits<const time_zone*> {
      |                       ^~~~~~~~~~~~
p1424.cpp:277:13: error: expected nested-name-specifier before 'duration'
  277 |       using duration = common_type_t<Duration, seconds>;
      |             ^~~~~~~~
p1424.cpp:280:3: error: 'sys_time' does not name a type
  280 |   sys_time<duration> tp_;
      |   ^~~~~~~~
p1424.cpp:281:9: error: expected nested-name-specifier before 'traits'
  281 |   using traits = zoned_traits<TimeZonePtr>;
      |         ^~~~~~
p1424.cpp:286:35: warning: defaulted and deleted functions only available with '-std=c++11' or '-std=gnu++11' [-Wc++11-extensions]
  286 |   zoned_time(const zoned_time&) = default;
      |                                   ^~~~~~~
p1424.cpp:287:46: warning: defaulted and deleted functions only available with '-std=c++11' or '-std=gnu++11' [-Wc++11-extensions]
  287 |   zoned_time& operator=(const zoned_time&) = default;
      |                                              ^~~~~~~
p1424.cpp:288:20: error: 'sys_time' does not name a type
  288 |   zoned_time(const sys_time<Duration>& st);
      |                    ^~~~~~~~
p1424.cpp:288:28: error: expected ',' or '...' before '<' token
  288 |   zoned_time(const sys_time<Duration>& st);
      |                            ^
p1424.cpp:290:34: error: expected ')' before 'name'
  290 |   explicit zoned_time(string_view name);
      |                      ~           ^~~~~
      |                                  )
p1424.cpp:293:38: error: 'sys_time' does not name a type
  293 |   zoned_time(TimeZonePtr z,    const sys_time<Duration>& st);
      |                                      ^~~~~~~~
p1424.cpp:293:46: error: expected ',' or '...' before '<' token
  293 |   zoned_time(TimeZonePtr z,    const sys_time<Duration>& st);
      |                                              ^
p1424.cpp:294:25: error: expected ')' before 'name'
  294 |   zoned_time(string_view name, const sys_time<Duration>& st);
      |             ~           ^~~~~
      |                         )
p1424.cpp:295:36: error: 'local_time' does not name a type
  295 | zoned_time(TimeZonePtr z,    const local_time<Duration>& tp);
      |                                    ^~~~~~~~~~
p1424.cpp:295:46: error: expected ',' or '...' before '<' token
  295 | zoned_time(TimeZonePtr z,    const local_time<Duration>& tp);
      |                                              ^
p1424.cpp:295:1: error: 'std::chrono::zoned_time<Duration, TimeZonePtr>::zoned_time(TimeZonePtr, int)' cannot be overloaded with 'std::chrono::zoned_time<Duration, TimeZonePtr>::zoned_time(TimeZonePtr, int)'
  295 | zoned_time(TimeZonePtr z,    const local_time<Duration>& tp);
      | ^~~~~~~~~~
p1424.cpp:293:3: note: previous declaration 'std::chrono::zoned_time<Duration, TimeZonePtr>::zoned_time(TimeZonePtr, int)'
  293 |   zoned_time(TimeZonePtr z,    const sys_time<Duration>& st);
      |   ^~~~~~~~~~
p1424.cpp:296:23: error: expected ')' before 'name'
  296 | zoned_time(string_view name, const local_time<Duration>& tp);
      |           ~           ^~~~~
      |                       )
p1424.cpp:297:36: error: 'local_time' does not name a type
  297 | zoned_time(TimeZonePtr z,    const local_time<Duration>& tp, choose c);
      |                                    ^~~~~~~~~~
p1424.cpp:297:46: error: expected ',' or '...' before '<' token
  297 | zoned_time(TimeZonePtr z,    const local_time<Duration>& tp, choose c);
      |                                              ^
p1424.cpp:297:1: error: 'std::chrono::zoned_time<Duration, TimeZonePtr>::zoned_time(TimeZonePtr, int)' cannot be overloaded with 'std::chrono::zoned_time<Duration, TimeZonePtr>::zoned_time(TimeZonePtr, int)'
  297 | zoned_time(TimeZonePtr z,    const local_time<Duration>& tp, choose c);
      | ^~~~~~~~~~
p1424.cpp:293:3: note: previous declaration 'std::chrono::zoned_time<Duration, TimeZonePtr>::zoned_time(TimeZonePtr, int)'
  293 |   zoned_time(TimeZonePtr z,    const sys_time<Duration>& st);
      |   ^~~~~~~~~~
p1424.cpp:298:23: error: expected ')' before 'name'
  298 | zoned_time(string_view name, const local_time<Duration>& tp, choose c);
      |           ~           ^~~~~
      |                       )
p1424.cpp:301:13: error: expected constructor, destructor, or type conversion before '(' token
  301 |   zoned_time(TimeZonePtr z, const zoned_time<Duration2, TimeZonePtr2>& zt);
      |             ^
p1424.cpp:303:13: error: expected constructor, destructor, or type conversion before '(' token
  303 |   zoned_time(TimeZonePtr z, const zoned_time<Duration2, TimeZonePtr2>& zt, choose);
      |             ^
p1424.cpp:305:13: error: expected constructor, destructor, or type conversion before '(' token
  305 |   zoned_time(string_view name, const zoned_time<Duration2, TimeZonePtr2>& zt);
      |             ^
p1424.cpp:307:13: error: expected constructor, destructor, or type conversion before '(' token
  307 |   zoned_time(string_view name, const zoned_time<Duration2, TimeZonePtr2>& zt, choose);
      |             ^
p1424.cpp:308:1: error: invalid use of template-name 'std::chrono::zoned_time' without an argument list
  308 | zoned_time& operator=(const sys_time<Duration>& st);
      | ^~~~~~~~~~
p1424.cpp:308:1: note: class template argument deduction is only available with '-std=c++17' or '-std=gnu++1'
p1424.cpp:275:11: note: 'template<class Duration, class TimeZonePtr> class std::chrono::zoned_time' declared here
  275 |     class zoned_time {
      |           ^~~~~~~~~~
p1424.cpp:309:1: error: invalid use of template-name 'std::chrono::zoned_time' without an argument list
  309 | zoned_time& operator=(const local_time<Duration>& ut);
      | ^~~~~~~~~~
p1424.cpp:309:1: note: class template argument deduction is only available with '-std=c++17' or '-std=gnu++1'
p1424.cpp:275:11: note: 'template<class Duration, class TimeZonePtr> class std::chrono::zoned_time' declared here
  275 |     class zoned_time {
      |           ^~~~~~~~~~
p1424.cpp:310:10: error: 'sys_time' does not name a type
  310 | operator sys_time<duration>() const;
      |          ^~~~~~~~
p1424.cpp:311:19: error: 'local_time' does not name a type
  311 | explicit operator local_time<duration>() const;
      |                   ^~~~~~~~~~
p1424.cpp:312:1: error: 'TimeZonePtr' does not name a type
  312 | TimeZonePtr          get_time_zone()  const;
      | ^~~~~~~~~~~
p1424.cpp:313:1: error: 'local_time' does not name a type
  313 | local_time<duration> get_local_time() const;
      | ^~~~~~~~~~
p1424.cpp:314:3: error: 'sys_time' does not name a type
  314 |   sys_time<duration>   get_sys_time() const;
      |   ^~~~~~~~
p1424.cpp:315:35: error: non-member function 'std::chrono::sys_info std::chrono::get_info()' cannot have cv-qualifier
  315 |   sys_info             get_info() const;
      |                                   ^~~~~
p1424.cpp:316:28: error: 'seconds' was not declared in this scope; did you mean 'ends'?
  316 | zoned_time() -> zoned_time<seconds>;
      |                            ^~~~~~~
      |                            ends
p1424.cpp:316:35: error: template argument 1 is invalid
  316 | zoned_time() -> zoned_time<seconds>;
      |                                   ^
p1424.cpp:316:36: error: expected constructor, destructor, or type conversion before ';' token
  316 | zoned_time() -> zoned_time<seconds>;
      |                                    ^
p1424.cpp:318:13: error: expected constructor, destructor, or type conversion before '(' token
  318 |   zoned_time(sys_time<Duration>)
      |             ^
p1424.cpp:321:1: error: expected unqualified-id before 'using'
  321 | using time-zone-representation = // exposition only
      | ^~~~~
p1424.cpp:326:31: error: expected ',' or '...' before '&&' token
  326 |   zoned_time(TimeZonePtrOrName&&)
      |                               ^~
p1424.cpp:327:15: error: 'seconds' was not declared in this scope; did you mean 'ends'?
  327 | -> zoned_time<seconds, time-zone-representation<TimeZonePtrOrName>>;
      |               ^~~~~~~
      |               ends
p1424.cpp:327:24: error: 'time_t time(time_t*)' cannot appear in a constant-expression
  327 | -> zoned_time<seconds, time-zone-representation<TimeZonePtrOrName>>;
      |                        ^~~~
p1424.cpp:327:29: error: 'zone' was not declared in this scope
  327 | -> zoned_time<seconds, time-zone-representation<TimeZonePtrOrName>>;
      |                             ^~~~
p1424.cpp:327:34: error: 'representation' was not declared in this scope
  327 | -> zoned_time<seconds, time-zone-representation<TimeZonePtrOrName>>;
      |                                  ^~~~~~~~~~~~~~
p1424.cpp:327:66: error: template argument 1 is invalid
  327 | -> zoned_time<seconds, time-zone-representation<TimeZonePtrOrName>>;
      |                                                                  ^~
p1424.cpp:327:66: error: template argument 2 is invalid
p1424.cpp:327:15: error: 'seconds' was not declared in this scope; did you mean 'ends'?
  327 | -> zoned_time<seconds, time-zone-representation<TimeZonePtrOrName>>;
      |               ^~~~~~~
      |               ends
p1424.cpp:327:24: error: 'time_t time(time_t*)' cannot appear in a constant-expression
  327 | -> zoned_time<seconds, time-zone-representation<TimeZonePtrOrName>>;
      |                        ^~~~
p1424.cpp:327:29: error: 'zone' was not declared in this scope
  327 | -> zoned_time<seconds, time-zone-representation<TimeZonePtrOrName>>;
      |                             ^~~~
p1424.cpp:327:34: error: 'representation' was not declared in this scope
  327 | -> zoned_time<seconds, time-zone-representation<TimeZonePtrOrName>>;
      |                                  ^~~~~~~~~~~~~~
p1424.cpp:327:66: error: template argument 1 is invalid
  327 | -> zoned_time<seconds, time-zone-representation<TimeZonePtrOrName>>;
      |                                                                  ^~
p1424.cpp:327:66: error: template argument 2 is invalid
p1424.cpp:327:15: error: 'seconds' was not declared in this scope; did you mean 'ends'?
  327 | -> zoned_time<seconds, time-zone-representation<TimeZonePtrOrName>>;
      |               ^~~~~~~
      |               ends
p1424.cpp:327:24: error: 'time_t time(time_t*)' cannot appear in a constant-expression
  327 | -> zoned_time<seconds, time-zone-representation<TimeZonePtrOrName>>;
      |                        ^~~~
p1424.cpp:327:29: error: 'zone' was not declared in this scope
  327 | -> zoned_time<seconds, time-zone-representation<TimeZonePtrOrName>>;
      |                             ^~~~
p1424.cpp:327:34: error: 'representation' was not declared in this scope
  327 | -> zoned_time<seconds, time-zone-representation<TimeZonePtrOrName>>;
      |                                  ^~~~~~~~~~~~~~
p1424.cpp:327:66: error: template argument 1 is invalid
  327 | -> zoned_time<seconds, time-zone-representation<TimeZonePtrOrName>>;
      |                                                                  ^~
p1424.cpp:327:66: error: template argument 2 is invalid
p1424.cpp:327:15: error: 'seconds' was not declared in this scope; did you mean 'ends'?
  327 | -> zoned_time<seconds, time-zone-representation<TimeZonePtrOrName>>;
      |               ^~~~~~~
      |               ends
p1424.cpp:327:24: error: 'time_t time(time_t*)' cannot appear in a constant-expression
  327 | -> zoned_time<seconds, time-zone-representation<TimeZonePtrOrName>>;
      |                        ^~~~
p1424.cpp:327:29: error: 'zone' was not declared in this scope
  327 | -> zoned_time<seconds, time-zone-representation<TimeZonePtrOrName>>;
      |                             ^~~~
p1424.cpp:327:34: error: 'representation' was not declared in this scope
  327 | -> zoned_time<seconds, time-zone-representation<TimeZonePtrOrName>>;
      |                                  ^~~~~~~~~~~~~~
p1424.cpp:327:66: error: template argument 1 is invalid
  327 | -> zoned_time<seconds, time-zone-representation<TimeZonePtrOrName>>;
      |                                                                  ^~
p1424.cpp:327:66: error: template argument 2 is invalid
p1424.cpp:327:4: error: invalid use of template-name 'std::chrono::zoned_time' without an argument list
  327 | -> zoned_time<seconds, time-zone-representation<TimeZonePtrOrName>>;
      |    ^~~~~~~~~~
p1424.cpp:327:4: note: class template argument deduction is only available with '-std=c++17' or '-std=gnu++1'
p1424.cpp:275:11: note: 'template<class Duration, class TimeZonePtr> class std::chrono::zoned_time' declared here
  275 |     class zoned_time {
      |           ^~~~~~~~~~
p1424.cpp:327:14: error: expected constructor, destructor, or type conversion before '<' token
  327 | -> zoned_time<seconds, time-zone-representation<TimeZonePtrOrName>>;
      |              ^
p1424.cpp:329:31: error: expected ',' or '...' before '&&' token
  329 |   zoned_time(TimeZonePtrOrName&&, sys_time<Duration>)
      |                               ^~
p1424.cpp:330:15: error: 'common_type_t' was not declared in this scope
  330 | -> zoned_time<common_type_t<Duration, seconds>, time-zone-representation <TimeZonePtrOrName>>;
      |               ^~~~~~~~~~~~~
p1424.cpp:330:39: error: 'seconds' was not declared in this scope; did you mean 'ends'?
  330 | -> zoned_time<common_type_t<Duration, seconds>, time-zone-representation <TimeZonePtrOrName>>;
      |                                       ^~~~~~~
      |                                       ends
p1424.cpp:330:46: error: template argument 1 is invalid
  330 | -> zoned_time<common_type_t<Duration, seconds>, time-zone-representation <TimeZonePtrOrName>>;
      |                                              ^
p1424.cpp:330:46: error: template argument 2 is invalid
p1424.cpp:330:15: error: 'common_type_t' was not declared in this scope
  330 | -> zoned_time<common_type_t<Duration, seconds>, time-zone-representation <TimeZonePtrOrName>>;
      |               ^~~~~~~~~~~~~
p1424.cpp:330:39: error: 'seconds' was not declared in this scope; did you mean 'ends'?
  330 | -> zoned_time<common_type_t<Duration, seconds>, time-zone-representation <TimeZonePtrOrName>>;
      |                                       ^~~~~~~
      |                                       ends
p1424.cpp:330:46: error: template argument 1 is invalid
  330 | -> zoned_time<common_type_t<Duration, seconds>, time-zone-representation <TimeZonePtrOrName>>;
      |                                              ^
p1424.cpp:330:46: error: template argument 2 is invalid
p1424.cpp:330:15: error: 'common_type_t' was not declared in this scope
  330 | -> zoned_time<common_type_t<Duration, seconds>, time-zone-representation <TimeZonePtrOrName>>;
      |               ^~~~~~~~~~~~~
p1424.cpp:330:39: error: 'seconds' was not declared in this scope; did you mean 'ends'?
  330 | -> zoned_time<common_type_t<Duration, seconds>, time-zone-representation <TimeZonePtrOrName>>;
      |                                       ^~~~~~~
      |                                       ends
p1424.cpp:330:46: error: template argument 1 is invalid
  330 | -> zoned_time<common_type_t<Duration, seconds>, time-zone-representation <TimeZonePtrOrName>>;
      |                                              ^
p1424.cpp:330:46: error: template argument 2 is invalid
p1424.cpp:330:15: error: 'common_type_t' was not declared in this scope
  330 | -> zoned_time<common_type_t<Duration, seconds>, time-zone-representation <TimeZonePtrOrName>>;
      |               ^~~~~~~~~~~~~
p1424.cpp:330:39: error: 'seconds' was not declared in this scope; did you mean 'ends'?
  330 | -> zoned_time<common_type_t<Duration, seconds>, time-zone-representation <TimeZonePtrOrName>>;
      |                                       ^~~~~~~
      |                                       ends
p1424.cpp:330:46: error: template argument 1 is invalid
  330 | -> zoned_time<common_type_t<Duration, seconds>, time-zone-representation <TimeZonePtrOrName>>;
      |                                              ^
p1424.cpp:330:46: error: template argument 2 is invalid
p1424.cpp:330:4: error: invalid use of template-name 'std::chrono::zoned_time' without an argument list
  330 | -> zoned_time<common_type_t<Duration, seconds>, time-zone-representation <TimeZonePtrOrName>>;
      |    ^~~~~~~~~~
p1424.cpp:330:4: note: class template argument deduction is only available with '-std=c++17' or '-std=gnu++1'
p1424.cpp:275:11: note: 'template<class Duration, class TimeZonePtr> class std::chrono::zoned_time' declared here
  275 |     class zoned_time {
      |           ^~~~~~~~~~
p1424.cpp:330:14: error: expected constructor, destructor, or type conversion before '<' token
  330 | -> zoned_time<common_type_t<Duration, seconds>, time-zone-representation <TimeZonePtrOrName>>;
      |              ^
p1424.cpp:332:31: error: expected ',' or '...' before '&&' token
  332 |   zoned_time(TimeZonePtrOrName&&, local_time<Duration>,
      |                               ^~
p1424.cpp:334:19: error: 'common_type_t' was not declared in this scope
  334 |     -> zoned_time<common_type_t<Duration, seconds>,
      |                   ^~~~~~~~~~~~~
p1424.cpp:334:43: error: 'seconds' was not declared in this scope; did you mean 'ends'?
  334 |     -> zoned_time<common_type_t<Duration, seconds>,
      |                                           ^~~~~~~
      |                                           ends
p1424.cpp:334:50: error: template argument 1 is invalid
  334 |     -> zoned_time<common_type_t<Duration, seconds>,
      |                                                  ^
p1424.cpp:334:50: error: template argument 2 is invalid
p1424.cpp:334:19: error: 'common_type_t' was not declared in this scope
  334 |     -> zoned_time<common_type_t<Duration, seconds>,
      |                   ^~~~~~~~~~~~~
p1424.cpp:334:43: error: 'seconds' was not declared in this scope; did you mean 'ends'?
  334 |     -> zoned_time<common_type_t<Duration, seconds>,
      |                                           ^~~~~~~
      |                                           ends
p1424.cpp:334:50: error: template argument 1 is invalid
  334 |     -> zoned_time<common_type_t<Duration, seconds>,
      |                                                  ^
p1424.cpp:334:50: error: template argument 2 is invalid
p1424.cpp:334:19: error: 'common_type_t' was not declared in this scope
  334 |     -> zoned_time<common_type_t<Duration, seconds>,
      |                   ^~~~~~~~~~~~~
p1424.cpp:334:43: error: 'seconds' was not declared in this scope; did you mean 'ends'?
  334 |     -> zoned_time<common_type_t<Duration, seconds>,
      |                                           ^~~~~~~
      |                                           ends
p1424.cpp:334:50: error: template argument 1 is invalid
  334 |     -> zoned_time<common_type_t<Duration, seconds>,
      |                                                  ^
p1424.cpp:334:50: error: template argument 2 is invalid
p1424.cpp:334:19: error: 'common_type_t' was not declared in this scope
  334 |     -> zoned_time<common_type_t<Duration, seconds>,
      |                   ^~~~~~~~~~~~~
p1424.cpp:334:43: error: 'seconds' was not declared in this scope; did you mean 'ends'?
  334 |     -> zoned_time<common_type_t<Duration, seconds>,
      |                                           ^~~~~~~
      |                                           ends
p1424.cpp:334:50: error: template argument 1 is invalid
  334 |     -> zoned_time<common_type_t<Duration, seconds>,
      |                                                  ^
p1424.cpp:334:50: error: template argument 2 is invalid
p1424.cpp:334:8: error: invalid use of template-name 'std::chrono::zoned_time' without an argument list
  334 |     -> zoned_time<common_type_t<Duration, seconds>,
      |        ^~~~~~~~~~
p1424.cpp:334:8: note: class template argument deduction is only available with '-std=c++17' or '-std=gnu++1'
p1424.cpp:275:11: note: 'template<class Duration, class TimeZonePtr> class std::chrono::zoned_time' declared here
  275 |     class zoned_time {
      |           ^~~~~~~~~~
p1424.cpp:334:18: error: expected constructor, destructor, or type conversion before '<' token
  334 |     -> zoned_time<common_type_t<Duration, seconds>,
      |                  ^
p1424.cpp:337:31: error: expected ',' or '...' before '&&' token
  337 |   zoned_time(TimeZonePtrOrName&&, zoned_time<Duration, TimeZonePtr2>,
      |                               ^~
p1424.cpp:339:15: error: 'common_type_t' was not declared in this scope
  339 | -> zoned_time<common_type_t<Duration, seconds>,
      |               ^~~~~~~~~~~~~
p1424.cpp:339:39: error: 'seconds' was not declared in this scope; did you mean 'ends'?
  339 | -> zoned_time<common_type_t<Duration, seconds>,
      |                                       ^~~~~~~
      |                                       ends
p1424.cpp:339:46: error: template argument 1 is invalid
  339 | -> zoned_time<common_type_t<Duration, seconds>,
      |                                              ^
p1424.cpp:339:46: error: template argument 2 is invalid
p1424.cpp:339:15: error: 'common_type_t' was not declared in this scope
  339 | -> zoned_time<common_type_t<Duration, seconds>,
      |               ^~~~~~~~~~~~~
p1424.cpp:339:39: error: 'seconds' was not declared in this scope; did you mean 'ends'?
  339 | -> zoned_time<common_type_t<Duration, seconds>,
      |                                       ^~~~~~~
      |                                       ends
p1424.cpp:339:46: error: template argument 1 is invalid
  339 | -> zoned_time<common_type_t<Duration, seconds>,
      |                                              ^
p1424.cpp:339:46: error: template argument 2 is invalid
p1424.cpp:339:15: error: 'common_type_t' was not declared in this scope
  339 | -> zoned_time<common_type_t<Duration, seconds>,
      |               ^~~~~~~~~~~~~
p1424.cpp:339:39: error: 'seconds' was not declared in this scope; did you mean 'ends'?
  339 | -> zoned_time<common_type_t<Duration, seconds>,
      |                                       ^~~~~~~
      |                                       ends
p1424.cpp:339:46: error: template argument 1 is invalid
  339 | -> zoned_time<common_type_t<Duration, seconds>,
      |                                              ^
p1424.cpp:339:46: error: template argument 2 is invalid
p1424.cpp:339:15: error: 'common_type_t' was not declared in this scope
  339 | -> zoned_time<common_type_t<Duration, seconds>,
      |               ^~~~~~~~~~~~~
p1424.cpp:339:39: error: 'seconds' was not declared in this scope; did you mean 'ends'?
  339 | -> zoned_time<common_type_t<Duration, seconds>,
      |                                       ^~~~~~~
      |                                       ends
p1424.cpp:339:46: error: template argument 1 is invalid
  339 | -> zoned_time<common_type_t<Duration, seconds>,
      |                                              ^
p1424.cpp:339:46: error: template argument 2 is invalid
p1424.cpp:339:4: error: invalid use of template-name 'std::chrono::zoned_time' without an argument list
  339 | -> zoned_time<common_type_t<Duration, seconds>,
      |    ^~~~~~~~~~
p1424.cpp:339:4: note: class template argument deduction is only available with '-std=c++17' or '-std=gnu++1'
p1424.cpp:275:11: note: 'template<class Duration, class TimeZonePtr> class std::chrono::zoned_time' declared here
  275 |     class zoned_time {
      |           ^~~~~~~~~~
p1424.cpp:339:14: error: expected constructor, destructor, or type conversion before '<' token
  339 | -> zoned_time<common_type_t<Duration, seconds>,
      |              ^
p1424.cpp:348:13: error: expected constructor, destructor, or type conversion before ';' token
  348 | zoned_time();
      |             ^
p1424.cpp:349:18: error: 'sys_time' does not name a type
  349 | zoned_time(const sys_time<Duration>& st);
      |                  ^~~~~~~~
p1424.cpp:349:26: error: expected ',' or '...' before '<' token
  349 | zoned_time(const sys_time<Duration>& st);
      |                          ^
p1424.cpp:349:41: error: expected constructor, destructor, or type conversion before ';' token
  349 | zoned_time(const sys_time<Duration>& st);
      |                                         ^
p1424.cpp:352:10: error: ISO C++ forbids declaration of 'zoned_time' with no type [-fpermissive]
  352 | explicit zoned_time(TimeZonePtr z);
      |          ^~~~~~~~~~
p1424.cpp:352:1: error: 'explicit' outside class declaration
  352 | explicit zoned_time(TimeZonePtr z);
      | ^~~~~~~~
p1424.cpp:352:21: error: 'TimeZonePtr' was not declared in this scope; did you mean 'timezone'?
  352 | explicit zoned_time(TimeZonePtr z);
      |                     ^~~~~~~~~~~
      |                     timezone
p1424.cpp:355:10: error: ISO C++ forbids declaration of 'zoned_time' with no type [-fpermissive]
  355 | explicit zoned_time(string_view name);
      |          ^~~~~~~~~~
p1424.cpp:355:1: error: 'explicit' outside class declaration
  355 | explicit zoned_time(string_view name);
      | ^~~~~~~~
p1424.cpp:355:10: error: redefinition of 'int zoned_time'
  355 | explicit zoned_time(string_view name);
      |          ^~~~~~~~~~
p1424.cpp:352:10: note: 'int zoned_time' previously defined here
  352 | explicit zoned_time(TimeZonePtr z);
      |          ^~~~~~~~~~
p1424.cpp:355:21: error: 'string_view' was not declared in this scope
  355 | explicit zoned_time(string_view name);
      |                     ^~~~~~~~~~~
p1424.cpp:355:21: note: 'std::string_view' is only available from C++17 onwards
p1424.cpp:358:18: error: 'zoned_time' does not name a type
  358 | zoned_time(const zoned_time<Duration2, TimeZonePtr>& y);
      |                  ^~~~~~~~~~
p1424.cpp:358:28: error: expected ',' or '...' before '<' token
  358 | zoned_time(const zoned_time<Duration2, TimeZonePtr>& y);
      |                            ^
p1424.cpp:358:56: error: expected constructor, destructor, or type conversion before ';' token
  358 | zoned_time(const zoned_time<Duration2, TimeZonePtr>& y);
      |                                                        ^
p1424.cpp:360:11: error: expected constructor, destructor, or type conversion before '(' token
  360 | zoned_time(TimeZonePtr z, const sys_time<Duration>& st);
      |           ^
p1424.cpp:363:11: error: expected constructor, destructor, or type conversion before '(' token
  363 | zoned_time(string_view name, const sys_time<Duration>& st);
      |           ^
p1424.cpp:366:11: error: expected constructor, destructor, or type conversion before '(' token
  366 | zoned_time(TimeZonePtr z, const local_time<Duration>& tp);
      |           ^
p1424.cpp:371:11: error: expected constructor, destructor, or type conversion before '(' token
  371 | zoned_time(string_view name, const local_time<Duration>& tp);
      |           ^
p1424.cpp:374:11: error: expected constructor, destructor, or type conversion before '(' token
  374 | zoned_time(TimeZonePtr z, const local_time<Duration>& tp, choose c);
      |           ^
p1424.cpp:381:11: error: expected constructor, destructor, or type conversion before '(' token
  381 | zoned_time(TimeZonePtr z, const zoned_time<Duration2, TimeZonePtr2>& y);
      |           ^
p1424.cpp:385:13: error: expected constructor, destructor, or type conversion before '(' token
  385 |   zoned_time(TimeZonePtr z, const zoned_time<Duration2, TimeZonePtr2>& y, choose);
      |             ^
p1424.cpp:390:13: error: expected constructor, destructor, or type conversion before '(' token
  390 |   zoned_time(string_view name, const zoned_time<Duration2, TimeZonePtr2>& y);
      |             ^
p1424.cpp:393:11: error: expected constructor, destructor, or type conversion before '(' token
  393 | zoned_time(string_view name, const zoned_time<Duration2, TimeZonePtr2>& y, choose c);
      |           ^
p1424.cpp:397:1: error: 'zoned_time' does not name a type
  397 | zoned_time& operator=(const sys_time<Duration>& st);
      | ^~~~~~~~~~
p1424.cpp:400:1: error: 'zoned_time' does not name a type
  400 | zoned_time& operator=(const local_time<Duration>& lt);
      | ^~~~~~~~~~
p1424.cpp:403:10: error: 'sys_time' does not name a type
  403 | operator sys_time<duration>() const;
      |          ^~~~~~~~
p1424.cpp:405:19: error: 'local_time' does not name a type; did you mean 'locale_t'?
  405 | explicit operator local_time<duration>() const;
      |                   ^~~~~~~~~~
      |                   locale_t
p1424.cpp:407:1: error: 'TimeZonePtr' does not name a type
  407 | TimeZonePtr get_time_zone() const;
      | ^~~~~~~~~~~
p1424.cpp:409:1: error: 'local_time' does not name a type; did you mean 'locale_t'?
  409 | local_time<duration> get_local_time() const;
      | ^~~~~~~~~~
      | locale_t
p1424.cpp:411:1: error: 'sys_time' does not name a type
  411 | sys_time<duration> get_sys_time() const;
      | ^~~~~~~~
p1424.cpp:413:1: error: 'sys_info' does not name a type
  413 | sys_info get_info() const;
      | ^~~~~~~~
p1424.cpp:417:25: error: 'zoned_time' does not name a type
  417 |   bool operator==(const zoned_time<Duration1, TimeZonePtr>& x,
      |                         ^~~~~~~~~~
p1424.cpp:417:35: error: expected ',' or '...' before '<' token
  417 |   bool operator==(const zoned_time<Duration1, TimeZonePtr>& x,
      |                                   ^
p1424.cpp:417:63: error: expected ')' before '}' token
  417 |   bool operator==(const zoned_time<Duration1, TimeZonePtr>& x,
      |                  ~                                            ^
      |                                                               )
  418 | }
      | ~                                                              
p1424.cpp:418:1: error: expected initializer before '}' token
  418 | }
      | ^
p1424.cpp:418:1: error: expected declaration before '}' token
p1424.cpp:419:20: error: 'zoned_time' does not name a type
  419 |              const zoned_time<Duration2, TimeZonePtr>& y);
      |                    ^~~~~~~~~~
p1424.cpp:424:18: error: 'zoned_time' does not name a type
  424 |            const zoned_time<Duration, TimeZonePtr>& t);
      |                  ^~~~~~~~~~
p1424.cpp:424:28: error: expected ',' or '...' before '<' token
  424 |            const zoned_time<Duration, TimeZonePtr>& t);
      |                            ^
p1424.cpp:426:1: error: expected unqualified-id before 'return'
  426 | return os << format(os.getloc(), STATICALLY-WIDEN("{:L%F %T %Z}"), t);
      | ^~~~~~
p1424.cpp:432:41: warning: defaulted and deleted functions only available with '-std=c++11' or '-std=gnu++11' [-Wc++11-extensions]
  432 |       leap_second(const leap_second&) = default;
      |                                         ^~~~~~~
p1424.cpp:433:52: warning: defaulted and deleted functions only available with '-std=c++11' or '-std=gnu++11' [-Wc++11-extensions]
  433 |       leap_second& operator=(const leap_second&) = default;
      |                                                    ^~~~~~~
p1424.cpp:435:7: error: 'constexpr' does not name a type
  435 |       constexpr sys_seconds date() const noexcept;
      |       ^~~~~~~~~
p1424.cpp:435:7: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1424.cpp:436:7: error: 'constexpr' does not name a type
  436 |       constexpr seconds value() const noexcept;
      |       ^~~~~~~~~
p1424.cpp:436:7: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1424.cpp:441:6: error: expected unqualified-id before 'for'
  441 |      for (auto& l : get_tzdb().leap_seconds)
      |      ^~~
p1424.cpp:473:4: error: 'constexpr' does not name a type
  473 |    constexpr sys_seconds date() const noexcept;
      |    ^~~~~~~~~
p1424.cpp:473:4: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1424.cpp:475:1: error: 'constexpr' does not name a type
  475 | constexpr seconds value() const noexcept;
      | ^~~~~~~~~
p1424.cpp:475:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1424.cpp:479:1: error: 'constexpr' does not name a type
  479 | constexpr bool operator==(const leap_second& x, const leap_second& y) noexcept;
      | ^~~~~~~~~
p1424.cpp:479:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1424.cpp:481:1: error: 'constexpr' does not name a type
  481 | constexpr strong_ordering operator<=>(const leap_second& x, const leap_second& y) noexcept;
      | ^~~~~~~~~
p1424.cpp:481:1: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1424.cpp:484:3: error: 'constexpr' does not name a type
  484 |   constexpr bool operator==(const leap_second& x, const sys_time<Duration>& y) noexcept;
      |   ^~~~~~~~~
p1424.cpp:484:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1424.cpp:487:3: error: 'constexpr' does not name a type
  487 |   constexpr bool operator<(const leap_second& x, const sys_time<Duration>& y) noexcept;
      |   ^~~~~~~~~
p1424.cpp:487:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1424.cpp:490:3: error: 'constexpr' does not name a type
  490 |   constexpr bool operator<(const sys_time<Duration>& x, const leap_second& y) noexcept;
      |   ^~~~~~~~~
p1424.cpp:490:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1424.cpp:493:3: error: 'constexpr' does not name a type
  493 |   constexpr bool operator>(const leap_second& x, const sys_time<Duration>& y) noexcept;
      |   ^~~~~~~~~
p1424.cpp:493:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1424.cpp:496:3: error: 'constexpr' does not name a type
  496 |   constexpr bool operator>(const sys_time<Duration>& x, const leap_second& y) noexcept;
      |   ^~~~~~~~~
p1424.cpp:496:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1424.cpp:499:3: error: 'constexpr' does not name a type
  499 |   constexpr bool operator<=(const leap_second& x, const sys_time<Duration>& y) noexcept;
      |   ^~~~~~~~~
p1424.cpp:499:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1424.cpp:502:3: error: 'constexpr' does not name a type
  502 |   constexpr bool operator<=(const sys_time<Duration>& x, const leap_second& y) noexcept;
      |   ^~~~~~~~~
p1424.cpp:502:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1424.cpp:505:3: error: 'constexpr' does not name a type
  505 |   constexpr bool operator>=(const leap_second& x, const sys_time<Duration>& y) noexcept;
      |   ^~~~~~~~~
p1424.cpp:505:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1424.cpp:508:3: error: 'constexpr' does not name a type
  508 |   constexpr bool operator>=(const sys_time<Duration>& x, const leap_second& y) noexcept;
      |   ^~~~~~~~~
p1424.cpp:508:3: note: C++11 'constexpr' only available with '-std=c++11' or '-std=gnu++11'
p1424.cpp:511:3: error: 'requires' does not name a type
  511 |   requires three_way_comparable_with<sys_seconds, sys_time<Duration>>
      |   ^~~~~~~~
p1424.cpp:511:3: note: 'requires' only available with '-std=c++20' or '-fconcepts'
p1424.cpp:519:36: error: expected ',' or '...' before '&&' token
  519 |       time_zone_link(time_zone_link&&) = default;
      |                                    ^~
p1424.cpp:519:42: warning: defaulted and deleted functions only available with '-std=c++11' or '-std=gnu++11' [-Wc++11-extensions]
  519 |       time_zone_link(time_zone_link&&) = default;
      |                                          ^~~~~~~
p1424.cpp:519:7: error: invalid constructor; you probably meant 'std::chrono::time_zone_link (const std::chrono::time_zone_link&)'
  519 |       time_zone_link(time_zone_link&&) = default;
      |       ^~~~~~~~~~~~~~
p1424.cpp:520:47: error: expected ',' or '...' before '&&' token
  520 |       time_zone_link& operator=(time_zone_link&&) = default;
      |                                               ^~
p1424.cpp:520:53: warning: defaulted and deleted functions only available with '-std=c++11' or '-std=gnu++11' [-Wc++11-extensions]
  520 |       time_zone_link& operator=(time_zone_link&&) = default;
      |                                                     ^~~~~~~
p1424.cpp:522:7: error: 'string_view' does not name a type
  522 |       string_view name()   const noexcept;
      |       ^~~~~~~~~~~
p1424.cpp:523:7: error: 'string_view' does not name a type
  523 |       string_view target() const noexcept;
      |       ^~~~~~~~~~~
p1424.cpp:520:23: error: defaulted declaration 'std::chrono::time_zone_link& std::chrono::time_zone_link::operator=(std::chrono::time_zone_link)' does not match the expected signature
  520 |       time_zone_link& operator=(time_zone_link&&) = default;
      |                       ^~~~~~~~
p1424.cpp:520:23: note: expected signature: 'std::chrono::time_zone_link& std::chrono::time_zone_link::operator=(std::chrono::time_zone_link&)'
p1424.cpp:528:4: error: 'string_view' does not name a type
  528 |    string_view name() const noexcept;
      |    ^~~~~~~~~~~
p1424.cpp:530:1: error: 'string_view' does not name a type
  530 | string_view target() const noexcept;
      | ^~~~~~~~~~~
p1424.cpp:533:23: error: 'time_zone_link' does not name a type
  533 | bool operator==(const time_zone_link& x, const time_zone_link& y) noexcept;
      |                       ^~~~~~~~~~~~~~
p1424.cpp:533:48: error: 'time_zone_link' does not name a type
  533 | bool operator==(const time_zone_link& x, const time_zone_link& y) noexcept;
      |                                                ^~~~~~~~~~~~~~
p1424.cpp:533:67: error: expected initializer before 'noexcept'
  533 | bool operator==(const time_zone_link& x, const time_zone_link& y) noexcept;
      |                                                                   ^~~~~~~~
p1424.cpp:535:1: error: 'strong_ordering' does not name a type
  535 | strong_ordering operator<=>(const time_zone_link& x, const time_zone_link& y) noexcept;
      | ^~~~~~~~~~~~~~~

$ g++ p1424.cpp -std=2b -o p1424g -I. -Wall
p1424.cpp:20:14: error: 'time_zone' was not declared in this scope; did you mean 'timezone'?
   20 |       vector<time_zone> zones;
      |              ^~~~~~~~~
      |              timezone
p1424.cpp:20:23: error: template argument 1 is invalid
   20 |       vector<time_zone> zones;
      |                       ^
p1424.cpp:20:23: error: template argument 2 is invalid
p1424.cpp:21:14: error: 'time_zone_link' was not declared in this scope
   21 |       vector<time_zone_link> links;
      |              ^~~~~~~~~~~~~~
p1424.cpp:21:28: error: template argument 1 is invalid
   21 |       vector<time_zone_link> links;
      |                            ^
p1424.cpp:21:28: error: template argument 2 is invalid
p1424.cpp:22:14: error: 'leap_second' was not declared in this scope
   22 |       vector<leap_second>    leap_seconds;
      |              ^~~~~~~~~~~
p1424.cpp:22:25: error: template argument 1 is invalid
   22 |       vector<leap_second>    leap_seconds;
      |                         ^
p1424.cpp:22:25: error: template argument 2 is invalid
p1424.cpp:23:13: error: 'time_zone' does not name a type; did you mean 'time_base'?
   23 |       const time_zone* locate_zone(string_view tz_name) const;
      |             ^~~~~~~~~
      |             time_base
p1424.cpp:24:13: error: 'time_zone' does not name a type; did you mean 'time_base'?
   24 |       const time_zone* current_zone() const;
      |             ^~~~~~~~~
      |             time_base
p1424.cpp:34:10: error: 'time_zone' does not name a type
   34 |    const time_zone* locate_zone(string_view tz_name) const;
      |          ^~~~~~~~~
p1424.cpp:35:7: error: 'time_zone' does not name a type
   35 | const time_zone* current_zone() const;
      |       ^~~~~~~~~
p1424.cpp:57:10: error: 'tzdb' does not name a type
   57 |    const tzdb& front() const noexcept;
      |          ^~~~
p1424.cpp:59:1: error: 'const_iterator' does not name a type
   59 | const_iterator erase_after(const_iterator p);
      | ^~~~~~~~~~~~~~
p1424.cpp:70:10: error: 'tzdb' does not name a type
   70 |    const tzdb& reload_tzdb();
      |          ^~~~
p1424.cpp:71:1: error: 'const_iterator' does not name a type
   71 | const_iterator begin() const noexcept;
      | ^~~~~~~~~~~~~~
p1424.cpp:75:1: error: 'const_iterator' does not name a type
   75 | const_iterator cend() const noexcept;
      | ^~~~~~~~~~~~~~
p1424.cpp:78:1: error: 'tzdb_list' does not name a type
   78 | tzdb_list& get_tzdb_list();
      | ^~~~~~~~~
p1424.cpp:82:7: error: 'tzdb' does not name a type
   82 | const tzdb& get_tzdb();
      |       ^~~~
p1424.cpp:84:7: error: 'time_zone' does not name a type
   84 | const time_zone* locate_zone(string_view tz_name);
      |       ^~~~~~~~~
p1424.cpp:87:7: error: 'time_zone' does not name a type
   87 | const time_zone* current_zone();
      |       ^~~~~~~~~
p1424.cpp:94:8: error: 'os' does not name a type
   94 |        os << tp << " is in a gap between\n"
      |        ^~
p1424.cpp:95:60: error: expected unqualified-id before '+' token
   95 |           << local_seconds{i.first.end.time_since_epoch()} + i.first.offset << ' '
      |                                                            ^
p1424.cpp:97:63: error: expected unqualified-id before '+' token
   97 |           << local_seconds{i.second.begin.time_since_epoch()} + i.second.offset << ' '
      |                                                               ^
p1424.cpp: In function 'int main()':
p1424.cpp:107:22: error: 'zoned_time' was not declared in this scope
  107 |            auto zt = zoned_time{"America/New_York",
      |                      ^~~~~~~~~~
p1424.cpp:109:25: error: ISO C++ forbids declaration of 'nonexistent_local_time' with no type [-fpermissive]
  109 |          } catch (const nonexistent_local_time& e) {
      |                         ^~~~~~~~~~~~~~~~~~~~~~
p1424.cpp:109:47: error: expected ')' before '&' token
  109 |          } catch (const nonexistent_local_time& e) {
      |                  ~                            ^
      |                                               )
p1424.cpp:109:47: error: expected '{' before '&' token
p1424.cpp:109:49: error: 'e' was not declared in this scope; did you mean 'std::numbers::e'?
  109 |          } catch (const nonexistent_local_time& e) {
      |                                                 ^
      |                                                 std::numbers::e
In file included from /usr/local/include/c++/12.1.0/bits/max_size_type.h:37,
                 from /usr/local/include/c++/12.1.0/bits/ranges_base.h:38,
                 from /usr/local/include/c++/12.1.0/string_view:50,
                 from /usr/local/include/c++/12.1.0/bits/basic_string.h:48,
                 from /usr/local/include/c++/12.1.0/string:53,
                 from /usr/local/include/c++/12.1.0/bits/locale_classes.h:40,
                 from /usr/local/include/c++/12.1.0/bits/ios_base.h:41,
                 from /usr/local/include/c++/12.1.0/ios:42,
                 from /usr/local/include/c++/12.1.0/ostream:38,
                 from /usr/local/include/c++/12.1.0/iostream:39,
                 from N4910.h:2,
                 from p1424.cpp:10:
/usr/local/include/c++/12.1.0/numbers:122:27: note: 'std::numbers::e' declared here
  122 |   inline constexpr double e = e_v<double>;
      |                           ^
p1424.cpp: At global scope:
p1424.cpp:119:68: error: 'local_info' does not name a type
  119 |         ambiguous_local_time(const local_time<Duration>& tp, const local_info& i);
      |                                                                    ^~~~~~~~~~
p1424.cpp:130:68: error: 'local_info' does not name a type
  130 |       nonexistent_local_time(const local_time<Duration>& tp, const local_info& i);
      |                                                                    ^~~~~~~~~~
p1424.cpp:134:35: error: 'local_time' does not name a type; did you mean 'locale_t'?
  134 |      nonexistent_local_time(const local_time<Duration>& tp, const local_info& i);
      |                                   ^~~~~~~~~~
      |                                   locale_t
p1424.cpp:134:45: error: expected ',' or '...' before '<' token
  134 |      nonexistent_local_time(const local_time<Duration>& tp, const local_info& i);
      |                                             ^
p1424.cpp:134:81: error: expected constructor, destructor, or type conversion before ';' token
  134 |      nonexistent_local_time(const local_time<Duration>& tp, const local_info& i);
      |                                                                                 ^
p1424.cpp:137:1: error: 'initialized' does not name a type
  137 | initialized as shown below:
      | ^~~~~~~~~~~
p1424.cpp:139:3: error: 'os' does not name a type
  139 |   os << tp << " is ambiguous.  It could be\n"
      |   ^~
p1424.cpp: In function 'int main3()':
p1424.cpp:150:17: error: 'zoned_time' was not declared in this scope
  150 |       auto zt = zoned_time{"America/New_York",
      |                 ^~~~~~~~~~
p1424.cpp:153:4: error: a template declaration cannot appear at block scope
  153 |    template<class Duration>
      |    ^~~~~~~~
p1424.cpp:157:3: warning: no return statement in function returning non-void [-Wreturn-type]
  157 | } }
      |   ^
p1424.cpp: At global scope:
p1424.cpp:164:1: error: expected ';' at end of member declaration
  164 | sys_seconds
      | ^~~~~~~~~~~
      |            ;
p1424.cpp:164:1: error: declaration of 'std::chrono::sys_seconds std::chrono::sys_info::sys_seconds' changes meaning of 'sys_seconds' [-fpermissive]
In file included from /usr/local/include/c++/12.1.0/chrono:39,
                 from p1424.cpp:102:
/usr/local/include/c++/12.1.0/bits/chrono.h:1181:11: note: 'sys_seconds' declared here as 'using sys_seconds = std::chrono::sys_time<std::chrono::duration<long int> >'
 1181 |     using sys_seconds = sys_time<seconds>;
      |           ^~~~~~~~~~~
p1424.cpp:166:1: error: expected ';' at end of member declaration
  166 | minutes
      | ^~~~~~~
      |        ;
p1424.cpp:169:1: error: 'end' does not name a type
  169 | end;
      | ^~~
p1424.cpp:170:1: error: 'offset' does not name a type; did you mean 'off_t'?
  170 | offset;
      | ^~~~~~
      | off_t
p1424.cpp:171:1: error: 'save' does not name a type
  171 | save;
      | ^~~~
p1424.cpp:172:1: error: 'abbrev' does not name a type
  172 | abbrev;
      | ^~~~~~
p1424.cpp:183:30: error: 'charT' was not declared in this scope; did you mean 'char'?
  183 |     operator<<(basic_ostream<charT, traits>& os, const sys_info& r);
      |                              ^~~~~
      |                              char
p1424.cpp:183:37: error: 'traits' was not declared in this scope
  183 |     operator<<(basic_ostream<charT, traits>& os, const sys_info& r);
      |                                     ^~~~~~
p1424.cpp:183:43: error: template argument 1 is invalid
  183 |     operator<<(basic_ostream<charT, traits>& os, const sys_info& r);
      |                                           ^
p1424.cpp:183:43: error: template argument 2 is invalid
p1424.cpp:183:56: error: 'sys_info' does not name a type
  183 |     operator<<(basic_ostream<charT, traits>& os, const sys_info& r);
      |                                                        ^~~~~~~~
p1424.cpp:183:68: error: expected constructor, destructor, or type conversion before ';' token
  183 |     operator<<(basic_ostream<charT, traits>& os, const sys_info& r);
      |                                                                    ^
p1424.cpp:188:35: error: pure-specifier on function-definition
  188 |       static constexpr int unique = 0 :
      |                                   ^
p1424.cpp:188:28: error: function definition does not declare parameters
  188 |       static constexpr int unique = 0 :
      |                            ^~~~~~
p1424.cpp:190:38: error: pure-specifier on function-definition
  190 |       static constexpr int ambiguous = 2:
      |                                      ^
p1424.cpp:190:28: error: function definition does not declare parameters
  190 |       static constexpr int ambiguous = 2:
      |                            ^~~~~~~~~
p1424.cpp:199:1: error: expected unqualified-id before 'template'
  199 | template<class charT, class traits>
      | ^~~~~~~~
p1424.cpp:221:53: error: 'choose' has not been declared
  221 |              to_sys(const local_time<Duration>& tp, choose z) const;
      |                                                     ^~~~~~
p1424.cpp:229:29: error: non-member function 'std::string_view name()' cannot have cv-qualifier
  229 |    string_view name() const noexcept;
      |                             ^~~~~~~~
p1424.cpp:233:3: error: 'sys_info' does not name a type
  233 |   sys_info get_info(const sys_time<Duration>& st) const;
      |   ^~~~~~~~
p1424.cpp:236:1: error: 'local_info' does not name a type
  236 | local_info get_info(const local_time<Duration>& tp) const;
      | ^~~~~~~~~~
p1424.cpp:239:36: error: 'seconds' was not declared in this scope; did you mean 'std::chrono::seconds'?
  239 |   sys_time<common_type_t<Duration, seconds>>
      |                                    ^~~~~~~
      |                                    std::chrono::seconds
/usr/local/include/c++/12.1.0/bits/chrono.h:831:11: note: 'std::chrono::seconds' declared here
  831 |     using seconds       = duration<_GLIBCXX_CHRONO_INT64_T>;
      |           ^~~~~~~
p1424.cpp:239:36: error: template argument 2 is invalid
  239 |   sys_time<common_type_t<Duration, seconds>>
      |                                    ^~~~~~~
p1424.cpp:239:3: error: 'sys_time' does not name a type; did you mean 'SYS_time'?
  239 |   sys_time<common_type_t<Duration, seconds>>
      |   ^~~~~~~~
      |   SYS_time
p1424.cpp:244:36: error: 'seconds' was not declared in this scope; did you mean 'std::chrono::seconds'?
  244 |   sys_time<common_type_t<Duration, seconds>>
      |                                    ^~~~~~~
      |                                    std::chrono::seconds
/usr/local/include/c++/12.1.0/bits/chrono.h:831:11: note: 'std::chrono::seconds' declared here
  831 |     using seconds       = duration<_GLIBCXX_CHRONO_INT64_T>;
      |           ^~~~~~~
p1424.cpp:244:36: error: template argument 2 is invalid
  244 |   sys_time<common_type_t<Duration, seconds>>
      |                                    ^~~~~~~
p1424.cpp:244:3: error: 'sys_time' does not name a type; did you mean 'SYS_time'?
  244 |   sys_time<common_type_t<Duration, seconds>>
      |   ^~~~~~~~
      |   SYS_time
p1424.cpp:248:38: error: 'seconds' was not declared in this scope; did you mean 'std::chrono::seconds'?
  248 |   local_time<common_type_t<Duration, seconds>>
      |                                      ^~~~~~~
      |                                      std::chrono::seconds
/usr/local/include/c++/12.1.0/bits/chrono.h:831:11: note: 'std::chrono::seconds' declared here
  831 |     using seconds       = duration<_GLIBCXX_CHRONO_INT64_T>;
      |           ^~~~~~~
p1424.cpp:248:38: error: template argument 2 is invalid
  248 |   local_time<common_type_t<Duration, seconds>>
      |                                      ^~~~~~~
p1424.cpp:248:3: error: 'local_time' does not name a type; did you mean 'locale_t'?
  248 |   local_time<common_type_t<Duration, seconds>>
      |   ^~~~~~~~~~
      |   locale_t
p1424.cpp:252:23: error: 'zoned_traits' is not a class template
  252 |     template<> struct zoned_traits<const time_zone*> {
      |                       ^~~~~~~~~~~~
p1424.cpp:252:54: error: explicit specialization of non-template 'std::chrono::zoned_traits'
  252 |     template<> struct zoned_traits<const time_zone*> {
      |                                                      ^
p1424.cpp:257:14: error: 'time_zone' does not name a type
  257 | static const time_zone* default_zone();
      |              ^~~~~~~~~
p1424.cpp:259:14: error: 'time_zone' does not name a type
  259 | static const time_zone* locate_zone(string_view name);
      |              ^~~~~~~~~
p1424.cpp:261:23: error: 'time_zone' does not name a type
  261 | bool operator==(const time_zone& x, const time_zone& y) noexcept;
      |                       ^~~~~~~~~
p1424.cpp:261:43: error: 'time_zone' does not name a type
  261 | bool operator==(const time_zone& x, const time_zone& y) noexcept;
      |                                           ^~~~~~~~~
p1424.cpp:261:6: error: 'bool operator==(const int&, const int&)' must have an argument of class or enumerated type
  261 | bool operator==(const time_zone& x, const time_zone& y) noexcept;
      |      ^~~~~~~~
p1424.cpp:263:35: error: 'time_zone' does not name a type
  263 | strong_ordering operator<=>(const time_zone& x, const time_zone& y) noexcept;
      |                                   ^~~~~~~~~
p1424.cpp:263:55: error: 'time_zone' does not name a type
  263 | strong_ordering operator<=>(const time_zone& x, const time_zone& y) noexcept;
      |                                                       ^~~~~~~~~
p1424.cpp:263:17: error: 'std::strong_ordering operator<=>(const int&, const int&)' must have an argument of class or enumerated type
  263 | strong_ordering operator<=>(const time_zone& x, const time_zone& y) noexcept;
      |                 ^~~~~~~~
p1424.cpp:267:30: error: 'std::chrono::zoned_traits' is not a template
  267 |     template<class T> struct zoned_traits {};
      |                              ^~~~~~~~~~~~
p1424.cpp:252:23: note: previous declaration here
  252 |     template<> struct zoned_traits<const time_zone*> {
      |                       ^~~~~~~~~~~~
p1424.cpp:281:18: error: 'std::chrono::zoned_traits' is not a template
  281 |   using traits = zoned_traits<TimeZonePtr>;
      |                  ^~~~~~~~~~~~
p1424.cpp:297:62: error: 'choose' has not been declared
  297 | zoned_time(TimeZonePtr z,    const local_time<Duration>& tp, choose c);
      |                                                              ^~~~~~
p1424.cpp:298:62: error: 'choose' has not been declared
  298 | zoned_time(string_view name, const local_time<Duration>& tp, choose c);
      |                                                              ^~~~~~
p1424.cpp:301:25: error: expected ')' before 'z'
  301 |   zoned_time(TimeZonePtr z, const zoned_time<Duration2, TimeZonePtr2>& zt);
      |             ~           ^~
      |                         )
p1424.cpp:303:25: error: expected ')' before 'z'
  303 |   zoned_time(TimeZonePtr z, const zoned_time<Duration2, TimeZonePtr2>& zt, choose);
      |             ~           ^~
      |                         )
p1424.cpp:305:3: error: deduction guide for 'std::chrono::zoned_time<Duration, TimeZonePtr>' must have trailing return type
  305 |   zoned_time(string_view name, const zoned_time<Duration2, TimeZonePtr2>& zt);
      |   ^~~~~~~~~~
p1424.cpp:275:11: note: 'template<class Duration, class TimeZonePtr> class std::chrono::zoned_time' declared here
  275 |     class zoned_time {
      |           ^~~~~~~~~~
p1424.cpp:307:79: error: 'choose' has not been declared
  307 |   zoned_time(string_view name, const zoned_time<Duration2, TimeZonePtr2>& zt, choose);
      |                                                                               ^~~~~~
p1424.cpp:307:3: error: deduction guide for 'std::chrono::zoned_time<Duration, TimeZonePtr>' must have trailing return type
  307 |   zoned_time(string_view name, const zoned_time<Duration2, TimeZonePtr2>& zt, choose);
      |   ^~~~~~~~~~
p1424.cpp:275:11: note: 'template<class Duration, class TimeZonePtr> class std::chrono::zoned_time' declared here
  275 |     class zoned_time {
      |           ^~~~~~~~~~
p1424.cpp:308:38: error: 'Duration' was not declared in this scope; did you mean 'duration'?
  308 | zoned_time& operator=(const sys_time<Duration>& st);
      |                                      ^~~~~~~~
      |                                      duration
p1424.cpp:308:46: error: template argument 1 is invalid
  308 | zoned_time& operator=(const sys_time<Duration>& st);
      |                                              ^
p1424.cpp:308:1: error: deduced class type 'zoned_time' in function return type
  308 | zoned_time& operator=(const sys_time<Duration>& st);
      | ^~~~~~~~~~
p1424.cpp:275:11: note: 'template<class Duration, class TimeZonePtr> class std::chrono::zoned_time' declared here
  275 |     class zoned_time {
      |           ^~~~~~~~~~
p1424.cpp:309:40: error: 'Duration' was not declared in this scope; did you mean 'duration'?
  309 | zoned_time& operator=(const local_time<Duration>& ut);
      |                                        ^~~~~~~~
      |                                        duration
p1424.cpp:309:48: error: template argument 1 is invalid
  309 | zoned_time& operator=(const local_time<Duration>& ut);
      |                                                ^
p1424.cpp:309:1: error: deduced class type 'zoned_time' in function return type
  309 | zoned_time& operator=(const local_time<Duration>& ut);
      | ^~~~~~~~~~
p1424.cpp:275:11: note: 'template<class Duration, class TimeZonePtr> class std::chrono::zoned_time' declared here
  275 |     class zoned_time {
      |           ^~~~~~~~~~
p1424.cpp:310:27: error: type/value mismatch at argument 1 in template parameter list for 'template<class _Duration> using sys_time = std::chrono::time_point<std::chrono::_V2::system_clock, _Dur2>'
  310 | operator sys_time<duration>() const;
      |                           ^
p1424.cpp:310:27: note:   expected a type, got 'duration'
p1424.cpp:311:38: error: type/value mismatch at argument 1 in template parameter list for 'template<class _Duration> using local_time = std::chrono::time_point<std::chrono::local_t, _Duration>'
  311 | explicit operator local_time<duration>() const;
      |                                      ^
p1424.cpp:311:38: note:   expected a type, got 'duration'
p1424.cpp:312:1: error: 'TimeZonePtr' does not name a type
  312 | TimeZonePtr          get_time_zone()  const;
      | ^~~~~~~~~~~
p1424.cpp:313:20: error: type/value mismatch at argument 1 in template parameter list for 'template<class _Duration> using local_time = std::chrono::time_point<std::chrono::local_t, _Duration>'
  313 | local_time<duration> get_local_time() const;
      |                    ^
p1424.cpp:313:20: note:   expected a type, got 'duration'
p1424.cpp:313:39: error: non-member function 'int std::chrono::get_local_time()' cannot have cv-qualifier
  313 | local_time<duration> get_local_time() const;
      |                                       ^~~~~
p1424.cpp:314:20: error: type/value mismatch at argument 1 in template parameter list for 'template<class _Duration> using sys_time = std::chrono::time_point<std::chrono::_V2::system_clock, _Dur2>'
  314 |   sys_time<duration>   get_sys_time() const;
      |                    ^
p1424.cpp:314:20: note:   expected a type, got 'duration'
p1424.cpp:314:39: error: non-member function 'int std::chrono::get_sys_time()' cannot have cv-qualifier
  314 |   sys_time<duration>   get_sys_time() const;
      |                                       ^~~~~
p1424.cpp:315:35: error: non-member function 'std::chrono::sys_info std::chrono::get_info()' cannot have cv-qualifier
  315 |   sys_info             get_info() const;
      |                                   ^~~~~
p1424.cpp:321:11: error: expected '=' before '-' token
  321 | using time-zone-representation = // exposition only
      |           ^
p1424.cpp:321:11: error: expected type-specifier before '-' token
p1424.cpp:327:29: error: 'zone' was not declared in this scope
  327 | -> zoned_time<seconds, time-zone-representation<TimeZonePtrOrName>>;
      |                             ^~~~
p1424.cpp:327:34: error: 'representation' was not declared in this scope
  327 | -> zoned_time<seconds, time-zone-representation<TimeZonePtrOrName>>;
      |                                  ^~~~~~~~~~~~~~
p1424.cpp:327:66: error: template argument 2 is invalid
  327 | -> zoned_time<seconds, time-zone-representation<TimeZonePtrOrName>>;
      |                                                                  ^~
p1424.cpp:327:29: error: 'zone' was not declared in this scope
  327 | -> zoned_time<seconds, time-zone-representation<TimeZonePtrOrName>>;
      |                             ^~~~
p1424.cpp:327:34: error: 'representation' was not declared in this scope
  327 | -> zoned_time<seconds, time-zone-representation<TimeZonePtrOrName>>;
      |                                  ^~~~~~~~~~~~~~
p1424.cpp:327:66: error: template argument 2 is invalid
  327 | -> zoned_time<seconds, time-zone-representation<TimeZonePtrOrName>>;
      |                                                                  ^~
p1424.cpp:327:29: error: 'zone' was not declared in this scope
  327 | -> zoned_time<seconds, time-zone-representation<TimeZonePtrOrName>>;
      |                             ^~~~
p1424.cpp:327:34: error: 'representation' was not declared in this scope
  327 | -> zoned_time<seconds, time-zone-representation<TimeZonePtrOrName>>;
      |                                  ^~~~~~~~~~~~~~
p1424.cpp:327:66: error: template argument 2 is invalid
  327 | -> zoned_time<seconds, time-zone-representation<TimeZonePtrOrName>>;
      |                                                                  ^~
p1424.cpp:327:29: error: 'zone' was not declared in this scope
  327 | -> zoned_time<seconds, time-zone-representation<TimeZonePtrOrName>>;
      |                             ^~~~
p1424.cpp:327:34: error: 'representation' was not declared in this scope
  327 | -> zoned_time<seconds, time-zone-representation<TimeZonePtrOrName>>;
      |                                  ^~~~~~~~~~~~~~
p1424.cpp:327:66: error: template argument 2 is invalid
  327 | -> zoned_time<seconds, time-zone-representation<TimeZonePtrOrName>>;
      |                                                                  ^~
p1424.cpp:327:4: error: invalid template-id
  327 | -> zoned_time<seconds, time-zone-representation<TimeZonePtrOrName>>;
      |    ^~~~~~~~~~
p1424.cpp:327:29: error: 'zone' was not declared in this scope
  327 | -> zoned_time<seconds, time-zone-representation<TimeZonePtrOrName>>;
      |                             ^~~~
p1424.cpp:327:34: error: 'representation' was not declared in this scope
  327 | -> zoned_time<seconds, time-zone-representation<TimeZonePtrOrName>>;
      |                                  ^~~~~~~~~~~~~~
p1424.cpp:327:66: error: expected primary-expression before '>' token
  327 | -> zoned_time<seconds, time-zone-representation<TimeZonePtrOrName>>;
      |                                                                  ^~
p1424.cpp:327:66: error: trailing return type 'zoned_time<...auto...>' of deduction guide is not a specialization of 'std::chrono::zoned_time<Duration, TimeZonePtr>'
p1424.cpp:330:54: error: 'zone' was not declared in this scope
  330 | -> zoned_time<common_type_t<Duration, seconds>, time-zone-representation <TimeZonePtrOrName>>;
      |                                                      ^~~~
p1424.cpp:330:59: error: 'representation' was not declared in this scope
  330 | -> zoned_time<common_type_t<Duration, seconds>, time-zone-representation <TimeZonePtrOrName>>;
      |                                                           ^~~~~~~~~~~~~~
p1424.cpp:330:92: error: template argument 2 is invalid
  330 | -> zoned_time<common_type_t<Duration, seconds>, time-zone-representation <TimeZonePtrOrName>>;
      |                                                                                            ^~
p1424.cpp:330:54: error: 'zone' was not declared in this scope
  330 | -> zoned_time<common_type_t<Duration, seconds>, time-zone-representation <TimeZonePtrOrName>>;
      |                                                      ^~~~
p1424.cpp:330:59: error: 'representation' was not declared in this scope
  330 | -> zoned_time<common_type_t<Duration, seconds>, time-zone-representation <TimeZonePtrOrName>>;
      |                                                           ^~~~~~~~~~~~~~
p1424.cpp:330:92: error: template argument 2 is invalid
  330 | -> zoned_time<common_type_t<Duration, seconds>, time-zone-representation <TimeZonePtrOrName>>;
      |                                                                                            ^~
p1424.cpp:330:54: error: 'zone' was not declared in this scope
  330 | -> zoned_time<common_type_t<Duration, seconds>, time-zone-representation <TimeZonePtrOrName>>;
      |                                                      ^~~~
p1424.cpp:330:59: error: 'representation' was not declared in this scope
  330 | -> zoned_time<common_type_t<Duration, seconds>, time-zone-representation <TimeZonePtrOrName>>;
      |                                                           ^~~~~~~~~~~~~~
p1424.cpp:330:92: error: template argument 2 is invalid
  330 | -> zoned_time<common_type_t<Duration, seconds>, time-zone-representation <TimeZonePtrOrName>>;
      |                                                                                            ^~
p1424.cpp:330:54: error: 'zone' was not declared in this scope
  330 | -> zoned_time<common_type_t<Duration, seconds>, time-zone-representation <TimeZonePtrOrName>>;
      |                                                      ^~~~
p1424.cpp:330:59: error: 'representation' was not declared in this scope
  330 | -> zoned_time<common_type_t<Duration, seconds>, time-zone-representation <TimeZonePtrOrName>>;
      |                                                           ^~~~~~~~~~~~~~
p1424.cpp:330:92: error: template argument 2 is invalid
  330 | -> zoned_time<common_type_t<Duration, seconds>, time-zone-representation <TimeZonePtrOrName>>;
      |                                                                                            ^~
p1424.cpp:330:4: error: invalid template-id
  330 | -> zoned_time<common_type_t<Duration, seconds>, time-zone-representation <TimeZonePtrOrName>>;
      |    ^~~~~~~~~~
p1424.cpp:330:54: error: 'zone' was not declared in this scope
  330 | -> zoned_time<common_type_t<Duration, seconds>, time-zone-representation <TimeZonePtrOrName>>;
      |                                                      ^~~~
p1424.cpp:330:59: error: 'representation' was not declared in this scope
  330 | -> zoned_time<common_type_t<Duration, seconds>, time-zone-representation <TimeZonePtrOrName>>;
      |                                                           ^~~~~~~~~~~~~~
p1424.cpp:330:92: error: expected primary-expression before '>' token
  330 | -> zoned_time<common_type_t<Duration, seconds>, time-zone-representation <TimeZonePtrOrName>>;
      |                                                                                            ^~
p1424.cpp:330:92: error: trailing return type 'zoned_time<...auto...>' of deduction guide is not a specialization of 'std::chrono::zoned_time<Duration, TimeZonePtr>'
p1424.cpp:333:14: error: 'choose' has not been declared
  333 |              choose = choose::earliest)
      |              ^~~~~~
p1424.cpp:333:23: error: 'choose' has not been declared
  333 |              choose = choose::earliest)
      |                       ^~~~~~
p1424.cpp:335:6: error: 'zone' was not declared in this scope
  335 | time-zone-representation <TimeZonePtrOrName>>;
      |      ^~~~
p1424.cpp:335:11: error: 'representation' was not declared in this scope
  335 | time-zone-representation <TimeZonePtrOrName>>;
      |           ^~~~~~~~~~~~~~
p1424.cpp:335:44: error: template argument 2 is invalid
  335 | time-zone-representation <TimeZonePtrOrName>>;
      |                                            ^~
p1424.cpp:335:6: error: 'zone' was not declared in this scope
  335 | time-zone-representation <TimeZonePtrOrName>>;
      |      ^~~~
p1424.cpp:335:11: error: 'representation' was not declared in this scope
  335 | time-zone-representation <TimeZonePtrOrName>>;
      |           ^~~~~~~~~~~~~~
p1424.cpp:335:44: error: template argument 2 is invalid
  335 | time-zone-representation <TimeZonePtrOrName>>;
      |                                            ^~
p1424.cpp:335:6: error: 'zone' was not declared in this scope
  335 | time-zone-representation <TimeZonePtrOrName>>;
      |      ^~~~
p1424.cpp:335:11: error: 'representation' was not declared in this scope
  335 | time-zone-representation <TimeZonePtrOrName>>;
      |           ^~~~~~~~~~~~~~
p1424.cpp:335:44: error: template argument 2 is invalid
  335 | time-zone-representation <TimeZonePtrOrName>>;
      |                                            ^~
p1424.cpp:335:6: error: 'zone' was not declared in this scope
  335 | time-zone-representation <TimeZonePtrOrName>>;
      |      ^~~~
p1424.cpp:335:11: error: 'representation' was not declared in this scope
  335 | time-zone-representation <TimeZonePtrOrName>>;
      |           ^~~~~~~~~~~~~~
p1424.cpp:335:44: error: template argument 2 is invalid
  335 | time-zone-representation <TimeZonePtrOrName>>;
      |                                            ^~
p1424.cpp:334:8: error: invalid template-id
  334 |     -> zoned_time<common_type_t<Duration, seconds>,
      |        ^~~~~~~~~~
p1424.cpp:335:6: error: 'zone' was not declared in this scope
  335 | time-zone-representation <TimeZonePtrOrName>>;
      |      ^~~~
p1424.cpp:335:11: error: 'representation' was not declared in this scope
  335 | time-zone-representation <TimeZonePtrOrName>>;
      |           ^~~~~~~~~~~~~~
p1424.cpp:335:44: error: expected primary-expression before '>' token
  335 | time-zone-representation <TimeZonePtrOrName>>;
      |                                            ^~
p1424.cpp:335:44: error: trailing return type 'zoned_time<...auto...>' of deduction guide is not a specialization of 'std::chrono::zoned_time<Duration, TimeZonePtr>'
p1424.cpp:338:10: error: 'choose' has not been declared
  338 |          choose = choose::earliest)
      |          ^~~~~~
p1424.cpp:338:19: error: 'choose' has not been declared
  338 |          choose = choose::earliest)
      |                   ^~~~~~
p1424.cpp:340:6: error: 'zone' was not declared in this scope
  340 | time-zone-representation <TimeZonePtrOrName>>;
      |      ^~~~
p1424.cpp:340:11: error: 'representation' was not declared in this scope
  340 | time-zone-representation <TimeZonePtrOrName>>;
      |           ^~~~~~~~~~~~~~
p1424.cpp:340:44: error: template argument 2 is invalid
  340 | time-zone-representation <TimeZonePtrOrName>>;
      |                                            ^~
p1424.cpp:340:6: error: 'zone' was not declared in this scope
  340 | time-zone-representation <TimeZonePtrOrName>>;
      |      ^~~~
p1424.cpp:340:11: error: 'representation' was not declared in this scope
  340 | time-zone-representation <TimeZonePtrOrName>>;
      |           ^~~~~~~~~~~~~~
p1424.cpp:340:44: error: template argument 2 is invalid
  340 | time-zone-representation <TimeZonePtrOrName>>;
      |                                            ^~
p1424.cpp:340:6: error: 'zone' was not declared in this scope
  340 | time-zone-representation <TimeZonePtrOrName>>;
      |      ^~~~
p1424.cpp:340:11: error: 'representation' was not declared in this scope
  340 | time-zone-representation <TimeZonePtrOrName>>;
      |           ^~~~~~~~~~~~~~
p1424.cpp:340:44: error: template argument 2 is invalid
  340 | time-zone-representation <TimeZonePtrOrName>>;
      |                                            ^~
p1424.cpp:340:6: error: 'zone' was not declared in this scope
  340 | time-zone-representation <TimeZonePtrOrName>>;
      |      ^~~~
p1424.cpp:340:11: error: 'representation' was not declared in this scope
  340 | time-zone-representation <TimeZonePtrOrName>>;
      |           ^~~~~~~~~~~~~~
p1424.cpp:340:44: error: template argument 2 is invalid
  340 | time-zone-representation <TimeZonePtrOrName>>;
      |                                            ^~
p1424.cpp:339:4: error: invalid template-id
  339 | -> zoned_time<common_type_t<Duration, seconds>,
      |    ^~~~~~~~~~
p1424.cpp:340:6: error: 'zone' was not declared in this scope
  340 | time-zone-representation <TimeZonePtrOrName>>;
      |      ^~~~
p1424.cpp:340:11: error: 'representation' was not declared in this scope
  340 | time-zone-representation <TimeZonePtrOrName>>;
      |           ^~~~~~~~~~~~~~
p1424.cpp:340:44: error: expected primary-expression before '>' token
  340 | time-zone-representation <TimeZonePtrOrName>>;
      |                                            ^~
p1424.cpp:340:44: error: trailing return type 'zoned_time<...auto...>' of deduction guide is not a specialization of 'std::chrono::zoned_time<Duration, TimeZonePtr>'
p1424.cpp:348:13: error: expected constructor, destructor, or type conversion before ';' token
  348 | zoned_time();
      |             ^
p1424.cpp:349:27: error: 'Duration' was not declared in this scope
  349 | zoned_time(const sys_time<Duration>& st);
      |                           ^~~~~~~~
p1424.cpp:349:27: error: 'Duration' was not declared in this scope
p1424.cpp:349:27: error: 'Duration' was not declared in this scope
p1424.cpp:349:27: error: 'Duration' was not declared in this scope
p1424.cpp:349:27: error: 'Duration' was not declared in this scope
p1424.cpp:349:27: error: 'Duration' was not declared in this scope
p1424.cpp:349:18: error: 'sys_time' does not name a type; did you mean 'SYS_time'?
  349 | zoned_time(const sys_time<Duration>& st);
      |                  ^~~~~~~~
      |                  SYS_time
p1424.cpp:349:26: error: expected ',' or '...' before '<' token
  349 | zoned_time(const sys_time<Duration>& st);
      |                          ^
p1424.cpp:349:41: error: expected constructor, destructor, or type conversion before ';' token
  349 | zoned_time(const sys_time<Duration>& st);
      |                                         ^
p1424.cpp:352:10: error: ISO C++ forbids declaration of 'zoned_time' with no type [-fpermissive]
  352 | explicit zoned_time(TimeZonePtr z);
      |          ^~~~~~~~~~
p1424.cpp:352:1: error: 'explicit' outside class declaration
  352 | explicit zoned_time(TimeZonePtr z);
      | ^~~~~~~~
p1424.cpp:352:21: error: 'TimeZonePtr' was not declared in this scope; did you mean 'timezone'?
  352 | explicit zoned_time(TimeZonePtr z);
      |                     ^~~~~~~~~~~
      |                     timezone
p1424.cpp:355:10: error: ISO C++ forbids declaration of 'zoned_time' with no type [-fpermissive]
  355 | explicit zoned_time(string_view name);
      |          ^~~~~~~~~~
p1424.cpp:355:1: error: 'explicit' outside class declaration
  355 | explicit zoned_time(string_view name);
      | ^~~~~~~~
p1424.cpp:355:37: error: 'int zoned_time(std::string_view)' redeclared as different kind of entity
  355 | explicit zoned_time(string_view name);
      |                                     ^
p1424.cpp:352:10: note: previous declaration 'int zoned_time'
  352 | explicit zoned_time(TimeZonePtr z);
      |          ^~~~~~~~~~
p1424.cpp:358:18: error: 'zoned_time' does not name a type
  358 | zoned_time(const zoned_time<Duration2, TimeZonePtr>& y);
      |                  ^~~~~~~~~~
p1424.cpp:358:28: error: expected ',' or '...' before '<' token
  358 | zoned_time(const zoned_time<Duration2, TimeZonePtr>& y);
      |                            ^
p1424.cpp:358:56: error: expected constructor, destructor, or type conversion before ';' token
  358 | zoned_time(const zoned_time<Duration2, TimeZonePtr>& y);
      |                                                        ^
p1424.cpp:360:11: error: expected constructor, destructor, or type conversion before '(' token
  360 | zoned_time(TimeZonePtr z, const sys_time<Duration>& st);
      |           ^
p1424.cpp:363:45: error: 'Duration' was not declared in this scope
  363 | zoned_time(string_view name, const sys_time<Duration>& st);
      |                                             ^~~~~~~~
p1424.cpp:363:45: error: 'Duration' was not declared in this scope
p1424.cpp:363:45: error: 'Duration' was not declared in this scope
p1424.cpp:363:45: error: 'Duration' was not declared in this scope
p1424.cpp:363:45: error: 'Duration' was not declared in this scope
p1424.cpp:363:45: error: 'Duration' was not declared in this scope
p1424.cpp:363:36: error: 'sys_time' does not name a type; did you mean 'SYS_time'?
  363 | zoned_time(string_view name, const sys_time<Duration>& st);
      |                                    ^~~~~~~~
      |                                    SYS_time
p1424.cpp:363:44: error: expected ',' or '...' before '<' token
  363 | zoned_time(string_view name, const sys_time<Duration>& st);
      |                                            ^
p1424.cpp:363:59: error: expected constructor, destructor, or type conversion before ';' token
  363 | zoned_time(string_view name, const sys_time<Duration>& st);
      |                                                           ^
p1424.cpp:366:11: error: expected constructor, destructor, or type conversion before '(' token
  366 | zoned_time(TimeZonePtr z, const local_time<Duration>& tp);
      |           ^
p1424.cpp:371:47: error: 'Duration' was not declared in this scope
  371 | zoned_time(string_view name, const local_time<Duration>& tp);
      |                                               ^~~~~~~~
p1424.cpp:371:47: error: 'Duration' was not declared in this scope
p1424.cpp:371:47: error: 'Duration' was not declared in this scope
p1424.cpp:371:47: error: 'Duration' was not declared in this scope
p1424.cpp:371:47: error: 'Duration' was not declared in this scope
p1424.cpp:371:47: error: 'Duration' was not declared in this scope
p1424.cpp:371:36: error: 'local_time' does not name a type; did you mean 'locale_t'?
  371 | zoned_time(string_view name, const local_time<Duration>& tp);
      |                                    ^~~~~~~~~~
      |                                    locale_t
p1424.cpp:371:46: error: expected ',' or '...' before '<' token
  371 | zoned_time(string_view name, const local_time<Duration>& tp);
      |                                              ^
p1424.cpp:371:61: error: expected constructor, destructor, or type conversion before ';' token
  371 | zoned_time(string_view name, const local_time<Duration>& tp);
      |                                                             ^
p1424.cpp:374:11: error: expected constructor, destructor, or type conversion before '(' token
  374 | zoned_time(TimeZonePtr z, const local_time<Duration>& tp, choose c);
      |           ^
p1424.cpp:381:11: error: expected constructor, destructor, or type conversion before '(' token
  381 | zoned_time(TimeZonePtr z, const zoned_time<Duration2, TimeZonePtr2>& y);
      |           ^
p1424.cpp:385:13: error: expected constructor, destructor, or type conversion before '(' token
  385 |   zoned_time(TimeZonePtr z, const zoned_time<Duration2, TimeZonePtr2>& y, choose);
      |             ^
p1424.cpp:390:38: error: 'zoned_time' does not name a type
  390 |   zoned_time(string_view name, const zoned_time<Duration2, TimeZonePtr2>& y);
      |                                      ^~~~~~~~~~
p1424.cpp:390:48: error: expected ',' or '...' before '<' token
  390 |   zoned_time(string_view name, const zoned_time<Duration2, TimeZonePtr2>& y);
      |                                                ^
p1424.cpp:390:77: error: expected constructor, destructor, or type conversion before ';' token
  390 |   zoned_time(string_view name, const zoned_time<Duration2, TimeZonePtr2>& y);
      |                                                                             ^
p1424.cpp:393:36: error: 'zoned_time' does not name a type
  393 | zoned_time(string_view name, const zoned_time<Duration2, TimeZonePtr2>& y, choose c);
      |                                    ^~~~~~~~~~
p1424.cpp:393:46: error: expected ',' or '...' before '<' token
  393 | zoned_time(string_view name, const zoned_time<Duration2, TimeZonePtr2>& y, choose c);
      |                                              ^
p1424.cpp:393:85: error: expected constructor, destructor, or type conversion before ';' token
  393 | zoned_time(string_view name, const zoned_time<Duration2, TimeZonePtr2>& y, choose c);
      |                                                                                     ^
p1424.cpp:397:1: error: 'zoned_time' does not name a type
  397 | zoned_time& operator=(const sys_time<Duration>& st);
      | ^~~~~~~~~~
p1424.cpp:400:1: error: 'zoned_time' does not name a type
  400 | zoned_time& operator=(const local_time<Duration>& lt);
      | ^~~~~~~~~~
p1424.cpp:403:19: error: 'duration' was not declared in this scope; did you mean 'std::chrono::duration'?
  403 | operator sys_time<duration>() const;
      |                   ^~~~~~~~
      |                   std::chrono::duration
/usr/local/include/c++/12.1.0/bits/chrono.h:62:14: note: 'std::chrono::duration' declared here
   62 |       struct duration;
      |              ^~~~~~~~
p1424.cpp:403:10: error: expected type-specifier
  403 | operator sys_time<duration>() const;
      |          ^~~~~~~~~~~~~~~~~~
p1424.cpp:405:30: error: 'duration' was not declared in this scope; did you mean 'std::chrono::duration'?
  405 | explicit operator local_time<duration>() const;
      |                              ^~~~~~~~
      |                              std::chrono::duration
/usr/local/include/c++/12.1.0/bits/chrono.h:62:14: note: 'std::chrono::duration' declared here
   62 |       struct duration;
      |              ^~~~~~~~
p1424.cpp:405:19: error: expected type-specifier
  405 | explicit operator local_time<duration>() const;
      |                   ^~~~~~~~~~~~~~~~~~~~
p1424.cpp:407:1: error: 'TimeZonePtr' does not name a type
  407 | TimeZonePtr get_time_zone() const;
      | ^~~~~~~~~~~
p1424.cpp:409:12: error: 'duration' was not declared in this scope; did you mean 'std::chrono::duration'?
  409 | local_time<duration> get_local_time() const;
      |            ^~~~~~~~
      |            std::chrono::duration
/usr/local/include/c++/12.1.0/bits/chrono.h:62:14: note: 'std::chrono::duration' declared here
   62 |       struct duration;
      |              ^~~~~~~~
p1424.cpp:409:12: error: 'duration' was not declared in this scope; did you mean 'std::chrono::duration'?
  409 | local_time<duration> get_local_time() const;
      |            ^~~~~~~~
      |            std::chrono::duration
/usr/local/include/c++/12.1.0/bits/chrono.h:62:14: note: 'std::chrono::duration' declared here
   62 |       struct duration;
      |              ^~~~~~~~
p1424.cpp:409:12: error: 'duration' was not declared in this scope; did you mean 'std::chrono::duration'?
  409 | local_time<duration> get_local_time() const;
      |            ^~~~~~~~
      |            std::chrono::duration
/usr/local/include/c++/12.1.0/bits/chrono.h:62:14: note: 'std::chrono::duration' declared here
   62 |       struct duration;
      |              ^~~~~~~~
p1424.cpp:409:12: error: 'duration' was not declared in this scope; did you mean 'std::chrono::duration'?
  409 | local_time<duration> get_local_time() const;
      |            ^~~~~~~~
      |            std::chrono::duration
/usr/local/include/c++/12.1.0/bits/chrono.h:62:14: note: 'std::chrono::duration' declared here
   62 |       struct duration;
      |              ^~~~~~~~
p1424.cpp:409:12: error: 'duration' was not declared in this scope; did you mean 'std::chrono::duration'?
  409 | local_time<duration> get_local_time() const;
      |            ^~~~~~~~
      |            std::chrono::duration
/usr/local/include/c++/12.1.0/bits/chrono.h:62:14: note: 'std::chrono::duration' declared here
   62 |       struct duration;
      |              ^~~~~~~~
p1424.cpp:409:12: error: 'duration' was not declared in this scope; did you mean 'std::chrono::duration'?
  409 | local_time<duration> get_local_time() const;
      |            ^~~~~~~~
      |            std::chrono::duration
/usr/local/include/c++/12.1.0/bits/chrono.h:62:14: note: 'std::chrono::duration' declared here
   62 |       struct duration;
      |              ^~~~~~~~
p1424.cpp:409:12: error: 'duration' was not declared in this scope; did you mean 'std::chrono::duration'?
  409 | local_time<duration> get_local_time() const;
      |            ^~~~~~~~
      |            std::chrono::duration
/usr/local/include/c++/12.1.0/bits/chrono.h:62:14: note: 'std::chrono::duration' declared here
   62 |       struct duration;
      |              ^~~~~~~~
p1424.cpp:409:12: error: 'duration' was not declared in this scope; did you mean 'std::chrono::duration'?
  409 | local_time<duration> get_local_time() const;
      |            ^~~~~~~~
      |            std::chrono::duration
/usr/local/include/c++/12.1.0/bits/chrono.h:62:14: note: 'std::chrono::duration' declared here
   62 |       struct duration;
      |              ^~~~~~~~
p1424.cpp:409:12: error: 'duration' was not declared in this scope; did you mean 'std::chrono::duration'?
  409 | local_time<duration> get_local_time() const;
      |            ^~~~~~~~
      |            std::chrono::duration
/usr/local/include/c++/12.1.0/bits/chrono.h:62:14: note: 'std::chrono::duration' declared here
   62 |       struct duration;
      |              ^~~~~~~~
p1424.cpp:409:1: error: 'local_time' does not name a type; did you mean 'locale_t'?
  409 | local_time<duration> get_local_time() const;
      | ^~~~~~~~~~
      | locale_t
p1424.cpp:411:10: error: 'duration' was not declared in this scope; did you mean 'std::chrono::duration'?
  411 | sys_time<duration> get_sys_time() const;
      |          ^~~~~~~~
      |          std::chrono::duration
/usr/local/include/c++/12.1.0/bits/chrono.h:62:14: note: 'std::chrono::duration' declared here
   62 |       struct duration;
      |              ^~~~~~~~
p1424.cpp:411:10: error: 'duration' was not declared in this scope; did you mean 'std::chrono::duration'?
  411 | sys_time<duration> get_sys_time() const;
      |          ^~~~~~~~
      |          std::chrono::duration
/usr/local/include/c++/12.1.0/bits/chrono.h:62:14: note: 'std::chrono::duration' declared here
   62 |       struct duration;
      |              ^~~~~~~~
p1424.cpp:411:10: error: 'duration' was not declared in this scope; did you mean 'std::chrono::duration'?
  411 | sys_time<duration> get_sys_time() const;
      |          ^~~~~~~~
      |          std::chrono::duration
/usr/local/include/c++/12.1.0/bits/chrono.h:62:14: note: 'std::chrono::duration' declared here
   62 |       struct duration;
      |              ^~~~~~~~
p1424.cpp:411:10: error: 'duration' was not declared in this scope; did you mean 'std::chrono::duration'?
  411 | sys_time<duration> get_sys_time() const;
      |          ^~~~~~~~
      |          std::chrono::duration
/usr/local/include/c++/12.1.0/bits/chrono.h:62:14: note: 'std::chrono::duration' declared here
   62 |       struct duration;
      |              ^~~~~~~~
p1424.cpp:411:10: error: 'duration' was not declared in this scope; did you mean 'std::chrono::duration'?
  411 | sys_time<duration> get_sys_time() const;
      |          ^~~~~~~~
      |          std::chrono::duration
/usr/local/include/c++/12.1.0/bits/chrono.h:62:14: note: 'std::chrono::duration' declared here
   62 |       struct duration;
      |              ^~~~~~~~
p1424.cpp:411:10: error: 'duration' was not declared in this scope; did you mean 'std::chrono::duration'?
  411 | sys_time<duration> get_sys_time() const;
      |          ^~~~~~~~
      |          std::chrono::duration
/usr/local/include/c++/12.1.0/bits/chrono.h:62:14: note: 'std::chrono::duration' declared here
   62 |       struct duration;
      |              ^~~~~~~~
p1424.cpp:411:10: error: 'duration' was not declared in this scope; did you mean 'std::chrono::duration'?
  411 | sys_time<duration> get_sys_time() const;
      |          ^~~~~~~~
      |          std::chrono::duration
/usr/local/include/c++/12.1.0/bits/chrono.h:62:14: note: 'std::chrono::duration' declared here
   62 |       struct duration;
      |              ^~~~~~~~
p1424.cpp:411:10: error: 'duration' was not declared in this scope; did you mean 'std::chrono::duration'?
  411 | sys_time<duration> get_sys_time() const;
      |          ^~~~~~~~
      |          std::chrono::duration
/usr/local/include/c++/12.1.0/bits/chrono.h:62:14: note: 'std::chrono::duration' declared here
   62 |       struct duration;
      |              ^~~~~~~~
p1424.cpp:411:10: error: 'duration' was not declared in this scope; did you mean 'std::chrono::duration'?
  411 | sys_time<duration> get_sys_time() const;
      |          ^~~~~~~~
      |          std::chrono::duration
/usr/local/include/c++/12.1.0/bits/chrono.h:62:14: note: 'std::chrono::duration' declared here
   62 |       struct duration;
      |              ^~~~~~~~
p1424.cpp:411:1: error: 'sys_time' does not name a type; did you mean 'SYS_time'?
  411 | sys_time<duration> get_sys_time() const;
      | ^~~~~~~~
      | SYS_time
p1424.cpp:413:1: error: 'sys_info' does not name a type
  413 | sys_info get_info() const;
      | ^~~~~~~~
p1424.cpp:417:25: error: 'zoned_time' does not name a type
  417 |   bool operator==(const zoned_time<Duration1, TimeZonePtr>& x,
      |                         ^~~~~~~~~~
p1424.cpp:417:35: error: expected ',' or '...' before '<' token
  417 |   bool operator==(const zoned_time<Duration1, TimeZonePtr>& x,
      |                                   ^
p1424.cpp:417:63: error: expected ')' before '}' token
  417 |   bool operator==(const zoned_time<Duration1, TimeZonePtr>& x,
      |                  ~                                            ^
      |                                                               )
  418 | }
      | ~                                                              
p1424.cpp:418:1: error: expected initializer before '}' token
  418 | }
      | ^
p1424.cpp:418:1: error: expected declaration before '}' token
p1424.cpp:419:20: error: 'zoned_time' does not name a type
  419 |              const zoned_time<Duration2, TimeZonePtr>& y);
      |                    ^~~~~~~~~~
p1424.cpp:424:18: error: 'zoned_time' does not name a type
  424 |            const zoned_time<Duration, TimeZonePtr>& t);
      |                  ^~~~~~~~~~
p1424.cpp:424:28: error: expected ',' or '...' before '<' token
  424 |            const zoned_time<Duration, TimeZonePtr>& t);
      |                            ^
p1424.cpp:426:1: error: expected unqualified-id before 'return'
  426 | return os << format(os.getloc(), STATICALLY-WIDEN("{:L%F %T %Z}"), t);
      | ^~~~~~
p1424.cpp:441:6: error: expected unqualified-id before 'for'
  441 |      for (auto& l : get_tzdb().leap_seconds)
      |      ^~~
p1424.cpp:473:14: error: 'sys_seconds' does not name a type
  473 |    constexpr sys_seconds date() const noexcept;
      |              ^~~~~~~~~~~
p1424.cpp:475:11: error: 'seconds' does not name a type; did you mean 'useconds_t'?
  475 | constexpr seconds value() const noexcept;
      |           ^~~~~~~
      |           useconds_t
p1424.cpp:479:33: error: 'leap_second' does not name a type
  479 | constexpr bool operator==(const leap_second& x, const leap_second& y) noexcept;
      |                                 ^~~~~~~~~~~
p1424.cpp:479:55: error: 'leap_second' does not name a type
  479 | constexpr bool operator==(const leap_second& x, const leap_second& y) noexcept;
      |                                                       ^~~~~~~~~~~
p1424.cpp:479:16: error: 'constexpr bool operator==(const int&, const int&)' must have an argument of class or enumerated type
  479 | constexpr bool operator==(const leap_second& x, const leap_second& y) noexcept;
      |                ^~~~~~~~
p1424.cpp:481:45: error: 'leap_second' does not name a type
  481 | constexpr strong_ordering operator<=>(const leap_second& x, const leap_second& y) noexcept;
      |                                             ^~~~~~~~~~~
p1424.cpp:481:67: error: 'leap_second' does not name a type
  481 | constexpr strong_ordering operator<=>(const leap_second& x, const leap_second& y) noexcept;
      |                                                                   ^~~~~~~~~~~
p1424.cpp:481:27: error: 'constexpr std::strong_ordering operator<=>(const int&, const int&)' must have an argument of class or enumerated type
  481 | constexpr strong_ordering operator<=>(const leap_second& x, const leap_second& y) noexcept;
      |                           ^~~~~~~~
p1424.cpp:484:35: error: 'leap_second' does not name a type
  484 |   constexpr bool operator==(const leap_second& x, const sys_time<Duration>& y) noexcept;
      |                                   ^~~~~~~~~~~
p1424.cpp:484:57: error: 'sys_time' does not name a type; did you mean 'SYS_time'?
  484 |   constexpr bool operator==(const leap_second& x, const sys_time<Duration>& y) noexcept;
      |                                                         ^~~~~~~~
      |                                                         SYS_time
p1424.cpp:484:65: error: expected ',' or '...' before '<' token
  484 |   constexpr bool operator==(const leap_second& x, const sys_time<Duration>& y) noexcept;
      |                                                                 ^
p1424.cpp:484:18: error: 'constexpr bool operator==(const int&, int)' must have an argument of class or enumerated type
  484 |   constexpr bool operator==(const leap_second& x, const sys_time<Duration>& y) noexcept;
      |                  ^~~~~~~~
p1424.cpp:487:34: error: 'leap_second' does not name a type
  487 |   constexpr bool operator<(const leap_second& x, const sys_time<Duration>& y) noexcept;
      |                                  ^~~~~~~~~~~
p1424.cpp:487:56: error: 'sys_time' does not name a type; did you mean 'SYS_time'?
  487 |   constexpr bool operator<(const leap_second& x, const sys_time<Duration>& y) noexcept;
      |                                                        ^~~~~~~~
      |                                                        SYS_time
p1424.cpp:487:64: error: expected ',' or '...' before '<' token
  487 |   constexpr bool operator<(const leap_second& x, const sys_time<Duration>& y) noexcept;
      |                                                                ^
p1424.cpp:487:18: error: 'constexpr bool operator<(const int&, int)' must have an argument of class or enumerated type
  487 |   constexpr bool operator<(const leap_second& x, const sys_time<Duration>& y) noexcept;
      |                  ^~~~~~~~
p1424.cpp:490:34: error: 'sys_time' does not name a type; did you mean 'SYS_time'?
  490 |   constexpr bool operator<(const sys_time<Duration>& x, const leap_second& y) noexcept;
      |                                  ^~~~~~~~
      |                                  SYS_time
p1424.cpp:490:42: error: expected ',' or '...' before '<' token
  490 |   constexpr bool operator<(const sys_time<Duration>& x, const leap_second& y) noexcept;
      |                                          ^
p1424.cpp:490:18: error: 'constexpr bool operator<(int)' must have an argument of class or enumerated type
  490 |   constexpr bool operator<(const sys_time<Duration>& x, const leap_second& y) noexcept;
      |                  ^~~~~~~~
p1424.cpp:493:34: error: 'leap_second' does not name a type
  493 |   constexpr bool operator>(const leap_second& x, const sys_time<Duration>& y) noexcept;
      |                                  ^~~~~~~~~~~
p1424.cpp:493:56: error: 'sys_time' does not name a type; did you mean 'SYS_time'?
  493 |   constexpr bool operator>(const leap_second& x, const sys_time<Duration>& y) noexcept;
      |                                                        ^~~~~~~~
      |                                                        SYS_time
p1424.cpp:493:64: error: expected ',' or '...' before '<' token
  493 |   constexpr bool operator>(const leap_second& x, const sys_time<Duration>& y) noexcept;
      |                                                                ^
p1424.cpp:493:18: error: 'constexpr bool operator>(const int&, int)' must have an argument of class or enumerated type
  493 |   constexpr bool operator>(const leap_second& x, const sys_time<Duration>& y) noexcept;
      |                  ^~~~~~~~
p1424.cpp:496:34: error: 'sys_time' does not name a type; did you mean 'SYS_time'?
  496 |   constexpr bool operator>(const sys_time<Duration>& x, const leap_second& y) noexcept;
      |                                  ^~~~~~~~
      |                                  SYS_time
p1424.cpp:496:42: error: expected ',' or '...' before '<' token
  496 |   constexpr bool operator>(const sys_time<Duration>& x, const leap_second& y) noexcept;
      |                                          ^
p1424.cpp:496:18: error: 'constexpr bool operator>(int)' must have an argument of class or enumerated type
  496 |   constexpr bool operator>(const sys_time<Duration>& x, const leap_second& y) noexcept;
      |                  ^~~~~~~~
p1424.cpp:499:35: error: 'leap_second' does not name a type
  499 |   constexpr bool operator<=(const leap_second& x, const sys_time<Duration>& y) noexcept;
      |                                   ^~~~~~~~~~~
p1424.cpp:499:57: error: 'sys_time' does not name a type; did you mean 'SYS_time'?
  499 |   constexpr bool operator<=(const leap_second& x, const sys_time<Duration>& y) noexcept;
      |                                                         ^~~~~~~~
      |                                                         SYS_time
p1424.cpp:499:65: error: expected ',' or '...' before '<' token
  499 |   constexpr bool operator<=(const leap_second& x, const sys_time<Duration>& y) noexcept;
      |                                                                 ^
p1424.cpp:499:18: error: 'constexpr bool operator<=(const int&, int)' must have an argument of class or enumerated type
  499 |   constexpr bool operator<=(const leap_second& x, const sys_time<Duration>& y) noexcept;
      |                  ^~~~~~~~
p1424.cpp:502:35: error: 'sys_time' does not name a type; did you mean 'SYS_time'?
  502 |   constexpr bool operator<=(const sys_time<Duration>& x, const leap_second& y) noexcept;
      |                                   ^~~~~~~~
      |                                   SYS_time
p1424.cpp:502:43: error: expected ',' or '...' before '<' token
  502 |   constexpr bool operator<=(const sys_time<Duration>& x, const leap_second& y) noexcept;
      |                                           ^
p1424.cpp:502:18: error: 'constexpr bool operator<=(int)' must have an argument of class or enumerated type
  502 |   constexpr bool operator<=(const sys_time<Duration>& x, const leap_second& y) noexcept;
      |                  ^~~~~~~~
p1424.cpp:505:35: error: 'leap_second' does not name a type
  505 |   constexpr bool operator>=(const leap_second& x, const sys_time<Duration>& y) noexcept;
      |                                   ^~~~~~~~~~~
p1424.cpp:505:57: error: 'sys_time' does not name a type; did you mean 'SYS_time'?
  505 |   constexpr bool operator>=(const leap_second& x, const sys_time<Duration>& y) noexcept;
      |                                                         ^~~~~~~~
      |                                                         SYS_time
p1424.cpp:505:65: error: expected ',' or '...' before '<' token
  505 |   constexpr bool operator>=(const leap_second& x, const sys_time<Duration>& y) noexcept;
      |                                                                 ^
p1424.cpp:505:18: error: 'constexpr bool operator>=(const int&, int)' must have an argument of class or enumerated type
  505 |   constexpr bool operator>=(const leap_second& x, const sys_time<Duration>& y) noexcept;
      |                  ^~~~~~~~
p1424.cpp:508:35: error: 'sys_time' does not name a type; did you mean 'SYS_time'?
  508 |   constexpr bool operator>=(const sys_time<Duration>& x, const leap_second& y) noexcept;
      |                                   ^~~~~~~~
      |                                   SYS_time
p1424.cpp:508:43: error: expected ',' or '...' before '<' token
  508 |   constexpr bool operator>=(const sys_time<Duration>& x, const leap_second& y) noexcept;
      |                                           ^
p1424.cpp:508:18: error: 'constexpr bool operator>=(int)' must have an argument of class or enumerated type
  508 |   constexpr bool operator>=(const sys_time<Duration>& x, const leap_second& y) noexcept;
      |                  ^~~~~~~~
p1424.cpp:511:38: error: 'sys_seconds' was not declared in this scope; did you mean 'std::chrono::sys_second'?
  511 |   requires three_way_comparable_with<sys_seconds, sys_time<Duration>>
      |                                      ^~~~~~~~~~~
      |                                      std::chrono::sys_seconds
/usr/local/include/c++/12.1.0/bits/chrono.h:1181:11: note: 'std::chrono::sys_seconds' declared here
 1181 |     using sys_seconds = sys_time<seconds>;
      |           ^~~~~~~~~~~
p1424.cpp:511:51: error: 'sys_time' was not declared in this scope; did you mean 'std::chrono::sys_time'?
  511 |   requires three_way_comparable_with<sys_seconds, sys_time<Duration>>
      |                                                   ^~~~~~~~
      |                                                   std::chrono::sys_time
/usr/local/include/c++/12.1.0/bits/chrono.h:1180:13: note: 'std::chrono::sys_time' declared here
 1180 |       using sys_time = time_point<system_clock, _Duration>;
      |             ^~~~~~~~
p1424.cpp:511:12: error: parse error in template argument list
  511 |   requires three_way_comparable_with<sys_seconds, sys_time<Duration>>
      |            ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
p1424.cpp:511:12: error: template argument 1 is invalid
p1424.cpp:511:12: error: template argument 2 is invalid
p1424.cpp:512:36: error: 'leap_second' does not name a type
  512 |   constexpr auto operator<=>(const leap_second& x, const sys_time<Duration>& y) noexcept;
      |                                    ^~~~~~~~~~~
p1424.cpp:512:58: error: 'sys_time' does not name a type; did you mean 'SYS_time'?
  512 |   constexpr auto operator<=>(const leap_second& x, const sys_time<Duration>& y) noexcept;
      |                                                          ^~~~~~~~
      |                                                          SYS_time
p1424.cpp:512:66: error: expected ',' or '...' before '<' token
  512 |   constexpr auto operator<=>(const leap_second& x, const sys_time<Duration>& y) noexcept;
      |                                                                  ^
p1424.cpp:512:18: error: 'constexpr auto operator<=>(const int&, int)' must have an argument of class or enumerated type
  512 |   constexpr auto operator<=>(const leap_second& x, const sys_time<Duration>& y) noexcept;
      |                  ^~~~~~~~
p1424.cpp:528:29: error: non-member function 'std::string_view name()' cannot have cv-qualifier
  528 |    string_view name() const noexcept;
      |                             ^~~~~~~~
p1424.cpp:530:28: error: non-member function 'std::string_view target()' cannot have cv-qualifier
  530 | string_view target() const noexcept;
      |                            ^~~~~~~~
p1424.cpp:533:23: error: 'time_zone_link' does not name a type
  533 | bool operator==(const time_zone_link& x, const time_zone_link& y) noexcept;
      |                       ^~~~~~~~~~~~~~
p1424.cpp:533:48: error: 'time_zone_link' does not name a type
  533 | bool operator==(const time_zone_link& x, const time_zone_link& y) noexcept;
      |                                                ^~~~~~~~~~~~~~
p1424.cpp:533:6: error: 'bool operator==(const int&, const int&)' must have an argument of class or enumerated type
  533 | bool operator==(const time_zone_link& x, const time_zone_link& y) noexcept;
      |      ^~~~~~~~
p1424.cpp:535:35: error: 'time_zone_link' does not name a type
  535 | strong_ordering operator<=>(const time_zone_link& x, const time_zone_link& y) noexcept;
      |                                   ^~~~~~~~~~~~~~
p1424.cpp:535:60: error: 'time_zone_link' does not name a type
  535 | strong_ordering operator<=>(const time_zone_link& x, const time_zone_link& y) noexcept;
      |                                                            ^~~~~~~~~~~~~~
p1424.cpp:535:17: error: 'std::strong_ordering operator<=>(const int&, const int&)' must have an argument of class or enumerated type
  535 | strong_ordering operator<=>(const time_zone_link& x, const time_zone_link& y) noexcept;
      |                 ^~~~~~~~

検討事項(agenda)

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

応用例1 AUTOSAR C++

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

Autosar Guidelines C++14 example code compile list

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

応用例2 MISRA C/C++

MISRA C まとめ #include

MISRA C++ 5-0-16

応用例3 CERT C/C++

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

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

応用例4 箱庭 

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

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

仮想戦略会議「箱庭」

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

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

参考資料(reference)

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

自己参考資料(self reference)

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

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

#include "N4910.h"

C++N4910資料の改善点

dockerにclang

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

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

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

astyle 使ってみた

個人開発

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

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

読書感想文

個人開発に焦点を当てたのは良い企画だと思った。このコンパイル実験そのものが、C++N4910に対する、G++とClang++による感想文だということにお気づきでしょうか。

CコンパイラによるC言語規格の読書感想文を掲載しています。

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

文書履歴(document history)

ver. 0.01 初稿  20220821

0
0
0

Register as a new user and use Qiita more conveniently

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