12#ifndef ROC_CORE_REF_COUNTED_H_
13#define ROC_CORE_REF_COUNTED_H_
38template <
class T,
class AllocationPolicy>
39class RefCounted :
public NonCopyable<RefCounted<T, AllocationPolicy> >,
40 protected AllocationPolicy {
44 : AllocationPolicy() {
49 : AllocationPolicy(policy) {
54 return impl_.getref();
66 const int current_counter = impl_.decref();
68 if (current_counter == 0) {
70 static_cast<T&
>(
const_cast<RefCounted&
>(*
this)));
Implementation class for reference counter.
int getref() const
Get reference counter.
void incref() const
Increment reference counter.
RefCounted(const AllocationPolicy &policy)
Initialize.
void decref() const
Decrement reference counter.
General-purpose building blocks and platform abstraction layer.
Implementation class for reference counter.