diff --git a/libcxx/include/__chrono/convert_to_tm.h b/libcxx/include/__chrono/convert_to_tm.h index 5f1b2632f629a..46e3650e390ea 100644 --- a/libcxx/include/__chrono/convert_to_tm.h +++ b/libcxx/include/__chrono/convert_to_tm.h @@ -116,7 +116,7 @@ _LIBCPP_HIDE_FROM_ABI _Tm __convert_to_tm(const _ChronoT& __value) { return std::__convert_to_tm<_Tm>(chrono::sys_time{__value.time_since_epoch()}); else static_assert(sizeof(_ChronoT) == 0, "TODO: Add the missing clock specialization"); - } else if constexpr (chrono::__is_duration<_ChronoT>::value) { + } else if constexpr (chrono::__is_duration_v<_ChronoT>) { // [time.format]/6 // ... However, if a flag refers to a "time of day" (e.g. %H, %I, %p, // etc.), then a specialization of duration is interpreted as the time of diff --git a/libcxx/include/__chrono/duration.h b/libcxx/include/__chrono/duration.h index 19662286f6556..a401178b2a75c 100644 --- a/libcxx/include/__chrono/duration.h +++ b/libcxx/include/__chrono/duration.h @@ -35,26 +35,25 @@ template > class _LIBCPP_TEMPLATE_VIS duration; template -struct __is_duration : false_type {}; +inline const bool __is_duration_v = false; template -struct __is_duration > : true_type {}; +inline const bool __is_duration_v > = true; template -struct __is_duration > : true_type {}; +inline const bool __is_duration_v > = true; template -struct __is_duration > : true_type {}; +inline const bool __is_duration_v > = true; template -struct __is_duration > : true_type {}; +inline const bool __is_duration_v > = true; } // namespace chrono template struct _LIBCPP_TEMPLATE_VIS common_type, chrono::duration<_Rep2, _Period2> > { - typedef chrono::duration::type, typename __ratio_gcd<_Period1, _Period2>::type> - type; + typedef chrono::duration::type, __ratio_gcd<_Period1, _Period2> > type; }; namespace chrono { @@ -102,7 +101,7 @@ struct __duration_cast<_FromDuration, _ToDuration, _Period, false, false> { } }; -template ::value, int> = 0> +template , int> = 0> inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR _ToDuration duration_cast(const duration<_Rep, _Period>& __fd) { return __duration_cast, _ToDuration>()(__fd); } @@ -124,7 +123,7 @@ struct _LIBCPP_TEMPLATE_VIS duration_values { }; #if _LIBCPP_STD_VER >= 17 -template ::value, int> = 0> +template , int> = 0> inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR _ToDuration floor(const duration<_Rep, _Period>& __d) { _ToDuration __t = chrono::duration_cast<_ToDuration>(__d); if (__t > __d) @@ -132,7 +131,7 @@ inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR _ToDuration floor(const duration< return __t; } -template ::value, int> = 0> +template , int> = 0> inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR _ToDuration ceil(const duration<_Rep, _Period>& __d) { _ToDuration __t = chrono::duration_cast<_ToDuration>(__d); if (__t < __d) @@ -140,7 +139,7 @@ inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR _ToDuration ceil(const duration<_ return __t; } -template ::value, int> = 0> +template , int> = 0> inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR _ToDuration round(const duration<_Rep, _Period>& __d) { _ToDuration __lower = chrono::floor<_ToDuration>(__d); _ToDuration __upper = __lower + _ToDuration{1}; @@ -158,7 +157,7 @@ inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR _ToDuration round(const duration< template class _LIBCPP_TEMPLATE_VIS duration { - static_assert(!__is_duration<_Rep>::value, "A duration representation can not be a duration"); + static_assert(!__is_duration_v<_Rep>, "A duration representation can not be a duration"); static_assert(__is_ratio_v<_Period>, "Second template parameter of duration must be a std::ratio"); static_assert(_Period::num > 0, "duration period must be positive"); @@ -434,7 +433,7 @@ operator*(const _Rep1& __s, const duration<_Rep2, _Period>& __d) { template ::value && + __enable_if_t && is_convertible::type>::value, int> = 0> inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR duration::type, _Period> @@ -456,7 +455,7 @@ operator/(const duration<_Rep1, _Period1>& __lhs, const duration<_Rep2, _Period2 template ::value && + __enable_if_t && is_convertible::type>::value, int> = 0> inline _LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR duration::type, _Period> diff --git a/libcxx/include/__chrono/formatter.h b/libcxx/include/__chrono/formatter.h index c1b57209b938d..c579f03d729ce 100644 --- a/libcxx/include/__chrono/formatter.h +++ b/libcxx/include/__chrono/formatter.h @@ -159,7 +159,7 @@ consteval bool __use_fraction() { else if constexpr (__is_specialization_v<_Tp, chrono::zoned_time>) return chrono::hh_mm_ss::fractional_width; # endif - else if constexpr (chrono::__is_duration<_Tp>::value) + else if constexpr (chrono::__is_duration_v<_Tp>) return chrono::hh_mm_ss<_Tp>::fractional_width; else if constexpr (__is_hh_mm_ss<_Tp>) return _Tp::fractional_width; @@ -273,7 +273,7 @@ _LIBCPP_HIDE_FROM_ABI void __format_chrono_using_chrono_specs( } break; case _CharT('j'): - if constexpr (chrono::__is_duration<_Tp>::value) + if constexpr (chrono::__is_duration_v<_Tp>) // Converting a duration where the period has a small ratio to days // may fail to compile. This due to loss of precision in the // conversion. In order to avoid that issue convert to seconds as @@ -285,7 +285,7 @@ _LIBCPP_HIDE_FROM_ABI void __format_chrono_using_chrono_specs( break; case _CharT('q'): - if constexpr (chrono::__is_duration<_Tp>::value) { + if constexpr (chrono::__is_duration_v<_Tp>) { __sstr << chrono::__units_suffix<_CharT, typename _Tp::period>(); break; } @@ -301,7 +301,7 @@ _LIBCPP_HIDE_FROM_ABI void __format_chrono_using_chrono_specs( // MSVC STL ignores precision but uses separator // FMT honours precision and has a bug for separator // https://godbolt.org/z/78b7sMxns - if constexpr (chrono::__is_duration<_Tp>::value) { + if constexpr (chrono::__is_duration_v<_Tp>) { __sstr << std::format(_LIBCPP_STATICALLY_WIDEN(_CharT, "{}"), __value.count()); break; } @@ -627,7 +627,7 @@ __format_chrono(const _Tp& __value, if (__chrono_specs.empty()) __sstr << __value; else { - if constexpr (chrono::__is_duration<_Tp>::value) { + if constexpr (chrono::__is_duration_v<_Tp>) { // A duration can be a user defined arithmetic type. Users may specialize // numeric_limits, but they may not specialize is_signed. if constexpr (numeric_limits::is_signed) { diff --git a/libcxx/include/__chrono/hh_mm_ss.h b/libcxx/include/__chrono/hh_mm_ss.h index 57d2247fe6a3c..c460b11305085 100644 --- a/libcxx/include/__chrono/hh_mm_ss.h +++ b/libcxx/include/__chrono/hh_mm_ss.h @@ -29,7 +29,7 @@ namespace chrono { template class hh_mm_ss { private: - static_assert(__is_duration<_Duration>::value, "template parameter of hh_mm_ss must be a std::chrono::duration"); + static_assert(__is_duration_v<_Duration>, "template parameter of hh_mm_ss must be a std::chrono::duration"); using __CommonType = common_type_t<_Duration, chrono::seconds>; _LIBCPP_HIDE_FROM_ABI static constexpr uint64_t __pow10(unsigned __exp) { diff --git a/libcxx/include/__chrono/time_point.h b/libcxx/include/__chrono/time_point.h index aaf0b098f280e..5e79fa5d257fa 100644 --- a/libcxx/include/__chrono/time_point.h +++ b/libcxx/include/__chrono/time_point.h @@ -32,8 +32,7 @@ namespace chrono { template class _LIBCPP_TEMPLATE_VIS time_point { - static_assert(__is_duration<_Duration>::value, - "Second template parameter of time_point must be a std::chrono::duration"); + static_assert(__is_duration_v<_Duration>, "Second template parameter of time_point must be a std::chrono::duration"); public: typedef _Clock clock; @@ -91,17 +90,17 @@ time_point_cast(const time_point<_Clock, _Duration>& __t) { } #if _LIBCPP_STD_VER >= 17 -template ::value, int> = 0> +template , int> = 0> inline _LIBCPP_HIDE_FROM_ABI constexpr time_point<_Clock, _ToDuration> floor(const time_point<_Clock, _Duration>& __t) { return time_point<_Clock, _ToDuration>{chrono::floor<_ToDuration>(__t.time_since_epoch())}; } -template ::value, int> = 0> +template , int> = 0> inline _LIBCPP_HIDE_FROM_ABI constexpr time_point<_Clock, _ToDuration> ceil(const time_point<_Clock, _Duration>& __t) { return time_point<_Clock, _ToDuration>{chrono::ceil<_ToDuration>(__t.time_since_epoch())}; } -template ::value, int> = 0> +template , int> = 0> inline _LIBCPP_HIDE_FROM_ABI constexpr time_point<_Clock, _ToDuration> round(const time_point<_Clock, _Duration>& __t) { return time_point<_Clock, _ToDuration>{chrono::round<_ToDuration>(__t.time_since_epoch())}; } diff --git a/libcxx/include/__chrono/zoned_time.h b/libcxx/include/__chrono/zoned_time.h index 272fa04742675..f57e65c90a624 100644 --- a/libcxx/include/__chrono/zoned_time.h +++ b/libcxx/include/__chrono/zoned_time.h @@ -58,7 +58,7 @@ struct zoned_traits { template class zoned_time { // [time.zone.zonedtime.ctor]/2 - static_assert(__is_duration<_Duration>::value, + static_assert(__is_duration_v<_Duration>, "the program is ill-formed since _Duration is not a specialization of std::chrono::duration"); // The wording uses the constraints like diff --git a/libcxx/include/__flat_map/flat_map.h b/libcxx/include/__flat_map/flat_map.h index 073b63cd8f0a6..58b362ad7a706 100644 --- a/libcxx/include/__flat_map/flat_map.h +++ b/libcxx/include/__flat_map/flat_map.h @@ -113,7 +113,7 @@ class flat_map { class value_compare { private: key_compare __comp_; - value_compare(key_compare __c) : __comp_(__c) {} + _LIBCPP_HIDE_FROM_ABI value_compare(key_compare __c) : __comp_(__c) {} friend flat_map; public: @@ -659,7 +659,7 @@ class flat_map { template requires __has_input_iterator_category<_InputIterator>::value - void insert(sorted_unique_t, _InputIterator __first, _InputIterator __last) { + _LIBCPP_HIDE_FROM_ABI void insert(sorted_unique_t, _InputIterator __first, _InputIterator __last) { if constexpr (sized_sentinel_for<_InputIterator, _InputIterator>) { __reserve(__last - __first); } diff --git a/libcxx/include/__locale_dir/locale_base_api.h b/libcxx/include/__locale_dir/locale_base_api.h index 5cbe91207ca74..8ed4c29cb8732 100644 --- a/libcxx/include/__locale_dir/locale_base_api.h +++ b/libcxx/include/__locale_dir/locale_base_api.h @@ -265,17 +265,17 @@ _LIBCPP_GCC_DIAGNOSTIC_IGNORED("-Wformat-nonliteral") // GCC doesn't support [[g template _LIBCPP_HIDE_FROM_ABI _LIBCPP_VARIADIC_ATTRIBUTE_FORMAT(__printf__, 4, 5) int __snprintf( char* __s, size_t __n, __locale_t __loc, const char* __format, _Args&&... __args) { - return __libcpp_snprintf_l(__s, __n, __loc, __format, std::forward<_Args>(__args)...); + return std::__libcpp_snprintf_l(__s, __n, __loc, __format, std::forward<_Args>(__args)...); } template _LIBCPP_HIDE_FROM_ABI _LIBCPP_VARIADIC_ATTRIBUTE_FORMAT(__printf__, 3, 4) int __asprintf( char** __s, __locale_t __loc, const char* __format, _Args&&... __args) { - return __libcpp_asprintf_l(__s, __loc, __format, std::forward<_Args>(__args)...); + return std::__libcpp_asprintf_l(__s, __loc, __format, std::forward<_Args>(__args)...); } template _LIBCPP_HIDE_FROM_ABI _LIBCPP_VARIADIC_ATTRIBUTE_FORMAT(__scanf__, 3, 4) int __sscanf( const char* __s, __locale_t __loc, const char* __format, _Args&&... __args) { - return __libcpp_sscanf_l(__s, __loc, __format, std::forward<_Args>(__args)...); + return std::__libcpp_sscanf_l(__s, __loc, __format, std::forward<_Args>(__args)...); } _LIBCPP_DIAGNOSTIC_POP # undef _LIBCPP_VARIADIC_ATTRIBUTE_FORMAT diff --git a/libcxx/include/__ranges/to.h b/libcxx/include/__ranges/to.h index 76249bdd9891c..c937b0656de87 100644 --- a/libcxx/include/__ranges/to.h +++ b/libcxx/include/__ranges/to.h @@ -111,14 +111,14 @@ template for (auto&& __ref : __range) { using _Ref = decltype(__ref); - if constexpr (requires { __result.emplace_back(declval<_Ref>()); }) { + if constexpr (requires { __result.emplace_back(std::declval<_Ref>()); }) { __result.emplace_back(std::forward<_Ref>(__ref)); - } else if constexpr (requires { __result.push_back(declval<_Ref>()); }) { + } else if constexpr (requires { __result.push_back(std::declval<_Ref>()); }) { __result.push_back(std::forward<_Ref>(__ref)); - } else if constexpr (requires { __result.emplace(__result.end(), declval<_Ref>()); }) { + } else if constexpr (requires { __result.emplace(__result.end(), std::declval<_Ref>()); }) { __result.emplace(__result.end(), std::forward<_Ref>(__ref)); } else { - static_assert(requires { __result.insert(__result.end(), declval<_Ref>()); }); + static_assert(requires { __result.insert(__result.end(), std::declval<_Ref>()); }); __result.insert(__result.end(), std::forward<_Ref>(__ref)); } } diff --git a/libcxx/include/ratio b/libcxx/include/ratio index 7600e7c57ad74..bd262437db34f 100644 --- a/libcxx/include/ratio +++ b/libcxx/include/ratio @@ -462,9 +462,7 @@ struct _LIBCPP_TEMPLATE_VIS ratio_greater_equal : _BoolConstant -struct __ratio_gcd { - typedef ratio<__static_gcd<_R1::num, _R2::num>, __static_lcm<_R1::den, _R2::den> > type; -}; +using __ratio_gcd = ratio<__static_gcd<_R1::num, _R2::num>, __static_lcm<_R1::den, _R2::den> >; #if _LIBCPP_STD_VER >= 17 template