diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-27 18:24:20 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-27 18:24:20 +0000 |
commit | 483eb2f56657e8e7f419ab1a4fab8dce9ade8609 (patch) | |
tree | e5d88d25d870d5dedacb6bbdbe2a966086a0a5cf /src/boost/libs/function/example | |
parent | Initial commit. (diff) | |
download | ceph-upstream.tar.xz ceph-upstream.zip |
Adding upstream version 14.2.21.upstream/14.2.21upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r-- | src/boost/libs/function/example/Jamfile | 14 | ||||
-rw-r--r-- | src/boost/libs/function/example/bind1st.cpp | 32 | ||||
-rw-r--r-- | src/boost/libs/function/example/int_div.cpp | 26 | ||||
-rw-r--r-- | src/boost/libs/function/example/sum_avg.cpp | 38 |
4 files changed, 110 insertions, 0 deletions
diff --git a/src/boost/libs/function/example/Jamfile b/src/boost/libs/function/example/Jamfile new file mode 100644 index 00000000..671cc1da --- /dev/null +++ b/src/boost/libs/function/example/Jamfile @@ -0,0 +1,14 @@ +# Boost.Function Library example Jamfile +# +# Copyright (c) 2008 James E. King III +# +# Distributed under the Boost Software License, Version 1.0. +# See accompanying file LICENSE_1_0.txt or copy at +# http://www.boost.org/LICENSE_1_0.txt + +import ../../config/checks/config : requires ; +import testing ; + +run bind1st.cpp : : : [ requires cxx98_binders ] ; +run int_div.cpp ; +run sum_avg.cpp ; diff --git a/src/boost/libs/function/example/bind1st.cpp b/src/boost/libs/function/example/bind1st.cpp new file mode 100644 index 00000000..b9622c7f --- /dev/null +++ b/src/boost/libs/function/example/bind1st.cpp @@ -0,0 +1,32 @@ +// Boost.Function library examples + +// Copyright Douglas Gregor 2001-2003. Use, modification and +// distribution is subject to the Boost Software License, Version +// 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// For more information, see http://www.boost.org + +#include <iostream> +#include <boost/function.hpp> +#include <functional> + +struct X { + X(int val) : value(val) {} + + int foo(int x) { return x * value; } + + int value; +}; + + +int +main() +{ + boost::function<int (int)> f; + X x(7); + f = std::bind1st(std::mem_fun(&X::foo), &x); + + std::cout << f(5) << std::endl; // Call x.foo(5) + return 0; +} diff --git a/src/boost/libs/function/example/int_div.cpp b/src/boost/libs/function/example/int_div.cpp new file mode 100644 index 00000000..7218bd03 --- /dev/null +++ b/src/boost/libs/function/example/int_div.cpp @@ -0,0 +1,26 @@ +// Boost.Function library examples + +// Copyright Douglas Gregor 2001-2003. Use, modification and +// distribution is subject to the Boost Software License, Version +// 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// For more information, see http://www.boost.org + +#include <iostream> +#include <boost/function.hpp> + +struct int_div { + float operator()(int x, int y) const { return ((float)x)/y; }; +}; + +int +main() +{ + boost::function<float (int, int)> f; + f = int_div(); + + std::cout << f(5, 3) << std::endl; // 1.66667 + + return 0; +} diff --git a/src/boost/libs/function/example/sum_avg.cpp b/src/boost/libs/function/example/sum_avg.cpp new file mode 100644 index 00000000..8831ef11 --- /dev/null +++ b/src/boost/libs/function/example/sum_avg.cpp @@ -0,0 +1,38 @@ +// Boost.Function library examples + +// Copyright Douglas Gregor 2001-2003. Use, modification and +// distribution is subject to the Boost Software License, Version +// 1.0. (See accompanying file LICENSE_1_0.txt or copy at +// http://www.boost.org/LICENSE_1_0.txt) + +// For more information, see http://www.boost.org + +#include <iostream> +#include <boost/function.hpp> + +void do_sum_avg(int values[], int n, int& sum, float& avg) +{ + sum = 0; + for (int i = 0; i < n; i++) + sum += values[i]; + avg = (float)sum / n; +} + +int +main() +{ + // The second parameter should be int[], but some compilers (e.g., GCC) + // complain about this + boost::function<void (int*, int, int&, float&)> sum_avg; + + sum_avg = &do_sum_avg; + + int values[5] = { 1, 1, 2, 3, 5 }; + int sum; + float avg; + sum_avg(values, 5, sum, avg); + + std::cout << "sum = " << sum << std::endl; + std::cout << "avg = " << avg << std::endl; + return 0; +} |