1#ifndef TATOOINE_INVOCABLE_WITH_N_TYPES_H
2#define TATOOINE_INVOCABLE_WITH_N_TYPES_H
11template <
typename F, std::size_t N,
typename... Ts>
15 template <
typename T, std::size_t... NTimes>
16 static constexpr bool check(std::index_sequence<NTimes...>) {
17 return std::is_invocable_v<F,
decltype(((void)NTimes, T{}))...>;
22 (check<Ts>(std::make_index_sequence<N>{}) && ...);
25template <
typename F, std::
size_t N>
28 char32_t, wchar_t, short, unsigned short, int,
29 unsigned int, long, unsigned long, long long,
30 unsigned long long> {};
32template <
typename F, std::
size_t N>
36template <
typename F, std::
size_t N>
38 is_invocable_with_n_integrals<F, N>;
40template <
typename F, std::
size_t N>
44template <
typename F, std::
size_t N>
48template <
typename F, std::
size_t N>
50 is_invocable_with_n_floating_points<F, N>;
Definition: invocable_with_n_types.h:49
Definition: invocable_with_n_types.h:37
Definition: algorithm.h:6
static constexpr auto is_invocable_with_n_integrals
Definition: invocable_with_n_types.h:33
static constexpr bool is_invocable_with_n_floating_points
Definition: invocable_with_n_types.h:45
Definition: invocable_with_n_types.h:42
Definition: invocable_with_n_types.h:30
Definition: invocable_with_n_types.h:12
static constexpr bool check(std::index_sequence< NTimes... >)
Definition: invocable_with_n_types.h:16
static constexpr bool value
Definition: invocable_with_n_types.h:21