Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- struct foo
- {
- foo& next()
- {
- return *this;
- }
- };
- template<typename Obj>
- void tmp_funct_1(Obj& obj)
- {}
- template<typename Obj, typename Func, typename... Other>
- void tmp_funct_1(Obj& obj, Func func, Other... other)
- {
- tmp_funct_1((obj.*func)(), other...);
- }
- template<typename Obj, typename... Func>
- void tmp_funct_2(Obj& obj, Func... func)
- {
- (obj .* ... .* func());
- }
- (obj.*func)()
- int main()
- {
- foo obj;
- auto to_foo = &foo::next;
- tmp_funct_1(obj, to_foo, to_foo, to_foo);
- // tmp_funct_2(obj, to_foo, to_foo, to_foo);
- }
- template<typename Obj, typename... Func>
- void tmp_funct_2(Obj& obj, Func... func)
- {
- (obj .* ... .* func)();
- }
- int main()
- {
- foo obj;
- auto to_foo = &foo::next;
- tmp_funct_2(obj, to_foo);
- }
- (((((obj.*to_foo)().*to_foo)()).*to_foo)());
- obj.*func0.*func1.*func2.*func3
- template<typename Obj, typename... Func>
- void tmp_funct_2(Obj& obj, Func... func)
- {
- auto lam = [&obj](auto f) { (obj.*f)(); };
- ((void)lam(func), ...);
- // (obj .* ... .* func());
- }
Add Comment
Please, Sign In to add comment