16 typename std::remove_reference_t<T>::SizeType;
17 typename std::remove_reference_t<T>::ValueType;
18 typename std::remove_reference_t<T>::ConstContainerValueType;
23 typename std::remove_reference_t<T>::KeyType;
24 typename std::remove_reference_t<T>::EntryType;
29 { t.size() } -> std::convertible_to<ice::ncount>;
34 &&
requires(T t,
typename std::remove_reference_t<T>::KeyType key,
typename std::remove_reference_t<T>::ValueType&& val) {
35 { t.size() } -> std::convertible_to<ice::ncount>;
36 { t.find(key) } -> std::convertible_to<typename std::remove_reference_t<T>::ValueType
const*>;
41 { t.capacity() } -> std::convertible_to<ice::ncount>;
42 { t.set_capacity(size) } -> std::convertible_to<void>;
43 { t.clear() } -> std::convertible_to<void>;
49 typename std::remove_reference_t<T>::KeyType key,
50 typename std::remove_reference_t<T>::ValueType&& val)
52 { t.store(key, val) } -> std::convertible_to<typename std::remove_reference_t<T>::ValueType&>;
53 { t.remove(key) } -> std::convertible_to<bool>;
60 typename std::remove_reference_t<T>::Iterator;
61 typename std::remove_reference_t<T>::ReverseIterator;
62 typename std::remove_reference_t<T>::ConstIterator;
63 typename std::remove_reference_t<T>::ConstReverseIterator;
65 { t.data() } -> std::convertible_to<typename std::remove_reference_t<T>::ValueType
const*>;
66 { t.data_view() } -> std::convertible_to<ice::Data>;
71 { t.memory_view() } -> std::convertible_to<ice::Memory>;
84 {
ice::hash(t) } -> std::convertible_to<ice::u64>;
87 template<
typename Node>
89 { node._next } -> std::convertible_to<void*>;
90 { node._next->_next } -> std::convertible_to<void*>;
95 typename std::remove_reference_t<T>::ValueType;
96 { list._head } -> std::convertible_to<typename std::remove_reference_t<T>::ValueType>;
97 { list._tail } -> std::convertible_to<typename std::remove_reference_t<T>::ValueType>;
113 template<ice::concepts::ContainerType ContainerT>
115 std::is_const_v<typename std::remove_reference_t<ContainerT>>,
116 typename std::remove_reference_t<ContainerT>::ConstContainerValueType,
117 typename std::remove_reference_t<ContainerT>::ValueType
120 template<ice::concepts::ContainerType ContainerT>
122 std::is_const_v<typename std::remove_reference_t<ContainerT>>,
123 typename std::remove_reference_t<ContainerT>::ConstIterator,
124 typename std::remove_reference_t<ContainerT>::Iterator
127 template<ice::concepts::ContainerType ContainerT>
129 std::is_const_v<typename std::remove_reference_t<ContainerT>>,
130 typename std::remove_reference_t<ContainerT>::ConstReverseIterator,
131 typename std::remove_reference_t<ContainerT>::ReverseIterator
134 template<ice::concepts::ContainerType ContainerT>
135 using KeyType =
typename std::remove_reference_t<ContainerT>::KeyType;
137 template<ice::concepts::ContainerType ContainerT>
145 template<ice::concepts::ContainerType ContainerT>
148 template<ice::concepts::ContainerType ContainerT>
151 template<ice::concepts::ContainerType ContainerT>
154 template<ice::concepts::ContainerType ContainerT>
157 template<ice::concepts::ContainerType ContainerT>
160 template<ice::concepts::ContainerType ContainerT>
163 template<ice::concepts::ContainerType ContainerT>
166 template<ice::concepts::ContainerType ContainerT>
174 template<
typename TargetT,
typename SourceContainerT>
183 { t.begin() } -> std::convertible_to<ice::container::Iterator<T>>;
184 { t.end() } -> std::convertible_to<ice::container::Iterator<T>>;
189 { t.rbegin() } -> std::convertible_to<ice::container::ReverseIterator<T>>;
190 { t.rend() } -> std::convertible_to<ice::container::ReverseIterator<T>>;
A concept that ensures only types that can be trivially copyable can be 'forced' to use trifial Logic...
Definition container_logic.hxx:25
Definition container_concepts.hxx:33
Definition container_concepts.hxx:22
Definition container_concepts.hxx:47
Definition container_concepts.hxx:175
Definition container_concepts.hxx:28
Definition container_concepts.hxx:15
Definition container_concepts.hxx:59
Definition container_concepts.hxx:70
Definition container_concepts.hxx:83
Definition container_concepts.hxx:182
Definition container_concepts.hxx:94
Definition container_concepts.hxx:88
Definition container_concepts.hxx:79
Definition container_concepts.hxx:40
Definition container_concepts.hxx:188
Definition container_concepts.hxx:75
Definition container_concepts.hxx:12
Definition associative_container.hxx:8
std::conditional_t< std::is_const_v< typename std::remove_reference_t< ContainerT > >, typename std::remove_reference_t< ContainerT >::ConstContainerValueType, typename std::remove_reference_t< ContainerT >::ValueType > ConstCorrectContainerValueType
Definition container_concepts.hxx:114
ice::Span< ice::container::ConstCorrectContainerValueType< ContainerT > > SpanType
Definition container_concepts.hxx:167
ValueType< ContainerT > && ValueRVal
Definition container_concepts.hxx:152
ValueType< ContainerT > * ValuePtr
Definition container_concepts.hxx:155
typename std::remove_reference_t< ContainerT >::KeyType KeyType
Definition container_concepts.hxx:135
std::conditional_t< sizeof(ice::container::KeyType< ContainerT >)<=16 &&std::is_trivially_copyable_v< ice::container::KeyType< ContainerT > >, ice::container::KeyType< ContainerT >, ice::container::KeyType< ContainerT > const & > KeyTypeArg
Definition container_concepts.hxx:138
typename std::remove_reference_t< ContainerT > ContainerType
Definition container_concepts.hxx:164
ConstCorrectContainerReverseIterator< ContainerT > ReverseIterator
Definition container_concepts.hxx:161
std::conditional_t< std::is_const_v< typename std::remove_reference_t< ContainerT > >, typename std::remove_reference_t< ContainerT >::ConstIterator, typename std::remove_reference_t< ContainerT >::Iterator > ConstCorrectContainerIterator
Definition container_concepts.hxx:121
ConstCorrectContainerValueType< ContainerT > ValueType
Definition container_concepts.hxx:146
std::conditional_t< std::is_const_v< typename std::remove_reference_t< ContainerT > >, typename std::remove_reference_t< ContainerT >::ConstReverseIterator, typename std::remove_reference_t< ContainerT >::ReverseIterator > ConstCorrectContainerReverseIterator
Definition container_concepts.hxx:128
ConstCorrectContainerIterator< ContainerT > Iterator
Definition container_concepts.hxx:158
ValueType< ContainerT > & ValueRef
Definition container_concepts.hxx:149
SPDX-License-Identifier: MIT.
Definition array.hxx:12
constexpr auto hash(ice::HeapString<> const &value) noexcept -> ice::u64
Definition heap_string.hxx:251
A view into an array of objects laid out in contiguous memory.
Definition span.hxx:17
Definition container_concepts.hxx:56