60 template<
typename T,
typename...>
61 struct IsInList : std::false_type
64 template<
typename T,
typename First,
typename... Rest>
65 struct IsInList<T, First, Rest...>
66 : std::integral_constant<bool, std::is_same<T, First>::value || IsInList<T, Rest...>::value>
69 template<
typename T,
typename Tuple>
72 template<
typename T,
typename... Ts>
73 struct IsInTuple<T, std::tuple<Ts...>> : IsInList<T, Ts...>
76 template<
typename Tuple,
typename... Args>
77 struct AllArgsAreInTuple : std::true_type
80 template<
typename Tuple,
typename Arg,
typename... Args>
81 struct AllArgsAreInTuple<Tuple, Arg, Args...>
82 : std::integral_constant<bool, IsInTuple<Arg, Tuple>::value && AllArgsAreInTuple<Tuple, Args...>::value>
85 template<
typename... Args>
86 struct AllArgsDecayedAreUnique : std::true_type
89 template<
typename Head,
typename... Tail>
90 struct AllArgsDecayedAreUnique<Head, Tail...>
91 : std::integral_constant<
93 !IsInList<typename std::decay<Head>::type, typename std::decay<Tail>::type...>::value
94 && AllArgsDecayedAreUnique<Tail...>::value>
97 template<
typename... Ts>
100 template<
typename... T1s,
typename... T2s,
typename... Rest>
101 struct Concatenate<std::tuple<T1s...>, std::tuple<T2s...>, Rest...>
102 : Concatenate<std::tuple<T1s..., T2s...>, Rest...>
105 template<
typename... T1s>
106 struct Concatenate<std::tuple<T1s...>>
108 using Type = std::tuple<T1s...>;
117 template<
typename...>
118 struct Conjunction : std::true_type
122 struct Conjunction<T> : T
125 template<
typename T,
typename... Ts>
126 struct Conjunction<T, Ts...> : std::conditional<T::value, Conjunction<Ts...>, std::false_type>::type
The main Zivid namespace. All Zivid code is found here.
Definition Application.h:56