| 1 | // Copyright 2021 Peter Dimov |
| 2 | // Distributed under the Boost Software License, Version 1.0. |
| 3 | // https://www.boost.org/LICENSE_1_0.txt |
| 4 | |
| 5 | #include <boost/lambda2.hpp> |
| 6 | #include <boost/core/lightweight_test.hpp> |
| 7 | #include <functional> |
| 8 | |
| 9 | int main() |
| 10 | { |
| 11 | using namespace boost::lambda2; |
| 12 | |
| 13 | int x[] = { 1, 2, 3, 4 }; |
| 14 | |
| 15 | BOOST_TEST_EQ( _1[0](x), x[0] ); |
| 16 | BOOST_TEST_EQ( _1[_2](x, 1), x[1] ); |
| 17 | BOOST_TEST_EQ( (_1[_2] + _3[_4])(x, 2, x, 3), x[2] + x[3] ); |
| 18 | BOOST_TEST_EQ( std::bind(_1 + _2, _1[_2], _3[_4])(x, 2, x, 3), x[2] + x[3] ); |
| 19 | |
| 20 | _1[0](x) = 7; |
| 21 | BOOST_TEST_EQ( x[0], 7 ); |
| 22 | |
| 23 | _1[_2](x, 1) = 8; |
| 24 | BOOST_TEST_EQ( x[1], 8 ); |
| 25 | |
| 26 | return boost::report_errors(); |
| 27 | } |
| 28 | |