limit — Boost.HigherOrderFunctions 0.6 documentation

# limit

## Header

    #include <boost/hof/limit.hpp>

## Description

The `limit` function decorator annotates the function with the max number of parameters. The `limit_c` version can be used to give the max number directly(instead of relying on an integral constant). The parameter limit can be read by using the `function_param_limit` trait. Using `limit` is useful to improve error reporting with partially evaluated functions.

## Synopsis

    template<class IntegralConstant>
    constexpr auto limit(IntegralConstant);

    template<std::size_t N, class F>
    constexpr auto limit_c(F);

## Requirements

IntegralConstant must be:

- IntegralConstant

F must be:

- ConstInvocable

- MoveConstructible

## Example

    #include <boost/hof.hpp>
    #include <cassert>
    using namespace boost::hof;

    struct sum_f
    {
        template<class T>
        int operator()(T x, T y) const
        {
            return x+y;
        }
    };
    BOOST_HOF_STATIC_FUNCTION(sum) = limit_c<2>(sum_f());

    int main() {
        assert(3 == sum(1, 2));
    }

## See Also

- Partial function evaluation

- function_param_limit