]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/hof/test/lambda.cpp
1 /*=============================================================================
2 Copyright (c) 2017 Paul Fultz II
4 Distributed under the Boost Software License, Version 1.0. (See accompanying
5 file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
6 ==============================================================================*/
7 #include <boost/hof/lambda.hpp>
8 #include <boost/hof/first_of.hpp>
9 #include <boost/hof/partial.hpp>
10 #include <boost/hof/infix.hpp>
11 #include <boost/hof/pipable.hpp>
16 static constexpr auto add_one
= BOOST_HOF_STATIC_LAMBDA(int x
)
24 BOOST_HOF_INHERIT_CONSTRUCTOR(wrapper
, F
)
28 constexpr wrapper
<T
> wrap(T x
)
35 BOOST_HOF_TEST_CHECK(3 == add_one(2));
40 constexpr auto add_one_again
= add_one
;
41 BOOST_HOF_TEST_CHECK(3 == add_one_again(2));
46 constexpr auto add_one_again
= wrap(add_one
);
47 BOOST_HOF_TEST_CHECK(3 == add_one_again(2));
50 namespace test_static
{
52 BOOST_HOF_STATIC_LAMBDA_FUNCTION(add_one
) = [](int x
)
59 BOOST_HOF_TEST_CHECK(add_one(2) == 3);
62 BOOST_HOF_STATIC_LAMBDA_FUNCTION(sum_partial
) = boost::hof::partial([](int x
, int y
)
70 STATIC_ASSERT_EMPTY(sum_partial
);
72 BOOST_HOF_TEST_CHECK(3 == sum_partial(1, 2));
73 BOOST_HOF_TEST_CHECK(3 == sum_partial(1)(2));
76 BOOST_HOF_STATIC_LAMBDA_FUNCTION(add_one_pipable
) = boost::hof::pipable([](int x
)
84 STATIC_ASSERT_EMPTY(add_one_pipable
);
86 BOOST_HOF_TEST_CHECK(3 == add_one_pipable(2));
87 BOOST_HOF_TEST_CHECK(3 == (2 | add_one_pipable
));
90 BOOST_HOF_STATIC_LAMBDA_FUNCTION(sum_infix
) = boost::hof::infix([](int x
, int y
)
98 STATIC_ASSERT_EMPTY(sum_infix
);
100 BOOST_HOF_TEST_CHECK(3 == (1 <sum_infix
> 2));