Advertisement
deushiro

index_of

Dec 7th, 2020
477
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.59 KB | None | 0 0
  1. #pragma once
  2.  
  3. #include "typelist.h"
  4.  
  5. template<typename TList, typename TargetType>
  6. struct IndexOf;
  7.  
  8.  
  9. template <class T>
  10. struct IndexOf<NullType, T>{
  11.     enum{
  12.         pos = -1
  13.     };
  14. };
  15.  
  16. template <typename TargetType, typename Tail>
  17. struct IndexOf<TypeList<TargetType,Tail>,TargetType>{
  18.     enum{
  19.         pos = 0
  20.     };
  21. };
  22. template<typename Head, typename Tail, typename TargetType>
  23. struct IndexOf<TypeList<Head, Tail>, TargetType>{
  24. private:
  25.     enum{
  26.         temp = IndexOf<Tail, TargetType>::pos
  27.     };
  28. public:
  29.     enum{
  30.         pos = (temp == -1 ? -1 : 1 + temp)
  31.     };
  32. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement