Skip to content

[release/19.x][libc++] Follow-up to "Poison Pills are Too Toxic" #109291

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Oct 11, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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
2 changes: 1 addition & 1 deletion libcxx/docs/ReleaseNotes/19.rst
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ Implemented Papers
- P0019R8 - ``std::atomic_ref``
- P2389R2 - Alias template ``dims`` for the ``extents`` of ``mdspan``
- P1223R5 - ``ranges::find_last()``, ``ranges::find_last_if()``, and ``ranges::find_last_if_not()``
- P2602R2 - Poison Pills are Too Toxic
- P2602R2 - Poison Pills are Too Toxic (as DR against C++20)
- P1981R0 - Rename ``leap`` to ``leap_second``
- P1982R0 - Rename ``link`` to ``time_zone_link``

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 @@ -182,8 +182,9 @@ __cpp_lib_philox_engine 202406L <random>
__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 @@ -480,6 +481,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_find_last 202207L [C++23]
__cpp_lib_ranges_starts_ends_with 202106L [C++23]
Expand Down Expand Up @@ -321,8 +322,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 @@ -425,8 +426,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 @@ -495,8 +496,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 @@ -626,8 +627,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 @@ -167,6 +167,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 @@ -5619,8 +5620,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 @@ -7470,8 +7471,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
1 change: 1 addition & 0 deletions libcxx/utils/generate_feature_test_macro_components.py
Original file line number Diff line number Diff line change
Expand Up @@ -992,6 +992,7 @@ def add_version_header(tc):
"name": "__cpp_lib_ranges",
"values": {
"c++20": 202207,
"c++23": 202211, # P2602R2 Poison Pills are Too Toxic
Comment on lines 994 to +995
Copy link
Contributor

@frederick-vs-ja frederick-vs-ja Sep 19, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

(Not strictly related to this PR) I think the value is fine in C++23 mode, but perhaps it should be 202110 (P2415R2 What is a view?) in C++20 mode as explained in #101715.

Copy link
Member Author

@ldionne ldionne Sep 19, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ack, we can fix that in a follow-up PR indeed. Edit: #109324

# "c++23": 202302, # Relaxing Ranges Just A Smidge
# "c++26": 202406, # P2997R1 Removing the common reference requirement from the indirectly invocable concepts (already implemented as a DR)
},
Expand Down
Loading