1 #include <boost/config.hpp>
2
3 //
4 // bind_fwd_test.cpp - forwarding test
5 //
6 // Copyright (c) 2015 Peter Dimov
7 //
8 // Distributed under the Boost Software License, Version 1.0.
9 // See accompanying file LICENSE_1_0.txt or copy at
10 // http://www.boost.org/LICENSE_1_0.txt
11 //
12
13 #include <boost/bind/bind.hpp>
14 #include <boost/core/lightweight_test.hpp>
15
16 using namespace boost::placeholders;
17
18 //
19
fv1(int & a)20 void fv1( int & a )
21 {
22 a = 1;
23 }
24
fv2(int & a,int & b)25 void fv2( int & a, int & b )
26 {
27 a = 1;
28 b = 2;
29 }
30
fv3(int & a,int & b,int & c)31 void fv3( int & a, int & b, int & c )
32 {
33 a = 1;
34 b = 2;
35 c = 3;
36 }
37
fv4(int & a,int & b,int & c,int & d)38 void fv4( int & a, int & b, int & c, int & d )
39 {
40 a = 1;
41 b = 2;
42 c = 3;
43 d = 4;
44 }
45
fv5(int & a,int & b,int & c,int & d,int & e)46 void fv5( int & a, int & b, int & c, int & d, int & e )
47 {
48 a = 1;
49 b = 2;
50 c = 3;
51 d = 4;
52 e = 5;
53 }
54
fv6(int & a,int & b,int & c,int & d,int & e,int & f)55 void fv6( int & a, int & b, int & c, int & d, int & e, int & f )
56 {
57 a = 1;
58 b = 2;
59 c = 3;
60 d = 4;
61 e = 5;
62 f = 6;
63 }
64
fv7(int & a,int & b,int & c,int & d,int & e,int & f,int & g)65 void fv7( int & a, int & b, int & c, int & d, int & e, int & f, int & g )
66 {
67 a = 1;
68 b = 2;
69 c = 3;
70 d = 4;
71 e = 5;
72 f = 6;
73 g = 7;
74 }
75
fv8(int & a,int & b,int & c,int & d,int & e,int & f,int & g,int & h)76 void fv8( int & a, int & b, int & c, int & d, int & e, int & f, int & g, int & h )
77 {
78 a = 1;
79 b = 2;
80 c = 3;
81 d = 4;
82 e = 5;
83 f = 6;
84 g = 7;
85 h = 8;
86 }
87
fv9(int & a,int & b,int & c,int & d,int & e,int & f,int & g,int & h,int & i)88 void fv9( int & a, int & b, int & c, int & d, int & e, int & f, int & g, int & h, int & i )
89 {
90 a = 1;
91 b = 2;
92 c = 3;
93 d = 4;
94 e = 5;
95 f = 6;
96 g = 7;
97 h = 8;
98 i = 9;
99 }
100
test()101 void test()
102 {
103 {
104 int a = 0;
105
106 boost::bind( fv1, _1 )( a );
107
108 BOOST_TEST( a == 1 );
109 }
110
111 {
112 int a = 0;
113 int b = 0;
114
115 boost::bind( fv2, _1, _2 )( a, b );
116
117 BOOST_TEST( a == 1 );
118 BOOST_TEST( b == 2 );
119 }
120
121 {
122 int a = 0;
123 int b = 0;
124 int c = 0;
125
126 boost::bind( fv3, _1, _2, _3 )( a, b, c );
127
128 BOOST_TEST( a == 1 );
129 BOOST_TEST( b == 2 );
130 BOOST_TEST( c == 3 );
131 }
132
133 {
134 int a = 0;
135 int b = 0;
136 int c = 0;
137 int d = 0;
138
139 boost::bind( fv4, _1, _2, _3, _4 )( a, b, c, d );
140
141 BOOST_TEST( a == 1 );
142 BOOST_TEST( b == 2 );
143 BOOST_TEST( c == 3 );
144 BOOST_TEST( d == 4 );
145 }
146
147 {
148 int a = 0;
149 int b = 0;
150 int c = 0;
151 int d = 0;
152 int e = 0;
153
154 boost::bind( fv5, _1, _2, _3, _4, _5 )( a, b, c, d, e );
155
156 BOOST_TEST( a == 1 );
157 BOOST_TEST( b == 2 );
158 BOOST_TEST( c == 3 );
159 BOOST_TEST( d == 4 );
160 BOOST_TEST( e == 5 );
161 }
162
163 {
164 int a = 0;
165 int b = 0;
166 int c = 0;
167 int d = 0;
168 int e = 0;
169 int f = 0;
170
171 boost::bind( fv6, _1, _2, _3, _4, _5, _6 )( a, b, c, d, e, f );
172
173 BOOST_TEST( a == 1 );
174 BOOST_TEST( b == 2 );
175 BOOST_TEST( c == 3 );
176 BOOST_TEST( d == 4 );
177 BOOST_TEST( e == 5 );
178 BOOST_TEST( f == 6 );
179 }
180
181 {
182 int a = 0;
183 int b = 0;
184 int c = 0;
185 int d = 0;
186 int e = 0;
187 int f = 0;
188 int g = 0;
189
190 boost::bind( fv7, _1, _2, _3, _4, _5, _6, _7 )( a, b, c, d, e, f, g );
191
192 BOOST_TEST( a == 1 );
193 BOOST_TEST( b == 2 );
194 BOOST_TEST( c == 3 );
195 BOOST_TEST( d == 4 );
196 BOOST_TEST( e == 5 );
197 BOOST_TEST( f == 6 );
198 BOOST_TEST( g == 7 );
199 }
200
201 {
202 int a = 0;
203 int b = 0;
204 int c = 0;
205 int d = 0;
206 int e = 0;
207 int f = 0;
208 int g = 0;
209 int h = 0;
210
211 boost::bind( fv8, _1, _2, _3, _4, _5, _6, _7, _8 )( a, b, c, d, e, f, g, h );
212
213 BOOST_TEST( a == 1 );
214 BOOST_TEST( b == 2 );
215 BOOST_TEST( c == 3 );
216 BOOST_TEST( d == 4 );
217 BOOST_TEST( e == 5 );
218 BOOST_TEST( f == 6 );
219 BOOST_TEST( g == 7 );
220 BOOST_TEST( h == 8 );
221 }
222
223 {
224 int a = 0;
225 int b = 0;
226 int c = 0;
227 int d = 0;
228 int e = 0;
229 int f = 0;
230 int g = 0;
231 int h = 0;
232 int i = 0;
233
234 boost::bind( fv9, _1, _2, _3, _4, _5, _6, _7, _8, _9 )( a, b, c, d, e, f, g, h, i );
235
236 BOOST_TEST( a == 1 );
237 BOOST_TEST( b == 2 );
238 BOOST_TEST( c == 3 );
239 BOOST_TEST( d == 4 );
240 BOOST_TEST( e == 5 );
241 BOOST_TEST( f == 6 );
242 BOOST_TEST( g == 7 );
243 BOOST_TEST( h == 8 );
244 BOOST_TEST( i == 9 );
245 }
246 }
247
main()248 int main()
249 {
250 test();
251 return boost::report_errors();
252 }
253