#ifndef METAL_LAMBDA_APPLY_HPP #define METAL_LAMBDA_APPLY_HPP #include "../config.hpp" namespace metal { /// \cond namespace detail { template struct _apply; } /// \endcond /// \ingroup lambda /// /// ### Description /// [Invokes](\ref invoke) a \lambda with the \values contained in a \list. /// /// ### Usage /// For any \lambda `lbd` and \list `l` /// \code /// using result = metal::apply; /// \endcode /// /// \returns: \value /// \semantics: /// If `l` contains elements `l[0], ..., l[m-1]`, then /// \code /// using result = metal::invoke; /// \endcode /// /// ### Example /// \snippet lambda.cpp apply /// /// ### See Also /// \see lambda, invoke, list template using apply = typename detail::_apply::type; } #include "../detail/sfinae.hpp" #include "../lambda/lambda.hpp" #include "../list/list.hpp" #include "../number/number.hpp" #include "../value/value.hpp" namespace metal { /// \cond namespace detail { template struct _apply_impl { }; template