#ifndef TYPEASVALUE_SRC_LIST_OPERATION_HIGHER_LIST_INDEX_H_ #define TYPEASVALUE_SRC_LIST_OPERATION_HIGHER_LIST_INDEX_H_ #include "operation/math.h" namespace tav { namespace detail { template < template class Predicate, typename List, typename Index = Size<0> > struct index_of_first { typedef If< Eval>>, Index, Eval, Add> >> > type; }; template < template class Predicate, typename Index > struct index_of_first { typedef void type; }; } template < template class Predicate, typename List > using ListIndex = Eval>; } #endif // TYPEASVALUE_SRC_LIST_OPERATION_HIGHER_LIST_INDEX_H_