forked from Alepha/Alepha
Add a bit more support for tuple/type-lisp crossover.
This commit is contained in:
30
type_lisp.h
30
type_lisp.h
@ -83,6 +83,36 @@ namespace Alepha::Hydrogen ::detail:: type_lisp
|
|||||||
template< typename Element >
|
template< typename Element >
|
||||||
constexpr bool list_contains_v< Nil, Element >{};
|
constexpr bool list_contains_v< Nil, Element >{};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
template< typename Element, typename List >
|
||||||
|
struct cons;
|
||||||
|
|
||||||
|
template< typename Element, typename ... Members >
|
||||||
|
struct cons< Element, TypeList< Members... > >
|
||||||
|
{
|
||||||
|
using type= TypeList< Element, Members... >;
|
||||||
|
};
|
||||||
|
|
||||||
|
namespace exports
|
||||||
|
{
|
||||||
|
template< typename Element, typename List >
|
||||||
|
using cons_t= typename cons< Element, List >::type;
|
||||||
|
}
|
||||||
|
|
||||||
|
template< typename Tuple >
|
||||||
|
struct list_from_tuple;
|
||||||
|
|
||||||
|
namespace exports
|
||||||
|
{
|
||||||
|
template< typename Tuple >
|
||||||
|
using list_from_tuple_t= typename list_from_tuple< Tuple >::type;
|
||||||
|
}
|
||||||
|
|
||||||
|
template< typename ... Members >
|
||||||
|
struct list_from_tuple< std::tuple< Members... > >
|
||||||
|
{
|
||||||
|
using type= TypeList< Members... >;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
namespace Alepha::Hydrogen::inline exports::inline type_lisp
|
namespace Alepha::Hydrogen::inline exports::inline type_lisp
|
||||||
|
|||||||
Reference in New Issue
Block a user