3#ifndef TETL_TYPE_TRAITS_IS_INVOCABLE_HPP
4#define TETL_TYPE_TRAITS_IS_INVOCABLE_HPP
15template <
typename Result,
typename Ret,
bool = etl::is_
void_v<Ret>,
typename =
void>
18template <
typename Result,
typename Ret>
19struct is_invocable_impl<Result, Ret, true, etl::
void_t<typename Result::type>> :
etl::true_type { };
22template <
typename Result,
typename Ret>
23struct is_invocable_impl<Result, Ret, false, etl::
void_t<typename Result::type>> {
24 static auto get_t() ->
typename Result::type;
26 static auto use_t(T ) -> void;
27 template <typename T, typename = decltype(use_t<T>(get_t()))>
31 using type =
decltype(check_converts_to_t<Ret>(1));
36template <
typename Fn,
typename... ArgTypes>
39template <
typename Fn,
typename... ArgTypes>
void void_t
Definition void_t.hpp:10
Definition adjacent_find.hpp:8
constexpr auto is_invocable_v
Definition is_invocable.hpp:40
bool_constant< true > true_type
Definition bool_constant.hpp:13
bool_constant< false > false_type
Definition bool_constant.hpp:14
integral_constant< bool, Val > type
Definition integral_constant.hpp:12
Definition is_invocable.hpp:37