]>
git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/phoenix/test/bll_compatibility/bind_tests_simple_f_refs.cpp
1 // bind_tests_simple.cpp -- The Boost Lambda Library ------------------
3 // Copyright (C) 2000-2003 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
4 // Copyright (C) 2000-2003 Gary Powell (powellg@amazon.com)
6 // Distributed under the Boost Software License, Version 1.0. (See
7 // accompanying file LICENSE_1_0.txt or copy at
8 // http://www.boost.org/LICENSE_1_0.txt)
10 // For more information, see www.boost.org
12 // -----------------------------------------------------------------------
15 #include <boost/test/minimal.hpp> // see "Header Implementation Option"
17 #include "boost/lambda/bind.hpp"
21 using namespace boost::lambda
;
24 int sum_of_args_0() { return 0; }
25 int sum_of_args_1(int a
) { return a
; }
26 int sum_of_args_2(int a
, int b
) { return a
+b
; }
27 int sum_of_args_3(int a
, int b
, int c
) { return a
+b
+c
; }
28 int sum_of_args_4(int a
, int b
, int c
, int d
) { return a
+b
+c
+d
; }
29 int sum_of_args_5(int a
, int b
, int c
, int d
, int e
) { return a
+b
+c
+d
+e
; }
30 int sum_of_args_6(int a
, int b
, int c
, int d
, int e
, int f
) { return a
+b
+c
+d
+e
+f
; }
31 int sum_of_args_7(int a
, int b
, int c
, int d
, int e
, int f
, int g
) { return a
+b
+c
+d
+e
+f
+g
; }
32 int sum_of_args_8(int a
, int b
, int c
, int d
, int e
, int f
, int g
, int h
) { return a
+b
+c
+d
+e
+f
+g
+h
; }
33 int sum_of_args_9(int a
, int b
, int c
, int d
, int e
, int f
, int g
, int h
, int i
) { return a
+b
+c
+d
+e
+f
+g
+h
+i
; }
36 // ----------------------------
42 int add(const int& j
) { return i
+ j
; }
45 void test_member_functions()
51 BOOST_CHECK(bind(&A::add
, ref(a
), _1
)(i
) == 11);
52 BOOST_CHECK(bind(&A::add
, &a
, _1
)(i
) == 11);
53 BOOST_CHECK(bind(&A::add
, _1
, 1)(a
) == 11);
54 BOOST_CHECK(bind(&A::add
, _1
, 1)(make_const(&a
)) == 11);
56 // This should fail, as lambda functors store arguments as const
57 // bind(&A::add, a, _1);
60 int test_main(int, char *[]) {
62 int i
= 1; int j
= 2; int k
= 3;
66 // bind all parameters
67 BOOST_CHECK(bind(sum_of_args_0
)()==0);
68 BOOST_CHECK(bind(sum_of_args_1
, 1)()==1);
69 BOOST_CHECK(bind(sum_of_args_2
, 1, 2)()==3);
70 BOOST_CHECK(bind(sum_of_args_3
, 1, 2, 3)()==6);
71 BOOST_CHECK(bind(sum_of_args_4
, 1, 2, 3, 4)()==10);
72 BOOST_CHECK(bind(sum_of_args_5
, 1, 2, 3, 4, 5)()==15);
73 BOOST_CHECK(bind(sum_of_args_6
, 1, 2, 3, 4, 5, 6)()==21);
74 BOOST_CHECK(bind(sum_of_args_7
, 1, 2, 3, 4, 5, 6, 7)()==28);
75 BOOST_CHECK(bind(sum_of_args_8
, 1, 2, 3, 4, 5, 6, 7, 8)()==36);
76 BOOST_CHECK(bind(sum_of_args_9
, 1, 2, 3, 4, 5, 6, 7, 8, 9)()==45);
78 // first parameter open
79 BOOST_CHECK(bind(sum_of_args_0
)()==0);
80 BOOST_CHECK(bind(sum_of_args_1
, _1
)(i
)==1);
81 BOOST_CHECK(bind(sum_of_args_2
, _1
, 2)(i
)==3);
82 BOOST_CHECK(bind(sum_of_args_3
, _1
, 2, 3)(i
)==6);
83 BOOST_CHECK(bind(sum_of_args_4
, _1
, 2, 3, 4)(i
)==10);
84 BOOST_CHECK(bind(sum_of_args_5
, _1
, 2, 3, 4, 5)(i
)==15);
85 BOOST_CHECK(bind(sum_of_args_6
, _1
, 2, 3, 4, 5, 6)(i
)==21);
86 BOOST_CHECK(bind(sum_of_args_7
, _1
, 2, 3, 4, 5, 6, 7)(i
)==28);
87 BOOST_CHECK(bind(sum_of_args_8
, _1
, 2, 3, 4, 5, 6, 7, 8)(i
)==36);
88 BOOST_CHECK(bind(sum_of_args_9
, _1
, 2, 3, 4, 5, 6, 7, 8, 9)(i
)==45);
91 BOOST_CHECK(bind(sum_of_args_0
)()==0);
92 BOOST_CHECK(bind(sum_of_args_1
, _1
)(i
)==1);
93 BOOST_CHECK(bind(sum_of_args_2
, _1
, _2
)(i
, j
)==3);
94 BOOST_CHECK(bind(sum_of_args_3
, _1
, _2
, 3)(i
, j
)==6);
95 BOOST_CHECK(bind(sum_of_args_4
, _1
, _2
, 3, 4)(i
, j
)==10);
96 BOOST_CHECK(bind(sum_of_args_5
, _1
, _2
, 3, 4, 5)(i
, j
)==15);
97 BOOST_CHECK(bind(sum_of_args_6
, _1
, _2
, 3, 4, 5, 6)(i
, j
)==21);
98 BOOST_CHECK(bind(sum_of_args_7
, _1
, _2
, 3, 4, 5, 6, 7)(i
, j
)==28);
99 BOOST_CHECK(bind(sum_of_args_8
, _1
, _2
, 3, 4, 5, 6, 7, 8)(i
, j
)==36);
100 BOOST_CHECK(bind(sum_of_args_9
, _1
, _2
, 3, 4, 5, 6, 7, 8, 9)(i
, j
)==45);
102 // three open arguments
103 BOOST_CHECK(bind(sum_of_args_0
)()==0);
104 BOOST_CHECK(bind(sum_of_args_1
, _1
)(i
)==1);
105 BOOST_CHECK(bind(sum_of_args_2
, _1
, _2
)(i
, j
)==3);
106 BOOST_CHECK(bind(sum_of_args_3
, _1
, _2
, _3
)(i
, j
, k
)==6);
107 BOOST_CHECK(bind(sum_of_args_4
, _1
, _2
, _3
, 4)(i
, j
, k
)==10);
108 BOOST_CHECK(bind(sum_of_args_5
, _1
, _2
, _3
, 4, 5)(i
, j
, k
)==15);
109 BOOST_CHECK(bind(sum_of_args_6
, _1
, _2
, _3
, 4, 5, 6)(i
, j
, k
)==21);
110 BOOST_CHECK(bind(sum_of_args_7
, _1
, _2
, _3
, 4, 5, 6, 7)(i
, j
, k
)==28);
111 BOOST_CHECK(bind(sum_of_args_8
, _1
, _2
, _3
, 4, 5, 6, 7, 8)(i
, j
, k
)==36);
112 BOOST_CHECK(bind(sum_of_args_9
, _1
, _2
, _3
, 4, 5, 6, 7, 8, 9)(i
, j
, k
)==45);
114 // function compositions with bind
115 BOOST_CHECK(bind(sum_of_args_3
, bind(sum_of_args_2
, _1
, 2), 2, 3)(i
)==8);
118 bind(sum_of_args_0
), // 0
119 bind(sum_of_args_1
, _1
), // 1
120 bind(sum_of_args_2
, _1
, _2
), // 3
121 bind(sum_of_args_3
, _1
, _2
, _3
), // 6
122 bind(sum_of_args_4
, _1
, _2
, _3
, 4), // 10
123 bind(sum_of_args_5
, _1
, _2
, _3
, 4, 5), // 15
124 bind(sum_of_args_6
, _1
, _2
, _3
, 4, 5, 6), // 21
125 bind(sum_of_args_7
, _1
, _2
, _3
, 4, 5, 6, 7), // 28
126 bind(sum_of_args_8
, _1
, _2
, _3
, 4, 5, 6, 7, 8) // 36
131 bind(sum_of_args_1
, // 12
132 bind(sum_of_args_4
, // 12
133 bind(sum_of_args_2
, // 3
134 bind(sum_of_args_1
, // 1
135 bind(sum_of_args_1
, _1
) // 1
142 BOOST_CHECK(result
== 12);
144 test_member_functions();