Guest User

Untitled

a guest
Feb 21st, 2018
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.71 KB | None | 0 0
  1. template<typename TList, template<typename> typename Object> struct GenHierarchy;
  2.  
  3. template <typename T1, typename T2, template <typename> typename Object>
  4. struct GenHierarchy<typelist<T1, T2>, Object>
  5. : public GenHierarchy<T1, Object>
  6. , public GenHierarchy<T2, Object>
  7. {
  8. public:
  9. typedef typelist<T1, T2> TList;
  10. typedef GenHierarchy<T1, Object> LeftBase;
  11. typedef GenHierarchy<T2, Object> RightBase;
  12.  
  13.  
  14. };
  15. // Pass an atomic type (non-typelist) to Unit
  16. template <typename AtomicType, template <typename> typename Object>
  17. struct GenHierarchy : public Object<AtomicType>
  18. {
  19. typedef Object<AtomicType> LeftBase;
  20. };
  21.  
  22. // Do nothing for NullType
  23. template <template <typename> typename Object>
  24. struct GenHierarchy<null_type, Object>
  25. {
  26. };
Add Comment
Please, Sign In to add comment