tetl 0.1.0
Embedded Template Library
Loading...
Searching...
No Matches
iterator_traits.hpp
Go to the documentation of this file.
1// SPDX-License-Identifier: BSL-1.0
2
3#ifndef TETL_ITERATOR_ITERATOR_TRAITS_HPP
4#define TETL_ITERATOR_ITERATOR_TRAITS_HPP
5
10
11namespace etl {
12
13namespace detail {
14template <typename Iter, typename = etl::void_t<>>
15struct iterator_traits_impl { };
16
17template <typename Iter>
18struct iterator_traits_impl<
19 Iter,
20 etl::void_t< //
21 typename Iter::iterator_category, //
22 typename Iter::value_type, //
23 typename Iter::difference_type, //
24 typename Iter::pointer, //
25 typename Iter::reference //
26 > //
27 > {
28 using iterator_category = typename Iter::iterator_category;
29 using value_type = typename Iter::value_type;
30 using difference_type = typename Iter::difference_type;
31 using pointer = typename Iter::pointer;
32 using reference = typename Iter::reference;
33};
34
35} // namespace detail
36
46template <typename Iter>
47struct iterator_traits : detail::iterator_traits_impl<Iter> { };
48
49template <typename T>
58
59} // namespace etl
60
61#endif // TETL_ITERATOR_ITERATOR_TRAITS_HPP
void void_t
Definition void_t.hpp:10
Definition adjacent_find.hpp:8
remove_const_t< remove_volatile_t< T > > remove_cv_t
Definition remove_cv.hpp:22
TETL_BUILTIN_PTRDIFF ptrdiff_t
etl::ptrdiff_t is the signed integer type of the result of subtracting two pointers.
Definition ptrdiff_t.hpp:14
Defines the category of an iterator. Each tag is an empty type and corresponds to one of the five (un...
Definition tags.hpp:42
T & reference
Definition iterator_traits.hpp:56
contiguous_iterator_tag iterator_concept
Definition iterator_traits.hpp:51
remove_cv_t< T > value_type
Definition iterator_traits.hpp:53
random_access_iterator_tag iterator_category
Definition iterator_traits.hpp:52
T * pointer
Definition iterator_traits.hpp:55
ptrdiff_t difference_type
Definition iterator_traits.hpp:54
iterator_traits is the type trait class that provides uniform interface to the properties of LegacyIt...
Definition iterator_traits.hpp:47
Defines the category of an iterator. Each tag is an empty type and corresponds to one of the five (un...
Definition tags.hpp:36