#ifndef TYPEASVALUE_SRC_LIST_OPERATION_NTH_H_ #define TYPEASVALUE_SRC_LIST_OPERATION_NTH_H_ #include "operation/math.h" namespace tav { namespace detail { template < typename Index, typename List > struct Nth { typedef Eval>, Tail >> type; }; template struct Nth, List> { typedef Head type; }; template struct Nth { typedef void type; }; template <> struct Nth, void> { typedef void type; }; } template < typename Index, typename List > using Nth = Eval>; template using First = Nth, List>; template using Second = Nth, List>; template using Third = Nth, List>; } #endif // TYPEASVALUE_SRC_LIST_OPERATION_NTH_H_