diff options
Diffstat (limited to 'chromium/base/memory/raw_ptr.h')
-rw-r--r-- | chromium/base/memory/raw_ptr.h | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/chromium/base/memory/raw_ptr.h b/chromium/base/memory/raw_ptr.h index 4d978e97986..639713cd619 100644 --- a/chromium/base/memory/raw_ptr.h +++ b/chromium/base/memory/raw_ptr.h @@ -1051,6 +1051,37 @@ ALWAYS_INLINE bool operator>=(const raw_ptr<U, I>& lhs, return lhs.GetForComparison() >= rhs.GetForComparison(); } +// Template helpers for working with T* or raw_ptr<T>. +template <typename T> +struct IsPointer : std::false_type {}; + +template <typename T> +struct IsPointer<T*> : std::true_type {}; + +template <typename T, typename I> +struct IsPointer<raw_ptr<T, I>> : std::true_type {}; + +template <typename T> +inline constexpr bool IsPointerV = IsPointer<T>::value; + +template <typename T> +struct RemovePointer { + using type = T; +}; + +template <typename T> +struct RemovePointer<T*> { + using type = T; +}; + +template <typename T, typename I> +struct RemovePointer<raw_ptr<T, I>> { + using type = T; +}; + +template <typename T> +using RemovePointerT = typename RemovePointer<T>::type; + } // namespace base using base::raw_ptr; |