diff --git a/libcxx/include/__algorithm/clamp.h b/libcxx/include/__algorithm/clamp.h index 1a5a3d0744be..cf7cd507a149 100644 --- a/libcxx/include/__algorithm/clamp.h +++ b/libcxx/include/__algorithm/clamp.h @@ -17,9 +17,10 @@ # pragma GCC system_header #endif +#if _LIBCPP_STD_VER >= 17 + _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER >= 17 template [[nodiscard]] inline _LIBCPP_HIDE_FROM_ABI constexpr const _Tp& clamp(_LIBCPP_LIFETIMEBOUND const _Tp& __v, @@ -37,8 +38,9 @@ clamp(_LIBCPP_LIFETIMEBOUND const _Tp& __v, _LIBCPP_LIFETIMEBOUND const _Tp& __hi) { return std::clamp(__v, __lo, __hi, __less<>()); } -#endif _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 17 + #endif // _LIBCPP___ALGORITHM_CLAMP_H diff --git a/libcxx/include/__algorithm/lexicographical_compare_three_way.h b/libcxx/include/__algorithm/lexicographical_compare_three_way.h index 442223e79e4e..5be95c4d5134 100644 --- a/libcxx/include/__algorithm/lexicographical_compare_three_way.h +++ b/libcxx/include/__algorithm/lexicographical_compare_three_way.h @@ -27,10 +27,10 @@ _LIBCPP_PUSH_MACROS #include <__undef_macros> -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + // Fast path for random access iterators which computes the number of loop iterations up-front and // then skips the iterator comparisons inside the loop. template @@ -116,10 +116,10 @@ template std::move(__first1), std::move(__last1), std::move(__first2), std::move(__last2), std::compare_three_way()); } -#endif // _LIBCPP_STD_VER >= 20 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 + _LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_LEXICOGRAPHICAL_COMPARE_THREE_WAY_H diff --git a/libcxx/include/__algorithm/out_value_result.h b/libcxx/include/__algorithm/out_value_result.h index 9e1e0e07286d..398328b04206 100644 --- a/libcxx/include/__algorithm/out_value_result.h +++ b/libcxx/include/__algorithm/out_value_result.h @@ -21,10 +21,10 @@ _LIBCPP_PUSH_MACROS #include <__undef_macros> -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 23 +_LIBCPP_BEGIN_NAMESPACE_STD + namespace ranges { template @@ -47,10 +47,10 @@ struct out_value_result { } // namespace ranges -#endif // _LIBCPP_STD_VER >= 23 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 23 + _LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_OUT_VALUE_RESULT_H diff --git a/libcxx/include/__algorithm/radix_sort.h b/libcxx/include/__algorithm/radix_sort.h index 5549a69f5e22..4f685ea162d5 100644 --- a/libcxx/include/__algorithm/radix_sort.h +++ b/libcxx/include/__algorithm/radix_sort.h @@ -67,10 +67,10 @@ _LIBCPP_PUSH_MACROS #include <__undef_macros> -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 14 +_LIBCPP_BEGIN_NAMESPACE_STD + template _LIBCPP_HIDE_FROM_ABI constexpr pair<_OutputIterator, __iterator_value_type<_InputIterator>> __partial_sum_max(_InputIterator __first, _InputIterator __last, _OutputIterator __result) { @@ -422,10 +422,10 @@ __radix_sort(_RandomAccessIterator1 __first, _RandomAccessIterator1 __last, _Ran std::__radix_sort(__first, __last, __buffer, __identity{}, __low_byte_fn{}); } -#endif // _LIBCPP_STD_VER >= 14 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 14 + _LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RADIX_SORT_H diff --git a/libcxx/include/__algorithm/ranges_copy_n.h b/libcxx/include/__algorithm/ranges_copy_n.h index e402cd6c2c0e..1720ac358fa4 100644 --- a/libcxx/include/__algorithm/ranges_copy_n.h +++ b/libcxx/include/__algorithm/ranges_copy_n.h @@ -24,10 +24,10 @@ _LIBCPP_PUSH_MACROS #include <__undef_macros> -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + namespace ranges { template @@ -47,10 +47,10 @@ inline constexpr auto copy_n = __copy_n{}; } // namespace __cpo } // namespace ranges -#endif // _LIBCPP_STD_VER >= 20 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 + _LIBCPP_POP_MACROS #endif // _LIBCPP___ALGORITHM_RANGES_COPY_N_H diff --git a/libcxx/include/__algorithm/three_way_comp_ref_type.h b/libcxx/include/__algorithm/three_way_comp_ref_type.h index f6f76455e466..8df3f1d6e3b2 100644 --- a/libcxx/include/__algorithm/three_way_comp_ref_type.h +++ b/libcxx/include/__algorithm/three_way_comp_ref_type.h @@ -19,10 +19,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + template struct __debug_three_way_comp { _Comp& __comp_; @@ -67,8 +67,8 @@ template using __three_way_comp_ref_type _LIBCPP_NODEBUG = _Comp&; # endif -#endif // _LIBCPP_STD_VER >= 20 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 + #endif // _LIBCPP___ALGORITHM_THREE_WAY_COMP_REF_TYPE_H diff --git a/libcxx/include/__atomic/atomic_sync.h b/libcxx/include/__atomic/atomic_sync.h index b9b67d9092c6..c96cd63a82e3 100644 --- a/libcxx/include/__atomic/atomic_sync.h +++ b/libcxx/include/__atomic/atomic_sync.h @@ -23,9 +23,10 @@ # pragma GCC system_header #endif +#if _LIBCPP_STD_VER >= 20 + _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER >= 20 # if _LIBCPP_HAS_THREADS _LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS @@ -258,8 +259,8 @@ _LIBCPP_HIDE_FROM_ABI void __atomic_wait(_AtomicWaitable& __a, _Tp __val, memory }); } -#endif // C++20 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 + #endif // _LIBCPP___ATOMIC_ATOMIC_SYNC_H diff --git a/libcxx/include/__atomic/atomic_sync_timed.h b/libcxx/include/__atomic/atomic_sync_timed.h index 7cb24151fde7..4fed3bf53f68 100644 --- a/libcxx/include/__atomic/atomic_sync_timed.h +++ b/libcxx/include/__atomic/atomic_sync_timed.h @@ -25,10 +25,11 @@ # pragma GCC system_header #endif +#if _LIBCPP_STD_VER >= 20 && _LIBCPP_HAS_THREADS + _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER >= 20 -# if _LIBCPP_HAS_THREADS && _LIBCPP_AVAILABILITY_HAS_NEW_SYNC +# if _LIBCPP_AVAILABILITY_HAS_NEW_SYNC _LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_AVAILABILITY_NEW_SYNC @@ -110,7 +111,7 @@ _LIBCPP_HIDE_FROM_ABI bool __atomic_wait_unless_with_timeout( return __poll_result == __poll_with_backoff_results::__poll_success; } -# elif _LIBCPP_HAS_THREADS // _LIBCPP_HAS_THREADS && _LIBCPP_AVAILABILITY_HAS_NEW_SYNC +# else // _LIBCPP_AVAILABILITY_HAS_NEW_SYNC template _LIBCPP_HIDE_FROM_ABI bool __atomic_wait_unless_with_timeout( @@ -129,10 +130,10 @@ _LIBCPP_HIDE_FROM_ABI bool __atomic_wait_unless_with_timeout( return __res == __poll_with_backoff_results::__poll_success; } -# endif // _LIBCPP_HAS_THREADS && _LIBCPP_AVAILABILITY_HAS_NEW_SYNC - -#endif // C++20 +# endif // _LIBCPP_AVAILABILITY_HAS_NEW_SYNC _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 && _LIBCPP_HAS_THREADS + #endif // _LIBCPP___ATOMIC_ATOMIC_SYNC_TIMED_H diff --git a/libcxx/include/__atomic/atomic_waitable_traits.h b/libcxx/include/__atomic/atomic_waitable_traits.h index 369cd2c52b83..ed26a60df982 100644 --- a/libcxx/include/__atomic/atomic_waitable_traits.h +++ b/libcxx/include/__atomic/atomic_waitable_traits.h @@ -22,10 +22,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + // The customisation points to enable the following functions: // - __atomic_wait // - __atomic_wait_unless @@ -94,8 +94,8 @@ concept __has_native_atomic_wait = is_same_v<_Tp, __cxx_contention_t>; # endif // _LIBCPP_ABI_ATOMIC_WAIT_NATIVE_BY_SIZE -#endif // C++20 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 + #endif // _LIBCPP___ATOMIC_ATOMIC_WAITABLE_TRAITS_H diff --git a/libcxx/include/__atomic/floating_point_helper.h b/libcxx/include/__atomic/floating_point_helper.h index 8762ec234b18..4f21006dd27d 100644 --- a/libcxx/include/__atomic/floating_point_helper.h +++ b/libcxx/include/__atomic/floating_point_helper.h @@ -17,10 +17,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + template _LIBCPP_HIDE_FROM_ABI constexpr bool __is_fp80_long_double() { // Only x87-fp80 long double has 64-bit mantissa @@ -48,8 +48,8 @@ _LIBCPP_HIDE_FROM_ABI constexpr bool __has_rmw_builtin() { # endif } -#endif - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 + #endif // _LIBCPP___ATOMIC_FLOATING_POINT_HELPER_H diff --git a/libcxx/include/__bit/bit_cast.h b/libcxx/include/__bit/bit_cast.h index 735025065a72..72b558f1446c 100644 --- a/libcxx/include/__bit/bit_cast.h +++ b/libcxx/include/__bit/bit_cast.h @@ -17,18 +17,16 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #ifndef _LIBCPP_CXX03_LANG +_LIBCPP_BEGIN_NAMESPACE_STD + template [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI constexpr _ToType __bit_cast(const _FromType& __from) noexcept { return __builtin_bit_cast(_ToType, __from); } -#endif // _LIBCPP_CXX03_LANG - -#if _LIBCPP_STD_VER >= 20 +# if _LIBCPP_STD_VER >= 20 template requires(sizeof(_ToType) == sizeof(_FromType) && is_trivially_copyable_v<_ToType> && @@ -37,8 +35,10 @@ template return __builtin_bit_cast(_ToType, __from); } -#endif // _LIBCPP_STD_VER >= 20 +# endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_CXX03_LANG + #endif // _LIBCPP___BIT_BIT_CAST_H diff --git a/libcxx/include/__bit/bit_ceil.h b/libcxx/include/__bit/bit_ceil.h index 99881a853829..73238eb2c37d 100644 --- a/libcxx/include/__bit/bit_ceil.h +++ b/libcxx/include/__bit/bit_ceil.h @@ -19,10 +19,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 17 +_LIBCPP_BEGIN_NAMESPACE_STD + template [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr _Tp __bit_ceil(_Tp __t) noexcept { if (__t < 2) @@ -47,8 +47,9 @@ template <__unsigned_integer _Tp> } # endif // _LIBCPP_STD_VER >= 20 -#endif // _LIBCPP_STD_VER >= 17 _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 17 + #endif // _LIBCPP___BIT_BIT_CEIL_H diff --git a/libcxx/include/__charconv/to_chars.h b/libcxx/include/__charconv/to_chars.h index 8ef09af73755..0a94ba14addc 100644 --- a/libcxx/include/__charconv/to_chars.h +++ b/libcxx/include/__charconv/to_chars.h @@ -18,8 +18,4 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - -_LIBCPP_END_NAMESPACE_STD - #endif // _LIBCPP___CHARCONV_TO_CHARS diff --git a/libcxx/include/__chrono/gps_clock.h b/libcxx/include/__chrono/gps_clock.h index 2e220cab946e..924156ae5b45 100644 --- a/libcxx/include/__chrono/gps_clock.h +++ b/libcxx/include/__chrono/gps_clock.h @@ -28,10 +28,10 @@ _LIBCPP_PUSH_MACROS # include <__undef_macros> -_LIBCPP_BEGIN_NAMESPACE_STD - # if _LIBCPP_STD_VER >= 20 && _LIBCPP_HAS_TIME_ZONE_DATABASE && _LIBCPP_HAS_FILESYSTEM && _LIBCPP_HAS_LOCALIZATION +_LIBCPP_BEGIN_NAMESPACE_STD + namespace chrono { class gps_clock; @@ -78,11 +78,11 @@ public: } // namespace chrono +_LIBCPP_END_NAMESPACE_STD + # endif // _LIBCPP_STD_VER >= 20 && _LIBCPP_HAS_TIME_ZONE_DATABASE && _LIBCPP_HAS_FILESYSTEM && // _LIBCPP_HAS_LOCALIZATION -_LIBCPP_END_NAMESPACE_STD - _LIBCPP_POP_MACROS #endif // _LIBCPP_HAS_EXPERIMENTAL_TZDB diff --git a/libcxx/include/__chrono/steady_clock.h b/libcxx/include/__chrono/steady_clock.h index ed530815dc4c..b433b0b3ad29 100644 --- a/libcxx/include/__chrono/steady_clock.h +++ b/libcxx/include/__chrono/steady_clock.h @@ -18,12 +18,13 @@ # pragma GCC system_header #endif +#if _LIBCPP_HAS_MONOTONIC_CLOCK + _LIBCPP_BEGIN_NAMESPACE_STD _LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS namespace chrono { -#if _LIBCPP_HAS_MONOTONIC_CLOCK class _LIBCPP_EXPORTED_FROM_ABI steady_clock { public: typedef nanoseconds duration; @@ -34,11 +35,12 @@ public: [[__nodiscard__]] static time_point now() _NOEXCEPT; }; -#endif } // namespace chrono _LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD +#endif + #endif // _LIBCPP___CHRONO_STEADY_CLOCK_H diff --git a/libcxx/include/__chrono/tai_clock.h b/libcxx/include/__chrono/tai_clock.h index 14c8b70a94af..9c97e379f4b9 100644 --- a/libcxx/include/__chrono/tai_clock.h +++ b/libcxx/include/__chrono/tai_clock.h @@ -28,10 +28,10 @@ _LIBCPP_PUSH_MACROS # include <__undef_macros> -_LIBCPP_BEGIN_NAMESPACE_STD - # if _LIBCPP_STD_VER >= 20 && _LIBCPP_HAS_TIME_ZONE_DATABASE && _LIBCPP_HAS_FILESYSTEM && _LIBCPP_HAS_LOCALIZATION +_LIBCPP_BEGIN_NAMESPACE_STD + namespace chrono { class tai_clock; @@ -96,11 +96,11 @@ public: } // namespace chrono +_LIBCPP_END_NAMESPACE_STD + # endif // _LIBCPP_STD_VER >= 20 && _LIBCPP_HAS_TIME_ZONE_DATABASE && _LIBCPP_HAS_FILESYSTEM && // _LIBCPP_HAS_LOCALIZATION -_LIBCPP_END_NAMESPACE_STD - _LIBCPP_POP_MACROS #endif // _LIBCPP_HAS_EXPERIMENTAL_TZDB diff --git a/libcxx/include/__chrono/time_zone.h b/libcxx/include/__chrono/time_zone.h index 20f3297f772b..742367defb21 100644 --- a/libcxx/include/__chrono/time_zone.h +++ b/libcxx/include/__chrono/time_zone.h @@ -35,11 +35,11 @@ _LIBCPP_PUSH_MACROS # include <__undef_macros> +# if _LIBCPP_STD_VER >= 20 && _LIBCPP_HAS_TIME_ZONE_DATABASE && _LIBCPP_HAS_FILESYSTEM && _LIBCPP_HAS_LOCALIZATION + _LIBCPP_BEGIN_NAMESPACE_STD _LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS -# if _LIBCPP_STD_VER >= 20 && _LIBCPP_HAS_TIME_ZONE_DATABASE && _LIBCPP_HAS_FILESYSTEM && _LIBCPP_HAS_LOCALIZATION - namespace chrono { enum class choose { earliest, latest }; @@ -174,12 +174,12 @@ operator<=>(const time_zone& __x, const time_zone& __y) noexcept { } // namespace chrono -# endif // _LIBCPP_STD_VER >= 20 && _LIBCPP_HAS_TIME_ZONE_DATABASE && _LIBCPP_HAS_FILESYSTEM && - // _LIBCPP_HAS_LOCALIZATION - _LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD +# endif // _LIBCPP_STD_VER >= 20 && _LIBCPP_HAS_TIME_ZONE_DATABASE && _LIBCPP_HAS_FILESYSTEM && + // _LIBCPP_HAS_LOCALIZATION + _LIBCPP_POP_MACROS #endif // _LIBCPP_HAS_EXPERIMENTAL_TZDB diff --git a/libcxx/include/__chrono/time_zone_link.h b/libcxx/include/__chrono/time_zone_link.h index cae40b07c2ca..3c45d953fb7e 100644 --- a/libcxx/include/__chrono/time_zone_link.h +++ b/libcxx/include/__chrono/time_zone_link.h @@ -29,10 +29,10 @@ _LIBCPP_PUSH_MACROS # include <__undef_macros> -_LIBCPP_BEGIN_NAMESPACE_STD - # if _LIBCPP_STD_VER >= 20 && _LIBCPP_HAS_TIME_ZONE_DATABASE && _LIBCPP_HAS_FILESYSTEM && _LIBCPP_HAS_LOCALIZATION +_LIBCPP_BEGIN_NAMESPACE_STD + namespace chrono { class time_zone_link { @@ -67,11 +67,11 @@ operator<=>(const time_zone_link& __x, const time_zone_link& __y) noexcept { } // namespace chrono +_LIBCPP_END_NAMESPACE_STD + # endif // _LIBCPP_STD_VER >= 20 && _LIBCPP_HAS_TIME_ZONE_DATABASE && _LIBCPP_HAS_FILESYSTEM && // _LIBCPP_HAS_LOCALIZATION -_LIBCPP_END_NAMESPACE_STD - _LIBCPP_POP_MACROS #endif // _LIBCPP_HAS_EXPERIMENTAL_TZDB diff --git a/libcxx/include/__chrono/tzdb.h b/libcxx/include/__chrono/tzdb.h index 2fa04604b91f..6e713a8ff3dd 100644 --- a/libcxx/include/__chrono/tzdb.h +++ b/libcxx/include/__chrono/tzdb.h @@ -34,11 +34,11 @@ _LIBCPP_PUSH_MACROS # include <__undef_macros> +# if _LIBCPP_STD_VER >= 20 && _LIBCPP_HAS_TIME_ZONE_DATABASE && _LIBCPP_HAS_FILESYSTEM && _LIBCPP_HAS_LOCALIZATION + _LIBCPP_BEGIN_NAMESPACE_STD _LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS -# if _LIBCPP_STD_VER >= 20 && _LIBCPP_HAS_TIME_ZONE_DATABASE && _LIBCPP_HAS_FILESYSTEM && _LIBCPP_HAS_LOCALIZATION - namespace chrono { struct tzdb { @@ -85,12 +85,12 @@ private: } // namespace chrono -# endif // _LIBCPP_STD_VER >= 20 && _LIBCPP_HAS_TIME_ZONE_DATABASE && _LIBCPP_HAS_FILESYSTEM && - // _LIBCPP_HAS_LOCALIZATION - _LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD +# endif // _LIBCPP_STD_VER >= 20 && _LIBCPP_HAS_TIME_ZONE_DATABASE && _LIBCPP_HAS_FILESYSTEM && + // _LIBCPP_HAS_LOCALIZATION + _LIBCPP_POP_MACROS #endif // _LIBCPP_HAS_EXPERIMENTAL_TZDB diff --git a/libcxx/include/__chrono/tzdb_list.h b/libcxx/include/__chrono/tzdb_list.h index 997599ac7496..64b2f4995c08 100644 --- a/libcxx/include/__chrono/tzdb_list.h +++ b/libcxx/include/__chrono/tzdb_list.h @@ -27,11 +27,11 @@ # pragma GCC system_header # endif +# if _LIBCPP_STD_VER >= 20 && _LIBCPP_HAS_TIME_ZONE_DATABASE && _LIBCPP_HAS_FILESYSTEM && _LIBCPP_HAS_LOCALIZATION + _LIBCPP_BEGIN_NAMESPACE_STD _LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS -# if _LIBCPP_STD_VER >= 20 && _LIBCPP_HAS_TIME_ZONE_DATABASE && _LIBCPP_HAS_FILESYSTEM && _LIBCPP_HAS_LOCALIZATION - namespace chrono { // TODO TZDB @@ -99,12 +99,12 @@ _LIBCPP_AVAILABILITY_TZDB _LIBCPP_EXPORTED_FROM_ABI const tzdb& reload_tzdb(); } // namespace chrono -# endif // _LIBCPP_STD_VER >= 20 && _LIBCPP_HAS_TIME_ZONE_DATABASE && _LIBCPP_HAS_FILESYSTEM && - // _LIBCPP_HAS_LOCALIZATION - _LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD +# endif // _LIBCPP_STD_VER >= 20 && _LIBCPP_HAS_TIME_ZONE_DATABASE && _LIBCPP_HAS_FILESYSTEM && + // _LIBCPP_HAS_LOCALIZATION + #endif // _LIBCPP_HAS_EXPERIMENTAL_TZDB #endif // _LIBCPP___CHRONO_TZDB_LIST_H diff --git a/libcxx/include/__chrono/utc_clock.h b/libcxx/include/__chrono/utc_clock.h index 2207b89c92c5..42cb41ea9a6f 100644 --- a/libcxx/include/__chrono/utc_clock.h +++ b/libcxx/include/__chrono/utc_clock.h @@ -27,10 +27,10 @@ # pragma GCC system_header # endif -_LIBCPP_BEGIN_NAMESPACE_STD - # if _LIBCPP_STD_VER >= 20 && _LIBCPP_HAS_TIME_ZONE_DATABASE && _LIBCPP_HAS_FILESYSTEM && _LIBCPP_HAS_LOCALIZATION +_LIBCPP_BEGIN_NAMESPACE_STD + namespace chrono { class utc_clock; @@ -153,11 +153,11 @@ utc_clock::to_sys(const utc_time<_Duration>& __time) { } // namespace chrono +_LIBCPP_END_NAMESPACE_STD + # endif // _LIBCPP_STD_VER >= 20 && _LIBCPP_HAS_TIME_ZONE_DATABASE && _LIBCPP_HAS_FILESYSTEM && // _LIBCPP_HAS_LOCALIZATION -_LIBCPP_END_NAMESPACE_STD - #endif // _LIBCPP_HAS_EXPERIMENTAL_TZDB #endif // _LIBCPP___CHRONO_UTC_CLOCK_H diff --git a/libcxx/include/__chrono/zoned_time.h b/libcxx/include/__chrono/zoned_time.h index e63528e57d1c..c1488320775f 100644 --- a/libcxx/include/__chrono/zoned_time.h +++ b/libcxx/include/__chrono/zoned_time.h @@ -40,10 +40,10 @@ _LIBCPP_PUSH_MACROS # include <__undef_macros> -_LIBCPP_BEGIN_NAMESPACE_STD - # if _LIBCPP_STD_VER >= 20 && _LIBCPP_HAS_TIME_ZONE_DATABASE && _LIBCPP_HAS_FILESYSTEM && _LIBCPP_HAS_LOCALIZATION +_LIBCPP_BEGIN_NAMESPACE_STD + namespace chrono { template @@ -232,11 +232,11 @@ struct hash> { # endif // _LIBCPP_STD_VER >= 26 +_LIBCPP_END_NAMESPACE_STD + # endif // _LIBCPP_STD_VER >= 20 && _LIBCPP_HAS_TIME_ZONE_DATABASE && _LIBCPP_HAS_FILESYSTEM && // _LIBCPP_HAS_LOCALIZATION -_LIBCPP_END_NAMESPACE_STD - _LIBCPP_POP_MACROS #endif // _LIBCPP_HAS_EXPERIMENTAL_TZDB diff --git a/libcxx/include/__compare/common_comparison_category.h b/libcxx/include/__compare/common_comparison_category.h index eae2ef00624b..f785a27fd28e 100644 --- a/libcxx/include/__compare/common_comparison_category.h +++ b/libcxx/include/__compare/common_comparison_category.h @@ -18,10 +18,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + namespace __comp_detail { enum _ClassifyCompCategory : unsigned { _None, _PartialOrd, _WeakOrd, _StrongOrd, _CCC_Size }; @@ -79,8 +79,8 @@ struct common_comparison_category { template using common_comparison_category_t = typename common_comparison_category<_Ts...>::type; -#endif // _LIBCPP_STD_VER >= 20 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 + #endif // _LIBCPP___COMPARE_COMMON_COMPARISON_CATEGORY_H diff --git a/libcxx/include/__compare/compare_three_way.h b/libcxx/include/__compare/compare_three_way.h index 852c5874c61c..6999000e9dce 100644 --- a/libcxx/include/__compare/compare_three_way.h +++ b/libcxx/include/__compare/compare_three_way.h @@ -18,10 +18,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + struct compare_three_way { template requires three_way_comparable_with<_T1, _T2> @@ -33,8 +33,8 @@ struct compare_three_way { using is_transparent = void; }; -#endif // _LIBCPP_STD_VER >= 20 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 + #endif // _LIBCPP___COMPARE_COMPARE_THREE_WAY_H diff --git a/libcxx/include/__compare/compare_three_way_result.h b/libcxx/include/__compare/compare_three_way_result.h index 264a4d603ca4..ab04e03490e2 100644 --- a/libcxx/include/__compare/compare_three_way_result.h +++ b/libcxx/include/__compare/compare_three_way_result.h @@ -17,10 +17,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + template struct _LIBCPP_HIDE_FROM_ABI __compare_three_way_result {}; @@ -39,8 +39,8 @@ struct _LIBCPP_NO_SPECIALIZATIONS compare_three_way_result : __compare_three_way template using compare_three_way_result_t = typename compare_three_way_result<_Tp, _Up>::type; -#endif // _LIBCPP_STD_VER >= 20 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 + #endif // _LIBCPP___COMPARE_COMPARE_THREE_WAY_RESULT_H diff --git a/libcxx/include/__compare/ordering.h b/libcxx/include/__compare/ordering.h index 902ef5329dd4..226b513586bb 100644 --- a/libcxx/include/__compare/ordering.h +++ b/libcxx/include/__compare/ordering.h @@ -17,10 +17,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + // exposition only enum class _OrdResult : signed char { __less = -1, __equiv = 0, __greater = 1 }; @@ -275,8 +275,8 @@ template concept __comparison_category = is_same_v<_Tp, partial_ordering> || is_same_v<_Tp, weak_ordering> || is_same_v<_Tp, strong_ordering>; -#endif // _LIBCPP_STD_VER >= 20 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 + #endif // _LIBCPP___COMPARE_ORDERING_H diff --git a/libcxx/include/__compare/synth_three_way.h b/libcxx/include/__compare/synth_three_way.h index 63bf56d0cf42..e1c2642fbdf2 100644 --- a/libcxx/include/__compare/synth_three_way.h +++ b/libcxx/include/__compare/synth_three_way.h @@ -19,10 +19,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + // [expos.only.func] _LIBCPP_HIDE_FROM_ABI inline constexpr auto __synth_three_way = [](const _Tp& __t, const _Up& __u) @@ -46,8 +46,8 @@ template using __synth_three_way_result _LIBCPP_NODEBUG = decltype(std::__synth_three_way(std::declval<_Tp&>(), std::declval<_Up&>())); -#endif // _LIBCPP_STD_VER >= 20 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 + #endif // _LIBCPP___COMPARE_SYNTH_THREE_WAY_H diff --git a/libcxx/include/__compare/three_way_comparable.h b/libcxx/include/__compare/three_way_comparable.h index ad6d05a68114..5eb0058708fc 100644 --- a/libcxx/include/__compare/three_way_comparable.h +++ b/libcxx/include/__compare/three_way_comparable.h @@ -24,10 +24,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + template concept __compares_as = same_as, _Cat>; @@ -48,8 +48,8 @@ concept three_way_comparable_with = { __u <=> __t } -> __compares_as<_Cat>; }; -#endif // _LIBCPP_STD_VER >= 20 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 + #endif // _LIBCPP___COMPARE_THREE_WAY_COMPARABLE_H diff --git a/libcxx/include/__concepts/arithmetic.h b/libcxx/include/__concepts/arithmetic.h index 64c0200783df..addbefa7e11a 100644 --- a/libcxx/include/__concepts/arithmetic.h +++ b/libcxx/include/__concepts/arithmetic.h @@ -18,10 +18,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + // [concepts.arithmetic], arithmetic concepts template @@ -36,8 +36,8 @@ concept unsigned_integral = integral<_Tp> && !signed_integral<_Tp>; template concept floating_point = is_floating_point_v<_Tp>; -#endif // _LIBCPP_STD_VER >= 20 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 + #endif // _LIBCPP___CONCEPTS_ARITHMETIC_H diff --git a/libcxx/include/__concepts/assignable.h b/libcxx/include/__concepts/assignable.h index 7423daabba78..70f0bc3b0c95 100644 --- a/libcxx/include/__concepts/assignable.h +++ b/libcxx/include/__concepts/assignable.h @@ -20,10 +20,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + // [concept.assignable] template @@ -34,8 +34,8 @@ concept assignable_from = { __lhs = std::forward<_Rhs>(__rhs) } -> same_as<_Lhs>; }; -#endif // _LIBCPP_STD_VER >= 20 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 + #endif // _LIBCPP___CONCEPTS_ASSIGNABLE_H diff --git a/libcxx/include/__concepts/boolean_testable.h b/libcxx/include/__concepts/boolean_testable.h index b379fe9c5a88..458e4c1da725 100644 --- a/libcxx/include/__concepts/boolean_testable.h +++ b/libcxx/include/__concepts/boolean_testable.h @@ -17,10 +17,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + // [concepts.booleantestable] template @@ -31,8 +31,8 @@ concept __boolean_testable = __boolean_testable_impl<_Tp> && requires(_Tp&& __t) { !std::forward<_Tp>(__t) } -> __boolean_testable_impl; }; -#endif // _LIBCPP_STD_VER >= 20 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 + #endif // _LIBCPP___CONCEPTS_BOOLEAN_TESTABLE_H diff --git a/libcxx/include/__concepts/class_or_enum.h b/libcxx/include/__concepts/class_or_enum.h index 9fceed034c46..920bf8a6fa70 100644 --- a/libcxx/include/__concepts/class_or_enum.h +++ b/libcxx/include/__concepts/class_or_enum.h @@ -18,17 +18,17 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + // Whether a type is a class type or enumeration type according to the Core wording. template concept __class_or_enum = is_class_v<_Tp> || is_union_v<_Tp> || is_enum_v<_Tp>; -#endif // _LIBCPP_STD_VER >= 20 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 + #endif // _LIBCPP___CONCEPTS_CLASS_OR_ENUM_H diff --git a/libcxx/include/__concepts/common_reference_with.h b/libcxx/include/__concepts/common_reference_with.h index 4eb687e071bc..613de04b7b5b 100644 --- a/libcxx/include/__concepts/common_reference_with.h +++ b/libcxx/include/__concepts/common_reference_with.h @@ -18,10 +18,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + // [concept.commonref] template @@ -29,8 +29,8 @@ concept common_reference_with = same_as, common_reference_t<_Up, _Tp>> && convertible_to<_Tp, common_reference_t<_Tp, _Up>> && convertible_to<_Up, common_reference_t<_Tp, _Up>>; -#endif // _LIBCPP_STD_VER >= 20 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 + #endif // _LIBCPP___CONCEPTS_COMMON_REFERENCE_WITH_H diff --git a/libcxx/include/__concepts/comparison_common_type.h b/libcxx/include/__concepts/comparison_common_type.h index 3f0d770511f4..d06a8dc8786f 100644 --- a/libcxx/include/__concepts/comparison_common_type.h +++ b/libcxx/include/__concepts/comparison_common_type.h @@ -19,10 +19,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + template > concept __comparison_common_type_with_impl = same_as, common_reference_t> && requires { @@ -33,8 +33,8 @@ concept __comparison_common_type_with_impl = template concept __comparison_common_type_with = __comparison_common_type_with_impl, remove_cvref_t<_Up>>; -#endif // _LIBCPP_STD_VER >= 20 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 + #endif // _LIBCPP___CONCEPTS_COMPARISON_COMMON_TYPE_H diff --git a/libcxx/include/__concepts/constructible.h b/libcxx/include/__concepts/constructible.h index 835a44429c09..7b39c80304bc 100644 --- a/libcxx/include/__concepts/constructible.h +++ b/libcxx/include/__concepts/constructible.h @@ -18,10 +18,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + // [concept.constructible] template concept constructible_from = destructible<_Tp> && is_constructible_v<_Tp, _Args...>; @@ -48,8 +48,8 @@ concept copy_constructible = constructible_from<_Tp, const _Tp> && convertible_to; // clang-format on -#endif // _LIBCPP_STD_VER >= 20 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 + #endif // _LIBCPP___CONCEPTS_CONSTRUCTIBLE_H diff --git a/libcxx/include/__concepts/convertible_to.h b/libcxx/include/__concepts/convertible_to.h index 6d5b6c1268d5..01e3cfa2a3bf 100644 --- a/libcxx/include/__concepts/convertible_to.h +++ b/libcxx/include/__concepts/convertible_to.h @@ -17,17 +17,17 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + // [concept.convertible] template concept convertible_to = is_convertible_v<_From, _To> && requires { static_cast<_To>(std::declval<_From>()); }; -#endif // _LIBCPP_STD_VER >= 20 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 + #endif // _LIBCPP___CONCEPTS_CONVERTIBLE_TO_H diff --git a/libcxx/include/__concepts/copyable.h b/libcxx/include/__concepts/copyable.h index 2bf0ad42fc1a..3bcee3422902 100644 --- a/libcxx/include/__concepts/copyable.h +++ b/libcxx/include/__concepts/copyable.h @@ -18,10 +18,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + // [concepts.object] // clang-format off @@ -34,8 +34,8 @@ concept copyable = assignable_from<_Tp&, const _Tp>; // clang-format on -#endif // _LIBCPP_STD_VER >= 20 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 + #endif // _LIBCPP___CONCEPTS_COPYABLE_H diff --git a/libcxx/include/__concepts/derived_from.h b/libcxx/include/__concepts/derived_from.h index 9875faee81b9..418f5db8ba9a 100644 --- a/libcxx/include/__concepts/derived_from.h +++ b/libcxx/include/__concepts/derived_from.h @@ -17,17 +17,17 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + // [concept.derived] template concept derived_from = is_base_of_v<_Bp, _Dp> && is_convertible_v; -#endif // _LIBCPP_STD_VER >= 20 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 + #endif // _LIBCPP___CONCEPTS_DERIVED_FROM_H diff --git a/libcxx/include/__concepts/destructible.h b/libcxx/include/__concepts/destructible.h index 28b4b1bc24ec..1db7f6a0a7c7 100644 --- a/libcxx/include/__concepts/destructible.h +++ b/libcxx/include/__concepts/destructible.h @@ -16,17 +16,17 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + // [concept.destructible] template concept destructible = is_nothrow_destructible_v<_Tp>; -#endif // _LIBCPP_STD_VER >= 20 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 + #endif // _LIBCPP___CONCEPTS_DESTRUCTIBLE_H diff --git a/libcxx/include/__concepts/different_from.h b/libcxx/include/__concepts/different_from.h index fd31f6e25805..f9888c918d7c 100644 --- a/libcxx/include/__concepts/different_from.h +++ b/libcxx/include/__concepts/different_from.h @@ -17,15 +17,15 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + template concept __different_from = !same_as, remove_cvref_t<_Up>>; -#endif // _LIBCPP_STD_VER >= 20 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 + #endif // _LIBCPP___CONCEPTS_DIFFERENT_FROM_H diff --git a/libcxx/include/__concepts/equality_comparable.h b/libcxx/include/__concepts/equality_comparable.h index 56fc6f8b685c..411a19c60ddd 100644 --- a/libcxx/include/__concepts/equality_comparable.h +++ b/libcxx/include/__concepts/equality_comparable.h @@ -20,10 +20,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + // [concept.equalitycomparable] template @@ -50,8 +50,8 @@ concept equality_comparable_with = __weakly_equality_comparable_with<_Tp, _Up>; // clang-format on -#endif // _LIBCPP_STD_VER >= 20 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 + #endif // _LIBCPP___CONCEPTS_EQUALITY_COMPARABLE_H diff --git a/libcxx/include/__concepts/invocable.h b/libcxx/include/__concepts/invocable.h index 8a29398b3a29..92b2ec56affa 100644 --- a/libcxx/include/__concepts/invocable.h +++ b/libcxx/include/__concepts/invocable.h @@ -17,10 +17,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + // [concept.invocable] template @@ -33,8 +33,8 @@ concept invocable = requires(_Fn&& __fn, _Args&&... __args) { template concept regular_invocable = invocable<_Fn, _Args...>; -#endif // _LIBCPP_STD_VER >= 20 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 + #endif // _LIBCPP___CONCEPTS_INVOCABLE_H diff --git a/libcxx/include/__concepts/movable.h b/libcxx/include/__concepts/movable.h index bc5b9d767c6a..f38ab37be89a 100644 --- a/libcxx/include/__concepts/movable.h +++ b/libcxx/include/__concepts/movable.h @@ -19,17 +19,17 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + // [concepts.object] template concept movable = is_object_v<_Tp> && move_constructible<_Tp> && assignable_from<_Tp&, _Tp> && swappable<_Tp>; -#endif // _LIBCPP_STD_VER >= 20 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 + #endif // _LIBCPP___CONCEPTS_MOVABLE_H diff --git a/libcxx/include/__concepts/predicate.h b/libcxx/include/__concepts/predicate.h index e0263a878b06..9e903a9efdb2 100644 --- a/libcxx/include/__concepts/predicate.h +++ b/libcxx/include/__concepts/predicate.h @@ -18,17 +18,17 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + // [concept.predicate] template concept predicate = regular_invocable<_Fn, _Args...> && __boolean_testable>; -#endif // _LIBCPP_STD_VER >= 20 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 + #endif // _LIBCPP___CONCEPTS_PREDICATE_H diff --git a/libcxx/include/__concepts/regular.h b/libcxx/include/__concepts/regular.h index 9f3d8bf30be3..ab4f68e8f460 100644 --- a/libcxx/include/__concepts/regular.h +++ b/libcxx/include/__concepts/regular.h @@ -17,17 +17,17 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + // [concept.object] template concept regular = semiregular<_Tp> && equality_comparable<_Tp>; -#endif // _LIBCPP_STD_VER >= 20 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 + #endif // _LIBCPP___CONCEPTS_REGULAR_H diff --git a/libcxx/include/__concepts/relation.h b/libcxx/include/__concepts/relation.h index 7545a7db93da..ccd3643e81fc 100644 --- a/libcxx/include/__concepts/relation.h +++ b/libcxx/include/__concepts/relation.h @@ -16,10 +16,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + // [concept.relation] template @@ -36,8 +36,8 @@ concept equivalence_relation = relation<_Rp, _Tp, _Up>; template concept strict_weak_order = relation<_Rp, _Tp, _Up>; -#endif // _LIBCPP_STD_VER >= 20 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 + #endif // _LIBCPP___CONCEPTS_RELATION_H diff --git a/libcxx/include/__concepts/same_as.h b/libcxx/include/__concepts/same_as.h index 4241131c70c1..1385e4d84fdf 100644 --- a/libcxx/include/__concepts/same_as.h +++ b/libcxx/include/__concepts/same_as.h @@ -16,10 +16,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + // [concept.same] template @@ -28,8 +28,8 @@ concept __same_as_impl = _IsSame<_Tp, _Up>::value; template concept same_as = __same_as_impl<_Tp, _Up> && __same_as_impl<_Up, _Tp>; -#endif // _LIBCPP_STD_VER >= 20 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 + #endif // _LIBCPP___CONCEPTS_SAME_AS_H diff --git a/libcxx/include/__concepts/semiregular.h b/libcxx/include/__concepts/semiregular.h index 7a159d17dfc1..d047e8dec122 100644 --- a/libcxx/include/__concepts/semiregular.h +++ b/libcxx/include/__concepts/semiregular.h @@ -17,17 +17,17 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + // [concept.object] template concept semiregular = copyable<_Tp> && default_initializable<_Tp>; -#endif // _LIBCPP_STD_VER >= 20 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 + #endif // _LIBCPP___CONCEPTS_SEMIREGULAR_H diff --git a/libcxx/include/__concepts/swappable.h b/libcxx/include/__concepts/swappable.h index c691d3ab1e12..507777278161 100644 --- a/libcxx/include/__concepts/swappable.h +++ b/libcxx/include/__concepts/swappable.h @@ -30,10 +30,10 @@ _LIBCPP_PUSH_MACROS #include <__undef_macros> -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + // [concept.swappable] namespace ranges { @@ -113,10 +113,10 @@ concept swappable_with = common_reference_with<_Tp, _Up> && requires(_Tp&& __t, ranges::swap(std::forward<_Up>(__u), std::forward<_Tp>(__t)); }; -#endif // _LIBCPP_STD_VER >= 20 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 + _LIBCPP_POP_MACROS #endif // _LIBCPP___CONCEPTS_SWAPPABLE_H diff --git a/libcxx/include/__concepts/totally_ordered.h b/libcxx/include/__concepts/totally_ordered.h index 186c3b430dd5..fc4d564b3b4d 100644 --- a/libcxx/include/__concepts/totally_ordered.h +++ b/libcxx/include/__concepts/totally_ordered.h @@ -19,10 +19,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + // [concept.totallyordered] template @@ -52,8 +52,8 @@ concept totally_ordered_with = __partially_ordered_with<_Tp, _Up>; // clang-format on -#endif // _LIBCPP_STD_VER >= 20 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 + #endif // _LIBCPP___CONCEPTS_TOTALLY_ORDERED_H diff --git a/libcxx/include/__condition_variable/condition_variable.h b/libcxx/include/__condition_variable/condition_variable.h index 3fa40287c360..e15113ced575 100644 --- a/libcxx/include/__condition_variable/condition_variable.h +++ b/libcxx/include/__condition_variable/condition_variable.h @@ -31,11 +31,11 @@ _LIBCPP_PUSH_MACROS #include <__undef_macros> +#if _LIBCPP_HAS_THREADS + _LIBCPP_BEGIN_NAMESPACE_STD _LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS -#if _LIBCPP_HAS_THREADS - // enum class cv_status _LIBCPP_DECLARE_STRONG_ENUM(cv_status){no_timeout, timeout}; _LIBCPP_DECLARE_STRONG_ENUM_EPILOG(cv_status) @@ -224,11 +224,11 @@ inline void condition_variable::__do_timed_wait(unique_lock& __lk, wait_for(__lk, __tp - _Clock::now()); } -#endif // _LIBCPP_HAS_THREADS - _LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_HAS_THREADS + _LIBCPP_POP_MACROS #endif // _LIBCPP___CONDITION_VARIABLE_CONDITION_VARIABLE_H diff --git a/libcxx/include/__cstddef/max_align_t.h b/libcxx/include/__cstddef/max_align_t.h index 7c09c7e7f301..e44665ec5ebb 100644 --- a/libcxx/include/__cstddef/max_align_t.h +++ b/libcxx/include/__cstddef/max_align_t.h @@ -16,12 +16,14 @@ # pragma GCC system_header #endif +#if !defined(_LIBCPP_CXX03_LANG) + _LIBCPP_BEGIN_NAMESPACE_STD -#if !defined(_LIBCPP_CXX03_LANG) using ::max_align_t _LIBCPP_USING_IF_EXISTS; -#endif _LIBCPP_END_NAMESPACE_STD +#endif + #endif // _LIBCPP___CSTDDEF_MAX_ALIGN_T_H diff --git a/libcxx/include/__format/container_adaptor.h b/libcxx/include/__format/container_adaptor.h index 6a99a028615c..ec8b1dedb190 100644 --- a/libcxx/include/__format/container_adaptor.h +++ b/libcxx/include/__format/container_adaptor.h @@ -24,10 +24,10 @@ #include <__type_traits/is_const.h> #include <__type_traits/maybe_const.h> -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 23 +_LIBCPP_BEGIN_NAMESPACE_STD + // [container.adaptors.format] only specifies the library should provide the // formatter specializations, not which header should provide them. // Since includes a lot of headers, add these headers here instead of @@ -66,8 +66,8 @@ template _Container> struct formatter, _CharT> : public __formatter_container_adaptor, _CharT> {}; -#endif // _LIBCPP_STD_VER >= 23 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 23 + #endif // _LIBCPP___FORMAT_CONTAINER_ADAPTOR_H diff --git a/libcxx/include/__format/enable_insertable.h b/libcxx/include/__format/enable_insertable.h index 29fe566ff06a..d5832021aaf7 100644 --- a/libcxx/include/__format/enable_insertable.h +++ b/libcxx/include/__format/enable_insertable.h @@ -16,10 +16,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + namespace __format { /// Opt-in to enable \ref __insertable for a \a _Container. @@ -28,8 +28,8 @@ inline constexpr bool __enable_insertable = false; } // namespace __format -#endif // _LIBCPP_STD_VER >= 20 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 + #endif // _LIBCPP___FORMAT_ENABLE_INSERTABLE_H diff --git a/libcxx/include/__format/escaped_output_table.h b/libcxx/include/__format/escaped_output_table.h index a62c715811a0..7b6a03162c49 100644 --- a/libcxx/include/__format/escaped_output_table.h +++ b/libcxx/include/__format/escaped_output_table.h @@ -71,10 +71,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 23 +_LIBCPP_BEGIN_NAMESPACE_STD + namespace __escaped_output_table { // clang-format off @@ -881,8 +881,8 @@ _LIBCPP_HIDE_FROM_ABI inline constexpr uint32_t __entries[735] = { // clang-format on } // namespace __escaped_output_table -#endif // _LIBCPP_STD_VER >= 23 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 23 + #endif // _LIBCPP___FORMAT_ESCAPED_OUTPUT_TABLE_H diff --git a/libcxx/include/__format/fmt_pair_like.h b/libcxx/include/__format/fmt_pair_like.h index d2f2f54d5ac0..e7369bdf2000 100644 --- a/libcxx/include/__format/fmt_pair_like.h +++ b/libcxx/include/__format/fmt_pair_like.h @@ -20,10 +20,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 23 +_LIBCPP_BEGIN_NAMESPACE_STD + // [tuple.like] defines a tuple-like exposition only concept. This concept is not related to that. Therefore it uses a // different name for the concept. // @@ -35,8 +35,8 @@ template concept __fmt_pair_like = __is_specialization_v<_Tp, pair> || (__is_specialization_v<_Tp, tuple> && tuple_size_v<_Tp> == 2); -#endif // _LIBCPP_STD_VER >= 23 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 23 + #endif // _LIBCPP___FORMAT_FMT_PAIR_LIKE_H diff --git a/libcxx/include/__format/formatter_tuple.h b/libcxx/include/__format/formatter_tuple.h index 0b095e6f71af..c46d02ef381e 100644 --- a/libcxx/include/__format/formatter_tuple.h +++ b/libcxx/include/__format/formatter_tuple.h @@ -31,10 +31,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 23 +_LIBCPP_BEGIN_NAMESPACE_STD + template <__fmt_char_type _CharT, class _Tuple, formattable<_CharT>... _Args> struct __formatter_tuple { _LIBCPP_HIDE_FROM_ABI constexpr void set_separator(basic_string_view<_CharT> __separator) noexcept { @@ -141,8 +141,8 @@ struct formatter, _CharT> : public __formatter_tuple<_CharT, pair template <__fmt_char_type _CharT, formattable<_CharT>... _Args> struct formatter, _CharT> : public __formatter_tuple<_CharT, tuple<_Args...>, _Args...> {}; -#endif // _LIBCPP_STD_VER >= 23 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 23 + #endif // _LIBCPP___FORMAT_FORMATTER_TUPLE_H diff --git a/libcxx/include/__format/range_default_formatter.h b/libcxx/include/__format/range_default_formatter.h index 23dfb54957b6..fbad9022821c 100644 --- a/libcxx/include/__format/range_default_formatter.h +++ b/libcxx/include/__format/range_default_formatter.h @@ -33,10 +33,10 @@ #include <__utility/pair.h> #include -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 23 +_LIBCPP_BEGIN_NAMESPACE_STD + template concept __const_formattable_range = ranges::input_range && formattable, _CharT>; @@ -169,8 +169,8 @@ template requires(format_kind<_Rp> != range_format::disabled && formattable, _CharT>) struct formatter<_Rp, _CharT> : __range_default_formatter, _Rp, _CharT> {}; -#endif // _LIBCPP_STD_VER >= 23 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 23 + #endif // _LIBCPP___FORMAT_RANGE_DEFAULT_FORMATTER_H diff --git a/libcxx/include/__format/range_format.h b/libcxx/include/__format/range_format.h index 0e297022cccd..8bace8ecaad8 100644 --- a/libcxx/include/__format/range_format.h +++ b/libcxx/include/__format/range_format.h @@ -21,10 +21,10 @@ #include <__ranges/concepts.h> #include <__type_traits/remove_cvref.h> -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 23 +_LIBCPP_BEGIN_NAMESPACE_STD + template requires same_as<_Rp, remove_cvref_t<_Rp>> inline constexpr range_format format_kind<_Rp> = [] { @@ -50,8 +50,8 @@ inline constexpr range_format format_kind<_Rp> = [] { return range_format::sequence; }(); -#endif // _LIBCPP_STD_VER >= 23 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 23 + #endif diff --git a/libcxx/include/__format/range_formatter.h b/libcxx/include/__format/range_formatter.h index 4cf556b9ac82..a963a9fc704f 100644 --- a/libcxx/include/__format/range_formatter.h +++ b/libcxx/include/__format/range_formatter.h @@ -34,10 +34,10 @@ #include <__type_traits/remove_cvref.h> #include -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 23 +_LIBCPP_BEGIN_NAMESPACE_STD + template requires same_as, _Tp> && formattable<_Tp, _CharT> struct range_formatter { @@ -260,8 +260,8 @@ private: basic_string_view<_CharT> __closing_bracket_ = _LIBCPP_STATICALLY_WIDEN(_CharT, "]"); }; -#endif // _LIBCPP_STD_VER >= 23 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 23 + #endif // _LIBCPP___FORMAT_RANGE_FORMATTER_H diff --git a/libcxx/include/__functional/binary_negate.h b/libcxx/include/__functional/binary_negate.h index 73acfb37a7ee..f7784fb1f1f1 100644 --- a/libcxx/include/__functional/binary_negate.h +++ b/libcxx/include/__functional/binary_negate.h @@ -17,10 +17,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_NEGATORS) +_LIBCPP_BEGIN_NAMESPACE_STD + template class _LIBCPP_DEPRECATED_IN_CXX17 binary_negate : public __binary_function(__pred); } -#endif // _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_NEGATORS) - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_NEGATORS) + #endif // _LIBCPP___FUNCTIONAL_BINARY_NEGATE_H diff --git a/libcxx/include/__functional/binder1st.h b/libcxx/include/__functional/binder1st.h index 77a032245096..023c8c6b8c35 100644 --- a/libcxx/include/__functional/binder1st.h +++ b/libcxx/include/__functional/binder1st.h @@ -17,10 +17,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_BINDERS) +_LIBCPP_BEGIN_NAMESPACE_STD + template class _LIBCPP_DEPRECATED_IN_CXX11 binder1st : public __unary_function { @@ -47,8 +47,8 @@ bind1st(const _Operation& __op, const _Tp& __x) { return binder1st<_Operation>(__op, __x); } -#endif // _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_BINDERS) - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_BINDERS) + #endif // _LIBCPP___FUNCTIONAL_BINDER1ST_H diff --git a/libcxx/include/__functional/binder2nd.h b/libcxx/include/__functional/binder2nd.h index 8cc644151aff..e814c5dcbc70 100644 --- a/libcxx/include/__functional/binder2nd.h +++ b/libcxx/include/__functional/binder2nd.h @@ -17,10 +17,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_BINDERS) +_LIBCPP_BEGIN_NAMESPACE_STD + template class _LIBCPP_DEPRECATED_IN_CXX11 binder2nd : public __unary_function { @@ -47,8 +47,8 @@ bind2nd(const _Operation& __op, const _Tp& __x) { return binder2nd<_Operation>(__op, __x); } -#endif // _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_BINDERS) - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_BINDERS) + #endif // _LIBCPP___FUNCTIONAL_BINDER2ND_H diff --git a/libcxx/include/__functional/compose.h b/libcxx/include/__functional/compose.h index 4b86dd37cd48..20b30660b507 100644 --- a/libcxx/include/__functional/compose.h +++ b/libcxx/include/__functional/compose.h @@ -20,10 +20,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + struct __compose_op { template _LIBCPP_HIDE_FROM_ABI constexpr auto operator()(_Fn1&& __f1, _Fn2&& __f2, _Args&&... __args) const noexcept(noexcept( @@ -46,8 +46,8 @@ _LIBCPP_HIDE_FROM_ABI constexpr auto __compose(_Fn1&& __f1, _Fn2&& __f2) noexcep return __compose_t, decay_t<_Fn2>>(std::forward<_Fn1>(__f1), std::forward<_Fn2>(__f2)); } -#endif // _LIBCPP_STD_VER >= 20 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 + #endif // _LIBCPP___FUNCTIONAL_COMPOSE_H diff --git a/libcxx/include/__functional/invoke.h b/libcxx/include/__functional/invoke.h index ab201e94206e..f7d6a23a4e52 100644 --- a/libcxx/include/__functional/invoke.h +++ b/libcxx/include/__functional/invoke.h @@ -19,19 +19,17 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 17 +_LIBCPP_BEGIN_NAMESPACE_STD + template _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 invoke_result_t<_Fn, _Args...> invoke(_Fn&& __f, _Args&&... __args) noexcept(is_nothrow_invocable_v<_Fn, _Args...>) { return std::__invoke(std::forward<_Fn>(__f), std::forward<_Args>(__args)...); } -#endif // _LIBCPP_STD_VER >= 17 - -#if _LIBCPP_STD_VER >= 23 +# if _LIBCPP_STD_VER >= 23 template requires is_invocable_r_v<_Result, _Fn, _Args...> _LIBCPP_HIDE_FROM_ABI constexpr _Result @@ -48,8 +46,10 @@ invoke_r(_Fn&& __f, _Args&&... __args) noexcept(is_nothrow_invocable_r_v<_Result return std::invoke(std::forward<_Fn>(__f), std::forward<_Args>(__args)...); } } -#endif +# endif _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 17 + #endif // _LIBCPP___FUNCTIONAL_INVOKE_H diff --git a/libcxx/include/__functional/mem_fun_ref.h b/libcxx/include/__functional/mem_fun_ref.h index 68223772a158..bfae51454ec5 100644 --- a/libcxx/include/__functional/mem_fun_ref.h +++ b/libcxx/include/__functional/mem_fun_ref.h @@ -18,10 +18,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_BINDERS) +_LIBCPP_BEGIN_NAMESPACE_STD + template class _LIBCPP_DEPRECATED_IN_CXX11 mem_fun_t : public __unary_function<_Tp*, _Sp> { _Sp (_Tp::*__p_)(); @@ -138,8 +138,8 @@ mem_fun_ref(_Sp (_Tp::*__f)(_Ap) const) { return const_mem_fun1_ref_t<_Sp, _Tp, _Ap>(__f); } -#endif // _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_BINDERS) - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_BINDERS) + #endif // _LIBCPP___FUNCTIONAL_MEM_FUN_REF_H diff --git a/libcxx/include/__functional/perfect_forward.h b/libcxx/include/__functional/perfect_forward.h index 37c3d15b4bec..c0408b410e2f 100644 --- a/libcxx/include/__functional/perfect_forward.h +++ b/libcxx/include/__functional/perfect_forward.h @@ -28,10 +28,10 @@ _LIBCPP_PUSH_MACROS #include <__undef_macros> -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 17 +_LIBCPP_BEGIN_NAMESPACE_STD + template struct __perfect_forward_impl; @@ -96,10 +96,10 @@ public: template using __perfect_forward _LIBCPP_NODEBUG = __perfect_forward_impl<_Op, index_sequence_for<_Args...>, _Args...>; -#endif // _LIBCPP_STD_VER >= 17 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 17 + _LIBCPP_POP_MACROS #endif // _LIBCPP___FUNCTIONAL_PERFECT_FORWARD_H diff --git a/libcxx/include/__functional/pointer_to_binary_function.h b/libcxx/include/__functional/pointer_to_binary_function.h index eb0e7674eea9..89e0fa5fe2ac 100644 --- a/libcxx/include/__functional/pointer_to_binary_function.h +++ b/libcxx/include/__functional/pointer_to_binary_function.h @@ -17,10 +17,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_BINDERS) +_LIBCPP_BEGIN_NAMESPACE_STD + template class _LIBCPP_DEPRECATED_IN_CXX11 pointer_to_binary_function : public __binary_function<_Arg1, _Arg2, _Result> { _Result (*__f_)(_Arg1, _Arg2); @@ -36,8 +36,8 @@ ptr_fun(_Result (*__f)(_Arg1, _Arg2)) { return pointer_to_binary_function<_Arg1, _Arg2, _Result>(__f); } -#endif - _LIBCPP_END_NAMESPACE_STD +#endif + #endif // _LIBCPP___FUNCTIONAL_POINTER_TO_BINARY_FUNCTION_H diff --git a/libcxx/include/__functional/pointer_to_unary_function.h b/libcxx/include/__functional/pointer_to_unary_function.h index 459d24abdd7e..b7778e4502db 100644 --- a/libcxx/include/__functional/pointer_to_unary_function.h +++ b/libcxx/include/__functional/pointer_to_unary_function.h @@ -17,10 +17,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_BINDERS) +_LIBCPP_BEGIN_NAMESPACE_STD + template class _LIBCPP_DEPRECATED_IN_CXX11 pointer_to_unary_function : public __unary_function<_Arg, _Result> { _Result (*__f_)(_Arg); @@ -36,8 +36,8 @@ ptr_fun(_Result (*__f)(_Arg)) { return pointer_to_unary_function<_Arg, _Result>(__f); } -#endif // _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_BINDERS) - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER <= 14 || defined(_LIBCPP_ENABLE_CXX17_REMOVED_BINDERS) + #endif // _LIBCPP___FUNCTIONAL_POINTER_TO_UNARY_FUNCTION_H diff --git a/libcxx/include/__functional/ranges_operations.h b/libcxx/include/__functional/ranges_operations.h index dc9da061af26..66fe053b1563 100644 --- a/libcxx/include/__functional/ranges_operations.h +++ b/libcxx/include/__functional/ranges_operations.h @@ -21,10 +21,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + namespace ranges { struct equal_to { @@ -115,8 +115,8 @@ inline const bool __is_generic_transparent_comparator_v = true; template <> inline const bool __is_generic_transparent_comparator_v = true; -#endif // _LIBCPP_STD_VER >= 20 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 + #endif // _LIBCPP___FUNCTIONAL_RANGES_OPERATIONS_H diff --git a/libcxx/include/__functional/unary_negate.h b/libcxx/include/__functional/unary_negate.h index a93abc8e6b1c..761f0be5f856 100644 --- a/libcxx/include/__functional/unary_negate.h +++ b/libcxx/include/__functional/unary_negate.h @@ -17,10 +17,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_NEGATORS) +_LIBCPP_BEGIN_NAMESPACE_STD + template class _LIBCPP_DEPRECATED_IN_CXX17 unary_negate : public __unary_function { _Predicate __pred_; @@ -40,8 +40,8 @@ not1(const _Predicate& __pred) { return unary_negate<_Predicate>(__pred); } -#endif // _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_NEGATORS) - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_NEGATORS) + #endif // _LIBCPP___FUNCTIONAL_UNARY_NEGATE_H diff --git a/libcxx/include/__fwd/format.h b/libcxx/include/__fwd/format.h index e9d15360f12e..dd3260e36f4e 100644 --- a/libcxx/include/__fwd/format.h +++ b/libcxx/include/__fwd/format.h @@ -16,10 +16,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + template class basic_format_arg; @@ -48,8 +48,8 @@ constexpr range_format format_kind = [] { # endif // _LIBCPP_STD_VER >= 23 -#endif // _LIBCPP_STD_VER >= 20 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 + #endif // _LIBCPP___FWD_FORMAT_H diff --git a/libcxx/include/__fwd/span.h b/libcxx/include/__fwd/span.h index 5d473ee51c6b..8610915edd02 100644 --- a/libcxx/include/__fwd/span.h +++ b/libcxx/include/__fwd/span.h @@ -21,18 +21,18 @@ _LIBCPP_PUSH_MACROS #include <__undef_macros> -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + inline constexpr size_t dynamic_extent = numeric_limits::max(); template class span; -#endif - _LIBCPP_END_NAMESPACE_STD +#endif + _LIBCPP_POP_MACROS #endif // _LIBCPP___FWD_SPAN_H diff --git a/libcxx/include/__fwd/variant.h b/libcxx/include/__fwd/variant.h index fef7071b3264..a484248fe542 100644 --- a/libcxx/include/__fwd/variant.h +++ b/libcxx/include/__fwd/variant.h @@ -16,10 +16,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 17 +_LIBCPP_BEGIN_NAMESPACE_STD + template class variant; @@ -61,8 +61,8 @@ _LIBCPP_HIDE_FROM_ABI constexpr const _Tp& get(const variant<_Types...>&); template _LIBCPP_HIDE_FROM_ABI constexpr const _Tp&& get(const variant<_Types...>&&); -#endif // _LIBCPP_STD_VER >= 17 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 17 + #endif // _LIBCPP___FWD_VARIANT_H diff --git a/libcxx/include/__iterator/data.h b/libcxx/include/__iterator/data.h index d1f32a795b70..7efa57e1a22a 100644 --- a/libcxx/include/__iterator/data.h +++ b/libcxx/include/__iterator/data.h @@ -17,10 +17,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 17 +_LIBCPP_BEGIN_NAMESPACE_STD + template [[nodiscard]] constexpr _LIBCPP_HIDE_FROM_ABI auto data(_Cont& __c) noexcept(noexcept(__c.data())) -> decltype(__c.data()) { @@ -43,8 +43,8 @@ template return __il.begin(); } -#endif - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 17 + #endif // _LIBCPP___ITERATOR_DATA_H diff --git a/libcxx/include/__iterator/default_sentinel.h b/libcxx/include/__iterator/default_sentinel.h index 3b65f442f1a8..84fcf71c0767 100644 --- a/libcxx/include/__iterator/default_sentinel.h +++ b/libcxx/include/__iterator/default_sentinel.h @@ -16,15 +16,15 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + struct default_sentinel_t {}; inline constexpr default_sentinel_t default_sentinel{}; -#endif // _LIBCPP_STD_VER >= 20 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 + #endif // _LIBCPP___ITERATOR_DEFAULT_SENTINEL_H diff --git a/libcxx/include/__iterator/empty.h b/libcxx/include/__iterator/empty.h index f2c653bcb329..b763048f547e 100644 --- a/libcxx/include/__iterator/empty.h +++ b/libcxx/include/__iterator/empty.h @@ -17,10 +17,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 17 +_LIBCPP_BEGIN_NAMESPACE_STD + template [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr auto empty(const _Cont& __c) noexcept(noexcept(__c.empty())) -> decltype(__c.empty()) { @@ -37,8 +37,8 @@ template return __il.size() == 0; } -#endif // _LIBCPP_STD_VER >= 17 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 17 + #endif // _LIBCPP___ITERATOR_EMPTY_H diff --git a/libcxx/include/__iterator/incrementable_traits.h b/libcxx/include/__iterator/incrementable_traits.h index dc62b1abb397..692ce76285f6 100644 --- a/libcxx/include/__iterator/incrementable_traits.h +++ b/libcxx/include/__iterator/incrementable_traits.h @@ -24,10 +24,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + // [incrementable.traits] template struct incrementable_traits {}; @@ -72,8 +72,8 @@ using iter_difference_t = incrementable_traits >, iterator_traits > >::difference_type; -#endif // _LIBCPP_STD_VER >= 20 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 + #endif // _LIBCPP___ITERATOR_INCREMENTABLE_TRAITS_H diff --git a/libcxx/include/__iterator/iter_move.h b/libcxx/include/__iterator/iter_move.h index 91f8332a88e3..b371f09fe111 100644 --- a/libcxx/include/__iterator/iter_move.h +++ b/libcxx/include/__iterator/iter_move.h @@ -27,10 +27,10 @@ _LIBCPP_PUSH_MACROS #include <__undef_macros> -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + // [iterator.cust.move] namespace ranges { @@ -95,10 +95,10 @@ template <__dereferenceable _Tp> } using iter_rvalue_reference_t = decltype(ranges::iter_move(std::declval<_Tp&>())); -#endif // _LIBCPP_STD_VER >= 20 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 + _LIBCPP_POP_MACROS #endif // _LIBCPP___ITERATOR_ITER_MOVE_H diff --git a/libcxx/include/__iterator/iter_swap.h b/libcxx/include/__iterator/iter_swap.h index 01ab1b97d650..f4a5744a7edd 100644 --- a/libcxx/include/__iterator/iter_swap.h +++ b/libcxx/include/__iterator/iter_swap.h @@ -29,10 +29,10 @@ _LIBCPP_PUSH_MACROS #include <__undef_macros> -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + // [iter.cust.swap] namespace ranges { @@ -99,10 +99,10 @@ concept indirectly_swappable = ranges::iter_swap(__i2, __i1); }; -#endif // _LIBCPP_STD_VER >= 20 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 + _LIBCPP_POP_MACROS #endif // _LIBCPP___ITERATOR_ITER_SWAP_H diff --git a/libcxx/include/__iterator/move_sentinel.h b/libcxx/include/__iterator/move_sentinel.h index b3d14ee3fdf6..876b2b24507c 100644 --- a/libcxx/include/__iterator/move_sentinel.h +++ b/libcxx/include/__iterator/move_sentinel.h @@ -22,10 +22,10 @@ _LIBCPP_PUSH_MACROS #include <__undef_macros> -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + template class move_sentinel { public: @@ -52,10 +52,10 @@ private: _LIBCPP_CTAD_SUPPORTED_FOR_TYPE(move_sentinel); -#endif // _LIBCPP_STD_VER >= 20 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 + _LIBCPP_POP_MACROS #endif // _LIBCPP___ITERATOR_MOVE_SENTINEL_H diff --git a/libcxx/include/__iterator/ranges_iterator_traits.h b/libcxx/include/__iterator/ranges_iterator_traits.h index 9a31b651eb5d..b92f45f7a875 100644 --- a/libcxx/include/__iterator/ranges_iterator_traits.h +++ b/libcxx/include/__iterator/ranges_iterator_traits.h @@ -19,10 +19,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 23 +_LIBCPP_BEGIN_NAMESPACE_STD + template using __range_key_type _LIBCPP_NODEBUG = __remove_const_t::first_type>; @@ -33,8 +33,8 @@ template using __range_to_alloc_type _LIBCPP_NODEBUG = pair::first_type, typename ranges::range_value_t<_Range>::second_type>; -#endif - _LIBCPP_END_NAMESPACE_STD +#endif + #endif // _LIBCPP___ITERATOR_RANGES_ITERATOR_TRAITS_H diff --git a/libcxx/include/__iterator/readable_traits.h b/libcxx/include/__iterator/readable_traits.h index 05c24d828937..ed169c46351b 100644 --- a/libcxx/include/__iterator/readable_traits.h +++ b/libcxx/include/__iterator/readable_traits.h @@ -24,10 +24,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + // [readable.traits] template struct __cond_value_type {}; @@ -74,8 +74,8 @@ template <__has_member_value_type _Tp> same_as, remove_cv_t> struct indirectly_readable_traits<_Tp> : __cond_value_type {}; -#endif // _LIBCPP_STD_VER >= 20 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 + #endif // _LIBCPP___ITERATOR_READABLE_TRAITS_H diff --git a/libcxx/include/__iterator/reverse_access.h b/libcxx/include/__iterator/reverse_access.h index cd4e42a32827..b1574bc66511 100644 --- a/libcxx/include/__iterator/reverse_access.h +++ b/libcxx/include/__iterator/reverse_access.h @@ -18,10 +18,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 14 +_LIBCPP_BEGIN_NAMESPACE_STD + template [[__nodiscard__]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX17 reverse_iterator<_Tp*> rbegin(_Tp (&__array)[_Np]) { @@ -79,8 +79,8 @@ template return std::rend(__c); } -#endif // _LIBCPP_STD_VER >= 14 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 14 + #endif // _LIBCPP___ITERATOR_REVERSE_ACCESS_H diff --git a/libcxx/include/__iterator/size.h b/libcxx/include/__iterator/size.h index e9a0f7627c0f..eb441e25b019 100644 --- a/libcxx/include/__iterator/size.h +++ b/libcxx/include/__iterator/size.h @@ -20,10 +20,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 17 +_LIBCPP_BEGIN_NAMESPACE_STD + template [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr auto size(const _Cont& __c) noexcept(noexcept(__c.size())) -> decltype(__c.size()) { @@ -54,8 +54,8 @@ template _LIBCPP_DIAGNOSTIC_POP # endif -#endif // _LIBCPP_STD_VER >= 17 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 17 + #endif // _LIBCPP___ITERATOR_SIZE_H diff --git a/libcxx/include/__math/special_functions.h b/libcxx/include/__math/special_functions.h index 6b217852e2f8..64d16aa88d2e 100644 --- a/libcxx/include/__math/special_functions.h +++ b/libcxx/include/__math/special_functions.h @@ -21,10 +21,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 17 +_LIBCPP_BEGIN_NAMESPACE_STD + template _LIBCPP_HIDE_FROM_ABI _Real __hermite(unsigned __n, _Real __x) { // The Hermite polynomial H_n(x). @@ -77,8 +77,8 @@ _LIBCPP_HIDE_FROM_ABI double hermite(unsigned __n, _Integer __x) { return std::hermite(__n, static_cast(__x)); } -#endif // _LIBCPP_STD_VER >= 17 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 17 + #endif // _LIBCPP___MATH_SPECIAL_FUNCTIONS_H diff --git a/libcxx/include/__mdspan/aligned_accessor.h b/libcxx/include/__mdspan/aligned_accessor.h index 2b8d4c52d873..934b0d42abe4 100644 --- a/libcxx/include/__mdspan/aligned_accessor.h +++ b/libcxx/include/__mdspan/aligned_accessor.h @@ -33,10 +33,10 @@ _LIBCPP_PUSH_MACROS #include <__undef_macros> -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 26 +_LIBCPP_BEGIN_NAMESPACE_STD + template struct aligned_accessor { static_assert(_ByteAlignment != 0 && (_ByteAlignment & (_ByteAlignment - 1)) == 0, @@ -78,10 +78,10 @@ struct aligned_accessor { } }; -#endif // _LIBCPP_STD_VER >= 26 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 26 + _LIBCPP_POP_MACROS #endif // _LIBCPP___MDSPAN_ALIGNED_ACCESSOR_H diff --git a/libcxx/include/__memory/compressed_pair.h b/libcxx/include/__memory/compressed_pair.h index bb745620b9f8..8fa0e64714f2 100644 --- a/libcxx/include/__memory/compressed_pair.h +++ b/libcxx/include/__memory/compressed_pair.h @@ -20,8 +20,6 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - // ================================================================================================================== // // The utilites here are for staying ABI compatible with the legacy `__compressed_pair`. They should not be used // // for new data structures. Use `_LIBCPP_NO_UNIQUE_ADDRESS` for new data structures instead (but make sure you // @@ -59,6 +57,8 @@ _LIBCPP_BEGIN_NAMESPACE_STD #ifndef _LIBCPP_ABI_NO_COMPRESSED_PAIR_PADDING +_LIBCPP_BEGIN_NAMESPACE_STD + template inline const size_t __compressed_pair_alignment = _LIBCPP_ALIGNOF(_Tp); @@ -104,6 +104,8 @@ class __compressed_pair_padding<_ToPad, true> {}; } # endif +_LIBCPP_END_NAMESPACE_STD + #else # define _LIBCPP_COMPRESSED_ELEMENT(T1, Initializer1) _LIBCPP_NO_UNIQUE_ADDRESS T1 Initializer1 @@ -112,6 +114,4 @@ class __compressed_pair_padding<_ToPad, true> {}; _LIBCPP_NO_UNIQUE_ADDRESS T2 Name2 #endif // _LIBCPP_ABI_NO_COMPRESSED_PAIR_PADDING -_LIBCPP_END_NAMESPACE_STD - #endif // _LIBCPP___MEMORY_COMPRESSED_PAIR_H diff --git a/libcxx/include/__memory/inout_ptr.h b/libcxx/include/__memory/inout_ptr.h index f0335cf855fc..f654b44e03f6 100644 --- a/libcxx/include/__memory/inout_ptr.h +++ b/libcxx/include/__memory/inout_ptr.h @@ -29,10 +29,10 @@ _LIBCPP_PUSH_MACROS #include <__undef_macros> -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 23 +_LIBCPP_BEGIN_NAMESPACE_STD + template class inout_ptr_t { static_assert(!__is_specialization_v<_Smart, shared_ptr>, "std::shared_ptr<> is not supported with std::inout_ptr."); @@ -100,10 +100,10 @@ template return std::inout_ptr_t<_Smart, _Ptr, _Args&&...>(__s, std::forward<_Args>(__args)...); } -#endif // _LIBCPP_STD_VER >= 23 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 23 + _LIBCPP_POP_MACROS #endif // _LIBCPP___INOUT_PTR_H diff --git a/libcxx/include/__memory/out_ptr.h b/libcxx/include/__memory/out_ptr.h index 806c863daeea..12960b76717d 100644 --- a/libcxx/include/__memory/out_ptr.h +++ b/libcxx/include/__memory/out_ptr.h @@ -28,10 +28,10 @@ _LIBCPP_PUSH_MACROS #include <__undef_macros> -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 23 +_LIBCPP_BEGIN_NAMESPACE_STD + template class out_ptr_t { static_assert(!__is_specialization_v<_Smart, shared_ptr> || sizeof...(_Args) > 0, @@ -92,10 +92,10 @@ template return std::out_ptr_t<_Smart, _Ptr, _Args&&...>(__s, std::forward<_Args>(__args)...); } -#endif // _LIBCPP_STD_VER >= 23 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 23 + _LIBCPP_POP_MACROS #endif // _LIBCPP___OUT_PTR_H diff --git a/libcxx/include/__memory/raw_storage_iterator.h b/libcxx/include/__memory/raw_storage_iterator.h index dff0fed3b756..a813d4a67835 100644 --- a/libcxx/include/__memory/raw_storage_iterator.h +++ b/libcxx/include/__memory/raw_storage_iterator.h @@ -21,13 +21,13 @@ # pragma GCC system_header #endif +#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_RAW_STORAGE_ITERATOR) + _LIBCPP_PUSH_MACROS #include <__undef_macros> _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_RAW_STORAGE_ITERATOR) - template class _LIBCPP_DEPRECATED_IN_CXX17 raw_storage_iterator : public __iterator_base, output_iterator_tag, void, void, void, void> { @@ -71,10 +71,10 @@ public: # endif }; -#endif // _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_RAW_STORAGE_ITERATOR) - _LIBCPP_END_NAMESPACE_STD _LIBCPP_POP_MACROS +#endif // _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_RAW_STORAGE_ITERATOR) + #endif // _LIBCPP___MEMORY_RAW_STORAGE_ITERATOR_H diff --git a/libcxx/include/__memory/uses_allocator_construction.h b/libcxx/include/__memory/uses_allocator_construction.h index 6733f5cf6fc3..e9653f6c4ea5 100644 --- a/libcxx/include/__memory/uses_allocator_construction.h +++ b/libcxx/include/__memory/uses_allocator_construction.h @@ -27,10 +27,10 @@ _LIBCPP_PUSH_MACROS #include <__undef_macros> -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 17 +_LIBCPP_BEGIN_NAMESPACE_STD + template inline constexpr bool __is_cv_std_pair = __is_pair_v>; @@ -202,9 +202,7 @@ __uninitialized_construct_using_allocator(_Type* __ptr, const _Alloc& __alloc, _ __uses_allocator_construction_args<_Type>::__apply(__alloc, std::forward<_Args>(__args)...)); } -#endif // _LIBCPP_STD_VER >= 17 - -#if _LIBCPP_STD_VER >= 20 +# if _LIBCPP_STD_VER >= 20 template _LIBCPP_HIDE_FROM_ABI constexpr auto uses_allocator_construction_args(const _Alloc& __alloc, _Args&&... __args) noexcept @@ -225,10 +223,12 @@ uninitialized_construct_using_allocator(_Type* __ptr, const _Alloc& __alloc, _Ar return /*--*/ std::__uninitialized_construct_using_allocator(__ptr, __alloc, std::forward<_Args>(__args)...); } -#endif // _LIBCPP_STD_VER >= 20 +# endif // _LIBCPP_STD_VER >= 20 _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 17 + _LIBCPP_POP_MACROS #endif // _LIBCPP___MEMORY_USES_ALLOCATOR_CONSTRUCTION_H diff --git a/libcxx/include/__node_handle b/libcxx/include/__node_handle index 789f2b5f9a52..bc515955aa07 100644 --- a/libcxx/include/__node_handle +++ b/libcxx/include/__node_handle @@ -73,10 +73,10 @@ public: _LIBCPP_PUSH_MACROS #include <__undef_macros> -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 17 +_LIBCPP_BEGIN_NAMESPACE_STD + // Specialized in __tree & __hash_table for their _NodeType. template struct __generic_container_node_destructor; @@ -200,10 +200,10 @@ struct __insert_return_type { _NodeType node; }; -#endif // _LIBCPP_STD_VER >= 17 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 17 + _LIBCPP_POP_MACROS #endif // _LIBCPP___NODE_HANDLE diff --git a/libcxx/include/__numeric/ranges_iota.h b/libcxx/include/__numeric/ranges_iota.h index bf53dd85fece..c67e6e92826a 100644 --- a/libcxx/include/__numeric/ranges_iota.h +++ b/libcxx/include/__numeric/ranges_iota.h @@ -26,9 +26,10 @@ _LIBCPP_PUSH_MACROS #include <__undef_macros> +#if _LIBCPP_STD_VER >= 23 + _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER >= 23 namespace ranges { template using iota_result = ranges::out_value_result<_Out, _Tp>; @@ -56,10 +57,10 @@ public: inline constexpr auto iota = __iota_fn{}; } // namespace ranges -#endif // _LIBCPP_STD_VER >= 23 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 23 + _LIBCPP_POP_MACROS #endif // _LIBCPP___NUMERIC_RANGES_IOTA_H diff --git a/libcxx/include/__numeric/reduce.h b/libcxx/include/__numeric/reduce.h index a3bfab1fc094..853ca6fb6186 100644 --- a/libcxx/include/__numeric/reduce.h +++ b/libcxx/include/__numeric/reduce.h @@ -22,9 +22,10 @@ _LIBCPP_PUSH_MACROS #include <__undef_macros> +#if _LIBCPP_STD_VER >= 17 + _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER >= 17 template [[nodiscard]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _Tp reduce(_InputIterator __first, _InputIterator __last, _Tp __init, _BinaryOp __b) { @@ -44,10 +45,11 @@ template reduce(_InputIterator __first, _InputIterator __last) { return std::reduce(__first, __last, typename iterator_traits<_InputIterator>::value_type{}); } -#endif _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 17 + _LIBCPP_POP_MACROS #endif // _LIBCPP___NUMERIC_REDUCE_H diff --git a/libcxx/include/__numeric/transform_reduce.h b/libcxx/include/__numeric/transform_reduce.h index 382c314ca498..53ed6aaf32d1 100644 --- a/libcxx/include/__numeric/transform_reduce.h +++ b/libcxx/include/__numeric/transform_reduce.h @@ -21,9 +21,10 @@ _LIBCPP_PUSH_MACROS #include <__undef_macros> +#if _LIBCPP_STD_VER >= 17 + _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER >= 17 template [[nodiscard]] _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 _Tp transform_reduce(_InputIterator __first, _InputIterator __last, _Tp __init, _BinaryOp __b, _UnaryOp __u) { @@ -50,10 +51,11 @@ template transform_reduce(_InputIterator1 __first1, _InputIterator1 __last1, _InputIterator2 __first2, _Tp __init) { return std::transform_reduce(__first1, __last1, __first2, std::move(__init), std::plus<>(), std::multiplies<>()); } -#endif _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 17 + _LIBCPP_POP_MACROS #endif // _LIBCPP___NUMERIC_TRANSFORM_REDUCE_H diff --git a/libcxx/include/__random/random_device.h b/libcxx/include/__random/random_device.h index 9da0b6172c9f..f28e5fca140e 100644 --- a/libcxx/include/__random/random_device.h +++ b/libcxx/include/__random/random_device.h @@ -19,11 +19,11 @@ _LIBCPP_PUSH_MACROS #include <__undef_macros> +#if _LIBCPP_HAS_RANDOM_DEVICE + _LIBCPP_BEGIN_NAMESPACE_STD _LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS -#if _LIBCPP_HAS_RANDOM_DEVICE - class _LIBCPP_EXPORTED_FROM_ABI random_device { # ifdef _LIBCPP_USING_DEV_RANDOM int __f_; @@ -69,11 +69,11 @@ public: void operator=(const random_device&) = delete; }; -#endif // _LIBCPP_HAS_RANDOM_DEVICE - _LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_HAS_RANDOM_DEVICE + _LIBCPP_POP_MACROS #endif // _LIBCPP___RANDOM_RANDOM_DEVICE_H diff --git a/libcxx/include/__random/uniform_random_bit_generator.h b/libcxx/include/__random/uniform_random_bit_generator.h index 75ffc27f9fcd..738a293f1e7e 100644 --- a/libcxx/include/__random/uniform_random_bit_generator.h +++ b/libcxx/include/__random/uniform_random_bit_generator.h @@ -23,10 +23,10 @@ _LIBCPP_PUSH_MACROS #include <__undef_macros> -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + // [rand.req.urng] template concept uniform_random_bit_generator = invocable<_Gen&> && unsigned_integral> && requires { @@ -35,10 +35,10 @@ concept uniform_random_bit_generator = invocable<_Gen&> && unsigned_integral::value; }; -#endif // _LIBCPP_STD_VER >= 20 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 + _LIBCPP_POP_MACROS #endif // _LIBCPP___RANDOM_UNIFORM_RANDOM_BIT_GENERATOR_H diff --git a/libcxx/include/__ranges/access.h b/libcxx/include/__ranges/access.h index bbacef3eae6b..28555ef6ba0d 100644 --- a/libcxx/include/__ranges/access.h +++ b/libcxx/include/__ranges/access.h @@ -27,10 +27,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + namespace ranges { template concept __can_borrow = is_lvalue_reference_v<_Tp> || enable_borrowed_range>; @@ -203,8 +203,8 @@ inline constexpr auto cend = __cend::__fn{}; } // namespace __cpo } // namespace ranges -#endif // _LIBCPP_STD_VER >= 20 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 + #endif // _LIBCPP___RANGES_ACCESS_H diff --git a/libcxx/include/__ranges/all.h b/libcxx/include/__ranges/all.h index 023cee6caa9a..5ee9901cb158 100644 --- a/libcxx/include/__ranges/all.h +++ b/libcxx/include/__ranges/all.h @@ -29,10 +29,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + namespace ranges::views { namespace __all { @@ -71,8 +71,8 @@ using all_t = decltype(views::all(std::declval<_Range>())); } // namespace ranges::views -#endif // _LIBCPP_STD_VER >= 20 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 + #endif // _LIBCPP___RANGES_ALL_H diff --git a/libcxx/include/__ranges/concepts.h b/libcxx/include/__ranges/concepts.h index bf75fe8a6fef..e1c855860c50 100644 --- a/libcxx/include/__ranges/concepts.h +++ b/libcxx/include/__ranges/concepts.h @@ -39,10 +39,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + namespace ranges { // [range.range] @@ -175,8 +175,8 @@ concept __concatable = requires { } // namespace ranges -#endif // _LIBCPP_STD_VER >= 20 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 + #endif // _LIBCPP___RANGES_CONCEPTS_H diff --git a/libcxx/include/__ranges/container_compatible_range.h b/libcxx/include/__ranges/container_compatible_range.h index a58f1119885e..ecf46f49232a 100644 --- a/libcxx/include/__ranges/container_compatible_range.h +++ b/libcxx/include/__ranges/container_compatible_range.h @@ -18,16 +18,16 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 23 +_LIBCPP_BEGIN_NAMESPACE_STD + template concept _ContainerCompatibleRange = ranges::input_range<_Range> && convertible_to, _Tp>; -#endif // _LIBCPP_STD_VER >= 23 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 23 + #endif // _LIBCPP___RANGES_CONTAINER_COMPATIBLE_RANGE_H diff --git a/libcxx/include/__ranges/dangling.h b/libcxx/include/__ranges/dangling.h index 613084d5fb9f..fdd41351add4 100644 --- a/libcxx/include/__ranges/dangling.h +++ b/libcxx/include/__ranges/dangling.h @@ -19,10 +19,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + namespace ranges { struct dangling { dangling() = default; @@ -35,8 +35,8 @@ using borrowed_iterator_t = _If, iterator_t<_Rp>, dangling>; // borrowed_subrange_t defined in <__ranges/subrange.h> } // namespace ranges -#endif // _LIBCPP_STD_VER >= 20 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 + #endif // _LIBCPP___RANGES_DANGLING_H diff --git a/libcxx/include/__ranges/data.h b/libcxx/include/__ranges/data.h index cb3b826fceb2..354a0aa15903 100644 --- a/libcxx/include/__ranges/data.h +++ b/libcxx/include/__ranges/data.h @@ -28,10 +28,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + // [range.prim.data] namespace ranges { @@ -95,8 +95,8 @@ inline constexpr auto cdata = __cdata::__fn{}; } // namespace __cpo } // namespace ranges -#endif // _LIBCPP_STD_VER >= 20 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 + #endif // _LIBCPP___RANGES_DATA_H diff --git a/libcxx/include/__ranges/elements_of.h b/libcxx/include/__ranges/elements_of.h index 3f89f49d182a..de6aa786e6b1 100644 --- a/libcxx/include/__ranges/elements_of.h +++ b/libcxx/include/__ranges/elements_of.h @@ -23,10 +23,10 @@ _LIBCPP_PUSH_MACROS #include <__undef_macros> -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 23 +_LIBCPP_BEGIN_NAMESPACE_STD + namespace ranges { template > @@ -40,10 +40,10 @@ elements_of(_Range&&, _Allocator = _Allocator()) -> elements_of<_Range&&, _Alloc } // namespace ranges -#endif // _LIBCPP_STD_VER >= 23 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 23 + _LIBCPP_POP_MACROS #endif // _LIBCPP___RANGES_ELEMENTS_OF_H diff --git a/libcxx/include/__ranges/empty.h b/libcxx/include/__ranges/empty.h index 5c1004042aba..f2f12329d224 100644 --- a/libcxx/include/__ranges/empty.h +++ b/libcxx/include/__ranges/empty.h @@ -20,10 +20,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + // [range.prim.empty] namespace ranges { @@ -64,8 +64,8 @@ inline constexpr auto empty = __empty::__fn{}; } // namespace __cpo } // namespace ranges -#endif // _LIBCPP_STD_VER >= 20 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 + #endif // _LIBCPP___RANGES_EMPTY_H diff --git a/libcxx/include/__ranges/enable_borrowed_range.h b/libcxx/include/__ranges/enable_borrowed_range.h index 1d068335e20a..70eb4e87c8a6 100644 --- a/libcxx/include/__ranges/enable_borrowed_range.h +++ b/libcxx/include/__ranges/enable_borrowed_range.h @@ -20,10 +20,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + namespace ranges { // [range.range], ranges @@ -33,8 +33,8 @@ inline constexpr bool enable_borrowed_range = false; } // namespace ranges -#endif // _LIBCPP_STD_VER >= 20 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 + #endif // _LIBCPP___RANGES_ENABLE_BORROWED_RANGE_H diff --git a/libcxx/include/__ranges/enable_view.h b/libcxx/include/__ranges/enable_view.h index 6dee6ea3fa3d..2c58cb6293d2 100644 --- a/libcxx/include/__ranges/enable_view.h +++ b/libcxx/include/__ranges/enable_view.h @@ -20,10 +20,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + namespace ranges { struct view_base {}; @@ -43,8 +43,8 @@ inline constexpr bool enable_view = derived_from<_Tp, view_base> || requires { } // namespace ranges -#endif // _LIBCPP_STD_VER >= 20 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 + #endif // _LIBCPP___RANGES_ENABLE_VIEW_H diff --git a/libcxx/include/__ranges/from_range.h b/libcxx/include/__ranges/from_range.h index a6cb9e3d439e..c02bddc3d9f9 100644 --- a/libcxx/include/__ranges/from_range.h +++ b/libcxx/include/__ranges/from_range.h @@ -16,18 +16,18 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 23 +_LIBCPP_BEGIN_NAMESPACE_STD + struct from_range_t { explicit from_range_t() = default; }; inline constexpr from_range_t from_range{}; -#endif // _LIBCPP_STD_VER >= 23 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 23 + #endif // _LIBCPP___RANGES_FROM_RANGE_H diff --git a/libcxx/include/__ranges/owning_view.h b/libcxx/include/__ranges/owning_view.h index 1ab81afee774..cb6ea660551a 100644 --- a/libcxx/include/__ranges/owning_view.h +++ b/libcxx/include/__ranges/owning_view.h @@ -30,10 +30,10 @@ _LIBCPP_PUSH_MACROS #include <__undef_macros> -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + namespace ranges { template requires movable<_Rp> && (!__is_std_initializer_list>) @@ -107,10 +107,10 @@ inline constexpr bool enable_borrowed_range> = enable_borrowed_ } // namespace ranges -#endif // _LIBCPP_STD_VER >= 20 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 + _LIBCPP_POP_MACROS #endif // _LIBCPP___RANGES_OWNING_VIEW_H diff --git a/libcxx/include/__ranges/range_adaptor.h b/libcxx/include/__ranges/range_adaptor.h index 4bcb53e1a584..6aac4f15f750 100644 --- a/libcxx/include/__ranges/range_adaptor.h +++ b/libcxx/include/__ranges/range_adaptor.h @@ -34,10 +34,10 @@ _LIBCPP_PUSH_MACROS #include <__undef_macros> -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + namespace ranges { // CRTP base that one can derive from in order to be considered a range adaptor closure @@ -90,10 +90,10 @@ class _LIBCPP_NO_SPECIALIZATIONS range_adaptor_closure : public __range_adaptor_ } // namespace ranges -#endif // _LIBCPP_STD_VER >= 20 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 + _LIBCPP_POP_MACROS #endif // _LIBCPP___RANGES_RANGE_ADAPTOR_H diff --git a/libcxx/include/__ranges/ref_view.h b/libcxx/include/__ranges/ref_view.h index 109a10cec299..ea7e9cb3b6da 100644 --- a/libcxx/include/__ranges/ref_view.h +++ b/libcxx/include/__ranges/ref_view.h @@ -32,10 +32,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + namespace ranges { template requires is_object_v<_Range> @@ -82,8 +82,8 @@ template inline constexpr bool enable_borrowed_range> = true; } // namespace ranges -#endif // _LIBCPP_STD_VER >= 20 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 + #endif // _LIBCPP___RANGES_REF_VIEW_H diff --git a/libcxx/include/__ranges/repeat_view.h b/libcxx/include/__ranges/repeat_view.h index 9192183f4801..ae13af8761b8 100644 --- a/libcxx/include/__ranges/repeat_view.h +++ b/libcxx/include/__ranges/repeat_view.h @@ -40,10 +40,10 @@ _LIBCPP_PUSH_MACROS #include <__undef_macros> -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 23 +_LIBCPP_BEGIN_NAMESPACE_STD + namespace ranges { template @@ -265,10 +265,10 @@ inline constexpr bool __is_repeat_specialization> = tru } // namespace ranges -#endif // _LIBCPP_STD_VER >= 23 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 23 + _LIBCPP_POP_MACROS #endif // _LIBCPP___RANGES_REPEAT_VIEW_H diff --git a/libcxx/include/__ranges/size.h b/libcxx/include/__ranges/size.h index 5da3a6ff268e..2697560ccbfa 100644 --- a/libcxx/include/__ranges/size.h +++ b/libcxx/include/__ranges/size.h @@ -29,10 +29,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + namespace ranges { template inline constexpr bool disable_sized_range = false; @@ -131,8 +131,8 @@ inline constexpr auto ssize = __ssize::__fn{}; } // namespace __cpo } // namespace ranges -#endif // _LIBCPP_STD_VER >= 20 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 + #endif // _LIBCPP___RANGES_SIZE_H diff --git a/libcxx/include/__ranges/subrange.h b/libcxx/include/__ranges/subrange.h index 3d94b0a72b96..41ab267417e9 100644 --- a/libcxx/include/__ranges/subrange.h +++ b/libcxx/include/__ranges/subrange.h @@ -49,10 +49,10 @@ _LIBCPP_PUSH_MACROS #include <__undef_macros> -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + namespace ranges { template concept __uses_nonqualification_pointer_conversion = @@ -266,10 +266,10 @@ struct tuple_element<1, const ranges::subrange<_Ip, _Sp, _Kp>> { using type _LIBCPP_NODEBUG = _Sp; }; -#endif // _LIBCPP_STD_VER >= 20 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 + _LIBCPP_POP_MACROS #endif // _LIBCPP___RANGES_SUBRANGE_H diff --git a/libcxx/include/__ranges/view_interface.h b/libcxx/include/__ranges/view_interface.h index 37b2c9e2c1a7..96508c2be727 100644 --- a/libcxx/include/__ranges/view_interface.h +++ b/libcxx/include/__ranges/view_interface.h @@ -30,10 +30,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + namespace ranges { template @@ -163,8 +163,8 @@ public: } // namespace ranges -#endif // _LIBCPP_STD_VER >= 20 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 + #endif // _LIBCPP___RANGES_VIEW_INTERFACE_H diff --git a/libcxx/include/__ranges/views.h b/libcxx/include/__ranges/views.h index a4de2a5e52a9..e416b3f76d3f 100644 --- a/libcxx/include/__ranges/views.h +++ b/libcxx/include/__ranges/views.h @@ -22,7 +22,8 @@ _LIBCPP_BEGIN_NAMESPACE_STD namespace ranges { -namespace views {} +namespace views { // NOLINT(libcpp-avoid-empty-namespaces) // This is needed to declare the alias below. +} // namespace views } // namespace ranges diff --git a/libcxx/include/__stop_token/atomic_unique_lock.h b/libcxx/include/__stop_token/atomic_unique_lock.h index 79baa3b40846..99f94b8a7893 100644 --- a/libcxx/include/__stop_token/atomic_unique_lock.h +++ b/libcxx/include/__stop_token/atomic_unique_lock.h @@ -19,10 +19,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + // This class implements an RAII unique_lock without a mutex. // It uses std::atomic, // where State contains a lock bit and might contain other data, @@ -134,8 +134,8 @@ private: _LIBCPP_HIDE_FROM_ABI static constexpr auto __set_locked_bit = [](_State __state) { return __state | _LockedBit; }; }; -#endif // _LIBCPP_STD_VER >= 20 && _LIBCPP_HAS_THREADS - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 + #endif // _LIBCPP___STOP_TOKEN_ATOMIC_UNIQUE_LOCK_H diff --git a/libcxx/include/__stop_token/intrusive_list_view.h b/libcxx/include/__stop_token/intrusive_list_view.h index 11a3e267e7c6..0198b1756a52 100644 --- a/libcxx/include/__stop_token/intrusive_list_view.h +++ b/libcxx/include/__stop_token/intrusive_list_view.h @@ -17,10 +17,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + template struct __intrusive_node_base { _Derived* __next_ = nullptr; @@ -78,8 +78,8 @@ private: _Node* __head_ = nullptr; }; -#endif // _LIBCPP_STD_VER >= 20 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 + #endif // _LIBCPP___STOP_TOKEN_INTRUSIVE_LIST_VIEW_H diff --git a/libcxx/include/__stop_token/intrusive_shared_ptr.h b/libcxx/include/__stop_token/intrusive_shared_ptr.h index 05fe9b8acb6d..c37317f8c5c7 100644 --- a/libcxx/include/__stop_token/intrusive_shared_ptr.h +++ b/libcxx/include/__stop_token/intrusive_shared_ptr.h @@ -25,10 +25,10 @@ _LIBCPP_PUSH_MACROS #include <__undef_macros> -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + // For intrusive_shared_ptr to work with a type T, specialize __intrusive_shared_ptr_traits and implement // the following function: // @@ -125,10 +125,10 @@ private: } }; -#endif // _LIBCPP_STD_VER >= 20 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 + _LIBCPP_POP_MACROS #endif // _LIBCPP___STOP_TOKEN_INTRUSIVE_SHARED_PTR_H diff --git a/libcxx/include/__stop_token/stop_callback.h b/libcxx/include/__stop_token/stop_callback.h index 76d438e096c0..f9d486b34746 100644 --- a/libcxx/include/__stop_token/stop_callback.h +++ b/libcxx/include/__stop_token/stop_callback.h @@ -29,10 +29,10 @@ _LIBCPP_PUSH_MACROS #include <__undef_macros> -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 && _LIBCPP_HAS_THREADS +_LIBCPP_BEGIN_NAMESPACE_STD + template class stop_callback : private __stop_callback_base { static_assert(invocable<_Callback>, @@ -93,10 +93,10 @@ private: template stop_callback(stop_token, _Callback) -> stop_callback<_Callback>; -#endif // _LIBCPP_STD_VER >= 20 && _LIBCPP_HAS_THREADS - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 && _LIBCPP_HAS_THREADS + _LIBCPP_POP_MACROS #endif // _LIBCPP___STOP_TOKEN_STOP_CALLBACK_H diff --git a/libcxx/include/__stop_token/stop_state.h b/libcxx/include/__stop_token/stop_state.h index 7f76392bd014..762cf203b0af 100644 --- a/libcxx/include/__stop_token/stop_state.h +++ b/libcxx/include/__stop_token/stop_state.h @@ -23,10 +23,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 && _LIBCPP_HAS_THREADS +_LIBCPP_BEGIN_NAMESPACE_STD + struct __stop_callback_base : __intrusive_node_base<__stop_callback_base> { using __callback_fn_t _LIBCPP_NODEBUG = void(__stop_callback_base*) noexcept; _LIBCPP_HIDE_FROM_ABI explicit __stop_callback_base(__callback_fn_t* __callback_fn) : __callback_fn_(__callback_fn) {} @@ -230,8 +230,8 @@ struct __intrusive_shared_ptr_traits<__stop_state> { } }; -#endif // _LIBCPP_STD_VER >= 20 && _LIBCPP_HAS_THREADS - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 && _LIBCPP_HAS_THREADS + #endif // _LIBCPP___STOP_TOKEN_STOP_STATE_H diff --git a/libcxx/include/__stop_token/stop_token.h b/libcxx/include/__stop_token/stop_token.h index 4a6ca27ac44d..c6658f86879d 100644 --- a/libcxx/include/__stop_token/stop_token.h +++ b/libcxx/include/__stop_token/stop_token.h @@ -18,10 +18,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 && _LIBCPP_HAS_THREADS +_LIBCPP_BEGIN_NAMESPACE_STD + class stop_token { public: _LIBCPP_HIDE_FROM_ABI stop_token() noexcept = default; @@ -56,8 +56,8 @@ private: _LIBCPP_HIDE_FROM_ABI explicit stop_token(const __intrusive_shared_ptr<__stop_state>& __state) : __state_(__state) {} }; -#endif // _LIBCPP_STD_VER >= 20 && _LIBCPP_HAS_THREADS - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 && _LIBCPP_HAS_THREADS + #endif // _LIBCPP___STOP_TOKEN_STOP_TOKEN_H diff --git a/libcxx/include/__thread/id.h b/libcxx/include/__thread/id.h index 14a51fc9ee88..5a602b070c3d 100644 --- a/libcxx/include/__thread/id.h +++ b/libcxx/include/__thread/id.h @@ -20,9 +20,10 @@ # pragma GCC system_header #endif +#if _LIBCPP_HAS_THREADS + _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_HAS_THREADS class __thread_id; namespace this_thread { @@ -114,8 +115,8 @@ inline _LIBCPP_HIDE_FROM_ABI __thread_id get_id() _NOEXCEPT { return __libcpp_th } // namespace this_thread -#endif // _LIBCPP_HAS_THREADS - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_HAS_THREADS + #endif // _LIBCPP___THREAD_ID_H diff --git a/libcxx/include/__tuple/sfinae_helpers.h b/libcxx/include/__tuple/sfinae_helpers.h index f81048f4062b..78b00964a289 100644 --- a/libcxx/include/__tuple/sfinae_helpers.h +++ b/libcxx/include/__tuple/sfinae_helpers.h @@ -15,10 +15,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #ifndef _LIBCPP_CXX03_LANG +_LIBCPP_BEGIN_NAMESPACE_STD + struct __check_tuple_constructor_fail { static _LIBCPP_HIDE_FROM_ABI constexpr bool __enable_explicit_default() { return false; } static _LIBCPP_HIDE_FROM_ABI constexpr bool __enable_implicit_default() { return false; } @@ -35,9 +35,8 @@ struct __check_tuple_constructor_fail { return false; } }; -#endif // !defined(_LIBCPP_CXX03_LANG) -#if _LIBCPP_STD_VER >= 17 +# if _LIBCPP_STD_VER >= 17 template struct __sfinae_ctor_base {}; @@ -92,8 +91,10 @@ struct __sfinae_assign_base { __sfinae_assign_base& operator=(__sfinae_assign_base const&) = delete; __sfinae_assign_base& operator=(__sfinae_assign_base&&) = default; }; -#endif // _LIBCPP_STD_VER >= 17 +# endif // _LIBCPP_STD_VER >= 17 _LIBCPP_END_NAMESPACE_STD +#endif // !defined(_LIBCPP_CXX03_LANG) + #endif // _LIBCPP___TUPLE_SFINAE_HELPERS_H diff --git a/libcxx/include/__tuple/tuple_like.h b/libcxx/include/__tuple/tuple_like.h index c080a3dcf1e2..403f7d13eee5 100644 --- a/libcxx/include/__tuple/tuple_like.h +++ b/libcxx/include/__tuple/tuple_like.h @@ -19,10 +19,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + template inline constexpr bool __is_ranges_subrange_v = false; @@ -35,8 +35,8 @@ concept __tuple_like = __tuple_like_no_subrange<_Tp> || __is_ranges_subrange_v= 20 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 + #endif // _LIBCPP___TUPLE_TUPLE_LIKE_H diff --git a/libcxx/include/__tuple/tuple_like_no_subrange.h b/libcxx/include/__tuple/tuple_like_no_subrange.h index 30018d6a05ae..8122b2e6b79f 100644 --- a/libcxx/include/__tuple/tuple_like_no_subrange.h +++ b/libcxx/include/__tuple/tuple_like_no_subrange.h @@ -22,10 +22,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + template inline constexpr bool __tuple_like_no_subrange_impl = false; @@ -54,8 +54,8 @@ concept __tuple_like_no_subrange = __tuple_like_no_subrange_impl concept __pair_like_no_subrange = __tuple_like_no_subrange<_Tp> && tuple_size>::value == 2; -#endif // _LIBCPP_STD_VER >= 20 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 + #endif // _LIBCPP___TUPLE_TUPLE_LIKE_NO_SUBRANGE_H diff --git a/libcxx/include/__type_traits/common_reference.h b/libcxx/include/__type_traits/common_reference.h index 59badb64267d..793ba06ea4cb 100644 --- a/libcxx/include/__type_traits/common_reference.h +++ b/libcxx/include/__type_traits/common_reference.h @@ -24,10 +24,12 @@ # pragma GCC system_header #endif +#if _LIBCPP_STD_VER >= 20 + _LIBCPP_BEGIN_NAMESPACE_STD // common_reference -#if _LIBCPP_STD_VER >= 20 + // Let COND_RES(X, Y) be: template using __cond_res _LIBCPP_NODEBUG = decltype(false ? std::declval<_Xp (&)()>()() : std::declval<_Yp (&)()>()()); @@ -195,8 +197,8 @@ _LIBCPP_DIAGNOSTIC_POP template struct _LIBCPP_NO_SPECIALIZATIONS common_reference {}; -#endif // _LIBCPP_STD_VER >= 20 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 20 + #endif // _LIBCPP___TYPE_TRAITS_COMMON_REFERENCE_H diff --git a/libcxx/include/__type_traits/has_unique_object_representation.h b/libcxx/include/__type_traits/has_unique_object_representation.h index af9abfe81d41..9b0c3fd3cb73 100644 --- a/libcxx/include/__type_traits/has_unique_object_representation.h +++ b/libcxx/include/__type_traits/has_unique_object_representation.h @@ -16,10 +16,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 17 +_LIBCPP_BEGIN_NAMESPACE_STD + template struct _LIBCPP_NO_SPECIALIZATIONS has_unique_object_representations : integral_constant {}; @@ -28,8 +28,8 @@ template _LIBCPP_NO_SPECIALIZATIONS inline constexpr bool has_unique_object_representations_v = __has_unique_object_representations(_Tp); -#endif - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 17 + #endif // _LIBCPP___TYPE_TRAITS_HAS_UNIQUE_OBJECT_REPRESENTATION_H diff --git a/libcxx/include/__type_traits/is_implicit_lifetime.h b/libcxx/include/__type_traits/is_implicit_lifetime.h index e5d1c05c437f..1222acba54e5 100644 --- a/libcxx/include/__type_traits/is_implicit_lifetime.h +++ b/libcxx/include/__type_traits/is_implicit_lifetime.h @@ -16,9 +16,10 @@ # pragma GCC system_header #endif +#if _LIBCPP_STD_VER >= 23 + _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER >= 23 # if __has_builtin(__builtin_is_implicit_lifetime) template @@ -28,8 +29,9 @@ template _LIBCPP_NO_SPECIALIZATIONS inline constexpr bool is_implicit_lifetime_v = __builtin_is_implicit_lifetime(_Tp); # endif -#endif _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 23 + #endif // _LIBCPP___TYPE_TRAITS_IS_IMPLICIT_LIFETIME_H diff --git a/libcxx/include/__type_traits/is_implicitly_default_constructible.h b/libcxx/include/__type_traits/is_implicitly_default_constructible.h index d5dadd7b870d..80a3d86e1986 100644 --- a/libcxx/include/__type_traits/is_implicitly_default_constructible.h +++ b/libcxx/include/__type_traits/is_implicitly_default_constructible.h @@ -17,9 +17,10 @@ # pragma GCC system_header #endif +#ifndef _LIBCPP_CXX03_LANG + _LIBCPP_BEGIN_NAMESPACE_STD -#ifndef _LIBCPP_CXX03_LANG // First of all, we can't implement this check in C++03 mode because the {} // default initialization syntax isn't valid. // Second, we implement the trait in a funny manner with two defaulted template @@ -39,8 +40,9 @@ template struct __is_implicitly_default_constructible<_Tp, decltype(std::__test_implicit_default_constructible<_Tp const&>({})), false_type> : false_type {}; -#endif // !C++03 _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_CXX03_LANG + #endif // _LIBCPP___TYPE_TRAITS_IS_IMPLICITLY_DEFAULT_CONSTRUCTIBLE_H diff --git a/libcxx/include/__type_traits/is_literal_type.h b/libcxx/include/__type_traits/is_literal_type.h index 2e0df3ad1be3..264d36f4fdd4 100644 --- a/libcxx/include/__type_traits/is_literal_type.h +++ b/libcxx/include/__type_traits/is_literal_type.h @@ -16,9 +16,10 @@ # pragma GCC system_header #endif +#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_TYPE_TRAITS) + _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_TYPE_TRAITS) template struct _LIBCPP_DEPRECATED_IN_CXX17 _LIBCPP_NO_SPECIALIZATIONS is_literal_type : integral_constant {}; @@ -27,8 +28,9 @@ struct _LIBCPP_DEPRECATED_IN_CXX17 _LIBCPP_NO_SPECIALIZATIONS is_literal_type template _LIBCPP_DEPRECATED_IN_CXX17 _LIBCPP_NO_SPECIALIZATIONS inline constexpr bool is_literal_type_v = __is_literal_type(_Tp); # endif // _LIBCPP_STD_VER >= 17 -#endif // _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_TYPE_TRAITS) _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_TYPE_TRAITS) + #endif // _LIBCPP___TYPE_TRAITS_IS_LITERAL_TYPE diff --git a/libcxx/include/__type_traits/reference_converts_from_temporary.h b/libcxx/include/__type_traits/reference_converts_from_temporary.h index 9c51225e53b8..31479e43ee2c 100644 --- a/libcxx/include/__type_traits/reference_converts_from_temporary.h +++ b/libcxx/include/__type_traits/reference_converts_from_temporary.h @@ -16,10 +16,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 23 +_LIBCPP_BEGIN_NAMESPACE_STD + template struct _LIBCPP_NO_SPECIALIZATIONS reference_converts_from_temporary : public bool_constant<__reference_converts_from_temporary(_Tp, _Up)> {}; @@ -28,8 +28,8 @@ template _LIBCPP_NO_SPECIALIZATIONS inline constexpr bool reference_converts_from_temporary_v = __reference_converts_from_temporary(_Tp, _Up); -#endif - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 23 + #endif // _LIBCPP___TYPE_TRAITS_REFERENCE_CONVERTS_FROM_TEMPORARY_H diff --git a/libcxx/include/__type_traits/result_of.h b/libcxx/include/__type_traits/result_of.h index 1714cf4dd96a..8073882f1358 100644 --- a/libcxx/include/__type_traits/result_of.h +++ b/libcxx/include/__type_traits/result_of.h @@ -16,18 +16,19 @@ # pragma GCC system_header #endif +#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_TYPE_TRAITS) + _LIBCPP_BEGIN_NAMESPACE_STD // result_of -#if _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_TYPE_TRAITS) template struct _LIBCPP_DEPRECATED_IN_CXX17 _LIBCPP_NO_SPECIALIZATIONS result_of; _LIBCPP_DIAGNOSTIC_PUSH -#if __has_warning("-Winvalid-specialization") +# if __has_warning("-Winvalid-specialization") _LIBCPP_CLANG_DIAGNOSTIC_IGNORED("-Winvalid-specialization") -#endif +# endif template struct result_of<_Fp(_Args...)> : __invoke_result<_Fp, _Args...> {}; _LIBCPP_DIAGNOSTIC_POP @@ -36,8 +37,9 @@ _LIBCPP_DIAGNOSTIC_POP template using result_of_t _LIBCPP_DEPRECATED_IN_CXX17 = typename result_of<_Tp>::type; # endif // _LIBCPP_STD_VER >= 14 -#endif // _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_TYPE_TRAITS) _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER <= 17 || defined(_LIBCPP_ENABLE_CXX20_REMOVED_TYPE_TRAITS) + #endif // _LIBCPP___TYPE_TRAITS_RESULT_OF_H diff --git a/libcxx/include/__utility/as_const.h b/libcxx/include/__utility/as_const.h index 0f54b984725c..a9bc592e451f 100644 --- a/libcxx/include/__utility/as_const.h +++ b/libcxx/include/__utility/as_const.h @@ -15,9 +15,10 @@ # pragma GCC system_header #endif +#if _LIBCPP_STD_VER >= 17 + _LIBCPP_BEGIN_NAMESPACE_STD -#if _LIBCPP_STD_VER >= 17 template [[nodiscard]] _LIBCPP_HIDE_FROM_ABI constexpr const _Tp& as_const(_Tp& __t) noexcept { return __t; @@ -25,8 +26,9 @@ template template void as_const(const _Tp&&) = delete; -#endif _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 17 + #endif // _LIBCPP___UTILITY_AS_CONST_H diff --git a/libcxx/include/__utility/forward_like.h b/libcxx/include/__utility/forward_like.h index 409f716cfbce..42603f977363 100644 --- a/libcxx/include/__utility/forward_like.h +++ b/libcxx/include/__utility/forward_like.h @@ -21,10 +21,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 23 +_LIBCPP_BEGIN_NAMESPACE_STD + template using _CopyConst _LIBCPP_NODEBUG = _If, const _Bp, _Bp>; @@ -56,8 +56,8 @@ __forward_as(_LIBCPP_LIFETIMEBOUND _Up&& __val) noexcept { return static_cast<_ForwardLike<_Tp, _As>>(__val); } -#endif // _LIBCPP_STD_VER >= 23 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 23 + #endif // _LIBCPP___UTILITY_FORWARD_LIKE_H diff --git a/libcxx/include/__utility/in_place.h b/libcxx/include/__utility/in_place.h index c5bfa947058f..7c2ed0f9e2cd 100644 --- a/libcxx/include/__utility/in_place.h +++ b/libcxx/include/__utility/in_place.h @@ -18,10 +18,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 17 +_LIBCPP_BEGIN_NAMESPACE_STD + struct in_place_t { explicit in_place_t() = default; }; @@ -57,8 +57,8 @@ struct __is_inplace_index_imp> : true_type {}; template using __is_inplace_index _LIBCPP_NODEBUG = __is_inplace_index_imp<__remove_cvref_t<_Tp>>; -#endif // _LIBCPP_STD_VER >= 17 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 17 + #endif // _LIBCPP___UTILITY_IN_PLACE_H diff --git a/libcxx/include/__variant/monostate.h b/libcxx/include/__variant/monostate.h index 3939e42a9477..a11a51ecc087 100644 --- a/libcxx/include/__variant/monostate.h +++ b/libcxx/include/__variant/monostate.h @@ -19,10 +19,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 17 +_LIBCPP_BEGIN_NAMESPACE_STD + struct monostate {}; _LIBCPP_HIDE_FROM_ABI inline constexpr bool operator==(monostate, monostate) noexcept { return true; } @@ -59,8 +59,8 @@ struct hash { } }; -#endif // _LIBCPP_STD_VER >= 17 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 17 + #endif // _LIBCPP___VARIANT_MONOSTATE_H diff --git a/libcxx/include/__verbose_trap b/libcxx/include/__verbose_trap index 6bda3e208ad4..d73a93871a39 100644 --- a/libcxx/include/__verbose_trap +++ b/libcxx/include/__verbose_trap @@ -16,14 +16,10 @@ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if __has_builtin(__builtin_verbose_trap) # define _LIBCPP_VERBOSE_TRAP(message) __builtin_verbose_trap("libc++", message) #else # define _LIBCPP_VERBOSE_TRAP(message) ((void)message, __builtin_trap()) #endif -_LIBCPP_END_NAMESPACE_STD - #endif // _LIBCPP___VERBOSE_TRAP diff --git a/libcxx/include/any b/libcxx/include/any index 6157713a4069..670b7512e569 100644 --- a/libcxx/include/any +++ b/libcxx/include/any @@ -130,10 +130,10 @@ public: _LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_UNVERSIONED_NAMESPACE_STD -_LIBCPP_BEGIN_NAMESPACE_STD - # if _LIBCPP_STD_VER >= 17 +_LIBCPP_BEGIN_NAMESPACE_STD + [[noreturn]] inline _LIBCPP_HIDE_FROM_ABI void __throw_bad_any_cast() { # if _LIBCPP_HAS_EXCEPTIONS throw bad_any_cast(); @@ -552,10 +552,10 @@ template return nullptr; } -# endif // _LIBCPP_STD_VER >= 17 - _LIBCPP_END_NAMESPACE_STD +# endif // _LIBCPP_STD_VER >= 17 + _LIBCPP_POP_MACROS # if defined(_LIBCPP_KEEP_TRANSITIVE_INCLUDES_LLVM23) && _LIBCPP_STD_VER <= 17 diff --git a/libcxx/include/charconv b/libcxx/include/charconv index 5d31957bf81f..b7d8cccd7ad7 100644 --- a/libcxx/include/charconv +++ b/libcxx/include/charconv @@ -100,10 +100,6 @@ namespace std { # pragma GCC system_header # endif -_LIBCPP_BEGIN_NAMESPACE_STD - -_LIBCPP_END_NAMESPACE_STD - # if defined(_LIBCPP_KEEP_TRANSITIVE_INCLUDES_LLVM23) && _LIBCPP_STD_VER <= 20 # include # include diff --git a/libcxx/include/cuchar b/libcxx/include/cuchar index 38505eb336f8..591f332c70da 100644 --- a/libcxx/include/cuchar +++ b/libcxx/include/cuchar @@ -56,10 +56,10 @@ size_t c32rtomb(char* s, char32_t c32, mbstate_t* ps); # pragma GCC system_header # endif -_LIBCPP_BEGIN_NAMESPACE_STD - # if !defined(_LIBCPP_CXX03_LANG) +_LIBCPP_BEGIN_NAMESPACE_STD + using ::mbstate_t _LIBCPP_USING_IF_EXISTS; # if _LIBCPP_HAS_C8RTOMB_MBRTOC8 @@ -71,10 +71,10 @@ using ::c16rtomb _LIBCPP_USING_IF_EXISTS; using ::mbrtoc32 _LIBCPP_USING_IF_EXISTS; using ::c32rtomb _LIBCPP_USING_IF_EXISTS; -# endif // _LIBCPP_CXX03_LANG - _LIBCPP_END_NAMESPACE_STD +# endif // _LIBCPP_CXX03_LANG + #endif // __cplusplus < 201103L && defined(_LIBCPP_USE_FROZEN_CXX03_HEADERS) #endif // _LIBCPP_CUCHAR diff --git a/libcxx/include/experimental/memory b/libcxx/include/experimental/memory index b6d7b16cb659..b7a499956170 100644 --- a/libcxx/include/experimental/memory +++ b/libcxx/include/experimental/memory @@ -70,10 +70,10 @@ public: # ifdef _LIBCPP_ENABLE_EXPERIMENTAL -_LIBCPP_BEGIN_NAMESPACE_LFTS_V2 - # if _LIBCPP_STD_VER >= 17 +_LIBCPP_BEGIN_NAMESPACE_LFTS_V2 + template class observer_ptr { public: @@ -175,25 +175,23 @@ _LIBCPP_HIDE_FROM_ABI bool operator>=(observer_ptr<_W1> __a, observer_ptr<_W2> _ return !(__a < __b); } -# endif // _LIBCPP_STD_VER >= 17 - _LIBCPP_END_NAMESPACE_LFTS_V2 _LIBCPP_BEGIN_NAMESPACE_STD // hash -# if _LIBCPP_STD_VER >= 17 template struct hash> { _LIBCPP_HIDE_FROM_ABI size_t operator()(const experimental::observer_ptr<_Tp>& __ptr) const noexcept { return hash<_Tp*>()(__ptr.get()); } }; -# endif // _LIBCPP_STD_VER >= 17 _LIBCPP_END_NAMESPACE_STD +# endif // _LIBCPP_STD_VER >= 17 + # endif // _LIBCPP_ENABLE_EXPERIMENTAL # if defined(_LIBCPP_KEEP_TRANSITIVE_INCLUDES_LLVM23) && _LIBCPP_STD_VER <= 20 diff --git a/libcxx/include/initializer_list b/libcxx/include/initializer_list index 36e45a6db258..a362a1020eb0 100644 --- a/libcxx/include/initializer_list +++ b/libcxx/include/initializer_list @@ -53,11 +53,11 @@ template const E* end(initializer_list il) noexcept; // constexpr in # pragma GCC system_header # endif +# ifndef _LIBCPP_CXX03_LANG + namespace std // purposefully not versioned { -# ifndef _LIBCPP_CXX03_LANG - template class _LIBCPP_NO_SPECIALIZATIONS initializer_list { const _Ep* __begin_; @@ -101,10 +101,10 @@ inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 const _Ep* end(initia return __il.end(); } -# endif // !defined(_LIBCPP_CXX03_LANG) - } // namespace std +# endif // _LIBCPP_CXX03_LANG + # if defined(_LIBCPP_KEEP_TRANSITIVE_INCLUDES_LLVM23) && _LIBCPP_STD_VER <= 20 # include # endif diff --git a/libcxx/include/mutex b/libcxx/include/mutex index ab505f945d63..75b080f8cd08 100644 --- a/libcxx/include/mutex +++ b/libcxx/include/mutex @@ -214,11 +214,11 @@ template _LIBCPP_PUSH_MACROS # include <__undef_macros> +# if _LIBCPP_HAS_THREADS + _LIBCPP_BEGIN_NAMESPACE_STD _LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS -# if _LIBCPP_HAS_THREADS - class _LIBCPP_EXPORTED_FROM_ABI recursive_mutex { __libcpp_recursive_mutex_t __m_; @@ -496,11 +496,12 @@ private: _LIBCPP_CTAD_SUPPORTED_FOR_TYPE(scoped_lock); # endif // _LIBCPP_STD_VER >= 17 -# endif // _LIBCPP_HAS_THREADS _LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_NAMESPACE_STD +# endif // _LIBCPP_HAS_THREADS + _LIBCPP_POP_MACROS # if defined(_LIBCPP_KEEP_TRANSITIVE_INCLUDES_LLVM23) && _LIBCPP_STD_VER <= 23 diff --git a/libcxx/include/print b/libcxx/include/print index 4a3676f97b2d..cf62743846f4 100644 --- a/libcxx/include/print +++ b/libcxx/include/print @@ -52,13 +52,15 @@ namespace std { # pragma GCC system_header # endif +# if _LIBCPP_STD_VER >= 23 + _LIBCPP_BEGIN_NAMESPACE_STD -# ifdef _LIBCPP_WIN32API +# ifdef _LIBCPP_WIN32API _LIBCPP_BEGIN_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_EXPORTED_FROM_ABI bool __is_windows_terminal(FILE* __stream); -# if _LIBCPP_HAS_WIDE_CHARACTERS +# if _LIBCPP_HAS_WIDE_CHARACTERS // A wrapper for WriteConsoleW which is used to write to the Windows // console. This function is in the dylib to avoid pulling in windows.h // in the library headers. The function itself uses some private parts @@ -69,11 +71,9 @@ _LIBCPP_EXPORTED_FROM_ABI bool __is_windows_terminal(FILE* __stream); // // Note the function is only implemented on the Windows platform. _LIBCPP_EXPORTED_FROM_ABI void __write_to_windows_console(FILE* __stream, wstring_view __view); -# endif // _LIBCPP_HAS_WIDE_CHARACTERS +# endif // _LIBCPP_HAS_WIDE_CHARACTERS _LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS -# endif // _LIBCPP_WIN32API - -# if _LIBCPP_STD_VER >= 23 +# endif // _LIBCPP_WIN32API # if _LIBCPP_HAS_UNICODE // This is the code to transcode UTF-8 to UTF-16. This is used on @@ -378,10 +378,10 @@ _LIBCPP_HIDE_FROM_ABI inline void vprint_nonunicode(string_view __fmt, format_ar std::vprint_nonunicode(stdout, __fmt, __args); } -# endif // _LIBCPP_STD_VER >= 23 - _LIBCPP_END_NAMESPACE_STD +# endif // _LIBCPP_STD_VER >= 23 + #endif // __cplusplus < 201103L && defined(_LIBCPP_USE_FROZEN_CXX03_HEADERS) #endif // _LIBCPP_PRINT diff --git a/libcxx/include/scoped_allocator b/libcxx/include/scoped_allocator index 13bdc496523b..edb3beae9749 100644 --- a/libcxx/include/scoped_allocator +++ b/libcxx/include/scoped_allocator @@ -135,10 +135,10 @@ template _LIBCPP_PUSH_MACROS # include <__undef_macros> -_LIBCPP_BEGIN_NAMESPACE_STD - # if !defined(_LIBCPP_CXX03_LANG) +_LIBCPP_BEGIN_NAMESPACE_STD + // scoped_allocator_adaptor template @@ -558,10 +558,10 @@ inline _LIBCPP_HIDE_FROM_ABI bool operator!=(const scoped_allocator_adaptor<_Out # endif // _LIBCPP_STD_VER <= 17 -# endif // !defined(_LIBCPP_CXX03_LANG) - _LIBCPP_END_NAMESPACE_STD +# endif // !defined(_LIBCPP_CXX03_LANG) + _LIBCPP_POP_MACROS # if defined(_LIBCPP_KEEP_TRANSITIVE_INCLUDES_LLVM23) && _LIBCPP_STD_VER <= 20 diff --git a/libcxx/include/source_location b/libcxx/include/source_location index 41b23f70c662..6913b049946a 100644 --- a/libcxx/include/source_location +++ b/libcxx/include/source_location @@ -36,10 +36,10 @@ namespace std { # pragma GCC system_header # endif -_LIBCPP_BEGIN_NAMESPACE_STD - # if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + class source_location { // The names source_location::__impl, _M_file_name, _M_function_name, _M_line, and _M_column // are hard-coded in the compiler and must not be changed here. @@ -81,10 +81,10 @@ public: } }; -# endif // _LIBCPP_STD_VER >= 20 - _LIBCPP_END_NAMESPACE_STD +# endif // _LIBCPP_STD_VER >= 20 + #endif // __cplusplus < 201103L && defined(_LIBCPP_USE_FROZEN_CXX03_HEADERS) #endif // _LIBCPP_SOURCE_LOCATION diff --git a/libcxx/include/span b/libcxx/include/span index 49954df9515d..e39b811f9b1e 100644 --- a/libcxx/include/span +++ b/libcxx/include/span @@ -198,10 +198,10 @@ template _LIBCPP_PUSH_MACROS # include <__undef_macros> -_LIBCPP_BEGIN_NAMESPACE_STD - # if _LIBCPP_STD_VER >= 20 +_LIBCPP_BEGIN_NAMESPACE_STD + template struct __is_std_span : false_type {}; @@ -630,10 +630,10 @@ span(const array<_Tp, _Sz>&) -> span; template span(_Range&&) -> span>>; -# endif // _LIBCPP_STD_VER >= 20 - _LIBCPP_END_NAMESPACE_STD +# endif // _LIBCPP_STD_VER >= 20 + _LIBCPP_POP_MACROS # if defined(_LIBCPP_KEEP_TRANSITIVE_INCLUDES_LLVM23) && _LIBCPP_STD_VER <= 20 diff --git a/libcxx/include/syncstream b/libcxx/include/syncstream index bd64453683c7..03e18ddbdfd2 100644 --- a/libcxx/include/syncstream +++ b/libcxx/include/syncstream @@ -147,10 +147,10 @@ namespace std { _LIBCPP_PUSH_MACROS # include <__undef_macros> -_LIBCPP_BEGIN_NAMESPACE_STD - # if _LIBCPP_STD_VER >= 20 && _LIBCPP_HAS_EXPERIMENTAL_SYNCSTREAM +_LIBCPP_BEGIN_NAMESPACE_STD + // [syncstream.syncbuf.overview]/1 // Class template basic_syncbuf stores character data written to it, // known as the associated output, into internal buffers allocated @@ -511,10 +511,10 @@ using std::osyncstream; using std::wosyncstream; # endif -# endif // _LIBCPP_STD_VER >= 20 && _LIBCPP_HAS_EXPERIMENTAL_SYNCSTREAM - _LIBCPP_END_NAMESPACE_STD +# endif // _LIBCPP_STD_VER >= 20 && _LIBCPP_HAS_EXPERIMENTAL_SYNCSTREAM + _LIBCPP_POP_MACROS # endif // _LIBCPP_HAS_LOCALIZATION diff --git a/libcxx/include/tuple b/libcxx/include/tuple index 3785bb9961f3..8f43006521dd 100644 --- a/libcxx/include/tuple +++ b/libcxx/include/tuple @@ -283,10 +283,10 @@ template _LIBCPP_PUSH_MACROS # include <__undef_macros> -_LIBCPP_BEGIN_NAMESPACE_STD - # ifndef _LIBCPP_CXX03_LANG +_LIBCPP_BEGIN_NAMESPACE_STD + template _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX14 bool __tuple_compare_equal(const _Tp& __x, const _Up& __y) { if constexpr (_Ip == 0) @@ -1443,10 +1443,10 @@ template = 17 -#endif // !defined(_LIBCPP_CXX03_LANG) - _LIBCPP_END_NAMESPACE_STD +#endif // !defined(_LIBCPP_CXX03_LANG) + _LIBCPP_POP_MACROS // clang-format on diff --git a/libcxx/include/variant b/libcxx/include/variant index 8d76931e65de..cf3bd82ee7c1 100644 --- a/libcxx/include/variant +++ b/libcxx/include/variant @@ -307,10 +307,10 @@ private: _LIBCPP_END_EXPLICIT_ABI_ANNOTATIONS _LIBCPP_END_UNVERSIONED_NAMESPACE_STD -_LIBCPP_BEGIN_NAMESPACE_STD - # if _LIBCPP_STD_VER >= 17 +_LIBCPP_BEGIN_NAMESPACE_STD + // Light N-dimensional array of function pointers. Used in place of std::array to avoid // adding a dependency. template @@ -1655,10 +1655,10 @@ _LIBCPP_HIDE_FROM_ABI constexpr auto&& __unchecked_get(variant<_Types...>& __v) return std::__unchecked_get<__find_exactly_one_t<_Tp, _Types...>::value>(__v); } -# endif // _LIBCPP_STD_VER >= 17 - _LIBCPP_END_NAMESPACE_STD +# endif // _LIBCPP_STD_VER >= 17 + _LIBCPP_POP_MACROS # if defined(_LIBCPP_KEEP_TRANSITIVE_INCLUDES_LLVM23) && _LIBCPP_STD_VER <= 20 diff --git a/libcxx/test/tools/clang_tidy_checks/CMakeLists.txt b/libcxx/test/tools/clang_tidy_checks/CMakeLists.txt index 3663575e33e5..8e125e51344f 100644 --- a/libcxx/test/tools/clang_tidy_checks/CMakeLists.txt +++ b/libcxx/test/tools/clang_tidy_checks/CMakeLists.txt @@ -88,6 +88,7 @@ message(STATUS "Clang-tidy tests are enabled.") set(SOURCES abi_tag_on_virtual.cpp + empty_namespaces.cpp header_exportable_declarations.cpp hide_from_abi.cpp internal_ftm_use.cpp diff --git a/libcxx/test/tools/clang_tidy_checks/empty_namespaces.cpp b/libcxx/test/tools/clang_tidy_checks/empty_namespaces.cpp new file mode 100644 index 000000000000..e176b29670ce --- /dev/null +++ b/libcxx/test/tools/clang_tidy_checks/empty_namespaces.cpp @@ -0,0 +1,28 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#include "clang-tidy/ClangTidyCheck.h" +#include "clang-tidy/ClangTidyModuleRegistry.h" + +#include "empty_namespaces.hpp" + +namespace libcpp { +empty_namespaces::empty_namespaces(llvm::StringRef name, clang::tidy::ClangTidyContext* context) + : clang::tidy::ClangTidyCheck(name, context) {} + +void empty_namespaces::registerMatchers(clang::ast_matchers::MatchFinder* finder) { + using namespace clang::ast_matchers; + finder->addMatcher(namespaceDecl(unless(hasDescendant(decl()))).bind("empty_namespace"), this); +} + +void empty_namespaces::check(const clang::ast_matchers::MatchFinder::MatchResult& result) { + if (const auto* ns = result.Nodes.getNodeAs("empty_namespace")) { + diag(ns->getBeginLoc(), "Empty namespaces should be avoided. Move any checks around the namespace instead."); + } +} +} // namespace libcpp diff --git a/libcxx/test/tools/clang_tidy_checks/empty_namespaces.hpp b/libcxx/test/tools/clang_tidy_checks/empty_namespaces.hpp new file mode 100644 index 000000000000..2b69eadf25fe --- /dev/null +++ b/libcxx/test/tools/clang_tidy_checks/empty_namespaces.hpp @@ -0,0 +1,18 @@ +//===----------------------------------------------------------------------===// +// +// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. +// See https://llvm.org/LICENSE.txt for license information. +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception +// +//===----------------------------------------------------------------------===// + +#include "clang-tidy/ClangTidyCheck.h" + +namespace libcpp { +class empty_namespaces : public clang::tidy::ClangTidyCheck { +public: + empty_namespaces(llvm::StringRef, clang::tidy::ClangTidyContext*); + void registerMatchers(clang::ast_matchers::MatchFinder*) override; + void check(const clang::ast_matchers::MatchFinder::MatchResult&) override; +}; +} // namespace libcpp diff --git a/libcxx/test/tools/clang_tidy_checks/libcpp_module.cpp b/libcxx/test/tools/clang_tidy_checks/libcpp_module.cpp index 2cf39e2b626f..b6298eefdeb4 100644 --- a/libcxx/test/tools/clang_tidy_checks/libcpp_module.cpp +++ b/libcxx/test/tools/clang_tidy_checks/libcpp_module.cpp @@ -10,6 +10,7 @@ #include "clang-tidy/ClangTidyModuleRegistry.h" #include "abi_tag_on_virtual.hpp" +#include "empty_namespaces.hpp" #include "header_exportable_declarations.hpp" #include "hide_from_abi.hpp" #include "internal_ftm_use.hpp" @@ -24,6 +25,7 @@ class LibcxxTestModule : public clang::tidy::ClangTidyModule { public: void addCheckFactories(clang::tidy::ClangTidyCheckFactories& check_factories) override { check_factories.registerCheck("libcpp-avoid-abi-tag-on-virtual"); + check_factories.registerCheck("libcpp-avoid-empty-namespaces"); check_factories.registerCheck("libcpp-header-exportable-declarations"); check_factories.registerCheck("libcpp-hide-from-abi"); check_factories.registerCheck("libcpp-internal-ftms"); diff --git a/libcxx/utils/generate_escaped_output_table.py b/libcxx/utils/generate_escaped_output_table.py index 30583dd8cdc8..ce9ac93e0bcb 100755 --- a/libcxx/utils/generate_escaped_output_table.py +++ b/libcxx/utils/generate_escaped_output_table.py @@ -226,20 +226,20 @@ TABLES_HPP_TEMPLATE = """ # pragma GCC system_header #endif -_LIBCPP_BEGIN_NAMESPACE_STD - #if _LIBCPP_STD_VER >= 23 +_LIBCPP_BEGIN_NAMESPACE_STD + namespace __escaped_output_table {{ // clang-format off {content} // clang-format on }} // namespace __escaped_output_table -#endif // _LIBCPP_STD_VER >= 23 - _LIBCPP_END_NAMESPACE_STD +#endif // _LIBCPP_STD_VER >= 23 + #endif // _LIBCPP___FORMAT_ESCAPED_OUTPUT_TABLE_H"""