#ifndef INCLUDED_SHARED_PTR #define INCLUDED_SHARED_PTR // adapter that allows calling page_aligned_free as a shared_ptr deleter. class PageAlignedDeleter { public: PageAlignedDeleter(size_t size); void operator()(u8* p); private: size_t m_size; }; template struct DummyDeleter { void operator()(T*) { } }; template shared_ptr DummySharedPtr(T* ptr) { return shared_ptr(ptr, DummyDeleter()); } LIB_API shared_ptr Allocate(size_t size); #endif // #ifndef INCLUDED_SHARED_PTR