From 1f87a09503c480ec6b155267664e85ca2bdb7904 Mon Sep 17 00:00:00 2001 From: Tim Ledbetter Date: Fri, 31 Jan 2025 09:27:05 +0000 Subject: [PATCH] AK: Allow `as_if` to perform dynamic cast when necessary This means that if `is(x)` is true, that `as_if(x)` should always succeed. --- AK/TypeCasts.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/AK/TypeCasts.h b/AK/TypeCasts.h index 4a2c2de6218..0ee0cb5fb82 100644 --- a/AK/TypeCasts.h +++ b/AK/TypeCasts.h @@ -56,7 +56,11 @@ ALWAYS_INLINE CopyConst* as_if(InputType& input) { if (!is(input)) return nullptr; - return static_cast*>(&input); + if constexpr (IsBaseOf) { + return static_cast*>(&input); + } else { + return dynamic_cast*>(&input); + } } template