diff options
author | Chris Robinson <[email protected]> | 2023-01-30 19:10:43 -0800 |
---|---|---|
committer | Chris Robinson <[email protected]> | 2023-01-30 19:10:43 -0800 |
commit | a461d5f0a3f7b1844ef84591826cf5c1065cc11c (patch) | |
tree | 513888df78f4306a61945b73f8cb8e1ebc0952a3 /common | |
parent | c8ad6422d63196040ea68c03874b0ff8f2bf32cb (diff) |
Don't try to use std::pointer_traits::to_address
Diffstat (limited to 'common')
-rw-r--r-- | common/almalloc.h | 23 |
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->()); } |