#ifndef TYPEASVALUE_SRC_LIST_LIST_H_ #define TYPEASVALUE_SRC_LIST_LIST_H_ #include "cons.h" namespace tav { namespace detail { template < typename Head, typename... Tail > struct List { typedef Eval> >> type; }; template struct List { typedef Eval> type; }; template struct List { typedef Eval> type; }; template struct List { typedef Eval> type; }; template <> struct List { typedef void type; }; } template using List = Eval>; template < typename Type, Type... Values > using ListOfType = List< std::integral_constant... >; template using Head = Car; template using Tail = Cdr; } #include "operation/basic.h" #include "operation/nth.h" #include "operation/take.h" #include "operation/drop.h" #include "operation/append.h" #include "operation/concatenate.h" #endif // TYPEASVALUE_SRC_LIST_LIST_H_