From 3162c9e21447b3d994f7486fc8d2ee9b681140b4 Mon Sep 17 00:00:00 2001 From: Daniel Bertalan Date: Fri, 25 Jun 2021 07:33:15 +0200 Subject: [PATCH] AK: Make `(Nonnull)OwnPtr` work with abstract classes Clang produced a compile error at this requires statement if `T` was an abstract class. --- AK/NonnullOwnPtr.h | 2 +- AK/OwnPtr.h | 3 +-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/AK/NonnullOwnPtr.h b/AK/NonnullOwnPtr.h index 1553a9c562f..58a3f3a7bfa 100644 --- a/AK/NonnullOwnPtr.h +++ b/AK/NonnullOwnPtr.h @@ -33,7 +33,7 @@ public: : m_ptr(&ptr) { static_assert( - requires { requires typename T::AllowOwnPtr()(); } || !requires(T obj) { requires !typename T::AllowOwnPtr()(); obj.ref(); obj.unref(); }, + requires { requires typename T::AllowOwnPtr()(); } || !requires { requires !typename T::AllowOwnPtr()(); declval().ref(); declval().unref(); }, "Use NonnullRefPtr<> for RefCounted types"); } NonnullOwnPtr(NonnullOwnPtr&& other) diff --git a/AK/OwnPtr.h b/AK/OwnPtr.h index 3eb42d1c360..0fba019ddf1 100644 --- a/AK/OwnPtr.h +++ b/AK/OwnPtr.h @@ -184,8 +184,7 @@ protected: : m_ptr(ptr) { static_assert( - requires { requires typename T::AllowOwnPtr()(); } || !requires(T obj) { requires !typename T::AllowOwnPtr()(); obj.ref(); obj.unref(); }, - "Use RefPtr<> for RefCounted types"); + requires { requires typename T::AllowOwnPtr()(); } || !requires { requires !typename T::AllowOwnPtr()(); declval().ref(); declval().unref(); }, "Use RefPtr<> for RefCounted types"); } private: