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));
}