Deluge Firmware 1.3.0
Build date: 2025.04.16
Loading...
Searching...
No Matches
allocate_unique.h
1#pragma once
2#include "definitions_cxx.hpp"
3#include "util/exceptions.h"
4#include <expected>
5#include <memory>
6
7namespace deluge {
8template <typename T, template <typename> typename Alloc>
9std::expected<std::unique_ptr<T, void (*)(T*)>, Error> allocate_unique(std::size_t n) {
10 try {
11 return std::unique_ptr<T, void (*)(T*)>{Alloc<T>().allocate(n), [](T* ptr) { Alloc<T>().deallocate(ptr, 0); }};
12 } catch (deluge::exception e) {
13 return std::unexpected{Error::INSUFFICIENT_RAM};
14 }
15}
16} // namespace deluge