Advertisement
Guest User

Untitled

a guest
Apr 24th, 2014
49
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.81 KB | None | 0 0
  1. template <typename T>
  2. typename enable_if<is_base_of<BaseClass, T>::value, void>::type
  3. function() {
  4. // do stuff with T, which is ensured to be a child class of BaseClass
  5. }
  6.  
  7. template <typename... T>
  8. /* What goes here? */
  9. function() {
  10. // do stuff with the T types, which are ensured to be child classes of BaseClass
  11. }
  12.  
  13. template <typename Base, typename T, typename... Ts>
  14. struct are_base_of :
  15. std::conditional<std::is_base_of<Base, T>::value, are_base_of<Base, Ts...>,
  16. std::false_type>::type
  17. {};
  18.  
  19. template <typename Base, typename T>
  20. struct are_base_of<Base, T> : std::is_base_of<Base, T> {};
  21.  
  22. template <typename... Ts>
  23. typename std::enable_if<are_base_of<BaseClass, Ts...>::value, void>::type
  24. function() {
  25. // do stuff with Ts, which is ensured to be a child class of BaseClass
  26. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement