16 #ifndef CARMA_TYPE_LIST_H
17 #define CARMA_TYPE_LIST_H
25 void force_keep(T t) {
26 static __attribute__((used)) T x = t;
29 template <
typename...>
32 template <
typename Type,
typename... Types>
43 template <
typename Interfacer,
typename TList>
46 template <
typename Interfacer>
48 template <
typename... Args>
49 static void apply(Args &&...) {}
52 template <
typename Interfacer,
typename Type,
59 :
TypeMap<Interfacer, typename GenericTypeList<Type, Types...>::Tail> {
66 template <
typename... Args>
67 static void apply(Args &&... args) {
68 Interfacer::template call<Head>(std::forward<Args>(args)...);
69 Base::template apply(std::forward<Args>(args)...);
73 template <
typename Interfacer,
typename TList,
typename... Args>
74 void apply(Args &&... args) {
static void apply(Args &&...)
typename TList::Tail Tail
typename TList::Head Head
static void apply(Args &&... args)