Guest User

Untitled

a guest
Jun 18th, 2018
77
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.04 KB | None | 0 0
  1. struct foo
  2. {
  3. foo& next()
  4. {
  5. return *this;
  6. }
  7. };
  8.  
  9. template<typename Obj>
  10. void tmp_funct_1(Obj& obj)
  11. {}
  12.  
  13. template<typename Obj, typename Func, typename... Other>
  14. void tmp_funct_1(Obj& obj, Func func, Other... other)
  15. {
  16. tmp_funct_1((obj.*func)(), other...);
  17. }
  18.  
  19. template<typename Obj, typename... Func>
  20. void tmp_funct_2(Obj& obj, Func... func)
  21. {
  22. (obj .* ... .* func());
  23. }
  24.  
  25. (obj.*func)()
  26.  
  27. int main()
  28. {
  29. foo obj;
  30. auto to_foo = &foo::next;
  31.  
  32. tmp_funct_1(obj, to_foo, to_foo, to_foo);
  33. // tmp_funct_2(obj, to_foo, to_foo, to_foo);
  34. }
  35.  
  36. template<typename Obj, typename... Func>
  37. void tmp_funct_2(Obj& obj, Func... func)
  38. {
  39. (obj .* ... .* func)();
  40. }
  41.  
  42. int main()
  43. {
  44. foo obj;
  45. auto to_foo = &foo::next;
  46. tmp_funct_2(obj, to_foo);
  47. }
  48.  
  49. (((((obj.*to_foo)().*to_foo)()).*to_foo)());
  50.  
  51. obj.*func0.*func1.*func2.*func3
  52.  
  53. template<typename Obj, typename... Func>
  54. void tmp_funct_2(Obj& obj, Func... func)
  55. {
  56. auto lam = [&obj](auto f) { (obj.*f)(); };
  57. ((void)lam(func), ...);
  58. // (obj .* ... .* func());
  59. }
Add Comment
Please, Sign In to add comment