1#ifndef NNGN_UTILS_TYPES_H
2#define NNGN_UTILS_TYPES_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>
typename types_first< T >::type types_first_t
Definition types.h:19
types_first_t< T > type_t
Definition types.h:22
types_first< T > type
Definition types.h:21
typename types_last< T >::type types_last_t
Definition types.h:20
#define FWD(...)
Definition utils.h:18
constexpr void map(auto &&f) const
Definition types.h:33