23#ifndef VCL_TYPES_VARIADIC_TEMPLATES_H
24#define VCL_TYPES_VARIADIC_TEMPLATES_H
47template<
typename... Args>
50 using type = std::tuple_element<0, std::tuple<Args...>>::type;
64template<
typename... Args>
74template<
typename T,
typename U,
typename...
Us>
77 if constexpr (std::is_same_v<T, U>) {
81 if constexpr (
sizeof...(Us)) {
105template<
typename U,
typename... Us>
108 if (
ti ==
typeid(U)) {
112 if constexpr (
sizeof...(Us)) {
126template<
typename T,
typename... Us>
132template<uint I,
typename... T>
135 using type = std::tuple_element_t<I, std::tuple<T...>>;
138template<uint I,
typename... T>
139using TypeAtT =
typename TypeAt<I, T...>::type;
141template<
typename... Args>
144 static constexpr uint value =
sizeof...(Args);
164template<
typename... T>
168 static void apply(F&& f)
A class representing a line segment in n-dimensional space. The class is parameterized by a PointConc...
Definition segment.h:43
typename FirstType< Args... >::type FirstTypeT
Alias for the type of the first type in a pack of types.
Definition variadic_templates.h:65
constexpr uint UINT_NULL
The UINT_NULL value represent a null value of uint that is the maximum value that can be represented ...
Definition base.h:48
constexpr uint indexInTypePack()
Function that returns the index of a Type T in a pack of types (variadic templates)....
Definition variadic_templates.h:75
Get the first type of a pack of types (variadic templates) or a TypeWrapper.
Definition variadic_templates.h:49
Allows to apply a function to each type in a variadic template pack.
Definition variadic_templates.h:166
Definition variadic_templates.h:128
Definition variadic_templates.h:143
Definition variadic_templates.h:134