13 #include <type_traits>
20 namespace TrackFindingCDC {
29 template <
class... Ts>
30 static inline void evalVariadic(Ts&& ... expressions __attribute__((unused)))
41 template <
class... Ts>
42 explicit EvalVariadic(Ts&& ... expressions __attribute__((unused)))
49 template<
class... ATypes>
60 struct FirstTypeImpl<AType> {
66 template<
class AType,
class... ATypes>
73 template<
class... ATypes>
79 template<
class AType,
class ATuple>
85 std::integral_constant<std::size_t, 0> {};
88 template<
class AType,
class AHeadType,
class... ATailTypes>
90 std::integral_constant < std::size_t, GetIndexInTuple<AType, std::tuple<ATailTypes...> >::value + 1 > {};
93 template<
class AType,
class... ATailTypes>
95 std::integral_constant< std::size_t, 0> {};
98 template<
class T,
class ATuple>
100 std::integral_constant < bool, (GetIndexInTuple<T, ATuple>::value < std::tuple_size<ATuple>::value) >;