decorate.cpp 1.2 KB

1234567891011121314151617181920212223242526272829303132333435
  1. /*=============================================================================
  2. Copyright (c) 2017 Paul Fultz II
  3. decorate.cpp
  4. Distributed under the Boost Software License, Version 1.0. (See accompanying
  5. file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
  6. ==============================================================================*/
  7. #include <boost/hof/decorate.hpp>
  8. #include "test.hpp"
  9. BOOST_HOF_TEST_CASE()
  10. {
  11. BOOST_HOF_TEST_CHECK(boost::hof::decorate(boost::hof::always(1))(boost::hof::always(1))(boost::hof::always(1))(5) == 1);
  12. }
  13. #if BOOST_HOF_HAS_NOEXCEPT_DEDUCTION
  14. struct copy_throws
  15. {
  16. copy_throws() {}
  17. copy_throws(copy_throws const&) {}
  18. copy_throws(copy_throws&&) noexcept {}
  19. };
  20. struct no_throw_fo
  21. {
  22. void operator()() const noexcept {}
  23. void operator()(copy_throws) const noexcept {}
  24. };
  25. BOOST_HOF_TEST_CASE()
  26. {
  27. static_assert(noexcept(boost::hof::decorate(boost::hof::always(1))(boost::hof::always(1))(boost::hof::always(1))(5)), "noexcept decorator");
  28. static_assert(!noexcept(boost::hof::decorate(boost::hof::always(1))(boost::hof::always(1))(boost::hof::always(1))(copy_throws{})), "noexcept decorator");
  29. }
  30. #endif