1 // Copyright Louis Dionne 2013-2017 2 // Distributed under the Boost Software License, Version 1.0. 3 // (See accompanying file LICENSE.md or copy at http://boost.org/LICENSE_1_0.txt) 4 5 #include <boost/hana/assert.hpp> 6 #include <boost/hana/config.hpp> 7 #include <boost/hana/functional/curry.hpp> 8 namespace hana = boost::hana; 9 10 main()11int main() { 12 BOOST_HANA_CONSTEXPR_LAMBDA auto add = [](auto x, auto y, auto z) { 13 return x + y + z; 14 }; 15 16 BOOST_HANA_CONSTEXPR_CHECK(hana::curry<3>(add)(1)(2)(3) == 1 + 2 + 3); 17 BOOST_HANA_CONSTEXPR_CHECK(hana::curry<3>(add)(1)(2, 3) == hana::curry<3>(add)(1)(2)(3)); 18 BOOST_HANA_CONSTEXPR_CHECK(hana::curry<3>(add)(1, 2, 3) == hana::curry<3>(add)(1)(2)(3)); 19 20 // curry with a nullary function 21 BOOST_HANA_CONSTEXPR_LAMBDA auto two = []() { 22 return 2; 23 }; 24 25 BOOST_HANA_CONSTEXPR_CHECK(hana::curry<0>(two)() == two()); 26 } 27