41 #ifndef CARMA_TYPE_LIST_H
42 #define CARMA_TYPE_LIST_H
50 void force_keep(T t) {
51 static __attribute__((used)) T
x = t;
54 template <
typename...>
57 template <
typename Type,
typename... Types>
68 template <
typename Interfacer,
typename TList>
71 template <
typename Interfacer>
73 template <
typename... Args>
74 static void apply(Args &&...) {}
77 template <
typename Interfacer,
typename Type,
84 :
TypeMap<Interfacer, typename GenericTypeList<Type, Types...>::Tail> {
91 template <
typename... Args>
92 static void apply(Args &&... args) {
93 Interfacer::template call<Head>(std::forward<Args>(args)...);
94 Base::template apply(std::forward<Args>(args)...);
98 template <
typename Interfacer,
typename TList,
typename... Args>
99 void apply(Args &&... args) {
110 #endif // CARMA_TYPE_LIST_H