]> git.seodisparate.com - EntityComponentMetaSystem/commitdiff
Made some Meta stuff more generic
authorStephen Seo <seo.disparate@gmail.com>
Mon, 14 Mar 2016 08:53:57 +0000 (17:53 +0900)
committerStephen Seo <seo.disparate@gmail.com>
Mon, 14 Mar 2016 08:53:57 +0000 (17:53 +0900)
src/EC/Meta/Combine.hpp
src/EC/Meta/Contains.hpp
src/EC/Meta/ContainsAll.hpp
src/EC/Meta/IndexOf.hpp

index 59e0e9a45ac9197b219e02faa6bf43f4c709afbd..b6e4b9bf3cdcb6e2ad36a77f4b11e7b6e10c2691 100644 (file)
@@ -14,8 +14,8 @@ namespace EC
             using type = TypeList<>;
         };
 
-        template <typename... TypesA, typename... TypesB>
-        struct CombineHelper<TypeList<TypesA...>, TypeList<TypesB...> >
+        template <template <typename...> class TTypeListA, template <typename...> class TTypeListB, typename... TypesA, typename... TypesB>
+        struct CombineHelper<TTypeListA<TypesA...>, TTypeListB<TypesB...> >
         {
             using type = TypeList<TypesA..., TypesB...>;
         };
index 32f05be3012d1209645f36d7fe218ead5481b300..b9e043ee15e865144c0b39c9f04b88fc119e45e6 100644 (file)
@@ -15,12 +15,12 @@ namespace EC
         {
         };
 
-        template <typename T, typename Type, typename... Types>
-        struct ContainsHelper<T, TypeList<Type, Types...> > :
+        template <typename T, template <typename...> class TTypeList, typename Type, typename... Types>
+        struct ContainsHelper<T, TTypeList<Type, Types...> > :
             std::conditional<
                 std::is_same<T, Type>::value,
                 std::true_type,
-                ContainsHelper<T, TypeList<Types...> >
+                ContainsHelper<T, TTypeList<Types...> >
             >::type
         {
         };
index cb3440c6e2b8a09425821e82cc247039cd99fa1b..c54bbc43f5744e06828c1022f131d7f2b8340ae5 100644 (file)
@@ -15,8 +15,8 @@ namespace EC
         {
         };
 
-        template <typename Type, typename... Types, typename TTypeListB>
-        struct ContainsAllHelper<TypeList<Type, Types...>, TTypeListB> :
+        template <template <typename...> class TTypeListA, typename Type, typename... Types, typename TTypeListB>
+        struct ContainsAllHelper<TTypeListA<Type, Types...>, TTypeListB> :
             std::conditional<
                 Contains<Type, TTypeListB>::value,
                 ContainsAllHelper<TypeList<Types...>, TTypeListB>,
index 8adf44f9457b28ae152b21582a041b792317bd7b..7978f575444e1b2777bd7d70f34dacd66a97aa40 100644 (file)
@@ -13,16 +13,16 @@ namespace EC
         {
         };
 
-        template <typename T, typename... Types>
-        struct IndexOf<T, TypeList<T, Types...> > :
+        template <typename T, template <typename...> class TTypeList, typename... Types>
+        struct IndexOf<T, TTypeList<T, Types...> > :
             std::integral_constant<std::size_t, 0>
         {
         };
 
-        template <typename T, typename Type, typename... Types>
-        struct IndexOf<T, TypeList<Type, Types...> > :
+        template <typename T, template <typename...> class TTypeList, typename Type, typename... Types>
+        struct IndexOf<T, TTypeList<Type, Types...> > :
             std::integral_constant<std::size_t, 1 +
-                IndexOf<T, TypeList<Types...> >::value
+                IndexOf<T, TTypeList<Types...> >::value
             >
         {
         };