rendered paste body#ifndef RDKUTILITYIMPL_H_#define RDKUTILITYIMPL_H_namespace RDKNAMESPACE{ template<typename... Args, typename... ArgsT> inline void unpack(const function<void (Args...)> f, const tuple<ArgsT...> & t) { unpack_impl<sizeof...(Args), Args..., Argst...>(f, t); } template<size_t N, typename... ArgsF, typename... ArgsT, typename... Args> inline void unpack_impl(const function<void (Args...)> & f, const tuple<ArgsT...> & t, Args&&... a) { unpack_impl<N-1>(f, t, std::forward(get<N-1>(t)), std::forward<Args>(a)...); } template<> template<typename... Args, typename... ArgsT> inline void unpack_impl<0>(const function<void (Args...)> & f, const tuple<ArgsT...> & t, Args&&... a) { f(std::forward<Args>(a)...); } template<size_t length, typename... Args> inline auto pack(const tuple<Args...> & t) { return pack_impl<length>(t); } template<size_t length, typename... ArgsT, typename... Args> inline auto pack_impl(const tuple<ArgsT...> & t, Args&&... a) { return pack_impl<length-1>(t, std::forward(get<length-1>(t)), std::forward<Args>(a)...); } template<> template<typename... ArgsT, typename... Args> inline tuple<Args...> && pack_impl(const tuple<ArgsT...> & t, Args&&... a) { return make_tuple(std::forward<Args>(a)...); }}#endif