]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/hof/test/mutable.cpp
1 /*=============================================================================
2 Copyright (c) 2017 Paul Fultz II
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/mutable.hpp>
8 #include <boost/hof/lazy.hpp>
9 #include <boost/hof/detail/move.hpp>
16 mutable_fun() noexcept
20 int operator()(int i
) noexcept
27 #if BOOST_HOF_HAS_NOEXCEPT_DEDUCTION
30 static_assert(noexcept(boost::hof::mutable_(mutable_fun())(3)), "noexcept mutable_");
36 BOOST_HOF_TEST_CHECK(boost::hof::mutable_(mutable_fun())(3) == 4);
41 auto mut_fun
= mutable_fun();
42 auto by_5
= boost::hof::lazy(boost::hof::mutable_(std::ref(mut_fun
)))(5);
43 BOOST_HOF_TEST_CHECK(by_5() == 6);
44 BOOST_HOF_TEST_CHECK(by_5() == 11);
47 struct mutable_move_fun
49 std::unique_ptr
<int> x
;
50 mutable_move_fun() : x(new int(1))
62 BOOST_HOF_TEST_CHECK(boost::hof::mutable_(mutable_move_fun())(3) == 4);
67 auto mut_fun
= mutable_move_fun();
68 auto by_5
= boost::hof::lazy(boost::hof::mutable_(boost::hof::move(mut_fun
)))(5);
69 BOOST_HOF_TEST_CHECK(by_5() == 6);
70 BOOST_HOF_TEST_CHECK(by_5() == 11);