18class external_allocator {
22 constexpr external_allocator()
noexcept =
default;
25 constexpr external_allocator(
const external_allocator<U>&)
noexcept {};
27 [[nodiscard]] T* allocate(std::size_t n)
noexcept(
false) {
31 void* addr = GeneralMemoryAllocator::get().allocExternal(n *
sizeof(T));
32 if (addr ==
nullptr) [[unlikely]] {
33 throw deluge::exception::BAD_ALLOC;
35 return static_cast<T*
>(addr);
38 void deallocate(T* p, std::size_t n) { GeneralMemoryAllocator::get().deallocExternal(p); }