This is the first step to implement time zone support in libc++. This adds the complete tzdb_list class and a minimal tzdb class. The tzdb class only contains the version, which is used by reload_tzdb. Next to these classes it contains documentation and build system support needed for time zone support. The code depends on the IANA Time Zone Database, which should be available on the platform used or provided by the libc++ vendors. The code is labeled as experimental since there will be ABI breaks during development; the tzdb class needs to have the standard headers. Implements parts of: - P0355 Extending <chrono> to Calendars and Time Zones Addresses: - LWG3319 Properly reference specification of IANA time zone database Reviewed By: #libc, ldionne Differential Revision: https://reviews.llvm.org/D154282
39 KiB
39 KiB
| 1 | Issue # | Issue Name | Meeting | Status | First released version | Labels |
|---|---|---|---|---|---|---|
| 2 | ||||||
| 3 | ||||||
| 4 | ||||||
| 5 | ||||||
| 6 | ||||||
| 7 | `3173 <https://wg21.link/LWG3173>`__ | Enable CTAD for ``ref-view``\ | Kona | |Complete| | 15.0 | |ranges| |
| 8 | `3179 <https://wg21.link/LWG3179>`__ | ``subrange``\ should always model ``Range``\ | Kona | |Nothing To Do| | |ranges| | |
| 9 | `3180 <https://wg21.link/LWG3180>`__ | Inconsistently named return type for ``ranges::minmax_element``\ | Kona | |Complete| | 15.0 | |ranges| |
| 10 | ||||||
| 11 | `3169 <https://wg21.link/LWG3169>`__ | ``ranges``\ permutation generators discard useful information | Cologne | |Complete| | 15.0 | |ranges| |
| 12 | `3183 <https://wg21.link/LWG3183>`__ | Normative permission to specialize Ranges variable templates | Cologne | |Nothing To Do| | |ranges| | |
| 13 | `3186 <https://wg21.link/LWG3186>`__ | ``ranges``\ removal, partition, and ``partial_sort_copy``\ algorithms discard useful information | Cologne | |Complete| | 15.0 | |ranges| |
| 14 | `3191 <https://wg21.link/LWG3191>`__ | ``std::ranges::shuffle``\ synopsis does not match algorithm definition | Cologne | |Complete| | 15.0 | |ranges| |
| 15 | ||||||
| 16 | `3225 <https://wg21.link/LWG3225>`__ | ``zoned_time``\ converting constructor shall not be ``noexcept``\ | Belfast | |chrono| | ||
| 17 | `3218 <https://wg21.link/LWG3218>`__ | Modifier for ``%d``\ parse flag does not match POSIX and ``format``\ specification | Belfast | |chrono| |format| | ||
| 18 | `3224 <https://wg21.link/LWG3224>`__ | ``zoned_time``\ constructor from ``TimeZonePtr``\ does not specify initialization of ``tp_``\ | Belfast | |chrono| | ||
| 19 | `3230 <https://wg21.link/LWG3230>`__ | Format specifier ``%y/%Y``\ is missing locale alternative versions | Belfast | |Complete| | 16.0 | |chrono| |format| |
| 20 | `3232 <https://wg21.link/LWG3232>`__ | Inconsistency in ``zoned_time``\ deduction guides | Belfast | |chrono| | ||
| 21 | `3246 <https://wg21.link/LWG3246>`__ | What are the constraints on the template parameter of ``basic_format_arg``\ ? | Belfast | |format| | ||
| 22 | `3245 <https://wg21.link/LWG3245>`__ | Unnecessary restriction on ``'%p'``\ parse specifier | Belfast | |chrono| | ||
| 23 | `3241 <https://wg21.link/LWG3241>`__ | ``chrono-spec``\ grammar ambiguity in |sect|\ [time.format] | Belfast | |Complete| | 16.0 | |chrono| |format| |
| 24 | `3273 <https://wg21.link/LWG3273>`__ | Specify ``weekday_indexed``\ to range of ``[0, 7]``\ | Belfast | |Complete| | 16.0 | |chrono| |
| 25 | `3272 <https://wg21.link/LWG3272>`__ | ``%I%p``\ should parse/format ``duration``\ since midnight | Belfast | |chrono| |format| | ||
| 26 | `3276 <https://wg21.link/LWG3276>`__ | Class ``split_view::outer_iterator::value_type``\ should inherit from ``view_interface``\ | Belfast | |Complete| | 15.0 | |ranges| |
| 27 | `3277 <https://wg21.link/LWG3277>`__ | Pre-increment on prvalues is not a requirement of ``weakly_incrementable``\ | Belfast | |Nothing To Do| | |ranges| | |
| 28 | ||||||
| 29 | `3050 <https://wg21.link/LWG3050>`__ | Conversion specification problem in ``chrono::duration``\ constructor | Prague | |chrono| | ||
| 30 | `3150 <https://wg21.link/LWG3150>`__ | ``UniformRandomBitGenerator``\ should validate ``min``\ and ``max``\ | Prague | |Complete| | 13.0 | |ranges| |
| 31 | `3226 <https://wg21.link/LWG3226>`__ | ``zoned_time``\ constructor from ``string_view``\ should accept ``zoned_time<Duration2, TimeZonePtr2>``\ | Prague | |chrono| | ||
| 32 | `3242 <https://wg21.link/LWG3242>`__ | ``std::format``\ : missing rules for ``arg-id``\ in ``width``\ and ``precision``\ | Prague | |Complete| | 14.0 | |format| |
| 33 | `3243 <https://wg21.link/LWG3243>`__ | ``std::format``\ and negative zeroes | Prague | |Complete| | 14.0 | |format| |
| 34 | `3247 <https://wg21.link/LWG3247>`__ | ``ranges::iter_move``\ should perform ADL-only lookup of ``iter_move``\ | Prague | |Complete| | 15.0 | |ranges| |
| 35 | `3248 <https://wg21.link/LWG3248>`__ | ``std::format``\ ``#b``\ , ``#B``\ , ``#o``\ , ``#x``\ , and ``#X``\ presentation types misformat negative numbers | Prague | |Complete| | 14.0 | |format| |
| 36 | `3250 <https://wg21.link/LWG3250>`__ | ``std::format``\ : ``#``\ (alternate form) for NaN and inf | Prague | |Complete| | 14.0 | |format| |
| 37 | `3251 <https://wg21.link/LWG3251>`__ | Are ``std::format``\ alignment specifiers applied to string arguments? | Prague | |Complete| | 14.0 | |format| |
| 38 | `3252 <https://wg21.link/LWG3252>`__ | Parse locale's aware modifiers for commands are not consistent with POSIX spec | Prague | |chrono| | ||
| 39 | `3260 <https://wg21.link/LWG3260>`__ | ``year_month*``\ arithmetic rejects durations convertible to years | Prague | |chrono| | ||
| 40 | `3262 <https://wg21.link/LWG3262>`__ | Formatting of negative durations is not specified | Prague | |Complete| | 16.0 | |chrono| |format| |
| 41 | `3264 <https://wg21.link/LWG3264>`__ | ``sized_range``\ and ``ranges::size``\ redundantly use ``disable_sized_range``\ | Prague | |Complete| | 15.0 | |ranges| |
| 42 | `3269 <https://wg21.link/LWG3269>`__ | Parse manipulators do not specify the result of the extraction from stream | Prague | |chrono| | ||
| 43 | `3270 <https://wg21.link/LWG3270>`__ | Parsing and formatting ``%j``\ with ``duration``\ s | Prague | |Partial| | |chrono| |format| | |
| 44 | `3280 <https://wg21.link/LWG3280>`__ | View converting constructors can cause constraint recursion and are unneeded | Prague | |Complete| | 15.0 | |ranges| |
| 45 | `3281 <https://wg21.link/LWG3281>`__ | Conversion from ``*pair-like*``\ types to ``subrange``\ is a silent semantic promotion | Prague | |Complete| | 15.0 | |ranges| |
| 46 | `3282 <https://wg21.link/LWG3282>`__ | ``subrange``\ converting constructor should disallow derived to base conversions | Prague | |Complete| | 15.0 | |ranges| |
| 47 | `3284 <https://wg21.link/LWG3284>`__ | ``random_access_iterator``\ semantic constraints accidentally promote difference type using unary negate | Prague | |Nothing To Do| | |ranges| | |
| 48 | `3285 <https://wg21.link/LWG3285>`__ | The type of a customization point object shall satisfy ``semiregular``\ | Prague | |Nothing To Do| | |ranges| | |
| 49 | `3286 <https://wg21.link/LWG3286>`__ | ``ranges::size``\ is not required to be valid after a call to ``ranges::begin``\ on an input range | Prague | |Complete| | 15.0 | |ranges| |
| 50 | `3291 <https://wg21.link/LWG3291>`__ | ``iota_view::iterator``\ has the wrong ``iterator_category``\ | Prague | |Complete| | 15.0 | |ranges| |
| 51 | `3292 <https://wg21.link/LWG3292>`__ | ``iota_view``\ is under-constrained | Prague | |Complete| | 15.0 | |ranges| |
| 52 | `3294 <https://wg21.link/LWG3294>`__ | ``zoned_time``\ deduction guides misinterprets ``string``\ /``char*``\ | Prague | |chrono| | ||
| 53 | `3299 <https://wg21.link/LWG3299>`__ | Pointers don't need customized iterator behavior | Prague | |Complete| | 15.0 | |ranges| |
| 54 | `3301 <https://wg21.link/LWG3301>`__ | ``transform_view::iterator``\ has incorrect ``iterator_category``\ | Prague | |Complete| | 15.0 | |ranges| |
| 55 | `3302 <https://wg21.link/LWG3302>`__ | Range adaptor objects ``keys``\ and ``values``\ are unspecified | Prague | |Complete| | 16.0 | |ranges| |
| 56 | `3313 <https://wg21.link/LWG3313>`__ | ``join_view::iterator::operator--``\ is incorrectly constrained | Prague | |Complete| | 14.0 | |ranges| |
| 57 | `3314 <https://wg21.link/LWG3314>`__ | Is stream insertion behavior locale dependent when ``Period::type``\ is ``micro``\ ? | Prague | |Complete| | 16.0 | |chrono| |
| 58 | `3316 <https://wg21.link/LWG3316>`__ | Correctly define epoch for ``utc_clock``\ / ``utc_timepoint``\ | Prague | |chrono| | ||
| 59 | `3317 <https://wg21.link/LWG3317>`__ | Incorrect ``operator<<``\ for floating-point durations | Prague | |chrono| | ||
| 60 | `3318 <https://wg21.link/LWG3318>`__ | Clarify whether clocks can represent time before their epoch | Prague | |chrono| | ||
| 61 | `3319 <https://wg21.link/LWG3319>`__ | Properly reference specification of IANA time zone database | Prague | |Nothing To Do| | |chrono| | |
| 62 | `3323 <https://wg21.link/LWG3323>`__ | ``*has-tuple-element*``\ helper concept needs ``convertible_to``\ | Prague | |Complete| | 16.0 | |ranges| |
| 63 | `3324 <https://wg21.link/LWG3324>`__ | Special-case ``std::strong/weak/partial_order``\ for pointers | Prague | |Complete| | 14.0 | |spaceship| |
| 64 | `3325 <https://wg21.link/LWG3325>`__ | Constrain return type of transformation function for ``transform_view``\ | Prague | |Complete| | 15.0 | |ranges| |
| 65 | `3326 <https://wg21.link/LWG3326>`__ | ``enable_view``\ has false positives | Prague | |Complete| | 15.0 | |ranges| |
| 66 | `3327 <https://wg21.link/LWG3327>`__ | Format alignment specifiers vs. text direction | Prague | |Nothing To Do| | |format| | |
| 67 | `3330 <https://wg21.link/LWG3330>`__ | Include ``<compare>``\ from most library headers | Prague | |Complete| | 13.0 | |spaceship| |
| 68 | `3332 <https://wg21.link/LWG3332>`__ | Issue in |sect|\ [time.format] | Prague | |Complete| | 16.0 | |chrono| |format| |
| 69 | `3335 <https://wg21.link/LWG3335>`__ | Resolve C++20 NB comments US 273 and GB 274 | Prague | |Complete| | 15.0 | |ranges| |
| 70 | `3340 <https://wg21.link/LWG3340>`__ | Formatting functions should throw on argument/format string mismatch in |sect|\ [format.functions] | Prague | |Complete| | 14.0 | |format| |
| 71 | `3350 <https://wg21.link/LWG3350>`__ | Simplify return type of ``lexicographical_compare_three_way``\ | Prague | |Complete| | 17.0 | |spaceship| |
| 72 | `3351 <https://wg21.link/LWG3351>`__ | ``ranges::enable_safe_range``\ should not be constrained | Prague | |Complete| | 15.0 | |ranges| |
| 73 | `3352 <https://wg21.link/LWG3352>`__ | ``strong_equality``\ isn't a thing | Prague | |Nothing To Do| | |spaceship| | |
| 74 | `3354 <https://wg21.link/LWG3354>`__ | ``has_strong_structural_equality``\ has a meaningless definition | Prague | |Nothing To Do| | |spaceship| | |
| 75 | `3355 <https://wg21.link/LWG3355>`__ | The memory algorithms should support move-only input iterators introduced by P1207 | Prague | |Complete| | 15.0 | |ranges| |
| 76 | `3359 <https://wg21.link/LWG3359>`__ | ``<chrono>``\ leap second support should allow for negative leap seconds | Prague | |chrono| | ||
| 77 | `3360 <https://wg21.link/LWG3360>`__ | ``three_way_comparable_with``\ is inconsistent with similar concepts | Prague | |Nothing To Do| | |spaceship| | |
| 78 | `3363 <https://wg21.link/LWG3363>`__ | ``drop_while_view``\ should opt-out of ``sized_range``\ | Prague | |Nothing To Do| | |ranges| | |
| 79 | `3364 <https://wg21.link/LWG3364>`__ | Initialize data members of ranges and their iterators | Prague | |Complete| | 16.0 | |ranges| |
| 80 | `3371 <https://wg21.link/LWG3371>`__ | ``visit_format_arg``\ and ``make_format_args``\ are not hidden friends | Prague | |Complete| | 14.0 | |format| |
| 81 | `3372 <https://wg21.link/LWG3372>`__ | ``vformat_to``\ should not try to deduce ``Out``\ twice | Prague | |Complete| | 14.0 | |format| |
| 82 | `3373 <https://wg21.link/LWG3373>`__ | ``{to,from}_chars_result``\ and ``format_to_n_result``\ need the "we really mean what we say" wording | Prague | |Complete| | 14.0 | |format| |
| 83 | `3375 <https://wg21.link/LWG3375>`__ | ``decay``\ in ``viewable_range``\ should be ``remove_cvref``\ | Prague | |Complete| | 15.0 | |ranges| |
| 84 | `3377 <https://wg21.link/LWG3377>`__ | ``elements_view::iterator``\ befriends a specialization of itself | Prague | |Nothing To Do| | |ranges| | |
| 85 | `3379 <https://wg21.link/LWG3379>`__ | "``safe``\ " in several library names is misleading | Prague | |Complete| | 15.0 | |ranges| |
| 86 | `3380 <https://wg21.link/LWG3380>`__ | ``common_type``\ and comparison categories | Prague | |Complete| | 15.0 | |spaceship| |
| 87 | `3381 <https://wg21.link/LWG3381>`__ | ``begin``\ and ``data``\ must agree for ``contiguous_range``\ | Prague | |Nothing To Do| | |ranges| | |
| 88 | `3383 <https://wg21.link/LWG3383>`__ | |sect|\ [time.zone.leap.nonmembers] ``sys_seconds``\ should be replaced with ``seconds``\ | Prague | |chrono| | ||
| 89 | `3384 <https://wg21.link/LWG3384>`__ | ``transform_view::*sentinel*``\ has an incorrect ``operator-``\ | Prague | |Complete| | 15.0 | |ranges| |
| 90 | `3385 <https://wg21.link/LWG3385>`__ | ``common_iterator``\ is not sufficiently constrained for non-copyable iterators | Prague | |Complete| | 15.0 | |ranges| |
| 91 | `3387 <https://wg21.link/LWG3387>`__ | |sect|\ [range.reverse.view] ``reverse_view<V>``\ unintentionally requires ``range<const V>``\ | Prague | |Complete| | 15.0 | |ranges| |
| 92 | `3388 <https://wg21.link/LWG3388>`__ | ``view``\ iterator types have ill-formed ``<=>``\ operators | Prague | |Complete| | 16.0 | |ranges| |
| 93 | `3389 <https://wg21.link/LWG3389>`__ | A move-only iterator still does not have a ``counted_iterator``\ | Prague | |Complete| | 15.0 | |ranges| |
| 94 | `3390 <https://wg21.link/LWG3390>`__ | ``make_move_iterator()``\ cannot be used to construct a ``move_iterator``\ for a move-only iterator | Prague | |Complete| | 14.0 | |ranges| |
| 95 | `3395 <https://wg21.link/LWG3395>`__ | Definition for three-way comparison needs to be updated (US 152) | Prague | |spaceship| | ||
| 96 | `3397 <https://wg21.link/LWG3397>`__ | ``ranges::basic_istream_view::iterator``\ should not provide ``iterator_category``\ | Prague | |Complete| | 16.0 | |ranges| |
| 97 | `3398 <https://wg21.link/LWG3398>`__ | ``tuple_element_t``\ is also wrong for ``const subrange``\ | Prague | |Complete| | 14.0 | |ranges| |
| 98 | `3446 <https://wg21.link/LWG3446>`__ | ``indirectly_readable_traits``\ ambiguity for types with both ``value_type``\ and ``element_type``\ | November virtual meeting | |Complete| | 13.0 | |ranges| |