Meta

using output_of_t = typename output_of<XformT, InputTs...>::type
using result_of_t = typename result_of<XformT, InputTs...>::type
using unpack = typename detail::unpack<MF, T>::type

Metafunction that given a variadic template MF and a type ArgT, returns MF<ArgT>, or if ArgT is of the form pack<Args...> then returns MF<Args...>.

using unpack_t = typename unpack<MF, T>::type
template <typename XformT, typename… InputTs>
struct zug::output_of

Metafunction that given a transducer XformT and some inputs InputTs, returns the type of the outputs of the transducer, wrapped in a meta::pack. It preserves reference types.

template <typename XformT, typename… InputTs>
struct zug::result_of

Metafunction that given a transducer XformT and some inputs InputTs, returns the type of the output of the transducer, combined as combined in a single result with tuplify.

template <typename… Ts>
struct zug::meta::pack

MPL-compatible sequence that just holds a vector of types as a paremeter pack.