diff --git a/libcxx/docs/FeatureTestMacroTable.rst b/libcxx/docs/FeatureTestMacroTable.rst index db24b65caca6c..3c4a13332661e 100644 --- a/libcxx/docs/FeatureTestMacroTable.rst +++ b/libcxx/docs/FeatureTestMacroTable.rst @@ -278,7 +278,7 @@ Status ---------------------------------------------------------- ----------------- ``__cpp_lib_shift`` ``201806L`` ---------------------------------------------------------- ----------------- - ``__cpp_lib_smart_ptr_for_overwrite`` *unimplemented* + ``__cpp_lib_smart_ptr_for_overwrite`` ``202002L`` ---------------------------------------------------------- ----------------- ``__cpp_lib_source_location`` ``201907L`` ---------------------------------------------------------- ----------------- diff --git a/libcxx/docs/Status/Cxx20Papers.csv b/libcxx/docs/Status/Cxx20Papers.csv index c8c30a315fcaf..66cb1012eceb9 100644 --- a/libcxx/docs/Status/Cxx20Papers.csv +++ b/libcxx/docs/Status/Cxx20Papers.csv @@ -68,7 +68,7 @@ "`P0972R0 `__"," ``zero()``\ , ``min()``\ , and ``max()``\ should be noexcept","2018-11 (San Diego)","|Complete|","8","" "`P1006R1 `__","Constexpr in std::pointer_traits","2018-11 (San Diego)","|Complete|","8","" "`P1007R3 `__","``std::assume_aligned``\ ","2018-11 (San Diego)","|Complete|","15","" -"`P1020R1 `__","Smart pointer creation with default initialization","2018-11 (San Diego)","|Complete|","16","" +"`P1020R1 `__","Smart pointer creation with default initialization","2018-11 (San Diego)","|Complete|","16","The feature-test macro was not set until LLVM 20." "`P1032R1 `__","Misc constexpr bits","2018-11 (San Diego)","|Complete|","13","" "`P1085R2 `__","Should Span be Regular?","2018-11 (San Diego)","|Complete|","8","" "`P1123R0 `__","Editorial Guidance for merging P0019r8 and P0528r3","2018-11 (San Diego)","","","" @@ -177,7 +177,7 @@ "`P1963R0 `__","Fixing US 313","2020-02 (Prague)","","","" "`P1964R2 `__","Wording for boolean-testable","2020-02 (Prague)","|Complete|","13","" "`P1970R2 `__","Consistency for size() functions: Add ranges::ssize","2020-02 (Prague)","|Complete|","15","" -"`P1973R1 `__","Rename ""_default_init"" Functions, Rev1","2020-02 (Prague)","|Complete|","16","" +"`P1973R1 `__","Rename ""_default_init"" Functions, Rev1","2020-02 (Prague)","|Complete|","16","The feature-test macro was not set until LLVM 20." "`P1976R2 `__","Fixed-size span construction from dynamic range","2020-02 (Prague)","|Complete|","11","" "`P1981R0 `__","Rename leap to leap_second","2020-02 (Prague)","|Complete|","19","" "`P1982R0 `__","Rename link to time_zone_link","2020-02 (Prague)","|Complete|","19","" diff --git a/libcxx/include/version b/libcxx/include/version index cb75f3b2db681..571b6e39381d1 100644 --- a/libcxx/include/version +++ b/libcxx/include/version @@ -443,7 +443,7 @@ __cpp_lib_void_t 201411L # undef __cpp_lib_shared_ptr_arrays # define __cpp_lib_shared_ptr_arrays 201707L # define __cpp_lib_shift 201806L -// # define __cpp_lib_smart_ptr_for_overwrite 202002L +# define __cpp_lib_smart_ptr_for_overwrite 202002L # define __cpp_lib_source_location 201907L # define __cpp_lib_span 202002L # define __cpp_lib_ssize 201902L diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/memory.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/memory.version.compile.pass.cpp index 315058f7f4637..0094bed44be07 100644 --- a/libcxx/test/std/language.support/support.limits/support.limits.general/memory.version.compile.pass.cpp +++ b/libcxx/test/std/language.support/support.limits/support.limits.general/memory.version.compile.pass.cpp @@ -390,17 +390,11 @@ # error "__cpp_lib_shared_ptr_weak_type should have the value 201606L in c++20" # endif -# if !defined(_LIBCPP_VERSION) -# ifndef __cpp_lib_smart_ptr_for_overwrite -# error "__cpp_lib_smart_ptr_for_overwrite should be defined in c++20" -# endif -# if __cpp_lib_smart_ptr_for_overwrite != 202002L -# error "__cpp_lib_smart_ptr_for_overwrite should have the value 202002L in c++20" -# endif -# else // _LIBCPP_VERSION -# ifdef __cpp_lib_smart_ptr_for_overwrite -# error "__cpp_lib_smart_ptr_for_overwrite should not be defined because it is unimplemented in libc++!" -# endif +# ifndef __cpp_lib_smart_ptr_for_overwrite +# error "__cpp_lib_smart_ptr_for_overwrite should be defined in c++20" +# endif +# if __cpp_lib_smart_ptr_for_overwrite != 202002L +# error "__cpp_lib_smart_ptr_for_overwrite should have the value 202002L in c++20" # endif # ifdef __cpp_lib_smart_ptr_owner_equality @@ -521,17 +515,11 @@ # error "__cpp_lib_shared_ptr_weak_type should have the value 201606L in c++23" # endif -# if !defined(_LIBCPP_VERSION) -# ifndef __cpp_lib_smart_ptr_for_overwrite -# error "__cpp_lib_smart_ptr_for_overwrite should be defined in c++23" -# endif -# if __cpp_lib_smart_ptr_for_overwrite != 202002L -# error "__cpp_lib_smart_ptr_for_overwrite should have the value 202002L in c++23" -# endif -# else // _LIBCPP_VERSION -# ifdef __cpp_lib_smart_ptr_for_overwrite -# error "__cpp_lib_smart_ptr_for_overwrite should not be defined because it is unimplemented in libc++!" -# endif +# ifndef __cpp_lib_smart_ptr_for_overwrite +# error "__cpp_lib_smart_ptr_for_overwrite should be defined in c++23" +# endif +# if __cpp_lib_smart_ptr_for_overwrite != 202002L +# error "__cpp_lib_smart_ptr_for_overwrite should have the value 202002L in c++23" # endif # ifdef __cpp_lib_smart_ptr_owner_equality @@ -652,17 +640,11 @@ # error "__cpp_lib_shared_ptr_weak_type should have the value 201606L in c++26" # endif -# if !defined(_LIBCPP_VERSION) -# ifndef __cpp_lib_smart_ptr_for_overwrite -# error "__cpp_lib_smart_ptr_for_overwrite should be defined in c++26" -# endif -# if __cpp_lib_smart_ptr_for_overwrite != 202002L -# error "__cpp_lib_smart_ptr_for_overwrite should have the value 202002L in c++26" -# endif -# else // _LIBCPP_VERSION -# ifdef __cpp_lib_smart_ptr_for_overwrite -# error "__cpp_lib_smart_ptr_for_overwrite should not be defined because it is unimplemented in libc++!" -# endif +# ifndef __cpp_lib_smart_ptr_for_overwrite +# error "__cpp_lib_smart_ptr_for_overwrite should be defined in c++26" +# endif +# if __cpp_lib_smart_ptr_for_overwrite != 202002L +# error "__cpp_lib_smart_ptr_for_overwrite should have the value 202002L in c++26" # endif # if !defined(_LIBCPP_VERSION) diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/version.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/version.version.compile.pass.cpp index 5deaee16895f6..74db80c4d642e 100644 --- a/libcxx/test/std/language.support/support.limits/support.limits.general/version.version.compile.pass.cpp +++ b/libcxx/test/std/language.support/support.limits/support.limits.general/version.version.compile.pass.cpp @@ -4344,17 +4344,11 @@ # error "__cpp_lib_shift should have the value 201806L in c++20" # endif -# if !defined(_LIBCPP_VERSION) -# ifndef __cpp_lib_smart_ptr_for_overwrite -# error "__cpp_lib_smart_ptr_for_overwrite should be defined in c++20" -# endif -# if __cpp_lib_smart_ptr_for_overwrite != 202002L -# error "__cpp_lib_smart_ptr_for_overwrite should have the value 202002L in c++20" -# endif -# else // _LIBCPP_VERSION -# ifdef __cpp_lib_smart_ptr_for_overwrite -# error "__cpp_lib_smart_ptr_for_overwrite should not be defined because it is unimplemented in libc++!" -# endif +# ifndef __cpp_lib_smart_ptr_for_overwrite +# error "__cpp_lib_smart_ptr_for_overwrite should be defined in c++20" +# endif +# if __cpp_lib_smart_ptr_for_overwrite != 202002L +# error "__cpp_lib_smart_ptr_for_overwrite should have the value 202002L in c++20" # endif # ifdef __cpp_lib_smart_ptr_owner_equality @@ -5929,17 +5923,11 @@ # error "__cpp_lib_shift should have the value 201806L in c++23" # endif -# if !defined(_LIBCPP_VERSION) -# ifndef __cpp_lib_smart_ptr_for_overwrite -# error "__cpp_lib_smart_ptr_for_overwrite should be defined in c++23" -# endif -# if __cpp_lib_smart_ptr_for_overwrite != 202002L -# error "__cpp_lib_smart_ptr_for_overwrite should have the value 202002L in c++23" -# endif -# else // _LIBCPP_VERSION -# ifdef __cpp_lib_smart_ptr_for_overwrite -# error "__cpp_lib_smart_ptr_for_overwrite should not be defined because it is unimplemented in libc++!" -# endif +# ifndef __cpp_lib_smart_ptr_for_overwrite +# error "__cpp_lib_smart_ptr_for_overwrite should be defined in c++23" +# endif +# if __cpp_lib_smart_ptr_for_overwrite != 202002L +# error "__cpp_lib_smart_ptr_for_overwrite should have the value 202002L in c++23" # endif # ifdef __cpp_lib_smart_ptr_owner_equality @@ -7829,17 +7817,11 @@ # error "__cpp_lib_shift should have the value 201806L in c++26" # endif -# if !defined(_LIBCPP_VERSION) -# ifndef __cpp_lib_smart_ptr_for_overwrite -# error "__cpp_lib_smart_ptr_for_overwrite should be defined in c++26" -# endif -# if __cpp_lib_smart_ptr_for_overwrite != 202002L -# error "__cpp_lib_smart_ptr_for_overwrite should have the value 202002L in c++26" -# endif -# else // _LIBCPP_VERSION -# ifdef __cpp_lib_smart_ptr_for_overwrite -# error "__cpp_lib_smart_ptr_for_overwrite should not be defined because it is unimplemented in libc++!" -# endif +# ifndef __cpp_lib_smart_ptr_for_overwrite +# error "__cpp_lib_smart_ptr_for_overwrite should be defined in c++26" +# endif +# if __cpp_lib_smart_ptr_for_overwrite != 202002L +# error "__cpp_lib_smart_ptr_for_overwrite should have the value 202002L in c++26" # endif # if !defined(_LIBCPP_VERSION) diff --git a/libcxx/utils/generate_feature_test_macro_components.py b/libcxx/utils/generate_feature_test_macro_components.py index 197d6bbc69222..c32d8d77c8857 100755 --- a/libcxx/utils/generate_feature_test_macro_components.py +++ b/libcxx/utils/generate_feature_test_macro_components.py @@ -1196,7 +1196,6 @@ def add_version_header(tc): "name": "__cpp_lib_smart_ptr_for_overwrite", "values": {"c++20": 202002}, "headers": ["memory"], - "unimplemented": True, }, { "name": "__cpp_lib_smart_ptr_owner_equality",