Objects of type
T to be protected by RCU inherit from
a specialization
rcu_obj_base<T, D> for some
D.namespace std {
template<class T, class D = default_delete<T>>
class rcu_obj_base {
public:
void retire(D d = D(), rcu_domain& dom = rcu_default_domain()) noexcept;
protected:
rcu_obj_base() = default;
rcu_obj_base(const rcu_obj_base&) = default;
rcu_obj_base(rcu_obj_base&&) = default;
rcu_obj_base& operator=(const rcu_obj_base&) = default;
rcu_obj_base& operator=(rcu_obj_base&&) = default;
~rcu_obj_base() = default;
private:
D deleter;
};
}