Implement std::ranges::less without std::less
* include/bits/range_cmp.h (ranges::less::operator()): Inline the logic from std::less::operator() to remove the dependency on it. From-SVN: r277150
This commit is contained in:
parent
bec3c279a8
commit
7e4b7d7bac
2 changed files with 17 additions and 3 deletions
|
@ -1,3 +1,8 @@
|
|||
2019-10-18 Jonathan Wakely <jwakely@redhat.com>
|
||||
|
||||
* include/bits/range_cmp.h (ranges::less::operator()): Inline the
|
||||
logic from std::less::operator() to remove the dependency on it.
|
||||
|
||||
2019-10-17 Jonathan Wakely <jwakely@redhat.com>
|
||||
|
||||
* doc/doxygen/user.cfg.in (INPUT): Add new C++17 and C++20 headers.
|
||||
|
|
|
@ -121,10 +121,19 @@ namespace ranges
|
|||
noexcept(noexcept(std::declval<_Tp>() < std::declval<_Up>()))
|
||||
{
|
||||
if constexpr (__detail::__less_builtin_ptr_cmp<_Tp, _Up>)
|
||||
return std::less<const volatile void*>{}(
|
||||
static_cast<const volatile void*>(std::forward<_Tp>(__t)),
|
||||
{
|
||||
#ifdef __cpp_lib_is_constant_evaluated
|
||||
if (std::is_constant_evaluated())
|
||||
return __t < __u;
|
||||
#endif
|
||||
auto __x = reinterpret_cast<__UINTPTR_TYPE__>(
|
||||
static_cast<const volatile void*>(std::forward<_Tp>(__t)));
|
||||
auto __y = reinterpret_cast<__UINTPTR_TYPE__>(
|
||||
static_cast<const volatile void*>(std::forward<_Up>(__u)));
|
||||
return std::forward<_Tp>(__t) < std::forward<_Up>(__u);
|
||||
return __x < __y;
|
||||
}
|
||||
else
|
||||
return std::forward<_Tp>(__t) < std::forward<_Up>(__u);
|
||||
}
|
||||
|
||||
using is_transparent = __is_transparent;
|
||||
|
|
Loading…
Add table
Reference in a new issue