1#ifndef NNGN_UTILS_TYPES_H
2#define NNGN_UTILS_TYPES_H
4#include "utils/utils.h"
8namespace detail {
struct types_tag; }
11concept type_list = std::derived_from<T, detail::types_tag>;
24template<
typename T,
typename ...Ts>
27template<
typename ...Ts>
29 : std::type_identity<types_first_t<decltype((..., types_impl<Ts>{}))>> {};
31template<
typename ...Ts>
#define FWD(...)
Definition: utils.h:18
typename types_first< T >::type types_first_t
Definition: types.h:19
typename types_last< T >::type types_last_t
Definition: types.h:20
types_first< T > type
Definition: types.h:21
types_first_t< T > type_t
Definition: types.h:22
constexpr void map(auto &&f) const
Definition: types.h:33