diff --git a/libcxx/docs/FeatureTestMacroTable.rst b/libcxx/docs/FeatureTestMacroTable.rst --- a/libcxx/docs/FeatureTestMacroTable.rst +++ b/libcxx/docs/FeatureTestMacroTable.rst @@ -316,10 +316,10 @@ ------------------------------------------------- ----------------- ``__cpp_lib_is_scoped_enum`` ``202011L`` ------------------------------------------------- ----------------- - ``__cpp_lib_monadic_optional`` ``202110L`` - ------------------------------------------------- ----------------- ``__cpp_lib_move_only_function`` *unimplemented* ------------------------------------------------- ----------------- + ``__cpp_lib_optional`` ``202110L`` + ------------------------------------------------- ----------------- ``__cpp_lib_out_ptr`` *unimplemented* ------------------------------------------------- ----------------- ``__cpp_lib_ranges_chunk`` *unimplemented* diff --git a/libcxx/docs/Status/Cxx2bIssues.csv b/libcxx/docs/Status/Cxx2bIssues.csv --- a/libcxx/docs/Status/Cxx2bIssues.csv +++ b/libcxx/docs/Status/Cxx2bIssues.csv @@ -148,7 +148,7 @@ "`3616 `__","LWG 3498 seems to miss the non-member ``swap`` for ``basic_syncbuf`` ","February 2022","","" "`3618 `__","Unnecessary ``iter_move`` for ``transform_view::iterator`` ","February 2022","","","|ranges|" "`3619 `__","Specification of ``vformat_to`` contains ill-formed ``formatted_size`` calls","February 2022","|Nothing to do|","","|format|" -"`3621 `__","Remove feature-test macro ``__cpp_lib_monadic_optional`` ","February 2022","","" +"`3621 `__","Remove feature-test macro ``__cpp_lib_monadic_optional`` ","February 2022","|Complete|","15.0" "`3632 `__","``unique_ptr`` ""Mandates: This constructor is not selected by class template argument deduction""","February 2022","|Nothing to do|","" "`3643 `__","Missing ``constexpr`` in ``std::counted_iterator`` ","February 2022","","" "`3648 `__","``format`` should not print ``bool`` with ``'c'`` ","February 2022","|Complete|","15.0","|format|" diff --git a/libcxx/include/version b/libcxx/include/version --- a/libcxx/include/version +++ b/libcxx/include/version @@ -117,7 +117,6 @@ __cpp_lib_math_constants 201907L __cpp_lib_math_special_functions 201603L __cpp_lib_memory_resource 201603L -__cpp_lib_monadic_optional 202110L __cpp_lib_move_only_function 202110L __cpp_lib_node_extract 201606L @@ -127,7 +126,8 @@ __cpp_lib_not_fn 201603L __cpp_lib_null_iterators 201304L -__cpp_lib_optional 201606L +__cpp_lib_optional 202110L + 201606L // C++17 __cpp_lib_out_ptr 202106L __cpp_lib_parallel_algorithm 201603L __cpp_lib_polymorphic_allocator 201902L @@ -382,8 +382,9 @@ // # define __cpp_lib_constexpr_typeinfo 202106L // # define __cpp_lib_invoke_r 202106L # define __cpp_lib_is_scoped_enum 202011L -# define __cpp_lib_monadic_optional 202110L // # define __cpp_lib_move_only_function 202110L +# undef __cpp_lib_optional +# define __cpp_lib_optional 202110L // # define __cpp_lib_out_ptr 202106L // # define __cpp_lib_ranges_chunk 202202L // # define __cpp_lib_ranges_chunk_by 202202L diff --git a/libcxx/test/std/language.support/support.limits/support.limits.general/optional.version.compile.pass.cpp b/libcxx/test/std/language.support/support.limits/support.limits.general/optional.version.compile.pass.cpp --- a/libcxx/test/std/language.support/support.limits/support.limits.general/optional.version.compile.pass.cpp +++ b/libcxx/test/std/language.support/support.limits/support.limits.general/optional.version.compile.pass.cpp @@ -15,9 +15,9 @@ // Test the feature test macros defined by -/* Constant Value - __cpp_lib_monadic_optional 202110L [C++2b] - __cpp_lib_optional 201606L [C++17] +/* Constant Value + __cpp_lib_optional 201606L [C++17] + 202110L [C++2b] */ #include @@ -25,30 +25,18 @@ #if TEST_STD_VER < 14 -# ifdef __cpp_lib_monadic_optional -# error "__cpp_lib_monadic_optional should not be defined before c++2b" -# endif - # ifdef __cpp_lib_optional # error "__cpp_lib_optional should not be defined before c++17" # endif #elif TEST_STD_VER == 14 -# ifdef __cpp_lib_monadic_optional -# error "__cpp_lib_monadic_optional should not be defined before c++2b" -# endif - # ifdef __cpp_lib_optional # error "__cpp_lib_optional should not be defined before c++17" # endif #elif TEST_STD_VER == 17 -# ifdef __cpp_lib_monadic_optional -# error "__cpp_lib_monadic_optional should not be defined before c++2b" -# endif - # ifndef __cpp_lib_optional # error "__cpp_lib_optional should be defined in c++17" # endif @@ -58,10 +46,6 @@ #elif TEST_STD_VER == 20 -# ifdef __cpp_lib_monadic_optional -# error "__cpp_lib_monadic_optional should not be defined before c++2b" -# endif - # ifndef __cpp_lib_optional # error "__cpp_lib_optional should be defined in c++20" # endif @@ -71,18 +55,11 @@ #elif TEST_STD_VER > 20 -# ifndef __cpp_lib_monadic_optional -# error "__cpp_lib_monadic_optional should be defined in c++2b" -# endif -# if __cpp_lib_monadic_optional != 202110L -# error "__cpp_lib_monadic_optional should have the value 202110L in c++2b" -# endif - # ifndef __cpp_lib_optional # error "__cpp_lib_optional should be defined in c++2b" # endif -# if __cpp_lib_optional != 201606L -# error "__cpp_lib_optional should have the value 201606L in c++2b" +# if __cpp_lib_optional != 202110L +# error "__cpp_lib_optional should have the value 202110L in c++2b" # endif #endif // TEST_STD_VER > 20 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 --- 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 @@ -111,13 +111,13 @@ __cpp_lib_math_constants 201907L [C++20] __cpp_lib_math_special_functions 201603L [C++17] __cpp_lib_memory_resource 201603L [C++17] - __cpp_lib_monadic_optional 202110L [C++2b] __cpp_lib_move_only_function 202110L [C++2b] __cpp_lib_node_extract 201606L [C++17] __cpp_lib_nonmember_container_access 201411L [C++17] __cpp_lib_not_fn 201603L [C++17] __cpp_lib_null_iterators 201304L [C++14] __cpp_lib_optional 201606L [C++17] + 202110L [C++2b] __cpp_lib_out_ptr 202106L [C++2b] __cpp_lib_parallel_algorithm 201603L [C++17] __cpp_lib_polymorphic_allocator 201902L [C++20] @@ -556,10 +556,6 @@ # error "__cpp_lib_memory_resource should not be defined before c++17" # endif -# ifdef __cpp_lib_monadic_optional -# error "__cpp_lib_monadic_optional should not be defined before c++2b" -# endif - # ifdef __cpp_lib_move_only_function # error "__cpp_lib_move_only_function should not be defined before c++2b" # endif @@ -1212,10 +1208,6 @@ # error "__cpp_lib_memory_resource should not be defined before c++17" # endif -# ifdef __cpp_lib_monadic_optional -# error "__cpp_lib_monadic_optional should not be defined before c++2b" -# endif - # ifdef __cpp_lib_move_only_function # error "__cpp_lib_move_only_function should not be defined before c++2b" # endif @@ -2030,10 +2022,6 @@ # endif # endif -# ifdef __cpp_lib_monadic_optional -# error "__cpp_lib_monadic_optional should not be defined before c++2b" -# endif - # ifdef __cpp_lib_move_only_function # error "__cpp_lib_move_only_function should not be defined before c++2b" # endif @@ -3142,10 +3130,6 @@ # endif # endif -# ifdef __cpp_lib_monadic_optional -# error "__cpp_lib_monadic_optional should not be defined before c++2b" -# endif - # ifdef __cpp_lib_move_only_function # error "__cpp_lib_move_only_function should not be defined before c++2b" # endif @@ -4401,13 +4385,6 @@ # endif # endif -# ifndef __cpp_lib_monadic_optional -# error "__cpp_lib_monadic_optional should be defined in c++2b" -# endif -# if __cpp_lib_monadic_optional != 202110L -# error "__cpp_lib_monadic_optional should have the value 202110L in c++2b" -# endif - # if !defined(_LIBCPP_VERSION) # ifndef __cpp_lib_move_only_function # error "__cpp_lib_move_only_function should be defined in c++2b" @@ -4452,8 +4429,8 @@ # ifndef __cpp_lib_optional # error "__cpp_lib_optional should be defined in c++2b" # endif -# if __cpp_lib_optional != 201606L -# error "__cpp_lib_optional should have the value 201606L in c++2b" +# if __cpp_lib_optional != 202110L +# error "__cpp_lib_optional should have the value 202110L in c++2b" # 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 --- a/libcxx/utils/generate_feature_test_macro_components.py +++ b/libcxx/utils/generate_feature_test_macro_components.py @@ -470,10 +470,6 @@ "values": { "c++17": 201603 }, "headers": ["memory_resource"], "unimplemented": True, - }, { - "name": "__cpp_lib_monadic_optional", - "values": { "c++2b": 202110 }, - "headers": ["optional"], }, { "name": "__cpp_lib_move_only_function", "values": { "c++2b": 202110 }, @@ -497,7 +493,7 @@ "headers": ["iterator"], }, { "name": "__cpp_lib_optional", - "values": { "c++17": 201606 }, + "values": { "c++17": 201606, "c++2b": 202110 }, "headers": ["optional"], }, { "name": "__cpp_lib_out_ptr",