14 #ifndef RANGES_V3_FUNCTIONAL_CONCEPTS_HPP
15 #define RANGES_V3_FUNCTIONAL_CONCEPTS_HPP
21 #include <range/v3/detail/prologue.hpp>
30 #if defined(_MSC_VER) && !defined(__clang__)
33 template<
typename Fun,
typename... Args>
35 std::is_invocable_v<Fun, Args...>;
39 template<
typename Fun,
typename... Args>
43 invoke((Fun &&) fn, std::declval<Args>()...)
47 template<
typename Fun,
typename... Args>
49 CPP_requires_ref(ranges::invocable_, Fun, Args...);
54 template<
typename Fun,
typename... Args>
61 template<
typename Fun,
typename... Args>
67 decltype(
invoke((Fun &&) fn, std::declval<Args>()...)),
72 template<
typename Fun,
typename... Args>
75 CPP_requires_ref(ranges::predicate_, Fun, Args...);
79 template<
typename R,
typename T,
typename U>
88 template<
typename R,
typename T,
typename U>
104 #include <range/v3/detail/epilogue.hpp>
CPP_concept invocable
\concept invocable
Definition: concepts.hpp:48
CPP_concept regular_invocable
\concept regular_invocable
Definition: concepts.hpp:55
CPP_concept strict_weak_order
\concept strict_weak_order
Definition: concepts.hpp:89
CPP_concept predicate
\concept predicate
Definition: concepts.hpp:73
CPP_concept relation
\concept relation
Definition: concepts.hpp:80
CPP_requires(sized_range_, requires(T &t)(ranges::size(t)))
\concept sized_range_
typename Fn::template invoke< Args... > invoke
Evaluate the invocable Fn with the arguments Args.
Definition: meta.hpp:541