• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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()11 int 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