void delete_persistent_atomic(typename detail::pp_if_array<T>::type &ptr, std::size_t N) { /* we CAN'T call destructor */ pmemobj_free(ptr.raw_ptr()); }
void make_persistent_atomic(pool_base &pool, typename detail::pp_if_array<T>::type &ptr, std::size_t N) { typedef typename detail::pp_array_type<T>::type I; auto ret = pmemobj_alloc(pool.get_handle(), ptr.raw_ptr(), sizeof(I) * N, detail::type_num<I>(), &detail::array_constructor<I>, static_cast<void *>(&N)); if (ret != 0) throw std::bad_alloc(); }