Commit 7e4b7d7b by Jonathan Wakely Committed by Jonathan Wakely

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
parent bec3c279
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> 2019-10-17 Jonathan Wakely <jwakely@redhat.com>
* doc/doxygen/user.cfg.in (INPUT): Add new C++17 and C++20 headers. * doc/doxygen/user.cfg.in (INPUT): Add new C++17 and C++20 headers.
......
...@@ -121,10 +121,19 @@ namespace ranges ...@@ -121,10 +121,19 @@ namespace ranges
noexcept(noexcept(std::declval<_Tp>() < std::declval<_Up>())) noexcept(noexcept(std::declval<_Tp>() < std::declval<_Up>()))
{ {
if constexpr (__detail::__less_builtin_ptr_cmp<_Tp, _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))); 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; using is_transparent = __is_transparent;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment