Iros
 
Loading...
Searching...
No Matches
mutable_vector.h
Go to the documentation of this file.
1#pragma once
2
5#include "di/meta/core.h"
6#include "di/meta/language.h"
8#include "di/meta/vocab.h"
9#include "di/types/prelude.h"
10
11namespace di::concepts::detail {
12template<typename T>
14 requires(T& value, T const& cvalue, usize n) {
15 { cvalue.capacity() } -> SameAs<usize>;
16 { cvalue.max_size() } -> SameAs<usize>;
17 { value.reserve_from_nothing(n) } -> MaybeFallible<void>;
18 { value.assume_size(n) } -> LanguageVoid;
19 { cvalue.grow_capacity(n) } -> SameAs<usize>;
20 };
21}
22
23namespace di::meta::detail {
24template<concepts::detail::MutableVector T>
25using VectorAllocResult = decltype(util::declval<T&>().reserve_from_nothing(util::declval<size_t>()));
26}
Definition operations.h:24
Definition core.h:128
Definition vocab.h:74
Definition operations.h:43
Definition core.h:114
Definition constant_vector.h:5
Definition mutable_vector.h:13
Definition impl.h:7
Definition const_sentinel.h:8
decltype(util::declval< T & >().reserve_from_nothing(util::declval< size_t >())) VectorAllocResult
Definition mutable_vector.h:25
size_t usize
Definition integers.h:33
auto declval() -> meta::AddRValueReference< T >
Definition declval.h:8