Skip to content

Commit b699a9b

Browse files
authored
[libc++] Update status page after the Tokyo meeting (#87395)
1 parent 98244c4 commit b699a9b

21 files changed

+1684
-736
lines changed

libcxx/docs/FeatureTestMacroTable.rst

Lines changed: 442 additions & 428 deletions
Large diffs are not rendered by default.

libcxx/docs/Status/Cxx2cIssues.csv

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,5 +40,27 @@
4040
"`3990 <https://wg21.link/LWG3990>`__","Program-defined specializations of ``std::tuple`` and ``std::variant`` can't be properly supported","Kona November 2023","","",""
4141
"`4001 <https://wg21.link/LWG4001>`__","``iota_view`` should provide ``empty``","Kona November 2023","","","|ranges|"
4242
"","","","","",""
43+
"`3767 <https://wg21.link/LWG3767>`__","``codecvt<charN_t, char8_t, mbstate_t>`` incorrectly added to locale","Tokyo March 2024","","",""
44+
"`3919 <https://wg21.link/LWG3919>`__","``enumerate_view`` may invoke UB for sized common non-forward underlying ranges","Tokyo March 2024","","","|ranges|"
45+
"`3950 <https://wg21.link/LWG3950>`__","``std::basic_string_view`` comparison operators are overspecified","Tokyo March 2024","","",""
46+
"`3975 <https://wg21.link/LWG3975>`__","Specializations of ``basic_format_context`` should not be permitted","Tokyo March 2024","","","|format|"
47+
"`3984 <https://wg21.link/LWG3984>`__","``ranges::to``'s recursion branch may be ill-formed","Tokyo March 2024","","","|ranges|"
48+
"`4011 <https://wg21.link/LWG4011>`__","``""Effects: Equivalent to return""`` in ``[span.elem]``","Tokyo March 2024","","",""
49+
"`4012 <https://wg21.link/LWG4012>`__","``common_view::begin/end`` are missing the ``simple-view`` check","Tokyo March 2024","","","|ranges|"
50+
"`4013 <https://wg21.link/LWG4013>`__","``lazy_split_view::outer-iterator::value_type`` should not provide default constructor","Tokyo March 2024","","","|ranges|"
51+
"`4016 <https://wg21.link/LWG4016>`__","container-insertable checks do not match what container-inserter does","Tokyo March 2024","","",""
52+
"`4023 <https://wg21.link/LWG4023>`__","Preconditions of ``std::basic_streambuf::setg/setp``","Tokyo March 2024","","",""
53+
"`4025 <https://wg21.link/LWG4025>`__","Move assignment operator of ``std::expected<cv void, E>`` should not be conditionally deleted","Tokyo March 2024","","",""
54+
"`4030 <https://wg21.link/LWG4030>`__","Clarify whether arithmetic expressions in ``[numeric.sat.func]`` are mathematical or C++","Tokyo March 2024","","",""
55+
"`4031 <https://wg21.link/LWG4031>`__","``bad_expected_access<void>`` member functions should be ``noexcept``","Tokyo March 2024","","",""
56+
"`4035 <https://wg21.link/LWG4035>`__","``single_view`` should provide ``empty``","Tokyo March 2024","","","|ranges|"
57+
"`4036 <https://wg21.link/LWG4036>`__","``__alignof_is_defined`` is only implicitly specified in C++ and not yet deprecated","Tokyo March 2024","","",""
58+
"`4037 <https://wg21.link/LWG4037>`__","Static data members of ``ctype_base`` are not yet required to be usable in constant expressions","Tokyo March 2024","","",""
59+
"`4038 <https://wg21.link/LWG4038>`__","``std::text_encoding::aliases_view`` should have constexpr iterators","Tokyo March 2024","","",""
60+
"`4043 <https://wg21.link/LWG4043>`__","""ASCII"" is not a registered character encoding","Tokyo March 2024","","",""
61+
"`4045 <https://wg21.link/LWG4045>`__","``tuple`` can create dangling references from ``tuple-like``","Tokyo March 2024","","",""
62+
"`4053 <https://wg21.link/LWG4053>`__","Unary call to ``std::views::repeat`` does not decay the argument","Tokyo March 2024","","","|ranges|"
63+
"`4054 <https://wg21.link/LWG4054>`__","Repeating a ``repeat_view`` should repeat the view","Tokyo March 2024","","","|ranges|"
64+
"","","","","",""
4365
"`3343 <https://wg21.link/LWG3343>`__","Ordering of calls to ``unlock()`` and ``notify_all()`` in Effects element of ``notify_all_at_thread_exit()`` should be reversed","Not Yet Adopted","|Complete|","16.0",""
4466
"","","","","",""

libcxx/docs/Status/Cxx2cPapers.csv

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,3 +46,20 @@
4646
"`P2264R7 <https://wg21.link/P2264R7>`__","LWG","Make ``assert()`` macro user friendly for C and C++","Kona November 2023","","",""
4747
"`P1673R13 <https://wg21.link/P1673R13>`__","LWG","A free function linear algebra interface based on the BLAS","Kona November 2023","","",""
4848
"","","","","","",""
49+
"`P2875R4 <https://wg21.link/P2875R4>`__","LWG","Undeprecate ``polymorphic_allocator::destroy`` for C++26","Tokyo March 2024","","",""
50+
"`P2867R2 <https://wg21.link/P2867R2>`__","LWG","Remove Deprecated ``strstreams`` From C++26","Tokyo March 2024","","",""
51+
"`P2869R4 <https://wg21.link/P2869R4>`__","LWG","Remove Deprecated ``shared_ptr`` Atomic Access APIs from C++26","Tokyo March 2024","","",""
52+
"`P2872R3 <https://wg21.link/P2872R3>`__","LWG","Remove ``wstring_convert`` From C++26","Tokyo March 2024","","",""
53+
"`P3107R5 <https://wg21.link/P3107R5>`__","LWG","Permit an efficient implementation of ``std::print``","Tokyo March 2024","","","|format| |DR|"
54+
"`P3142R0 <https://wg21.link/P3142R0>`__","LWG","Printing Blank Lines with ``println``","Tokyo March 2024","","","|format|"
55+
"`P2845R8 <https://wg21.link/P2845R8>`__","LWG","Formatting of ``std::filesystem::path``","Tokyo March 2024","","","|format|"
56+
"`P0493R5 <https://wg21.link/P0493R5>`__","LWG","Atomic minimum/maximum","Tokyo March 2024","","",""
57+
"`P2542R8 <https://wg21.link/P2542R8>`__","LWG","``views::concat``","Tokyo March 2024","","","|ranges|"
58+
"`P2591R5 <https://wg21.link/P2591R5>`__","LWG","Concatenation of strings and string views","Tokyo March 2024","","",""
59+
"`P2248R8 <https://wg21.link/P2248R8>`__","LWG","Enabling list-initialization for algorithms","Tokyo March 2024","","",""
60+
"`P2810R4 <https://wg21.link/P2810R4>`__","LWG","``is_debugger_present`` ``is_replaceable``","Tokyo March 2024","","",""
61+
"`P1068R11 <https://wg21.link/P1068R11>`__","LWG","Vector API for random number generation","Tokyo March 2024","","",""
62+
"`P2944R3 <https://wg21.link/P2944R3>`__","LWG","Comparisons for ``reference_wrapper``","Tokyo March 2024","","",""
63+
"`P2642R6 <https://wg21.link/P2642R6>`__","LWG","Padded ``mdspan`` layouts","Tokyo March 2024","","",""
64+
"`P3029R1 <https://wg21.link/P3029R1>`__","LWG","Better ``mdspan``'s CTAD","Tokyo March 2024","","",""
65+
"","","","","","",""

libcxx/include/version

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ __cpp_lib_atomic_flag_test 201907L <atomic>
3535
__cpp_lib_atomic_float 201711L <atomic>
3636
__cpp_lib_atomic_is_always_lock_free 201603L <atomic>
3737
__cpp_lib_atomic_lock_free_type_aliases 201907L <atomic>
38+
__cpp_lib_atomic_min_max 202403L <atomic>
3839
__cpp_lib_atomic_ref 201806L <atomic>
3940
__cpp_lib_atomic_shared_ptr 201711L <atomic>
4041
__cpp_lib_atomic_value_initialization 201911L <atomic> <memory>
@@ -77,9 +78,14 @@ __cpp_lib_constexpr_tuple 201811L <tuple>
7778
__cpp_lib_constexpr_typeinfo 202106L <typeinfo>
7879
__cpp_lib_constexpr_utility 201811L <utility>
7980
__cpp_lib_constexpr_vector 201907L <vector>
81+
__cpp_lib_constrained_equality 202403L <optional> <tuple> <utility>
82+
<variant>
8083
__cpp_lib_copyable_function 202306L <functional>
8184
__cpp_lib_coroutine 201902L <coroutine>
8285
__cpp_lib_debugging 202311L <debugging>
86+
__cpp_lib_default_template_type_for_algorithm_values 202403L <algorithm> <deque> <forward_list>
87+
<list> <ranges> <string>
88+
<vector>
8389
__cpp_lib_destroying_delete 201806L <new>
8490
__cpp_lib_enable_shared_from_this 201603L <memory>
8591
__cpp_lib_endian 201907L <bit>
@@ -92,6 +98,7 @@ __cpp_lib_execution 201902L <execution>
9298
__cpp_lib_expected 202211L <expected>
9399
__cpp_lib_filesystem 201703L <filesystem>
94100
__cpp_lib_format 202106L <format>
101+
__cpp_lib_format_path 202403L <filesystem>
95102
__cpp_lib_format_ranges 202207L <format>
96103
__cpp_lib_format_uchar 202311L <format>
97104
__cpp_lib_formatters 202302L <stacktrace> <thread>
@@ -107,6 +114,7 @@ __cpp_lib_freestanding_variant 202311L <variant>
107114
__cpp_lib_fstream_native_handle 202306L <fstream>
108115
__cpp_lib_function_ref 202306L <functional>
109116
__cpp_lib_gcd_lcm 201606L <numeric>
117+
__cpp_lib_generate_random 202403L <random>
110118
__cpp_lib_generic_associative_lookup 201304L <map> <set>
111119
__cpp_lib_generic_unordered_lookup 201811L <unordered_map> <unordered_set>
112120
__cpp_lib_hardware_interference_size 201703L <new>
@@ -170,6 +178,7 @@ __cpp_lib_ranges_as_const 202207L <ranges>
170178
__cpp_lib_ranges_as_rvalue 202207L <ranges>
171179
__cpp_lib_ranges_chunk 202202L <ranges>
172180
__cpp_lib_ranges_chunk_by 202202L <ranges>
181+
__cpp_lib_ranges_concat 202403L <ranges>
173182
__cpp_lib_ranges_contains 202207L <algorithm>
174183
__cpp_lib_ranges_iota 202202L <numeric>
175184
__cpp_lib_ranges_join_with 202202L <ranges>
@@ -185,6 +194,7 @@ __cpp_lib_ratio 202306L <ratio>
185194
__cpp_lib_raw_memory_algorithms 201606L <memory>
186195
__cpp_lib_rcu 202306L <rcu>
187196
__cpp_lib_reference_from_temporary 202202L <type_traits>
197+
__cpp_lib_reference_wrapper 202403L <functional>
188198
__cpp_lib_remove_cvref 201711L <type_traits>
189199
__cpp_lib_result_of_sfinae 201210L <functional> <type_traits>
190200
__cpp_lib_robust_nonmodifying_seq_ops 201304L <algorithm>
@@ -448,6 +458,7 @@ __cpp_lib_within_lifetime 202306L <type_traits>
448458
# define __cpp_lib_constexpr_memory 202202L
449459
# define __cpp_lib_constexpr_typeinfo 202106L
450460
# define __cpp_lib_expected 202211L
461+
// # define __cpp_lib_format_path 202403L
451462
# define __cpp_lib_format_ranges 202207L
452463
// # define __cpp_lib_formatters 202302L
453464
# define __cpp_lib_forward_like 202207L
@@ -486,13 +497,16 @@ __cpp_lib_within_lifetime 202306L <type_traits>
486497

487498
#if _LIBCPP_STD_VER >= 26
488499
// # define __cpp_lib_associative_heterogeneous_insertion 202306L
500+
// # define __cpp_lib_atomic_min_max 202403L
489501
# undef __cpp_lib_bind_back
490502
// # define __cpp_lib_bind_back 202306L
491503
# undef __cpp_lib_bind_front
492504
# define __cpp_lib_bind_front 202306L
493505
# define __cpp_lib_bitset 202306L
506+
// # define __cpp_lib_constrained_equality 202403L
494507
// # define __cpp_lib_copyable_function 202306L
495508
// # define __cpp_lib_debugging 202311L
509+
// # define __cpp_lib_default_template_type_for_algorithm_values 202403L
496510
// # define __cpp_lib_freestanding_algorithm 202311L
497511
// # define __cpp_lib_freestanding_array 202311L
498512
// # define __cpp_lib_freestanding_cstring 202306L
@@ -505,12 +519,15 @@ __cpp_lib_within_lifetime 202306L <type_traits>
505519
# define __cpp_lib_fstream_native_handle 202306L
506520
# endif
507521
// # define __cpp_lib_function_ref 202306L
522+
// # define __cpp_lib_generate_random 202403L
508523
// # define __cpp_lib_hazard_pointer 202306L
509524
// # define __cpp_lib_linalg 202311L
510525
# undef __cpp_lib_out_ptr
511526
// # define __cpp_lib_out_ptr 202311L
527+
// # define __cpp_lib_ranges_concat 202403L
512528
# define __cpp_lib_ratio 202306L
513529
// # define __cpp_lib_rcu 202306L
530+
// # define __cpp_lib_reference_wrapper 202403L
514531
# define __cpp_lib_saturation_arithmetic 202311L
515532
// # define __cpp_lib_smart_ptr_owner_equality 202306L
516533
# define __cpp_lib_span_at 202311L

libcxx/test/std/language.support/support.limits/support.limits.general/algorithm.version.compile.pass.cpp

Lines changed: 45 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,17 +15,18 @@
1515

1616
// Test the feature test macros defined by <algorithm>
1717

18-
/* Constant Value
19-
__cpp_lib_clamp 201603L [C++17]
20-
__cpp_lib_constexpr_algorithms 201806L [C++20]
21-
__cpp_lib_freestanding_algorithm 202311L [C++26]
22-
__cpp_lib_parallel_algorithm 201603L [C++17]
23-
__cpp_lib_ranges 202207L [C++20]
24-
__cpp_lib_ranges_contains 202207L [C++23]
25-
__cpp_lib_ranges_starts_ends_with 202106L [C++23]
26-
__cpp_lib_robust_nonmodifying_seq_ops 201304L [C++14]
27-
__cpp_lib_sample 201603L [C++17]
28-
__cpp_lib_shift 201806L [C++20]
18+
/* Constant Value
19+
__cpp_lib_clamp 201603L [C++17]
20+
__cpp_lib_constexpr_algorithms 201806L [C++20]
21+
__cpp_lib_default_template_type_for_algorithm_values 202403L [C++26]
22+
__cpp_lib_freestanding_algorithm 202311L [C++26]
23+
__cpp_lib_parallel_algorithm 201603L [C++17]
24+
__cpp_lib_ranges 202207L [C++20]
25+
__cpp_lib_ranges_contains 202207L [C++23]
26+
__cpp_lib_ranges_starts_ends_with 202106L [C++23]
27+
__cpp_lib_robust_nonmodifying_seq_ops 201304L [C++14]
28+
__cpp_lib_sample 201603L [C++17]
29+
__cpp_lib_shift 201806L [C++20]
2930
*/
3031

3132
#include <algorithm>
@@ -41,6 +42,10 @@
4142
# error "__cpp_lib_constexpr_algorithms should not be defined before c++20"
4243
# endif
4344

45+
# ifdef __cpp_lib_default_template_type_for_algorithm_values
46+
# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26"
47+
# endif
48+
4449
# ifdef __cpp_lib_freestanding_algorithm
4550
# error "__cpp_lib_freestanding_algorithm should not be defined before c++26"
4651
# endif
@@ -83,6 +88,10 @@
8388
# error "__cpp_lib_constexpr_algorithms should not be defined before c++20"
8489
# endif
8590

91+
# ifdef __cpp_lib_default_template_type_for_algorithm_values
92+
# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26"
93+
# endif
94+
8695
# ifdef __cpp_lib_freestanding_algorithm
8796
# error "__cpp_lib_freestanding_algorithm should not be defined before c++26"
8897
# endif
@@ -131,6 +140,10 @@
131140
# error "__cpp_lib_constexpr_algorithms should not be defined before c++20"
132141
# endif
133142

143+
# ifdef __cpp_lib_default_template_type_for_algorithm_values
144+
# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26"
145+
# endif
146+
134147
# ifdef __cpp_lib_freestanding_algorithm
135148
# error "__cpp_lib_freestanding_algorithm should not be defined before c++26"
136149
# endif
@@ -194,6 +207,10 @@
194207
# error "__cpp_lib_constexpr_algorithms should have the value 201806L in c++20"
195208
# endif
196209

210+
# ifdef __cpp_lib_default_template_type_for_algorithm_values
211+
# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26"
212+
# endif
213+
197214
# ifdef __cpp_lib_freestanding_algorithm
198215
# error "__cpp_lib_freestanding_algorithm should not be defined before c++26"
199216
# endif
@@ -263,6 +280,10 @@
263280
# error "__cpp_lib_constexpr_algorithms should have the value 201806L in c++23"
264281
# endif
265282

283+
# ifdef __cpp_lib_default_template_type_for_algorithm_values
284+
# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined before c++26"
285+
# endif
286+
266287
# ifdef __cpp_lib_freestanding_algorithm
267288
# error "__cpp_lib_freestanding_algorithm should not be defined before c++26"
268289
# endif
@@ -338,6 +359,19 @@
338359
# error "__cpp_lib_constexpr_algorithms should have the value 201806L in c++26"
339360
# endif
340361

362+
# if !defined(_LIBCPP_VERSION)
363+
# ifndef __cpp_lib_default_template_type_for_algorithm_values
364+
# error "__cpp_lib_default_template_type_for_algorithm_values should be defined in c++26"
365+
# endif
366+
# if __cpp_lib_default_template_type_for_algorithm_values != 202403L
367+
# error "__cpp_lib_default_template_type_for_algorithm_values should have the value 202403L in c++26"
368+
# endif
369+
# else // _LIBCPP_VERSION
370+
# ifdef __cpp_lib_default_template_type_for_algorithm_values
371+
# error "__cpp_lib_default_template_type_for_algorithm_values should not be defined because it is unimplemented in libc++!"
372+
# endif
373+
# endif
374+
341375
# if !defined(_LIBCPP_VERSION)
342376
# ifndef __cpp_lib_freestanding_algorithm
343377
# error "__cpp_lib_freestanding_algorithm should be defined in c++26"

libcxx/test/std/language.support/support.limits/support.limits.general/atomic.version.compile.pass.cpp

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
__cpp_lib_atomic_float 201711L [C++20]
2121
__cpp_lib_atomic_is_always_lock_free 201603L [C++17]
2222
__cpp_lib_atomic_lock_free_type_aliases 201907L [C++20]
23+
__cpp_lib_atomic_min_max 202403L [C++26]
2324
__cpp_lib_atomic_ref 201806L [C++20]
2425
__cpp_lib_atomic_shared_ptr 201711L [C++20]
2526
__cpp_lib_atomic_value_initialization 201911L [C++20]
@@ -48,6 +49,10 @@
4849
# error "__cpp_lib_atomic_lock_free_type_aliases should not be defined before c++20"
4950
# endif
5051

52+
# ifdef __cpp_lib_atomic_min_max
53+
# error "__cpp_lib_atomic_min_max should not be defined before c++26"
54+
# endif
55+
5156
# ifdef __cpp_lib_atomic_ref
5257
# error "__cpp_lib_atomic_ref should not be defined before c++20"
5358
# endif
@@ -86,6 +91,10 @@
8691
# error "__cpp_lib_atomic_lock_free_type_aliases should not be defined before c++20"
8792
# endif
8893

94+
# ifdef __cpp_lib_atomic_min_max
95+
# error "__cpp_lib_atomic_min_max should not be defined before c++26"
96+
# endif
97+
8998
# ifdef __cpp_lib_atomic_ref
9099
# error "__cpp_lib_atomic_ref should not be defined before c++20"
91100
# endif
@@ -127,6 +136,10 @@
127136
# error "__cpp_lib_atomic_lock_free_type_aliases should not be defined before c++20"
128137
# endif
129138

139+
# ifdef __cpp_lib_atomic_min_max
140+
# error "__cpp_lib_atomic_min_max should not be defined before c++26"
141+
# endif
142+
130143
# ifdef __cpp_lib_atomic_ref
131144
# error "__cpp_lib_atomic_ref should not be defined before c++20"
132145
# endif
@@ -183,6 +196,10 @@
183196
# error "__cpp_lib_atomic_lock_free_type_aliases should have the value 201907L in c++20"
184197
# endif
185198

199+
# ifdef __cpp_lib_atomic_min_max
200+
# error "__cpp_lib_atomic_min_max should not be defined before c++26"
201+
# endif
202+
186203
# if !defined(_LIBCPP_VERSION)
187204
# ifndef __cpp_lib_atomic_ref
188205
# error "__cpp_lib_atomic_ref should be defined in c++20"
@@ -278,6 +295,10 @@
278295
# error "__cpp_lib_atomic_lock_free_type_aliases should have the value 201907L in c++23"
279296
# endif
280297

298+
# ifdef __cpp_lib_atomic_min_max
299+
# error "__cpp_lib_atomic_min_max should not be defined before c++26"
300+
# endif
301+
281302
# if !defined(_LIBCPP_VERSION)
282303
# ifndef __cpp_lib_atomic_ref
283304
# error "__cpp_lib_atomic_ref should be defined in c++23"
@@ -373,6 +394,19 @@
373394
# error "__cpp_lib_atomic_lock_free_type_aliases should have the value 201907L in c++26"
374395
# endif
375396

397+
# if !defined(_LIBCPP_VERSION)
398+
# ifndef __cpp_lib_atomic_min_max
399+
# error "__cpp_lib_atomic_min_max should be defined in c++26"
400+
# endif
401+
# if __cpp_lib_atomic_min_max != 202403L
402+
# error "__cpp_lib_atomic_min_max should have the value 202403L in c++26"
403+
# endif
404+
# else // _LIBCPP_VERSION
405+
# ifdef __cpp_lib_atomic_min_max
406+
# error "__cpp_lib_atomic_min_max should not be defined because it is unimplemented in libc++!"
407+
# endif
408+
# endif
409+
376410
# if !defined(_LIBCPP_VERSION)
377411
# ifndef __cpp_lib_atomic_ref
378412
# error "__cpp_lib_atomic_ref should be defined in c++26"

0 commit comments

Comments
 (0)