25#ifndef JOIN_CORE_TRAITS_HPP
26#define JOIN_CORE_TRAITS_HPP
37 template <
typename... Ts>
46 void operator() ()
const;
52 template <
typename First,
typename... Ts>
57 std::type_identity<First> operator() (First)
const;
63 template <
typename... Ts>
68 std::type_identity<void> operator() ()
const;
74 template <
typename T,
typename... Ts>
80 template <
typename T,
typename... Ts>
86 template <
typename T,
typename First,
typename... Ts>
88 std::is_same_v<T, First> ? 0 :
find_index_v<T, Ts...> + 1;
93 template <
typename T,
typename... Ts>
94 inline constexpr std::size_t
count_v = (std::size_t{0} + ... + std::is_same_v<T, Ts>);
99 template <
typename T,
typename... Ts>
Definition acceptor.hpp:32
constexpr std::size_t count_v
count the number of time a type appears in a parameter pack.
Definition traits.hpp:94
constexpr std::size_t find_index_v
get element position in a parameter pack according its type.
Definition traits.hpp:81
constexpr bool is_unique_v
check if a type only appears one time in a parameter pack.
Definition traits.hpp:100
typename std::invoke_result_t< overload< Ts... >, T >::type match_t
find a type that match one of the alternatives of a parameter pack.
Definition traits.hpp:75
overload resolution.
Definition traits.hpp:38