HikoGUI
A low latency retained GUI
Loading...
Searching...
No Matches
meta.hpp
1// Copyright 2019 Pokitec
2// All rights reserved.
3
4#pragma once
5
6#include <type_traits>
7
8namespace tt {
9
10template<typename T, typename Head, typename... Tail>
11constexpr size_t count_type_if(size_t count = 0) {
12 if constexpr (sizeof...(Tail) > 0) {
13 return count_type_if<T, Tail...>(std::is_same_v<T, Head> ? count + 1 : count);
14 } else {
15 return std::is_same_v<T, Head> ? count + 1 : count;
16 }
17}
18
19template<typename T, typename Head, typename... Tail>
20constexpr size_t index_of_type(size_t index = 0) {
21 static_assert(std::is_same_v<T, Head> || sizeof...(Tail) > 0, "Could not find type");
22 if constexpr (sizeof...(Tail) > 0) {
23 return (std::is_same_v<T, Head>) ? index : index_of_type<T, Tail...>(index + 1);
24 } else {
25 return index;
26 }
27}
28
29}
T count(T... args)