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
16using namespace boost::placeholders;
17
18//
19
20void fv1( int & a )
21{
22 a = 1;
23}
24
25void fv2( int & a, int & b )
26{
27 a = 1;
28 b = 2;
29}
30
31void fv3( int & a, int & b, int & c )
32{
33 a = 1;
34 b = 2;
35 c = 3;
36}
37
38void fv4( int & a, int & b, int & c, int & d )
39{
40 a = 1;
41 b = 2;
42 c = 3;
43 d = 4;
44}
45
46void 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
55void 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
65void 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
76void 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
88void 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
101void test()
102{
103 {
104 int a = 0;
105
106 boost::bind( f: fv1, a1: _1 )( a );
107
108 BOOST_TEST( a == 1 );
109 }
110
111 {
112 int a = 0;
113 int b = 0;
114
115 boost::bind( f: fv2, a1: _1, a2: _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( f: fv3, a1: _1, a2: _2, a3: _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( f: fv4, a1: _1, a2: _2, a3: _3, a4: _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( f: fv5, a1: _1, a2: _2, a3: _3, a4: _4, a5: _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( f: fv6, a1: _1, a2: _2, a3: _3, a4: _4, a5: _5, a6: _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( f: fv7, a1: _1, a2: _2, a3: _3, a4: _4, a5: _5, a6: _6, a7: _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( f: fv8, a1: _1, a2: _2, a3: _3, a4: _4, a5: _5, a6: _6, a7: _7, a8: _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( f: fv9, a1: _1, a2: _2, a3: _3, a4: _4, a5: _5, a6: _6, a7: _7, a8: _8, a9: _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
248int main()
249{
250 test();
251 return boost::report_errors();
252}
253

source code of boost/libs/bind/test/bind_fwd_test.cpp