Iros
 
Loading...
Searching...
No Matches
vector_iterator.h
Go to the documentation of this file.
1#pragma once
2
7#include "di/meta/language.h"
8
9namespace di::container::vector {
10template<concepts::detail::ConstantVector Vec, typename Iter = meta::detail::VectorIterator<Vec>,
11 typename CIter = meta::detail::VectorConstIterator<Vec>>
12requires(!concepts::Const<Vec>)
13constexpr auto iterator(Vec&, CIter iterator) -> Iter {
14 return const_cast<Iter>(iterator);
15}
16
17template<concepts::detail::ConstantVector Vec, typename Iter = meta::detail::VectorIterator<Vec>>
18requires(!concepts::Const<Vec>)
19constexpr auto iterator(Vec& vector, size_t index) -> Iter {
20 DI_ASSERT(index <= vector::size(vector));
21 return vector::begin(vector) + index;
22}
23
24template<concepts::detail::ConstantVector Vec, typename CIter = meta::detail::VectorConstIterator<Vec>>
25constexpr auto iterator(Vec const& vector, size_t index) -> CIter {
26 DI_ASSERT(index <= vector::size(vector));
27 return vector::begin(vector) + index;
28}
29}
#define DI_ASSERT(...)
Definition assert_bool.h:7
Definition language.h:18
Definition vector_append_container.h:17
constexpr auto size(concepts::detail::ConstantVector auto const &vector) -> size_t
Definition vector_size.h:7
constexpr auto iterator(Vec &, CIter iterator) -> Iter
Definition vector_iterator.h:13
constexpr auto begin(concepts::detail::ConstantVector auto &vector)
Definition vector_begin.h:7