Iros
 
Loading...
Searching...
No Matches
allocator.h
Go to the documentation of this file.
1#pragma once
2
5#include "di/meta/vocab.h"
6
7namespace di::concepts {
8template<typename T>
9concept Allocator = requires(T& allocator, void* data, usize size, usize alignment) {
10 { di::allocate(allocator, size, alignment) } -> MaybeFallible<AllocationResult<>>;
11 di::deallocate(allocator, data, size, alignment);
12};
13
14template<typename T>
15concept InfallibleAllocator = Allocator<T> && requires(T& allocator, void* data, usize size, usize alignment) {
16 { di::allocate(allocator, size, alignment) } -> SameAs<AllocationResult<>>;
17};
18
19template<typename T>
21}
22
23namespace di::meta {
24template<concepts::Allocator Alloc, typename T = void>
26}
27
28namespace di {
30
32}
Definition allocator.h:9
Definition allocator.h:20
Definition allocator.h:15
Definition vocab.h:74
Definition core.h:114
Definition any_storable.h:9
Definition merge_interfaces.h:6
meta::LikeExpected< decltype(di::allocate(util::declval< Alloc & >(), 0, 0)), T > AllocatorResult
Definition allocator.h:25
Type< detail::LikeExpectedHelper< T, U > > LikeExpected
Definition vocab.h:60
size_t usize
Definition integers.h:33
Definition zstring_parser.h:9
constexpr auto allocate
Definition allocate.h:26
constexpr auto deallocate
Definition deallocate.h:23
constexpr auto size
Definition size.h:54
constexpr auto data
Definition data.h:51