From c1ad7d0ead5132520956c8d6ee6a9c6887d38556 Mon Sep 17 00:00:00 2001 From: Stanislaw Halik Date: Sat, 4 May 2024 14:37:06 +0200 Subject: a w --- compat/borrowed-ptr.hpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'compat/borrowed-ptr.hpp') diff --git a/compat/borrowed-ptr.hpp b/compat/borrowed-ptr.hpp index 5134f279..872902a2 100644 --- a/compat/borrowed-ptr.hpp +++ b/compat/borrowed-ptr.hpp @@ -3,16 +3,22 @@ namespace floormat { -template constexpr bptr::bptr(NoInitT) noexcept {}; template constexpr bptr::bptr(std::nullptr_t) noexcept: ptr{nullptr}, blk{nullptr} {} template constexpr bptr::bptr() noexcept: bptr{nullptr} {} -template bptr(T* ptr) -> bptr; - template -CORRADE_ALWAYS_INLINE bptr static_pointer_cast(const bptr& p) noexcept +bptr static_pointer_cast(const bptr& p) noexcept { - return p.template static_pointer_cast(); + static_assert(detail_borrowed_ptr::StaticCastable); + + if (auto* blk = p.blk) [[likely]] + { + auto* ptr = static_cast(p.ptr); + blk->incr(); + return bptr{DirectInit, ptr, blk}; + } + else + return bptr{nullptr}; } } // namespace floormat -- cgit v1.2.3