BOOST_HOF_STATIC_LAMBDA — Boost.HigherOrderFunctions 0.6 documentation

# BOOST_HOF_STATIC_LAMBDA

## Header

    #include <boost/hof/lambda.hpp>

## Description

The `BOOST_HOF_STATIC_LAMBDA` macro allows initializing non-capturing lambdas at compile-time in a `constexpr` expression.

## Example

    #include <boost/hof.hpp>
    #include <cassert>

    const constexpr auto add_one = BOOST_HOF_STATIC_LAMBDA(int x)
    {
        return x + 1;
    };

    int main() {
        assert(3 == add_one(2));
    }

# BOOST_HOF_STATIC_LAMBDA_FUNCTION

## Header

    #include <boost/hof/lambda.hpp>

## Description

The `BOOST_HOF_STATIC_LAMBDA_FUNCTION` macro allows initializing a global function object that contains non-capturing lambdas. It also ensures that the global function object has a unique address across translation units. This helps prevent possible ODR-violations. By default, all functions defined with `BOOST_HOF_STATIC_LAMBDA_FUNCTION` use the `boost::hof::reveal` adaptor to improve error messages.

Note: due to compiler limitations, a global function declared with `BOOST_HOF_STATIC_LAMBDA_FUNCTION` is not guaranteed to have a unique address across translation units when compiled with pre-C++17 MSVC.

## Example

    #include <boost/hof.hpp>
    #include <cassert>

    BOOST_HOF_STATIC_LAMBDA_FUNCTION(add_one) = [](int x)
    {
        return x + 1;
    };
    int main() {
        assert(3 == add_one(2));
    }