#ifndef TYPEASVALUE_SRC_LIST_OPERATION_SECTION_H_ #define TYPEASVALUE_SRC_LIST_OPERATION_SECTION_H_ #include "operation/math.h" namespace tav { namespace detail { template < typename Index, typename Count, typename List > struct take_count_at { typedef Eval>, Count, Tail >> type; }; template < typename Count, typename List > struct take_count_at, Count, List> { typedef Cons< Head, Eval, Substract>, Tail >> > type; }; template < typename Index, typename Count > struct take_count_at { typedef void type; }; template struct take_count_at, Count, void> { typedef void type; }; template struct take_count_at, Size<0>, List> { typedef void type; }; template <> struct take_count_at, Size<0>, void> { typedef void type; }; } template < typename Start, typename End, typename List > using Section = Eval>, Start>, List >>; } #endif // TYPEASVALUE_SRC_LIST_OPERATION_SECTION_H_