All pastes #1792050 Raw Edit

clueless

public text v1 · immutable
#1792050 ·published 2010-02-10 00:01 UTC
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