#ifndef METAL_LAMBDA_PARTIAL_HPP #define METAL_LAMBDA_PARTIAL_HPP #include "../config.hpp" namespace metal { /// \cond namespace detail { template struct _partial; } /// \endcond /// \ingroup lambda /// /// ### Description /// Partially [invokes](\ref invoke) a \lambda with some \values. /// /// ### Usage /// For any \lambda `lbd` and \values `val_0, ..., val_n-1` /// \code /// using result = metal::partial; /// \endcode /// /// \returns: \lambda /// \semantics: /// If `lbd` holds \expression `f`, then /// \code /// using result = metal::lambda; /// \endcode /// where `g` is an \expression such that /// \code /// template /// using g = f; /// \endcode /// /// ### Example /// \snippet lambda.cpp partial /// /// ### See Also /// \see lambda, invoke, bind, always template using partial = typename detail::_partial::type; } #include "../lambda/invoke.hpp" #include "../lambda/lambda.hpp" #include "../value/same.hpp" namespace metal { /// \cond namespace detail { template struct _partial { }; template