calc2a.cpp 958 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. // Copyright (C) 2016-2018 T. Zachary Laine
  2. //
  3. // Distributed under the Boost Software License, Version 1.0. (See
  4. // accompanying file LICENSE_1_0.txt or copy at
  5. // http://www.boost.org/LICENSE_1_0.txt)
  6. //[ calc2a
  7. #include <boost/yap/expression.hpp>
  8. #include <iostream>
  9. int main ()
  10. {
  11. using namespace boost::yap::literals;
  12. auto expr_1 = 1_p + 2.0;
  13. auto expr_1_fn = [expr_1](auto &&... args) {
  14. return evaluate(expr_1, args...);
  15. };
  16. auto expr_2 = 1_p * 2_p;
  17. auto expr_2_fn = [expr_2](auto &&... args) {
  18. return evaluate(expr_2, args...);
  19. };
  20. auto expr_3 = (1_p - 2_p) / 2_p;
  21. auto expr_3_fn = [expr_3](auto &&... args) {
  22. return evaluate(expr_3, args...);
  23. };
  24. // Displays "5"
  25. std::cout << expr_1_fn(3.0) << std::endl;
  26. // Displays "6"
  27. std::cout << expr_2_fn(3.0, 2.0) << std::endl;
  28. // Displays "0.5"
  29. std::cout << expr_3_fn(3.0, 2.0) << std::endl;
  30. return 0;
  31. }
  32. //]