|
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