diff --git a/tz.html b/tz.html index 6b57211..733d279 100644 --- a/tz.html +++ b/tz.html @@ -1999,7 +1999,14 @@ make_zoned(const std::string& name, const sys_time<Duration>& st) template <class CharT, class Traits, , class Rep, class Period> void to_stream(std::basic_ostream<CharT, Traits>& os, const CharT* fmt, - const std::chrono::duration<Rep, Period>& d); + const std::chrono::duration<Rep, Period>& d); + + +
+template <class CharT, class Traits, , class Rep, class Period>
+void
+to_stream(std::basic_ostream<CharT, Traits>& os, const CharT* fmt,
+          const year_month_day& ymd);
 
@@ -2030,6 +2037,20 @@ to_stream(std::basic_ostream<CharT, Traits>& os, const CharT* fmt,
           const utc_time<Duration>& tp);
 
+
+template <class CharT, class Traits, class Duration>
+void
+to_stream(std::basic_ostream<CharT, Traits>& os, const CharT* fmt,
+          const tai_time<Duration>& tp);
+
+ +
+template <class CharT, class Traits, class Duration>
+void
+to_stream(std::basic_ostream<CharT, Traits>& os, const CharT* fmt,
+          const gps_time<Duration>& tp);
+
+

These are lower-level functions with respect to format. These functions @@ -2046,110 +2067,29 @@ creates temporary strings or streams to format into.

format

-template <class CharT, class Traits, class Duration>
-std::basic_string<class CharT, class Traits>
-format(const std::locale& loc, const std::basic_string<class CharT, class Traits>& format,
-       const local_time<Duration>& tp);
-
-template <class CharT, class Traits, class Duration>
-std::basic_string<class CharT, class Traits>
-format(const std::basic_string<class CharT, class Traits>& format, const local_time<Duration>& tp);
-
-template <class CharT, class Traits, class Duration>
-std::basic_string<class CharT, class Traits>
-format(const std::locale& loc, const std::basic_string<class CharT, class Traits>& format,
-       const zoned_time<Duration>& tp);
-
-template <class CharT, class Traits, class Duration>
-std::basic_string<class CharT, class Traits>
-format(const std::basic_string<class CharT, class Traits>& format, const zoned_time<Duration>& tp);
-
-template <class CharT, class Traits, class Duration>
-std::basic_string<class CharT, class Traits>
-format(const std::locale& loc, const std::basic_string<class CharT, class Traits>& format,
-       const sys_time<Duration>& tp);
-
-template <class CharT, class Traits, class Duration>
-std::basic_string<class CharT, class Traits>
-format(const std::basic_string<class CharT, class Traits>& format, const sys_time<Duration>& tp);
-
-template <class CharT, class Traits, class Duration>
-std::basic_string<class CharT, class Traits>
-format(const std::locale& loc, const std::basic_string<class CharT, class Traits>& format,
-       const utc_time<Duration>& tp);
-
-template <class CharT, class Traits, class Duration>
-std::basic_string<class CharT, class Traits>
-format(const std::basic_string<class CharT, class Traits>& format, const utc_time<Duration>& tp);
-
-template <class CharT, class Traits, class Duration>
-std::basic_string<class CharT, class Traits>
-format(const std::basic_string<class CharT, class Traits>& format, const tai_time<Duration>& tp);
-
-template <class CharT, class Traits, class Duration>
-std::basic_string<class CharT, class Traits>
-format(const std::basic_string<class CharT, class Traits>& format, const gps_time<Duration>& tp);
-
-template <class CharT, class Traits>
-std::basic_string<class CharT, class Traits>
-format(const std::basic_string<class CharT, class Traits>& format, const year_month_day& ymd);
-
-template <class CharT, class Traits, class Rep, class Period>
+template <class CharT, class Streamable>
 std::basic_string<CharT>
-format(const std::basic_string<CharT, Traits>& fmt, const std::chrono::duration<Rep, Period>& d);
+format(const std::locale& loc, const CharT* fmt, const Streamable& tp);
 
-// const CharT* formats
-
-template <class CharT, class Duration>
-std::basic_string<class CharT>
-format(const std::locale& loc, const CharT* format, const local_time<Duration>& tp);
-
-template <class CharT, class Duration>
-std::basic_string<class CharT>
-format(const CharT* format, const local_time<Duration>& tp);
-
-template <class CharT, class Duration>
-std::basic_string<class CharT>
-format(const std::locale& loc, const CharT* format, const zoned_time<Duration>& tp);
-
-template <class CharT, class Duration>
-std::basic_string<class CharT>
-format(const CharT* format, const zoned_time<Duration>& tp);
-
-template <class CharT, class Duration>
-std::basic_string<class CharT>
-format(const std::locale& loc, const CharT* format, const sys_time<Duration>& tp);
-
-template <class CharT, class Duration>
-std::basic_string<class CharT>
-format(const CharT* format, const sys_time<Duration>& tp);
-
-template <class CharT, class Duration>
-std::basic_string<class CharT>
-format(const std::locale& loc, const CharT* format, const utc_time<Duration>& tp);
-
-template <class CharT, class Duration>
-std::basic_string<class CharT>
-format(const CharT* format, const utc_time<Duration>& tp);
-
-template <class CharT, class Duration>
-std::basic_string<class CharT>
-format(const CharT* format, const tai_time<Duration>& tp);
-
-template <class CharT, class Duration>
-std::basic_string<class CharT>
-format(const CharT* format, const gps_time<Duration>& tp);
-
-template <class CharT>
-std::basic_string<class CharT>
-format(const CharT* format, const year_month_day& ymd);
-
-template <class CharT, class Rep, class Period>
+template <class CharT, class Streamable>
 std::basic_string<CharT>
-format(const CharT* fmt, const std::chrono::duration<Rep, Period>& d)
+format(const CharT* fmt, const Streamable& tp);
+
+template <class CharT, class Traits, class Streamable>
+std::basic_string<CharT>
+format(const std::locale& loc, const std::basic_string<CharT, Traits>& fmt, const Streamable& tp);
+
+template <class CharT, class Traits, class Streamable>
+std::basic_string<CharT>
+format(const std::basic_string<CharT, Traits>& fmt, const Streamable& tp);
 

+Remarks: These functions do not participate in overload resolution unless +Streamable has a to_stream overload of the form described in the +previous section. +

+

Effects: These functions create a formatted time stamp using the arguments, returning the result in a std::string.

@@ -2235,8 +2175,10 @@ For the overloads taking a zoned_time it is the value returned by

parse

-One can parse in a sys_time<Duration>, -local_time<Duration>, or a duration<Rep, Period>. +One can parse in a year_month_day, sys_time<Duration>, +local_time<Duration>, utc_time<Duration>, +tai_time<Duration>, gps_time<Duration>, +or a duration<Rep, Period>. Optionally, one can also pass in a reference to a std::string in order to capture the time zone abbreviation, or one can pass in a reference to a std::chrono::minutes to capture a time zone @@ -2244,307 +2186,56 @@ UTC offset (formatted as +0000), or one can pass in both in either

-Each of the functions below return an unspecified manipulator which can be used -to extract the desired information from a stream. +Each of the functions below return a parse_manip manipulator which is +specialized on the type to be parsed, and which can be used to extract the desired +information from a stream.

-template <class Duration, class CharT, class Traits>
-unspecified istream manipulator
-parse(const std::basic_string<CharT, Traits>& format, sys_time<Duration>& tp);
+template <class Parsable, class CharT, class Traits = std::char_traits<CharT>>
+struct parse_manip;
 
-template <class Duration, class CharT, class Traits>
-unspecified istream manipulator
-parse(const std::basic_string<CharT, Traits>& format, sys_time<Duration>& tp,
+template <class Parsable, class CharT, class Traits>
+typename parse_manip<Parsable, CharT, Traits>::type
+parse(const std::basic_string<CharT, Traits>& format, Parsable& tp);
+
+template <class Parsable, class CharT, class Traits>
+typename parse_manip<Parsable, CharT, Traits>::type
+parse(const std::basic_string<CharT, Traits>& format, Parsable& tp,
       std::basic_string<CharT, Traits>& abbrev);
 
-template <class Duration, class CharT, class Traits>
-unspecified istream manipulator
-parse(const std::basic_string<CharT, Traits>& format, sys_time<Duration>& tp,
+template <class Parsable, class CharT, class Traits>
+typename parse_manip<Parsable, CharT, Traits>::type
+parse(const std::basic_string<CharT, Traits>& format, Parsable& tp,
       std::chrono::minutes& offset);
 
-template <class Duration, class CharT, class Traits>
-unspecified istream manipulator
-parse(const std::basic_string<CharT, Traits>& format, sys_time<Duration>& tp,
+template <class Parsable, class CharT, class Traits>
+typename parse_manip<Parsable, CharT, Traits>::type
+parse(const std::basic_string<CharT, Traits>& format, Parsable& tp,
       std::basic_string<CharT, Traits>& abbrev, std::chrono::minutes& offset);
 
-template <class Duration, class CharT, class Traits>
-unspecified istream manipulator
-parse(const std::basic_string<CharT, Traits>& format, sys_time<Duration>& tp,
-      std::chrono::minutes& offset, std::basic_string<CharT, Traits>& abbrev);
-
-template <class Duration, class CharT, class Traits>
-unspecified istream manipulator
-parse(const std::basic_string<CharT, Traits>& format, local_time<Duration>& tp);
-
-template <class Duration, class CharT, class Traits>
-unspecified istream manipulator
-parse(const std::basic_string<CharT, Traits>& format, local_time<Duration>& tp,
-      std::basic_string<CharT, Traits>& abbrev);
-
-template <class Duration, class CharT, class Traits>
-unspecified istream manipulator
-parse(const std::basic_string<CharT, Traits>& format, local_time<Duration>& tp,
-      std::chrono::minutes& offset);
-
-template <class Duration, class CharT, class Traits>
-unspecified istream manipulator
-parse(const std::basic_string<CharT, Traits>& format, local_time<Duration>& tp,
-      std::basic_string<CharT, Traits>& abbrev, std::chrono::minutes& offset);
-
-template <class Duration, class CharT, class Traits>
-unspecified istream manipulator
-parse(const std::basic_string<CharT, Traits>& format, local_time<Duration>& tp,
-      std::chrono::minutes& offset, std::basic_string<CharT, Traits>& abbrev);
-
-template <class Duration, class CharT, class Traits>
-unspecified istream manipulator
-parse(const std::basic_string<CharT, Traits>& format, utc_time<Duration>& tp);
-
-template <class Duration, class CharT, class Traits>
-unspecified istream manipulator
-parse(const std::basic_string<CharT, Traits>& format, utc_time<Duration>& tp,
-      std::basic_string<CharT, Traits>& abbrev);
-
-template <class Duration, class CharT, class Traits>
-unspecified istream manipulator
-parse(const std::basic_string<CharT, Traits>& format, utc_time<Duration>& tp,
-      std::chrono::minutes& offset);
-
-template <class Duration, class CharT, class Traits>
-unspecified istream manipulator
-parse(const std::basic_string<CharT, Traits>& format, utc_time<Duration>& tp,
-      std::basic_string<CharT, Traits>& abbrev, std::chrono::minutes& offset);
-
-template <class Duration, class CharT, class Traits>
-unspecified istream manipulator
-parse(const std::basic_string<CharT, Traits>& format, utc_time<Duration>& tp,
-      std::chrono::minutes& offset, std::basic_string<CharT, Traits>& abbrev);
-
-template <class Duration, class CharT, class Traits>
-unspecified istream manipulator
-parse(const std::basic_string<CharT, Traits>& format, tai_time<Duration>& tp);
-
-template <class Duration, class CharT, class Traits>
-unspecified istream manipulator
-parse(const std::basic_string<CharT, Traits>& format, tai_time<Duration>& tp,
-      std::basic_string<CharT, Traits>& abbrev);
-
-template <class Duration, class CharT, class Traits>
-unspecified istream manipulator
-parse(const std::basic_string<CharT, Traits>& format, tai_time<Duration>& tp,
-      std::chrono::minutes& offset);
-
-template <class Duration, class CharT, class Traits>
-unspecified istream manipulator
-parse(const std::basic_string<CharT, Traits>& format, tai_time<Duration>& tp,
-      std::basic_string<CharT, Traits>& abbrev, std::chrono::minutes& offset);
-
-template <class Duration, class CharT, class Traits>
-unspecified istream manipulator
-parse(const std::basic_string<CharT, Traits>& format, tai_time<Duration>& tp,
-      std::chrono::minutes& offset, std::basic_string<CharT, Traits>& abbrev);
-
-template <class Duration, class CharT, class Traits>
-unspecified istream manipulator
-parse(const std::basic_string<CharT, Traits>& format, gps_time<Duration>& tp);
-
-template <class Duration, class CharT, class Traits>
-unspecified istream manipulator
-parse(const std::basic_string<CharT, Traits>& format, gps_time<Duration>& tp,
-      std::basic_string<CharT, Traits>& abbrev);
-
-template <class Duration, class CharT, class Traits>
-unspecified istream manipulator
-parse(const std::basic_string<CharT, Traits>& format, gps_time<Duration>& tp,
-      std::chrono::minutes& offset);
-
-template <class Duration, class CharT, class Traits>
-unspecified istream manipulator
-parse(const std::basic_string<CharT, Traits>& format, gps_time<Duration>& tp,
-      std::basic_string<CharT, Traits>& abbrev, std::chrono::minutes& offset);
-
-template <class Duration, class CharT, class Traits>
-unspecified istream manipulator
-parse(const std::basic_string<CharT, Traits>& format, gps_time<Duration>& tp,
-      std::chrono::minutes& offset, std::basic_string<CharT, Traits>& abbrev);
-
-template <class CharT, class Traits>
-unspecified istream manipulator
-parse(const std::basic_string<CharT, Traits>& format, year_month_day& ymd);
-
-template <class CharT, class Traits>
-unspecified istream manipulator
-parse(const std::basic_string<CharT, Traits>& format, year_month_day& ymd,
-      std::basic_string<CharT, Traits>& abbrev);
-
-template <class CharT, class Traits>
-unspecified istream manipulator
-parse(const std::basic_string<CharT, Traits>& format, year_month_day& ymd,
-      std::chrono::minutes& offset);
-
-template <class CharT, class Traits>
-unspecified istream manipulator
-parse(const std::basic_string<CharT, Traits>& format, year_month_day& ymd,
-      std::basic_string<CharT, Traits>& abbrev, std::chrono::minutes& offset);
-
-template <class CharT, class Traits>
-unspecified istream manipulator
-parse(const std::basic_string<CharT, Traits>& format, year_month_day& ymd,
-      std::chrono::minutes& offset, std::basic_string<CharT, Traits>& abbrev);
-
-template <class Rep, class Period, class CharT, class Traits>
-unspecified istream manipulator
-parse(const std::basic_string<CharT, Traits>& format,
-      std::chrono::duration<Rep, Period>& d);
-
 // const CharT* formats
 
-template <class Duration, class CharT>
-unspecified istream manipulator
-parse(const CharT* format, sys_time<Duration>& tp);
+template <class Parsable, class CharT>
+typename parse_manip<Parsable, CharT>::type
+parse(const CharT* format, Parsable& tp);
 
-template <class Duration, class CharT, class Traits>
-unspecified istream manipulator
-parse(const CharT* format, sys_time<Duration>& tp,
-      std::basic_string<CharT, Traits>& abbrev);
+template <class Parsable, class CharT, class Traits>
+typename parse_manip<Parsable, CharT>::type
+parse(const CharT* format, Parsable& tp, std::basic_string<CharT, Traits>& abbrev);
 
-template <class Duration, class CharT>
-unspecified istream manipulator
-parse(const CharT* format, sys_time<Duration>& tp, std::chrono::minutes& offset);
+template <class Parsable, class CharT>
+typename parse_manip<Parsable, CharT>::type
+parse(const CharT* format, Parsable& tp, std::chrono::minutes& offset);
 
-template <class Duration, class CharT, class Traits>
-unspecified istream manipulator
-parse(const CharT* format, sys_time<Duration>& tp,
+template <class Parsable, class CharT, class Traits>
+typename parse_manip<Parsable, CharT>::type
+parse(const CharT* format, Parsable& tp,
       std::basic_string<CharT, Traits>& abbrev, std::chrono::minutes& offset);
-
-template <class Duration, class CharT, class Traits>
-unspecified istream manipulator
-parse(const CharT* format, sys_time<Duration>& tp,
-      std::chrono::minutes& offset, std::basic_string<CharT, Traits>& abbrev);
-
-template <class Duration, class CharT>
-unspecified istream manipulator
-parse(const CharT* format, local_time<Duration>& tp);
-
-template <class Duration, class CharT, class Traits>
-unspecified istream manipulator
-parse(const CharT* format, local_time<Duration>& tp,
-      std::basic_string<CharT, Traits>& abbrev);
-
-template <class Duration, class CharT>
-unspecified istream manipulator
-parse(const CharT* format, local_time<Duration>& tp, std::chrono::minutes& offset);
-
-template <class Duration, class CharT, class Traits>
-unspecified istream manipulator
-parse(const CharT* format, local_time<Duration>& tp,
-      std::basic_string<CharT, Traits>& abbrev, std::chrono::minutes& offset);
-
-template <class Duration, class CharT, class Traits>
-unspecified istream manipulator
-parse(const CharT* format, local_time<Duration>& tp, std::chrono::minutes& offset,
-      std::basic_string<CharT, Traits>& abbrev);
-
-template <class Duration, class CharT>
-unspecified istream manipulator
-parse(const CharT* format, utc_time<Duration>& tp);
-
-template <class Duration, class CharT, class Traits>
-unspecified istream manipulator
-parse(const CharT* format, utc_time<Duration>& tp,
-      std::basic_string<CharT, Traits>& abbrev);
-
-template <class Duration, class CharT>
-unspecified istream manipulator
-parse(const CharT* format, utc_time<Duration>& tp, std::chrono::minutes& offset);
-
-template <class Duration, class CharT, class Traits>
-unspecified istream manipulator
-parse(const CharT* format, utc_time<Duration>& tp,
-      std::basic_string<CharT, Traits>& abbrev, std::chrono::minutes& offset);
-
-template <class Duration, class CharT, class Traits>
-unspecified istream manipulator
-parse(const CharT* format, utc_time<Duration>& tp,
-      std::chrono::minutes& offset, std::basic_string<CharT, Traits>& abbrev);
-
-template <class Duration, class CharT>
-unspecified istream manipulator
-parse(const CharT* format, tai_time<Duration>& tp);
-
-template <class Duration, class CharT, class Traits>
-unspecified istream manipulator
-parse(const CharT* format, tai_time<Duration>& tp,
-      std::basic_string<CharT, Traits>& abbrev);
-
-template <class Duration, class CharT>
-unspecified istream manipulator
-parse(const CharT* format, tai_time<Duration>& tp, std::chrono::minutes& offset);
-
-template <class Duration, class CharT, class Traits>
-unspecified istream manipulator
-parse(const CharT* format, tai_time<Duration>& tp,
-      std::basic_string<CharT, Traits>& abbrev, std::chrono::minutes& offset);
-
-template <class Duration, class CharT, class Traits>
-unspecified istream manipulator
-parse(const CharT* format, tai_time<Duration>& tp,
-      std::chrono::minutes& offset, std::basic_string<CharT, Traits>& abbrev);
-
-template <class Duration, class CharT>
-unspecified istream manipulator
-parse(const CharT* format, gps_time<Duration>& tp);
-
-template <class Duration, class CharT, class Traits>
-unspecified istream manipulator
-parse(const CharT* format, gps_time<Duration>& tp,
-      std::basic_string<CharT, Traits>& abbrev);
-
-template <class Duration, class CharT>
-unspecified istream manipulator
-parse(const CharT* format, gps_time<Duration>& tp, std::chrono::minutes& offset);
-
-template <class Duration, class CharT, class Traits>
-unspecified istream manipulator
-parse(const CharT* format, gps_time<Duration>& tp,
-      std::basic_string<CharT, Traits>& abbrev, std::chrono::minutes& offset);
-
-template <class Duration, class CharT, class Traits>
-unspecified istream manipulator
-parse(const CharT* format, gps_time<Duration>& tp,
-      std::chrono::minutes& offset, std::basic_string<CharT, Traits>& abbrev);
-
-template <class CharT>
-unspecified istream manipulator
-parse(const CharT* format, year_month_day& ymd);
-
-template <class CharT, class Traits>
-unspecified istream manipulator
-parse(const CharT* format, year_month_day& ymd,
-      std::basic_string<CharT, Traits>& abbrev);
-
-template <class CharT>
-unspecified istream manipulator
-parse(const CharT* format, year_month_day& ymd, std::chrono::minutes& offset);
-
-template <class CharT, class Traits>
-unspecified istream manipulator
-parse(const CharT* format, year_month_day& ymd,
-      std::basic_string<CharT, Traits>& abbrev, std::chrono::minutes& offset);
-
-template <class CharT, class Traits>
-unspecified istream manipulator
-parse(const CharT* format, year_month_day& ymd,
-      std::chrono::minutes& offset, std::basic_string<CharT, Traits>& abbrev);
-
-template <class Rep, class Period, class CharT>
-unspecified istream manipulator
-parse(const CharT* format, std::chrono::duration<Rep, Period>& d);
 

-Effects: These functions attempt to parse a time_point out of +Effects: These functions attempt to parse an object out of is according to format. If the parse is unsuccessful, calls is.setstate(std::ios::failbit) which may throw an exception. tp, abbrev, and offset are altered only in