4#ifndef TETL_ITERATOR_PROJECTED_HPP
5#define TETL_ITERATOR_PROJECTED_HPP
7#include <etl/_iterator/indirect_result_t.hpp>
8#include <etl/_iterator/indirectly_readable.hpp>
9#include <etl/_iterator/indirectly_regular_unary_invocable.hpp>
10#include <etl/_iterator/iter_difference_t.hpp>
11#include <etl/_iterator/weakly_incrementable.hpp>
12#include <etl/_type_traits/remove_cvref.hpp>
18template <
typename Iter,
typename Proj>
19struct projected_impl {
21 using value_type =
etl::remove_cvref_t<
etl::indirect_result_t<Proj&, Iter>>;
22 auto operator*()
const ->
etl::indirect_result_t<Proj&, Iter>;
26template <
typename Iter,
typename Proj>
27 requires weakly_incrementable<Iter>
28struct projected_impl<Iter, Proj> {
30 using value_type =
etl::remove_cvref_t<
etl::indirect_result_t<Proj&, Iter>>;
31 using difference_type =
etl::iter_difference_t<Iter>;
33 auto operator*()
const ->
etl::indirect_result_t<Proj&, Iter>;
40template <etl::indirectly_readable Iter, etl::indirectly_regular_unary_invocable<Iter> Proj>
41using projected =
etl::detail::projected_impl<Iter, Proj>::type;
Definition adjacent_find.hpp:9