/* @copyright Louis Dionne 2014 Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) */ #include #include #include #include using namespace boost::hana; int main() { //! [foldr] using namespace literals; BOOST_HANA_CONSTEXPR_LAMBDA auto numbers = integer_list; BOOST_HANA_CONSTEXPR_LAMBDA auto negatives = integer_list; BOOST_HANA_CONSTEXPR_LAMBDA auto keep_negatives = [](auto n, auto acc) { return if_(n < 0_c, cons(n, acc), acc); }; BOOST_HANA_CONSTANT_ASSERT( foldr(numbers, integer_list, keep_negatives) == negatives ); //! [foldr] }