|
292 | 292 | // P2418R2 Add Support For std::generator-like Types To std::format
|
293 | 293 | // P2419R2 Clarify Handling Of Encodings In Localized Formatting Of chrono Types
|
294 | 294 | // P2432R1 Fix istream_view
|
| 295 | +// P2465R3 Standard Library Modules std And std.compat |
295 | 296 | // P2508R1 basic_format_string, format_string, wformat_string
|
296 | 297 | // P2520R0 move_iterator<T*> Should Be A Random-Access Iterator
|
297 | 298 | // P2538R1 ADL-Proof projected
|
|
365 | 366 | // P2443R1 views::chunk_by
|
366 | 367 | // P2445R1 forward_like()
|
367 | 368 | // P2446R2 views::as_rvalue
|
368 |
| -// P2465R3 Standard Library Modules std And std.compat |
369 | 369 | // P2467R1 ios_base::noreplace: Exclusive Mode For fstreams
|
370 | 370 | // P2474R2 views::repeat
|
371 | 371 | // P2494R2 Relaxing Range Adaptors To Allow Move-Only Types
|
@@ -928,11 +928,14 @@ _EMIT_STL_ERROR(STL1001, "Unexpected compiler version, expected MSVC 19.36 or ne
|
928 | 928 | #endif // ^^^ inline (not constexpr) in C++20 and earlier ^^^
|
929 | 929 |
|
930 | 930 | // P2465R3 Standard Library Modules std And std.compat
|
931 |
| -#if _HAS_CXX23 && defined(_BUILD_STD_MODULE) |
| 931 | +#ifdef _BUILD_STD_MODULE |
| 932 | +#if !_HAS_CXX20 |
| 933 | +#error The Standard Library Modules are available only with C++20 or later. |
| 934 | +#endif // ^^^ !_HAS_CXX20 ^^^ |
932 | 935 | #define _EXPORT_STD export
|
933 |
| -#else // _HAS_CXX23 && defined(_BUILD_STD_MODULE) |
| 936 | +#else // ^^^ defined(_BUILD_STD_MODULE) / !defined(_BUILD_STD_MODULE) vvv |
934 | 937 | #define _EXPORT_STD
|
935 |
| -#endif // _HAS_CXX23 && defined(_BUILD_STD_MODULE) |
| 938 | +#endif // ^^^ !defined(_BUILD_STD_MODULE) ^^^ |
936 | 939 |
|
937 | 940 | // P0607R0 Inline Variables For The STL
|
938 | 941 | #if _HAS_CXX17
|
@@ -1752,6 +1755,10 @@ _EMIT_STL_ERROR(STL1004, "C++98 unexpected() is incompatible with C++23 unexpect
|
1752 | 1755 | #define __cpp_lib_list_remove_return_type 201806L
|
1753 | 1756 | #define __cpp_lib_math_constants 201907L
|
1754 | 1757 |
|
| 1758 | +#if !defined(__clang__) && !defined(__EDG__) // TRANSITION, Clang and EDG support for modules |
| 1759 | +#define __cpp_lib_modules 202207L |
| 1760 | +#endif // !defined(__clang__) && !defined(__EDG__) |
| 1761 | + |
1755 | 1762 | #ifdef __cpp_lib_concepts
|
1756 | 1763 | #define __cpp_lib_move_iterator_concept 202207L
|
1757 | 1764 | #endif // defined(__cpp_lib_concepts)
|
@@ -1793,15 +1800,10 @@ _EMIT_STL_ERROR(STL1004, "C++98 unexpected() is incompatible with C++23 unexpect
|
1793 | 1800 | #define __cpp_lib_formatters 202302L
|
1794 | 1801 | #endif // defined(__cpp_lib_concepts)
|
1795 | 1802 |
|
1796 |
| -#define __cpp_lib_forward_like 202207L |
1797 |
| -#define __cpp_lib_invoke_r 202106L |
1798 |
| -#define __cpp_lib_ios_noreplace 202207L |
1799 |
| -#define __cpp_lib_is_scoped_enum 202011L |
1800 |
| - |
1801 |
| -#if !defined(__clang__) && !defined(__EDG__) // TRANSITION, Clang and EDG support for modules |
1802 |
| -#define __cpp_lib_modules 202207L |
1803 |
| -#endif // !defined(__clang__) && !defined(__EDG__) |
1804 |
| - |
| 1803 | +#define __cpp_lib_forward_like 202207L |
| 1804 | +#define __cpp_lib_invoke_r 202106L |
| 1805 | +#define __cpp_lib_ios_noreplace 202207L |
| 1806 | +#define __cpp_lib_is_scoped_enum 202011L |
1805 | 1807 | #define __cpp_lib_move_only_function 202110L
|
1806 | 1808 |
|
1807 | 1809 | #ifdef __cpp_lib_concepts
|
|
0 commit comments