3#ifndef TETL_FUNCTIONAL_NOT_FN_HPP
4#define TETL_FUNCTIONAL_NOT_FN_HPP
17template <
typename F,
typename... Args>
18concept negate_invocable =
requires(F&& f, Args&&... args) {
27 template <
typename... Args>
28 requires negate_invocable<F&, Args...>
35 template <
typename... Args>
36 requires negate_invocable<F
const&, Args...>
43 template <
typename... Args>
44 requires negate_invocable<F, Args...>
45 constexpr auto operator()(Args&&... args
51 template <
typename... Args>
52 requires negate_invocable<F
const, Args...>
53 constexpr auto operator()(Args&&... args
59 template <
typename... Args>
60 auto operator()(Args&&...) & ->
void =
delete;
62 template <
typename... Args>
63 auto operator()(Args&&...) const& ->
void = delete;
65 template <typename... Args>
66 auto operator()(Args&&...) && ->
void = delete;
68 template <typename... Args>
69 auto operator()(Args&&...) const&& ->
void = delete;
72template <auto ConstFn>
73struct stateless_not_fn {
74 template <
typename... Args>
75 constexpr auto operator()(Args&&... args)
const
86[[nodiscard]]
constexpr auto not_fn(F&& f) -> detail::not_fn_t<etl::decay_t<F>>
91template <auto ConstFn>
92[[nodiscard]]
constexpr auto not_fn() noexcept -> detail::stateless_not_fn<ConstFn>
95 static_assert(ConstFn !=
nullptr);
constexpr auto move(InputIt first, InputIt last, OutputIt destination) -> OutputIt
Moves the elements in the range [first, last), to another range beginning at destination,...
Definition move.hpp:26
Definition adjacent_find.hpp:8
constexpr bool is_pointer_v
Definition is_pointer.hpp:30
constexpr bool is_member_pointer_v
Definition is_member_pointer.hpp:40
constexpr auto not_fn() noexcept -> detail::stateless_not_fn< ConstFn >
Definition not_fn.hpp:92
constexpr auto invoke(F &&f, Args &&... args) -> invoke_result_t< F, Args... >
Definition invoke.hpp:45
constexpr auto forward(remove_reference_t< T > ¶m) noexcept -> T &&
Forwards lvalues as either lvalues or as rvalues, depending on T. When t is a forwarding reference (a...
Definition forward.hpp:18