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