hpx::is_invocable, hpx::is_invocable_r
hpx::is_invocable, hpx::is_invocable_r#
Defined in header hpx/type_traits.hpp.
See Public API for a list of names and headers that are part of the public HPX API.
-
namespace hpx
Variables
-
template<typename F, typename ...Ts>
constexpr bool is_invocable_v = is_invocable<F, Ts...>::value#
-
template<typename R, typename F, typename ...Ts>
constexpr bool is_invocable_r_v = is_invocable_r<R, F, Ts...>::value#
-
template<typename F, typename ...Ts>
constexpr bool is_nothrow_invocable_v = is_nothrow_invocable<F, Ts...>::value#
-
template<typename F, typename ...Ts>
struct is_invocable : public hpx::detail::is_invocable_impl<F&&(Ts&&...)># - #include <is_invocable.hpp>
Determines whether F can be invoked with the arguments Ts…. Formally, determines whether
is well formed when treated as an unevaluated operand, where INVOKE is the operation defined in Callable.INVOKE(std::declval<F>(), std::declval<Ts>()...)
F, R and all types in the parameter pack Ts shall each be a complete type, (possibly cv-qualified) void, or an array of unknown bound. Otherwise, the behavior is undefined. If an instantiation of a template above depends, directly or indirectly, on an incomplete type, and that instantiation could yield a different result if that type were hypothetically completed, the behavior is undefined.
-
template<typename R, typename F, typename ...Ts>
struct is_invocable_r : public hpx::detail::is_invocable_r_impl<F&&(Ts&&...), R># - #include <is_invocable.hpp>
Determines whether F can be invoked with the arguments Ts… to yield a result that is convertible to R and the implicit conversion does not bind a reference to a temporary object (since C++23). If R is cv void, the result can be any type. Formally, determines whether
is well formed when treated as an unevaluated operand, where INVOKE is the operation defined in Callable. Determines whether F can be invoked with the arguments Ts…. Formally, determines whetherINVOKE<R>(std::declval<F>(), std::declval<Ts>()...)
is well formed when treated as an unevaluated operand, where INVOKE is the operation defined in Callable.INVOKE(std::declval<F>(), std::declval<Ts>()...)
F, R and all types in the parameter pack Ts shall each be a complete type, (possibly cv-qualified) void, or an array of unknown bound. Otherwise, the behavior is undefined. If an instantiation of a template above depends, directly or indirectly, on an incomplete type, and that instantiation could yield a different result if that type were hypothetically completed, the behavior is undefined.
-
template<typename F, typename ...Ts>