From 5908f8d1267c60b36a292473401405dd828ceadb Mon Sep 17 00:00:00 2001 From: ADAM David Alan Martin Date: Wed, 25 Oct 2023 04:47:23 -0400 Subject: [PATCH] Add a bit more support for tuple/type-lisp crossover. --- type_lisp.h | 30 ++++++++++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/type_lisp.h b/type_lisp.h index ce71f4f..94d0134 100644 --- a/type_lisp.h +++ b/type_lisp.h @@ -83,6 +83,36 @@ namespace Alepha::Hydrogen ::detail:: type_lisp template< typename 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