static inline void print_tuple(std::tuple<Args...> &&args) { call_tuple([] (Args&&... args) { print_arg(std::forward<Args>(args)...); }, std::move(args)); }
virtual void call(boost::any a1 = boost::any{} , boost::any a2 = boost::any{} , boost::any a3 = boost::any{} , boost::any a4 = boost::any{}) override { std::tuple<boost::any, boost::any, boost::any, boost::any> t{ a1, a2, a3, a4 }; call_tuple(t, std::make_index_sequence<arity>{}); }