diff --git a/libcxx/docs/FeatureTestMacroTable.rst b/libcxx/docs/FeatureTestMacroTable.rst index 3197d2cd1b271..858a4ebd27a07 100644 --- a/libcxx/docs/FeatureTestMacroTable.rst +++ b/libcxx/docs/FeatureTestMacroTable.rst @@ -340,6 +340,8 @@ Status ---------------------------------------------------------- ----------------- ``__cpp_lib_mdspan`` ``202207L`` ---------------------------------------------------------- ----------------- + ``__cpp_lib_modules`` ``202207L`` + ---------------------------------------------------------- ----------------- ``__cpp_lib_move_only_function`` *unimplemented* ---------------------------------------------------------- ----------------- ``__cpp_lib_optional`` ``202110L`` diff --git a/libcxx/docs/Status/Cxx23Papers.csv b/libcxx/docs/Status/Cxx23Papers.csv index 01387a404f5d6..36d7f78285aa9 100644 --- a/libcxx/docs/Status/Cxx23Papers.csv +++ b/libcxx/docs/Status/Cxx23Papers.csv @@ -75,7 +75,7 @@ "`P2445R1 `__","LWG","``forward_like``","July 2022","|Complete|","16.0" "`P2446R2 `__","LWG","``views::as_rvalue``","July 2022","|Complete|","16.0","|ranges|" "`P2460R2 `__","LWG","Relax requirements on ``wchar_t`` to match existing practices","July 2022","","" -"`P2465R3 `__","LWG","Standard Library Modules ``std`` and ``std.compat``","July 2022","","" +"`P2465R3 `__","LWG","Standard Library Modules ``std`` and ``std.compat``","July 2022","|Complete|","19.0","" "`P2467R1 `__","LWG","Support exclusive mode for ``fstreams``","July 2022","|Complete|","18.0","" "`P2474R2 `__","LWG","``views::repeat``","July 2022","|Complete|","17.0","|ranges|" "`P2494R2 `__","LWG","Relaxing range adaptors to allow for move only types","July 2022","|Complete|","17.0","|ranges|" diff --git a/libcxx/include/version b/libcxx/include/version index 0ed77345baa71..09d3c5ed384db 100644 --- a/libcxx/include/version +++ b/libcxx/include/version @@ -465,6 +465,7 @@ __cpp_lib_within_lifetime 202306L # define __cpp_lib_ios_noreplace 202207L # define __cpp_lib_is_scoped_enum 202011L # define __cpp_lib_mdspan 202207L +# define __cpp_lib_modules 202207L // # define __cpp_lib_move_only_function 202110L # undef __cpp_lib_optional # define __cpp_lib_optional 202110L 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 3ec548f56cea1..09f471693acf0 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 @@ -143,6 +143,7 @@ __cpp_lib_math_special_functions 201603L [C++17] __cpp_lib_mdspan 202207L [C++23] __cpp_lib_memory_resource 201603L [C++17] + __cpp_lib_modules 202207L [C++23] __cpp_lib_move_iterator_concept 202207L [C++20] __cpp_lib_move_only_function 202110L [C++23] __cpp_lib_node_extract 201606L [C++17] @@ -731,6 +732,10 @@ # error "__cpp_lib_memory_resource should not be defined before c++17" # endif +# ifdef __cpp_lib_modules +# error "__cpp_lib_modules should not be defined before c++23" +# endif + # ifdef __cpp_lib_move_iterator_concept # error "__cpp_lib_move_iterator_concept should not be defined before c++20" # endif @@ -1583,6 +1588,10 @@ # error "__cpp_lib_memory_resource should not be defined before c++17" # endif +# ifdef __cpp_lib_modules +# error "__cpp_lib_modules should not be defined before c++23" +# endif + # ifdef __cpp_lib_move_iterator_concept # error "__cpp_lib_move_iterator_concept should not be defined before c++20" # endif @@ -2597,6 +2606,10 @@ # endif # endif +# ifdef __cpp_lib_modules +# error "__cpp_lib_modules should not be defined before c++23" +# endif + # ifdef __cpp_lib_move_iterator_concept # error "__cpp_lib_move_iterator_concept should not be defined before c++20" # endif @@ -3896,6 +3909,10 @@ # endif # endif +# ifdef __cpp_lib_modules +# error "__cpp_lib_modules should not be defined before c++23" +# endif + # ifndef __cpp_lib_move_iterator_concept # error "__cpp_lib_move_iterator_concept should be defined in c++20" # endif @@ -5354,6 +5371,13 @@ # endif # endif +# ifndef __cpp_lib_modules +# error "__cpp_lib_modules should be defined in c++23" +# endif +# if __cpp_lib_modules != 202207L +# error "__cpp_lib_modules should have the value 202207L in c++23" +# endif + # ifndef __cpp_lib_move_iterator_concept # error "__cpp_lib_move_iterator_concept should be defined in c++23" # endif @@ -7139,6 +7163,13 @@ # endif # endif +# ifndef __cpp_lib_modules +# error "__cpp_lib_modules should be defined in c++26" +# endif +# if __cpp_lib_modules != 202207L +# error "__cpp_lib_modules should have the value 202207L in c++26" +# endif + # ifndef __cpp_lib_move_iterator_concept # error "__cpp_lib_move_iterator_concept should be defined in c++26" # endif diff --git a/libcxx/utils/generate_feature_test_macro_components.py b/libcxx/utils/generate_feature_test_macro_components.py index f2b8d55c0e11b..423acbca82b93 100755 --- a/libcxx/utils/generate_feature_test_macro_components.py +++ b/libcxx/utils/generate_feature_test_macro_components.py @@ -830,6 +830,11 @@ def add_version_header(tc): "test_suite_guard": "!defined(_LIBCPP_VERSION) || _LIBCPP_AVAILABILITY_HAS_PMR", "libcxx_guard": "_LIBCPP_AVAILABILITY_HAS_PMR", }, + { + "name": "__cpp_lib_modules", + "values": {"c++23": 202207}, + "headers": [], + }, { "name": "__cpp_lib_move_iterator_concept", "values": {"c++20": 202207},