aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorChris Robinson <[email protected]>2023-01-30 19:10:43 -0800
committerChris Robinson <[email protected]>2023-01-30 19:10:43 -0800
commita461d5f0a3f7b1844ef84591826cf5c1065cc11c (patch)
tree513888df78f4306a61945b73f8cb8e1ebc0952a3
parentc8ad6422d63196040ea68c03874b0ff8f2bf32cb (diff)
Don't try to use std::pointer_traits::to_address
-rw-r--r--common/almalloc.h23
1 files changed, 2 insertions, 21 deletions
diff --git a/common/almalloc.h b/common/almalloc.h
index 270cd76c..a795fc3b 100644
--- a/common/almalloc.h
+++ b/common/almalloc.h
@@ -108,21 +108,6 @@ template<typename T, std::size_t N, typename U, std::size_t M>
constexpr bool operator!=(const allocator<T,N>&, const allocator<U,M>&) noexcept { return false; }
-namespace detail_ {
- template<typename... Ts>
- using void_t = void;
-
- template<typename T, typename = void>
- struct has_to_address_ : public std::false_type { };
- template<typename T>
- struct has_to_address_<T,
- void_t<decltype(std::pointer_traits<T>::to_address(std::declval<const T&>()))>>
- : public std::true_type
- { };
- template<typename T>
- constexpr bool has_to_address = has_to_address_<T>::value;
-} // namespace detail_
-
template<typename T>
constexpr T *to_address(T *p) noexcept
{
@@ -130,12 +115,8 @@ constexpr T *to_address(T *p) noexcept
return p;
}
-template<typename T, std::enable_if_t<detail_::has_to_address<T>,bool> = true>
-constexpr auto to_address(const T& p) noexcept
-{ return std::pointer_traits<T>::to_address(p); }
-
-template<typename T, std::enable_if_t<!detail_::has_to_address<T>,bool> = true>
-constexpr auto to_address(const T& p) noexcept
+template<typename T>
+constexpr auto to_address(const T &p) noexcept
{ return to_address(p.operator->()); }