Compare commits

...

2 Commits

Author SHA1 Message Date
27420c507d Make rpc_inc() and rpc_dec() private 2026-02-25 09:15:01 -05:00
93527f8647 Mark move constructor as noexcept 2026-02-25 09:08:50 -05:00

View File

@ -113,7 +113,7 @@ public:
} }
template <typename U> template <typename U>
rcp(rcp<U> && other) : ptr(static_cast<T *>(other.ptr)) rcp(rcp<U> && other) noexcept : ptr(static_cast<T *>(other.ptr))
{ {
static_assert(std::is_base_of<T, U>::value, "rcp: implicit cast must be an upcast"); static_assert(std::is_base_of<T, U>::value, "rcp: implicit cast must be an upcast");
other.ptr = nullptr; other.ptr = nullptr;
@ -275,7 +275,8 @@ rcp<T> rcp_dynamic_cast(rcp<U> && other)
} }
#define rcp_managed_root(classname) \ #define rcp_managed_root(classname) \
public: \ private: \
mutable std::atomic<int> ref_count{0}; \
void rcp_inc() const \ void rcp_inc() const \
{ \ { \
ref_count.fetch_add(1, std::memory_order_relaxed); \ ref_count.fetch_add(1, std::memory_order_relaxed); \
@ -291,8 +292,7 @@ rcp<T> rcp_dynamic_cast(rcp<U> && other)
{ \ { \
return ref_count.load(std::memory_order_relaxed); \ return ref_count.load(std::memory_order_relaxed); \
} \ } \
private: \ template <typename T> friend class rcp; \
mutable std::atomic<int> ref_count{0}; \
rcp_managed(classname) rcp_managed(classname)
#define rcp_managed(classname) \ #define rcp_managed(classname) \