Skip to content

[libc++] Adds __cpp_lib_three_way_comparison FTM. #91515

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 2 commits into from
Jun 12, 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: 1 addition & 1 deletion libcxx/docs/FeatureTestMacroTable.rst
Original file line number Diff line number Diff line change
Expand Up @@ -290,7 +290,7 @@ Status
---------------------------------------------------------- -----------------
``__cpp_lib_syncbuf`` ``201803L``
---------------------------------------------------------- -----------------
``__cpp_lib_three_way_comparison`` *unimplemented*
``__cpp_lib_three_way_comparison`` ``201711L``
---------------------------------------------------------- -----------------
``__cpp_lib_to_address`` ``201711L``
---------------------------------------------------------- -----------------
Expand Down
2 changes: 1 addition & 1 deletion libcxx/docs/Status/Cxx20Papers.csv
Original file line number Diff line number Diff line change
Expand Up @@ -78,7 +78,7 @@
"`P1236R1 <https://wg21.link/P1236R1>`__","CWG","Alternative Wording for P0907R4 Signed Integers are Two's Complement","San Diego","* *",""
"`P1248R1 <https://wg21.link/P1248R1>`__","LWG","Remove CommonReference requirement from StrictWeakOrdering (a.k.a Fixing Relations)","San Diego","|Complete|","13.0"
"`P1285R0 <https://wg21.link/P1285R0>`__","LWG","Improving Completeness Requirements for Type Traits","San Diego","* *",""
"`P1353R0 <https://wg21.link/P1353R0>`__","CWG","Missing feature test macros","San Diego","* *",""
"`P1353R0 <https://wg21.link/P1353R0>`__","CWG","Missing feature test macros","San Diego","|In Progress|",""
"","","","","","",""
"`P0339R6 <https://wg21.link/P0339R6>`__","LWG","polymorphic_allocator<> as a vocabulary type","Kona","|Complete|","16.0"
"`P0340R3 <https://wg21.link/P0340R3>`__","LWG","Making std::underlying_type SFINAE-friendly","Kona","|Complete|","9.0"
Expand Down
4 changes: 2 additions & 2 deletions libcxx/include/version
Original file line number Diff line number Diff line change
Expand Up @@ -228,7 +228,7 @@ __cpp_lib_string_view 201803L <string> <string
__cpp_lib_submdspan 202306L <mdspan>
__cpp_lib_syncbuf 201803L <syncstream>
__cpp_lib_text_encoding 202306L <text_encoding>
__cpp_lib_three_way_comparison 201907L <compare>
__cpp_lib_three_way_comparison 201711L <compare>
__cpp_lib_to_address 201711L <memory>
__cpp_lib_to_array 201907L <array>
__cpp_lib_to_chars 202306L <charconv>
Expand Down Expand Up @@ -438,7 +438,7 @@ __cpp_lib_within_lifetime 202306L <type_traits>
# if !defined(_LIBCPP_HAS_NO_EXPERIMENTAL_SYNCSTREAM)
# define __cpp_lib_syncbuf 201803L
# endif
// # define __cpp_lib_three_way_comparison 201907L
# define __cpp_lib_three_way_comparison 201711L
# define __cpp_lib_to_address 201711L
# define __cpp_lib_to_array 201907L
# define __cpp_lib_type_identity 201806L
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
// Test the feature test macros defined by <compare>

/* Constant Value
__cpp_lib_three_way_comparison 201907L [C++20]
__cpp_lib_three_way_comparison 201711L [C++20]
*/

#include <compare>
Expand All @@ -42,47 +42,29 @@

#elif TEST_STD_VER == 20

# if !defined(_LIBCPP_VERSION)
# ifndef __cpp_lib_three_way_comparison
# error "__cpp_lib_three_way_comparison should be defined in c++20"
# endif
# if __cpp_lib_three_way_comparison != 201907L
# error "__cpp_lib_three_way_comparison should have the value 201907L in c++20"
# endif
# else // _LIBCPP_VERSION
# ifdef __cpp_lib_three_way_comparison
# error "__cpp_lib_three_way_comparison should not be defined because it is unimplemented in libc++!"
# endif
# ifndef __cpp_lib_three_way_comparison
# error "__cpp_lib_three_way_comparison should be defined in c++20"
# endif
# if __cpp_lib_three_way_comparison != 201711L
# error "__cpp_lib_three_way_comparison should have the value 201711L in c++20"
# endif

#elif TEST_STD_VER == 23

# if !defined(_LIBCPP_VERSION)
# ifndef __cpp_lib_three_way_comparison
# error "__cpp_lib_three_way_comparison should be defined in c++23"
# endif
# if __cpp_lib_three_way_comparison != 201907L
# error "__cpp_lib_three_way_comparison should have the value 201907L in c++23"
# endif
# else // _LIBCPP_VERSION
# ifdef __cpp_lib_three_way_comparison
# error "__cpp_lib_three_way_comparison should not be defined because it is unimplemented in libc++!"
# endif
# ifndef __cpp_lib_three_way_comparison
# error "__cpp_lib_three_way_comparison should be defined in c++23"
# endif
# if __cpp_lib_three_way_comparison != 201711L
# error "__cpp_lib_three_way_comparison should have the value 201711L in c++23"
# endif

#elif TEST_STD_VER > 23

# if !defined(_LIBCPP_VERSION)
# ifndef __cpp_lib_three_way_comparison
# error "__cpp_lib_three_way_comparison should be defined in c++26"
# endif
# if __cpp_lib_three_way_comparison != 201907L
# error "__cpp_lib_three_way_comparison should have the value 201907L in c++26"
# endif
# else // _LIBCPP_VERSION
# ifdef __cpp_lib_three_way_comparison
# error "__cpp_lib_three_way_comparison should not be defined because it is unimplemented in libc++!"
# endif
# ifndef __cpp_lib_three_way_comparison
# error "__cpp_lib_three_way_comparison should be defined in c++26"
# endif
# if __cpp_lib_three_way_comparison != 201711L
# error "__cpp_lib_three_way_comparison should have the value 201711L in c++26"
# endif

#endif // TEST_STD_VER > 23
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -210,7 +210,7 @@
__cpp_lib_submdspan 202306L [C++26]
__cpp_lib_syncbuf 201803L [C++20]
__cpp_lib_text_encoding 202306L [C++26]
__cpp_lib_three_way_comparison 201907L [C++20]
__cpp_lib_three_way_comparison 201711L [C++20]
__cpp_lib_to_address 201711L [C++20]
__cpp_lib_to_array 201907L [C++20]
__cpp_lib_to_chars 201611L [C++17]
Expand Down Expand Up @@ -4305,17 +4305,11 @@
# error "__cpp_lib_text_encoding should not be defined before c++26"
# endif

# if !defined(_LIBCPP_VERSION)
# ifndef __cpp_lib_three_way_comparison
# error "__cpp_lib_three_way_comparison should be defined in c++20"
# endif
# if __cpp_lib_three_way_comparison != 201907L
# error "__cpp_lib_three_way_comparison should have the value 201907L in c++20"
# endif
# else // _LIBCPP_VERSION
# ifdef __cpp_lib_three_way_comparison
# error "__cpp_lib_three_way_comparison should not be defined because it is unimplemented in libc++!"
# endif
# ifndef __cpp_lib_three_way_comparison
# error "__cpp_lib_three_way_comparison should be defined in c++20"
# endif
# if __cpp_lib_three_way_comparison != 201711L
# error "__cpp_lib_three_way_comparison should have the value 201711L in c++20"
# endif

# ifndef __cpp_lib_to_address
Expand Down Expand Up @@ -5899,17 +5893,11 @@
# error "__cpp_lib_text_encoding should not be defined before c++26"
# endif

# if !defined(_LIBCPP_VERSION)
# ifndef __cpp_lib_three_way_comparison
# error "__cpp_lib_three_way_comparison should be defined in c++23"
# endif
# if __cpp_lib_three_way_comparison != 201907L
# error "__cpp_lib_three_way_comparison should have the value 201907L in c++23"
# endif
# else // _LIBCPP_VERSION
# ifdef __cpp_lib_three_way_comparison
# error "__cpp_lib_three_way_comparison should not be defined because it is unimplemented in libc++!"
# endif
# ifndef __cpp_lib_three_way_comparison
# error "__cpp_lib_three_way_comparison should be defined in c++23"
# endif
# if __cpp_lib_three_way_comparison != 201711L
# error "__cpp_lib_three_way_comparison should have the value 201711L in c++23"
# endif

# ifndef __cpp_lib_to_address
Expand Down Expand Up @@ -7760,17 +7748,11 @@
# endif
# endif

# if !defined(_LIBCPP_VERSION)
# ifndef __cpp_lib_three_way_comparison
# error "__cpp_lib_three_way_comparison should be defined in c++26"
# endif
# if __cpp_lib_three_way_comparison != 201907L
# error "__cpp_lib_three_way_comparison should have the value 201907L in c++26"
# endif
# else // _LIBCPP_VERSION
# ifdef __cpp_lib_three_way_comparison
# error "__cpp_lib_three_way_comparison should not be defined because it is unimplemented in libc++!"
# endif
# ifndef __cpp_lib_three_way_comparison
# error "__cpp_lib_three_way_comparison should be defined in c++26"
# endif
# if __cpp_lib_three_way_comparison != 201711L
# error "__cpp_lib_three_way_comparison should have the value 201711L in c++26"
# endif

# ifndef __cpp_lib_to_address
Expand Down
4 changes: 2 additions & 2 deletions libcxx/utils/generate_feature_test_macro_components.py
Original file line number Diff line number Diff line change
Expand Up @@ -1236,9 +1236,9 @@ def add_version_header(tc):
},
{
"name": "__cpp_lib_three_way_comparison",
"values": {"c++20": 201907},
"values": {"c++20": 201711},
# {"c++20": 201907} # P1614R2 The Mothership has Landed (see P1902R1 Missing feature-test macros 2017-2019)
"headers": ["compare"],
"unimplemented": True,
},
{
"name": "__cpp_lib_to_address",
Expand Down
Loading