Concept CE::Memory::Objects::ReservationAllocator
-
template<typename Allocator, typename T>
concept ReservationAllocator template<typename Allocator, typename T> concept ReservationAllocator = requires(Allocator& allocator, std::size_t count, T* ptr) { typename Allocator::value_type; typename Allocator::manager_type; requires std::same_as<typename Allocator::value_type, T>; requires ReservableManager<typename Allocator::manager_type, T>; { allocator.context() } -> std::same_as<std::shared_ptr<typename Allocator::manager_type::release_context_type>>; { allocator.allocate(count) } -> std::same_as<T*>; { allocator.deallocate(ptr, count) } -> std::same_as<void>; }
Allocator interface accepted by CE::Memory::Objects::Reservation: the allocator must identify a ReservableManager and expose its retained release context.
Ordinary allocate/deallocate still operate on whole allocations.