[libcxx-commits] [libcxx] [libc++] Fix ambiguity due to non-uglified member typedefs (PR #121664)
Peng Liu via libcxx-commits
libcxx-commits at lists.llvm.org
Thu Jan 9 08:48:28 PST 2025
================
@@ -75,8 +75,10 @@ template <class, class _Cp, bool _IsConst, class _Tp, class _Proj, __enable_if_t
_LIBCPP_HIDE_FROM_ABI _LIBCPP_CONSTEXPR_SINCE_CXX20 __iter_diff_t<__bit_iterator<_Cp, _IsConst> >
__count(__bit_iterator<_Cp, _IsConst> __first, __bit_iterator<_Cp, _IsConst> __last, const _Tp& __value, _Proj&) {
if (__value)
- return std::__count_bool<true>(__first, static_cast<typename _Cp::size_type>(__last - __first));
- return std::__count_bool<false>(__first, static_cast<typename _Cp::size_type>(__last - __first));
+ return std::__count_bool<true>(
+ __first, static_cast<typename __size_difference_type_traits<_Cp>::size_type>(__last - __first));
+ return std::__count_bool<false>(
----------------
winner245 wrote:
Ah, I see what you meant. Yeah, I think your approach works. We can remove these member types instead of uglifying them for `bitset`, as long as `__size_difference_type_traits` directly extracts `{size_t, ptrdiff_t}` when `_Cp` is `__bitset`. This is indeed better than my original approach which keeps these types. Thank you!
https://github.com/llvm/llvm-project/pull/121664
More information about the libcxx-commits
mailing list