void release() { atom_sub(&ref_); if(ref_ == 0) { T* obj = static_cast<T*>(this); mem_delete_object(obj); } }
variable<T> atom_sub( const detail::uav_expression_base<T,E,C>& uav, const typename T::component_type& v1 ) { return atom_sub(uav,detail::value<T>(v1)); }
variable<T> atom_dec( const detail::uav_expression_base<T,E,C>& uav ) { return atom_sub(uav,detail::value<T>(1)); }