EntityComponentMetaSystem/src/EC/Meta/IndexOf.hpp

38 lines
939 B
C++
Raw Normal View History

2016-03-04 11:20:56 +00:00
// This work derives from Vittorio Romeo's code used for cppcon 2015 licensed under the Academic Free License.
// His code is available here: https://github.com/SuperV1234/cppcon2015
2016-03-04 11:20:56 +00:00
#ifndef EC_META_INDEX_OF_HPP
#define EC_META_INDEX_OF_HPP
#include "TypeList.hpp"
namespace EC
{
namespace Meta
{
template <typename T, typename... Types>
struct IndexOf
{
};
2016-03-14 08:53:57 +00:00
template <typename T, template <typename...> class TTypeList, typename... Types>
struct IndexOf<T, TTypeList<T, Types...> > :
2016-03-04 11:20:56 +00:00
std::integral_constant<std::size_t, 0>
{
};
2016-03-14 08:53:57 +00:00
template <typename T, template <typename...> class TTypeList, typename Type, typename... Types>
struct IndexOf<T, TTypeList<Type, Types...> > :
2016-03-04 11:20:56 +00:00
std::integral_constant<std::size_t, 1 +
2016-03-14 08:53:57 +00:00
IndexOf<T, TTypeList<Types...> >::value
2016-03-04 11:20:56 +00:00
>
{
};
}
}
#endif