Deluge Firmware
1.3.0
Build date: 2026.08.29
Toggle main menu visibility
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
7
namespace
deluge {
8
template
<
typename
T,
template
<
typename
>
typename
Alloc>
9
std::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