tetl 0.1.0
Embedded Template Library
Loading...
Searching...
No Matches
indirectly_regular_unary_invocable.hpp
Go to the documentation of this file.
1// SPDX-License-Identifier: BSL-1.0
2// SPDX-FileCopyrightText: Copyright (C) 2024 Tobias Hienzsch
3
4#ifndef TETL_ITERATOR_INDIRECTLY_REGULAR_UNARY_INVOCABLE_HPP
5#define TETL_ITERATOR_INDIRECTLY_REGULAR_UNARY_INVOCABLE_HPP
6
7#include <etl/_concepts/common_reference_with.hpp>
8#include <etl/_concepts/copy_constructible.hpp>
9#include <etl/_concepts/regular_invocable.hpp>
10#include <etl/_iterator/indirectly_readable.hpp>
11#include <etl/_iterator/iter_common_reference_t.hpp>
12#include <etl/_iterator/iter_reference_t.hpp>
13#include <etl/_iterator/iter_value_t.hpp>
14#include <etl/_type_traits/invoke_result.hpp>
15
16namespace etl {
17
18// clang-format off
19template<typename F,typename Iter>
20concept indirectly_regular_unary_invocable =
21 etl::indirectly_readable<Iter>
22 and etl::copy_constructible<F>
23 and etl::regular_invocable<F&, etl::iter_value_t<Iter>&>
24 and etl::regular_invocable<F&, etl::iter_reference_t<Iter>>
25 and etl::regular_invocable<F&, etl::iter_common_reference_t<Iter>>
26 and etl::common_reference_with<etl::invoke_result_t<F&, etl::iter_value_t<Iter>&>, etl::invoke_result_t<F&, etl::iter_reference_t<Iter>>>;
27// clang-format on
28
29} // namespace etl
30
31#endif // TETL_ITERATOR_INDIRECTLY_REGULAR_UNARY_INVOCABLE_HPP
Definition adjacent_find.hpp:9