Skip to content

Commit

Permalink
[libc++] Follow-up to "Poison Pills are Too Toxic"
Browse files Browse the repository at this point in the history
* Update release notes and `Cxx23.html`
* Update `__cpp_lib_ranges` feature test macro
  • Loading branch information
JMazurkiewicz committed May 22, 2024
1 parent 47ed2bf commit 56792aa
Show file tree
Hide file tree
Showing 12 changed files with 43 additions and 27 deletions.
2 changes: 2 additions & 0 deletions libcxx/docs/FeatureTestMacroTable.rst
Original file line number Diff line number Diff line change
Expand Up @@ -350,6 +350,8 @@ Status
---------------------------------------------------------- -----------------
``__cpp_lib_print`` ``202207L``
---------------------------------------------------------- -----------------
``__cpp_lib_ranges`` ``202211L``
---------------------------------------------------------- -----------------
``__cpp_lib_ranges_as_const`` *unimplemented*
---------------------------------------------------------- -----------------
``__cpp_lib_ranges_as_rvalue`` ``202207L``
Expand Down
1 change: 1 addition & 0 deletions libcxx/docs/ReleaseNotes/19.rst
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ Implemented Papers
- P2713R1 - Escaping improvements in ``std::format``
- P2231R1 - Missing ``constexpr`` in ``std::optional`` and ``std::variant``
- P0019R8 - ``std::atomic_ref``
- P2602R2 - Poison Pills are Too Toxic (as DR against C++20)

Improvements and New Features
-----------------------------
Expand Down
1 change: 1 addition & 0 deletions libcxx/docs/Status/Cxx23.rst
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,7 @@ Paper Status
.. [#note-P1413R3] P1413R3: ``std::aligned_storage_t`` and ``std::aligned_union_t`` are marked deprecated, but
clang doesn't issue a diagnostic for deprecated using template declarations.
.. [#note-P2520R0] P2520R0: Libc++ implemented this paper as a DR in C++20 as well.
.. [#note-P2602R2] P2602R2: Libc++ implemented this paper as a DR in C++20 as well.
.. [#note-P2711R1] P2711R1: ``join_with_view`` hasn't been done yet since this type isn't implemented yet.
.. [#note-P2770R0] P2770R0: ``join_with_view`` hasn't been done yet since this type isn't implemented yet.
.. [#note-P2693R1] P2693R1: The formatter for ``std::thread::id`` is implemented.
Expand Down
2 changes: 1 addition & 1 deletion libcxx/docs/Status/Cxx23Papers.csv
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@
"`P2396R1 <https://wg21.link/P2396R1>`__","LWG", "Concurrency TS 2 fixes ", "November 2022","","","|concurrency TS|"
"`P2505R5 <https://wg21.link/P2505R5>`__","LWG", "Monadic Functions for ``std::expected``", "November 2022","|Complete|","17.0",""
"`P2539R4 <https://wg21.link/P2539R4>`__","LWG", "Should the output of ``std::print`` to a terminal be synchronized with the underlying stream?", "November 2022","|Complete|","18.0","|format|"
"`P2602R2 <https://wg21.link/P2602R2>`__","LWG", "Poison Pills are Too Toxic", "November 2022","|Complete|","19.0","|ranges|"
"`P2602R2 <https://wg21.link/P2602R2>`__","LWG", "Poison Pills are Too Toxic", "November 2022","|Complete| [#note-P2602R2]_","19.0","|ranges| |DR|"
"`P2708R1 <https://wg21.link/P2708R1>`__","LWG", "No Further Fundamentals TSes", "November 2022","|Nothing to do|","",""
"","","","","","",""
"`P0290R4 <https://wg21.link/P0290R4>`__","LWG", "``apply()`` for ``synchronized_value<T>``","February 2023","","","|concurrency TS|"
Expand Down
5 changes: 4 additions & 1 deletion libcxx/include/version
Original file line number Diff line number Diff line change
Expand Up @@ -176,8 +176,9 @@ __cpp_lib_parallel_algorithm 201603L <algorithm> <num
__cpp_lib_polymorphic_allocator 201902L <memory_resource>
__cpp_lib_print 202207L <ostream> <print>
__cpp_lib_quoted_string_io 201304L <iomanip>
__cpp_lib_ranges 202207L <algorithm> <functional> <iterator>
__cpp_lib_ranges 202211L <algorithm> <functional> <iterator>
<memory> <ranges>
202207L // C++20
__cpp_lib_ranges_as_const 202207L <ranges>
__cpp_lib_ranges_as_rvalue 202207L <ranges>
__cpp_lib_ranges_chunk 202202L <ranges>
Expand Down Expand Up @@ -472,6 +473,8 @@ __cpp_lib_void_t 201411L <type_traits>
# define __cpp_lib_optional 202110L
// # define __cpp_lib_out_ptr 202106L
# define __cpp_lib_print 202207L
# undef __cpp_lib_ranges
# define __cpp_lib_ranges 202211L
// # define __cpp_lib_ranges_as_const 202207L
# define __cpp_lib_ranges_as_rvalue 202207L
// # define __cpp_lib_ranges_chunk 202202L
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
__cpp_lib_freestanding_algorithm 202311L [C++26]
__cpp_lib_parallel_algorithm 201603L [C++17]
__cpp_lib_ranges 202207L [C++20]
202211L [C++23]
__cpp_lib_ranges_contains 202207L [C++23]
__cpp_lib_ranges_starts_ends_with 202106L [C++23]
__cpp_lib_robust_nonmodifying_seq_ops 201304L [C++14]
Expand Down Expand Up @@ -304,8 +305,8 @@
# ifndef __cpp_lib_ranges
# error "__cpp_lib_ranges should be defined in c++23"
# endif
# if __cpp_lib_ranges != 202207L
# error "__cpp_lib_ranges should have the value 202207L in c++23"
# if __cpp_lib_ranges != 202211L
# error "__cpp_lib_ranges should have the value 202211L in c++23"
# endif

# ifndef __cpp_lib_ranges_contains
Expand Down Expand Up @@ -401,8 +402,8 @@
# ifndef __cpp_lib_ranges
# error "__cpp_lib_ranges should be defined in c++26"
# endif
# if __cpp_lib_ranges != 202207L
# error "__cpp_lib_ranges should have the value 202207L in c++26"
# if __cpp_lib_ranges != 202211L
# error "__cpp_lib_ranges should have the value 202211L in c++26"
# endif

# ifndef __cpp_lib_ranges_contains
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
__cpp_lib_move_only_function 202110L [C++23]
__cpp_lib_not_fn 201603L [C++17]
__cpp_lib_ranges 202207L [C++20]
202211L [C++23]
__cpp_lib_reference_wrapper 202403L [C++26]
__cpp_lib_result_of_sfinae 201210L [C++14]
__cpp_lib_transparent_operators 201210L [C++14]
Expand Down Expand Up @@ -409,8 +410,8 @@
# ifndef __cpp_lib_ranges
# error "__cpp_lib_ranges should be defined in c++23"
# endif
# if __cpp_lib_ranges != 202207L
# error "__cpp_lib_ranges should have the value 202207L in c++23"
# if __cpp_lib_ranges != 202211L
# error "__cpp_lib_ranges should have the value 202211L in c++23"
# endif

# ifdef __cpp_lib_reference_wrapper
Expand Down Expand Up @@ -531,8 +532,8 @@
# ifndef __cpp_lib_ranges
# error "__cpp_lib_ranges should be defined in c++26"
# endif
# if __cpp_lib_ranges != 202207L
# error "__cpp_lib_ranges should have the value 202207L in c++26"
# if __cpp_lib_ranges != 202211L
# error "__cpp_lib_ranges should have the value 202211L in c++26"
# endif

# ifndef __cpp_lib_reference_wrapper
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
__cpp_lib_nonmember_container_access 201411L [C++17]
__cpp_lib_null_iterators 201304L [C++14]
__cpp_lib_ranges 202207L [C++20]
202211L [C++23]
__cpp_lib_ssize 201902L [C++20]
*/

Expand Down Expand Up @@ -255,8 +256,8 @@
# ifndef __cpp_lib_ranges
# error "__cpp_lib_ranges should be defined in c++23"
# endif
# if __cpp_lib_ranges != 202207L
# error "__cpp_lib_ranges should have the value 202207L in c++23"
# if __cpp_lib_ranges != 202211L
# error "__cpp_lib_ranges should have the value 202211L in c++23"
# endif

# ifndef __cpp_lib_ssize
Expand Down Expand Up @@ -313,8 +314,8 @@
# ifndef __cpp_lib_ranges
# error "__cpp_lib_ranges should be defined in c++26"
# endif
# if __cpp_lib_ranges != 202207L
# error "__cpp_lib_ranges should have the value 202207L in c++26"
# if __cpp_lib_ranges != 202211L
# error "__cpp_lib_ranges should have the value 202211L in c++26"
# endif

# ifndef __cpp_lib_ssize
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@
__cpp_lib_out_ptr 202106L [C++23]
202311L [C++26]
__cpp_lib_ranges 202207L [C++20]
202211L [C++23]
__cpp_lib_raw_memory_algorithms 201606L [C++17]
__cpp_lib_shared_ptr_arrays 201611L [C++17]
201707L [C++20]
Expand Down Expand Up @@ -501,8 +502,8 @@
# ifndef __cpp_lib_ranges
# error "__cpp_lib_ranges should be defined in c++23"
# endif
# if __cpp_lib_ranges != 202207L
# error "__cpp_lib_ranges should have the value 202207L in c++23"
# if __cpp_lib_ranges != 202211L
# error "__cpp_lib_ranges should have the value 202211L in c++23"
# endif

# ifndef __cpp_lib_raw_memory_algorithms
Expand Down Expand Up @@ -638,8 +639,8 @@
# ifndef __cpp_lib_ranges
# error "__cpp_lib_ranges should be defined in c++26"
# endif
# if __cpp_lib_ranges != 202207L
# error "__cpp_lib_ranges should have the value 202207L in c++26"
# if __cpp_lib_ranges != 202211L
# error "__cpp_lib_ranges should have the value 202211L in c++26"
# endif

# ifndef __cpp_lib_raw_memory_algorithms
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
/* Constant Value
__cpp_lib_default_template_type_for_algorithm_values 202403L [C++26]
__cpp_lib_ranges 202207L [C++20]
202211L [C++23]
__cpp_lib_ranges_as_const 202207L [C++23]
__cpp_lib_ranges_as_rvalue 202207L [C++23]
__cpp_lib_ranges_chunk 202202L [C++23]
Expand Down Expand Up @@ -245,8 +246,8 @@
# ifndef __cpp_lib_ranges
# error "__cpp_lib_ranges should be defined in c++23"
# endif
# if __cpp_lib_ranges != 202207L
# error "__cpp_lib_ranges should have the value 202207L in c++23"
# if __cpp_lib_ranges != 202211L
# error "__cpp_lib_ranges should have the value 202211L in c++23"
# endif

# if !defined(_LIBCPP_VERSION)
Expand Down Expand Up @@ -364,8 +365,8 @@
# ifndef __cpp_lib_ranges
# error "__cpp_lib_ranges should be defined in c++26"
# endif
# if __cpp_lib_ranges != 202207L
# error "__cpp_lib_ranges should have the value 202207L in c++26"
# if __cpp_lib_ranges != 202211L
# error "__cpp_lib_ranges should have the value 202211L in c++26"
# endif

# if !defined(_LIBCPP_VERSION)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -160,6 +160,7 @@
__cpp_lib_print 202207L [C++23]
__cpp_lib_quoted_string_io 201304L [C++14]
__cpp_lib_ranges 202207L [C++20]
202211L [C++23]
__cpp_lib_ranges_as_const 202207L [C++23]
__cpp_lib_ranges_as_rvalue 202207L [C++23]
__cpp_lib_ranges_chunk 202202L [C++23]
Expand Down Expand Up @@ -5499,8 +5500,8 @@
# ifndef __cpp_lib_ranges
# error "__cpp_lib_ranges should be defined in c++23"
# endif
# if __cpp_lib_ranges != 202207L
# error "__cpp_lib_ranges should have the value 202207L in c++23"
# if __cpp_lib_ranges != 202211L
# error "__cpp_lib_ranges should have the value 202211L in c++23"
# endif

# if !defined(_LIBCPP_VERSION)
Expand Down Expand Up @@ -7300,8 +7301,8 @@
# ifndef __cpp_lib_ranges
# error "__cpp_lib_ranges should be defined in c++26"
# endif
# if __cpp_lib_ranges != 202207L
# error "__cpp_lib_ranges should have the value 202207L in c++26"
# if __cpp_lib_ranges != 202211L
# error "__cpp_lib_ranges should have the value 202211L in c++26"
# endif

# if !defined(_LIBCPP_VERSION)
Expand Down
5 changes: 4 additions & 1 deletion libcxx/utils/generate_feature_test_macro_components.py
Original file line number Diff line number Diff line change
Expand Up @@ -948,7 +948,10 @@ def add_version_header(tc):
},
{
"name": "__cpp_lib_ranges",
"values": {"c++20": 202207},
"values": {
"c++20": 202207,
"c++23": 202211, # P2602R2 Poison Pills are Too Toxic
},
"headers": ["algorithm", "functional", "iterator", "memory", "ranges"],
},
{
Expand Down

0 comments on commit 56792aa

Please sign in to comment.