150 :
public inline_map_detail::inline_map_base<Key, Value, Compare>
151 , inline_map_detail::inline_map_passkey_base<inline_map_detail::inline_map_base<Key, Value, Compare>>
161 template <
typename OtherKey,
typename OtherValue, std::size_t OtherCapacity,
typename OtherCompare>
168 template <
typename OtherKey>
174 template <
typename OtherKey>
175 static constexpr bool transparent_insertion_supported{
183 template <
typename OtherKey>
184 static constexpr bool
196 template <
typename OtherKey = Key>
200 using map_base_type = inline_map_detail::inline_map_base<Key, Value, Compare>;
206 using inline_map_passkey =
typename inline_map_detail::inline_map_passkey_base<map_base_type>::inline_map_passkey;
211 template <
bool IsConst>
213 :
public inline_container_detail::iterator_interface<iterator_impl<IsConst>>
214 , inline_map_detail::inline_map_passkey_base<map_base_type> {
216 using iterator_interface = inline_container_detail::iterator_interface<iterator_impl>;
219 using inline_map_passkey =
typename inline_map_detail::inline_map_passkey_base<map_base_type>::inline_map_passkey;
223 using map_type = conditional_t<IsConst, inline_map
const, inline_map>;
230 using non_const_iterator = iterator_impl<
false>;
233 using implicit_conversion_type = conditional_t<IsConst, non_const_iterator, non_constructible_dummy>;
249 friend auto step_forward(inline_container_detail::iterator_interface_tag, iterator_impl& iter)
noexcept ->
void {
256 friend auto step_backward(inline_container_detail::iterator_interface_tag, iterator_impl& iter)
noexcept ->
void {
268 iterator_impl()
noexcept
274 iterator_impl(iterator_impl
const& other) =
default;
277 iterator_impl(iterator_impl&& other) =
default;
280 auto operator=(iterator_impl
const& other) -> iterator_impl& =
default;
283 auto operator=(iterator_impl&& other) -> iterator_impl& =
default;
286 ~iterator_impl() =
default;
292 iterator_impl(inline_map_passkey, map_type* map, index_type pos)
noexcept
293 : iterator_interface{},
303 iterator_impl(implicit_conversion_type other)
noexcept
305 inline_map_passkey{},
306 other.get_map(inline_map_passkey{}),
307 other.get_index(inline_map_passkey{})
312 using iterator_category = std::bidirectional_iterator_tag;
314 using value_type = std::pair<Key
const, Value>;
316 using difference_type = std::ptrdiff_t;
318 using pointer = conditional_t<IsConst, value_type
const*, value_type*>;
320 using reference = conditional_t<IsConst, value_type
const&, value_type&>;
329 auto operator*()
const noexcept -> reference {
return *map_->entry_at_index(pos_); }
341 friend auto operator==(iterator_impl
const& lhs, iterator_impl
const& rhs)
noexcept ->
bool {
342 return lhs.pos_ == rhs.pos_;
352 auto is_iterator_for(map_type* map)
const noexcept ->
bool {
return map == map_; }
357 auto get_map(inline_map_passkey)
const noexcept -> map_type* {
return map_; }
362 auto get_index(inline_map_passkey)
const noexcept -> index_type {
return pos_; }
367 using value_type =
typename map_base_type::value_type;
369 using key_type =
typename map_base_type::key_type;
371 using mapped_type =
typename map_base_type::mapped_type;
373 using key_compare =
typename map_base_type::compare_type;
375 using size_type =
typename map_base_type::size_type;
377 using pointer = value_type*;
379 using const_pointer = value_type
const*;
381 using reference = value_type&;
383 using const_reference = value_type
const&;
386 using iterator = iterator_impl<
false>;
388 using const_iterator = iterator_impl<
true>;
398 using difference_type =
typename iterator::difference_type;
406 using inline_map_base_type = map_base_type;
806 auto operator=(copy_assign_source
const& other)
noexcept(
810 if (
this != &other) {
886 if (
this != &
other) {
995 "Compare must provide a valid comparison for (const Key&, const K&)"
1009 "Compare must provide a valid comparison for (const Key&, const K&)"
1031 "Compare must provide a valid comparison for (const Key&, const K&)"
1051 "Compare must provide a valid comparison for (const Key&, const K&)"
1080 "Compare must provide a valid comparison for (const Key&, const K&)"
1095 "Compare must provide a valid comparison for (const Key&, const K&)"
1123 "Compare must provide a valid comparison for (const Key&, const K&)"
1138 "Compare must provide a valid comparison for (const Key&, const K&)"
1174 "Compare must provide a valid comparison for (const Key&, const K&)"
1191 "Compare must provide a valid comparison for (const Key&, const K&)"
1224 "Compare must provide a valid comparison for (const Key&, const K&)"
1271 "Compare must provide a valid comparison for (const Key&, const K&)"
1292 "Compare must provide a valid comparison for (const Key&, const K&)"
1433 "Compare must provide a valid comparison for (const Key&, const K&)"
1510 "Compare must provide a valid comparison for (const Key&, const K&)"
1568 "Compare must provide a valid comparison for (const Key&, const K&)"
1768 auto insert_elements_if_they_fit(std::initializer_list<value_type>
const& init_list)
noexcept(
1769 comparison_is_noexcept<> && std::is_nothrow_copy_constructible<Key>::value &&
1770 std::is_nothrow_copy_constructible<Value>::value
1772 for (
auto const& element : init_list) {
1773 auto pos_info = lower_bound_index(element.first);
1774 if (pos_info.order == strong_ordering::equal) {
1777 if (size() == Capacity) {
1780 std::ignore = insert_at(pos_info.index, element.first, element.second);
1789 auto entry_at_index(index_type index)
noexcept -> entry_type& {
return values_[indices_[index]]; }
1794 auto entry_at_index(index_type index)
const noexcept -> entry_type
const& {
return values_[indices_[index]]; }
1875 template <
typename Self>
2298 array<entry_type, Capacity> values_{};
2324template <
class Key,
class Value, std::size_t Capacity,
class Compare>
2325struct container_base_type<inline_map<Key, Value, Capacity, Compare>> {
2328 using type = inline_map_detail::inline_map_base<Key, Value, Compare>;
inline_map(move_construct_source &&other) noexcept(std::is_nothrow_move_constructible< Compare >::value &&std::is_nothrow_copy_constructible< Key >::value &&std::is_nothrow_move_constructible< Value >::value)
Move the source map into the new instance, so the new map has the same size, comparator and elements ...
Definition map.hpp:711
auto find(Key const &key) const noexcept(comparison_is_noexcept<>) -> const_iterator
Obtain an iterator referring to the element equivalent to the supplied key, if there is one.
Definition map.hpp:984
auto operator=(copy_assign_source const &other) noexcept(std::is_nothrow_copy_assignable< Compare >::value &&std::is_nothrow_copy_constructible< Key >::value &&std::is_nothrow_copy_constructible< Value >::value) -> inline_map &
copy-assignment of a map with the same capacity.
Definition map.hpp:806
auto find(Key const &key) noexcept(comparison_is_noexcept<>) -> iterator
Obtain an iterator referring to the element equivalent to the supplied key, if there is one.
Definition map.hpp:979
constexpr std::integral_constant< typename inline_map< Key, Value, Capacity, Compare >::size_type, Capacity > inline_map< Key, Value, Capacity, Compare >::max_size
Definition map.hpp:2313
Copyright 2026, Toyota Motor Corporation.
Definition array_exceptions_disabled.cpp:10