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