1#ifndef TATOOINE_GL_UTILITY_H
2#define TATOOINE_GL_UTILITY_H
16template <
typename T,
size_t N>
18 : std::integral_constant<GLenum, gl_type_v<T>> {};
19template <
typename T>
requires std::is_arithmetic_v<T>
20struct value_type<T> : std::integral_constant<GLenum, gl_type_v<T>> {};
21template <
typename T,
size_t N>
22struct value_type<
vec<T, N>> : std::integral_constant<GLenum, gl_type_v<T>> {};
25template <
typename F,
typename... Ts>
27 using discard_t =
int[];
30 (void)discard_t{0, ((void)f(std::forward<Ts>(ts)), 0)...};
33template <
typename T,
typename... Ts>
37template <
typename... Ts>
Definition: ansiformat.h:6
static constexpr auto value_type_v
Definition: utility.h:15
void for_each(F &&f, Ts &&... ts)
Applies function F to all elements of parameter pack ts.
Definition: utility.h:26
typename head< Ts... >::type head_t
Definition: utility.h:38
T type
Definition: utility.h:35