File: compose.hpp.html

package info (click to toggle)
boost 1.27.0-3
  • links: PTS
  • area: main
  • in suites: woody
  • size: 19,908 kB
  • ctags: 26,546
  • sloc: cpp: 122,225; ansic: 10,956; python: 4,412; sh: 855; yacc: 803; makefile: 257; perl: 165; lex: 90; csh: 6
file content (459 lines) | stat: -rw-r--r-- 32,945 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
<HTML>
<HEAD>
<TITLE>compose.hpp</TITLE>
</HEAD>

<BODY TEXT="#000000" BGCOLOR="#FFFFFF">
&nbsp;
<TABLE HEIGHT=40 WIDTH="100%">
<TR> <TD ALIGN=LEFT WIDTH="100%" BGCOLOR="#DDDDDD">
<FONT face="Arial,Helvetica" size=+2><B>
&nbsp;compose.hpp
</B></FONT>
</TD></TR></TABLE><BR>

<FONT face="Arial,Helvetica"><B>
 The following code example is taken from the book<BR>
 <A HREF="http://www.josuttis.com/libbook/" TARGET="_top">
  The C++ Standard Library - A Tutorial and Reference</A><BR>
 by Nicolai M. Josuttis, Addison-Wesley, 1999<BR>
 <A HREF="http://www.josuttis.com/libbook/copyright.html">
  &copy; Copyright</A> Nicolai M. Josuttis 1999<BR>
</B></FONT>

<BR><BR><TT>
<Font color="0000FF" >/</FONT><I><FONT face="Arial,Helvetica" color="0000FF" size=-1>*&nbsp;supplementing&nbsp;compose&nbsp;function&nbsp;objects</I></FONT><BR>
&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1>*&nbsp;Son&nbsp;Dez&nbsp;26&nbsp;22:11:12&nbsp;MET&nbsp;1999</I></FONT><BR>
&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1>*/</I></FONT><BR>
#ifndef&nbsp;BOOST_COMPOSE_HPP<BR>
#define&nbsp;BOOST_COMPOSE_HPP<BR>
<BR>
#include&nbsp;&lt;functional&gt;<BR>
<BR>
namespace&nbsp;boost&nbsp;{<BR>
<BR>
<Font color="0000FF" >/</FONT><I><FONT face="Arial,Helvetica" color="0000FF" size=-1>**********************************************************</I></FONT><BR>
&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1>*&nbsp;type&nbsp;nullary_function</I></FONT><BR>
&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1>*&nbsp;-&nbsp;as&nbsp;supplement&nbsp;to&nbsp;unary_function&nbsp;and&nbsp;binary_function</I></FONT><BR>
&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1>**********************************************************/</I></FONT><BR>
template&nbsp;&lt;class&nbsp;Result&gt;<BR>
struct&nbsp;nullary_function&nbsp;{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;typedef&nbsp;Result&nbsp;result_type;<BR>
};<BR>
<BR>
<Font color="0000FF" >/</FONT><I><FONT face="Arial,Helvetica" color="0000FF" size=-1>**********************************************************</I></FONT><BR>
&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1>*&nbsp;ptr_fun&nbsp;for&nbsp;functions&nbsp;with&nbsp;no&nbsp;argument</I></FONT><BR>
&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1>**********************************************************/</I></FONT><BR>
template&nbsp;&lt;class&nbsp;Result&gt;<BR>
class&nbsp;pointer_to_nullary_function&nbsp;:&nbsp;public&nbsp;nullary_function&lt;Result&gt;<BR>
{<BR>
&nbsp;&nbsp;protected:<BR>
&nbsp;&nbsp;&nbsp;&nbsp;Result&nbsp;(*ptr)();<BR>
&nbsp;&nbsp;public:<BR>
&nbsp;&nbsp;&nbsp;&nbsp;pointer_to_nullary_function()&nbsp;{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
&nbsp;&nbsp;&nbsp;&nbsp;explicit&nbsp;pointer_to_nullary_function(Result&nbsp;(*x)())&nbsp;:&nbsp;ptr(x)&nbsp;{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
&nbsp;&nbsp;&nbsp;&nbsp;Result&nbsp;operator()()&nbsp;const&nbsp;{&nbsp;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;ptr();<BR>
&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
};<BR>
<BR>
template&nbsp;&lt;class&nbsp;Result&gt;<BR>
inline&nbsp;pointer_to_nullary_function&lt;Result&gt;&nbsp;ptr_fun(Result&nbsp;(*x)())<BR>
{<BR>
&nbsp;&nbsp;return&nbsp;pointer_to_nullary_function&lt;Result&gt;(x);<BR>
}<BR>
<BR>
<I><FONT face="Arial,Helvetica" color="0000FF" size=-1><Font color="0000FF" >/</FONT><I><FONT face="Arial,Helvetica" color="0000FF" size=-1>***********&nbsp;compose_f_gx_t&nbsp;and&nbsp;compose_f_gx&nbsp;**********************/</I></FONT></I></FONT><BR>
<BR>
<Font color="0000FF" >/</FONT><I><FONT face="Arial,Helvetica" color="0000FF" size=-1>*&nbsp;class&nbsp;for&nbsp;the&nbsp;compose_f_gx&nbsp;adapter</I></FONT><BR>
&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1>*/</I></FONT><BR>
template&nbsp;&lt;class&nbsp;OP1,&nbsp;class&nbsp;OP2&gt;<BR>
class&nbsp;compose_f_gx_t<BR>
&nbsp;:&nbsp;public&nbsp;std::unary_function&lt;typename&nbsp;OP2::argument_type,<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;typename&nbsp;OP1::result_type&gt;<BR>
{<BR>
&nbsp;&nbsp;private:<BR>
&nbsp;&nbsp;&nbsp;&nbsp;OP1&nbsp;op1;&nbsp;&nbsp;&nbsp;&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1>//&nbsp;process:&nbsp;op1(op2(x))</I></FONT><BR>
&nbsp;&nbsp;&nbsp;&nbsp;OP2&nbsp;op2;<BR>
&nbsp;&nbsp;public:<BR>
&nbsp;&nbsp;&nbsp;&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1>//&nbsp;constructor</I></FONT><BR>
&nbsp;&nbsp;&nbsp;&nbsp;compose_f_gx_t(const&nbsp;OP1&&nbsp;o1,&nbsp;const&nbsp;OP2&&nbsp;o2)<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;op1(o1),&nbsp;op2(o2)&nbsp;{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1>//&nbsp;function&nbsp;call</I></FONT><BR>
&nbsp;&nbsp;&nbsp;&nbsp;typename&nbsp;OP1::result_type<BR>
&nbsp;&nbsp;&nbsp;&nbsp;operator()(const&nbsp;typename&nbsp;OP2::argument_type&&nbsp;x)&nbsp;const&nbsp;{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;op1(op2(x));<BR>
&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
};<BR>
<BR>
<Font color="0000FF" >/</FONT><I><FONT face="Arial,Helvetica" color="0000FF" size=-1>*&nbsp;convenience&nbsp;functions&nbsp;for&nbsp;the&nbsp;compose_f_gx&nbsp;adapter</I></FONT><BR>
&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1>*/</I></FONT><BR>
template&nbsp;&lt;class&nbsp;OP1,&nbsp;class&nbsp;OP2&gt;<BR>
inline&nbsp;compose_f_gx_t&lt;OP1,OP2&gt;<BR>
compose_f_gx&nbsp;(const&nbsp;OP1&&nbsp;o1,&nbsp;const&nbsp;OP2&&nbsp;o2)&nbsp;{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;compose_f_gx_t&lt;OP1,OP2&gt;(o1,o2);<BR>
}<BR>
<BR>
<I><FONT face="Arial,Helvetica" color="0000FF" size=-1><Font color="0000FF" >/</FONT><I><FONT face="Arial,Helvetica" color="0000FF" size=-1>***********&nbsp;compose_f_gx_hx_t&nbsp;and&nbsp;compose_f_gx_hx&nbsp;**********************/</I></FONT></I></FONT><BR>
<BR>
<Font color="0000FF" >/</FONT><I><FONT face="Arial,Helvetica" color="0000FF" size=-1>*&nbsp;class&nbsp;for&nbsp;the&nbsp;compose_f_gx_hx&nbsp;adapter</I></FONT><BR>
&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1>*/</I></FONT><BR>
template&nbsp;&lt;class&nbsp;OP1,&nbsp;class&nbsp;OP2,&nbsp;class&nbsp;OP3&gt;<BR>
class&nbsp;compose_f_gx_hx_t<BR>
&nbsp;:&nbsp;public&nbsp;std::unary_function&lt;typename&nbsp;OP2::argument_type,<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;typename&nbsp;OP1::result_type&gt;<BR>
{<BR>
&nbsp;&nbsp;private:<BR>
&nbsp;&nbsp;&nbsp;&nbsp;OP1&nbsp;op1;&nbsp;&nbsp;&nbsp;&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1>//&nbsp;process:&nbsp;op1(op2(x),op3(x))</I></FONT><BR>
&nbsp;&nbsp;&nbsp;&nbsp;OP2&nbsp;op2;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;OP3&nbsp;op3;<BR>
&nbsp;&nbsp;public:<BR>
&nbsp;&nbsp;&nbsp;&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1>//&nbsp;constructor</I></FONT><BR>
&nbsp;&nbsp;&nbsp;&nbsp;compose_f_gx_hx_t&nbsp;(const&nbsp;OP1&&nbsp;o1,&nbsp;const&nbsp;OP2&&nbsp;o2,&nbsp;const&nbsp;OP3&&nbsp;o3)<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;op1(o1),&nbsp;op2(o2),&nbsp;op3(o3)&nbsp;{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1>//&nbsp;function&nbsp;call</I></FONT><BR>
&nbsp;&nbsp;&nbsp;&nbsp;typename&nbsp;OP1::result_type<BR>
&nbsp;&nbsp;&nbsp;&nbsp;operator()(const&nbsp;typename&nbsp;OP2::argument_type&&nbsp;x)&nbsp;const&nbsp;{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;op1(op2(x),op3(x));<BR>
&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
};<BR>
<BR>
<Font color="0000FF" >/</FONT><I><FONT face="Arial,Helvetica" color="0000FF" size=-1>*&nbsp;convenience&nbsp;functions&nbsp;for&nbsp;the&nbsp;compose_f_gx_hx&nbsp;adapter</I></FONT><BR>
&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1>*/</I></FONT><BR>
template&nbsp;&lt;class&nbsp;OP1,&nbsp;class&nbsp;OP2,&nbsp;class&nbsp;OP3&gt;<BR>
inline&nbsp;compose_f_gx_hx_t&lt;OP1,OP2,OP3&gt;<BR>
compose_f_gx_hx&nbsp;(const&nbsp;OP1&&nbsp;o1,&nbsp;const&nbsp;OP2&&nbsp;o2,&nbsp;const&nbsp;OP3&&nbsp;o3)&nbsp;{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;compose_f_gx_hx_t&lt;OP1,OP2,OP3&gt;(o1,o2,o3);<BR>
}<BR>
<BR>
<I><FONT face="Arial,Helvetica" color="0000FF" size=-1><Font color="0000FF" >/</FONT><I><FONT face="Arial,Helvetica" color="0000FF" size=-1>***********&nbsp;compose_f_gxy_t&nbsp;and&nbsp;compose_f_gxy&nbsp;**********************/</I></FONT></I></FONT><BR>
<BR>
<Font color="0000FF" >/</FONT><I><FONT face="Arial,Helvetica" color="0000FF" size=-1>*&nbsp;class&nbsp;for&nbsp;the&nbsp;compose_f_gxy&nbsp;adapter</I></FONT><BR>
&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1>*/</I></FONT><BR>
template&nbsp;&lt;class&nbsp;OP1,&nbsp;class&nbsp;OP2&gt;<BR>
class&nbsp;compose_f_gxy_t<BR>
&nbsp;:&nbsp;public&nbsp;std::binary_function&lt;typename&nbsp;OP2::first_argument_type,<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;typename&nbsp;OP2::second_argument_type,<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;typename&nbsp;OP1::result_type&gt;<BR>
{<BR>
&nbsp;&nbsp;private:<BR>
&nbsp;&nbsp;&nbsp;&nbsp;OP1&nbsp;op1;&nbsp;&nbsp;&nbsp;&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1>//&nbsp;process:&nbsp;op1(op2(x,y))</I></FONT><BR>
&nbsp;&nbsp;&nbsp;&nbsp;OP2&nbsp;op2;<BR>
&nbsp;&nbsp;public:<BR>
&nbsp;&nbsp;&nbsp;&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1>//&nbsp;constructor</I></FONT><BR>
&nbsp;&nbsp;&nbsp;&nbsp;compose_f_gxy_t&nbsp;(const&nbsp;OP1&&nbsp;o1,&nbsp;const&nbsp;OP2&&nbsp;o2)<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;op1(o1),&nbsp;op2(o2)&nbsp;{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1>//&nbsp;function&nbsp;call</I></FONT><BR>
&nbsp;&nbsp;&nbsp;&nbsp;typename&nbsp;OP1::result_type<BR>
&nbsp;&nbsp;&nbsp;&nbsp;operator()(const&nbsp;typename&nbsp;OP2::first_argument_type&&nbsp;x,<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const&nbsp;typename&nbsp;OP2::second_argument_type&&nbsp;y)&nbsp;const&nbsp;{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;op1(op2(x,y));<BR>
&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
};<BR>
<BR>
<Font color="0000FF" >/</FONT><I><FONT face="Arial,Helvetica" color="0000FF" size=-1>*&nbsp;convenience&nbsp;function&nbsp;for&nbsp;the&nbsp;compose_f_gxy&nbsp;adapter</I></FONT><BR>
&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1>*/</I></FONT><BR>
template&nbsp;&lt;class&nbsp;OP1,&nbsp;class&nbsp;OP2&gt;<BR>
inline&nbsp;compose_f_gxy_t&lt;OP1,OP2&gt;<BR>
compose_f_gxy&nbsp;(const&nbsp;OP1&&nbsp;o1,&nbsp;const&nbsp;OP2&&nbsp;o2)&nbsp;{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;compose_f_gxy_t&lt;OP1,OP2&gt;(o1,o2);<BR>
}<BR>
<BR>
<I><FONT face="Arial,Helvetica" color="0000FF" size=-1><Font color="0000FF" >/</FONT><I><FONT face="Arial,Helvetica" color="0000FF" size=-1>***********&nbsp;compose_f_gx_hy_t&nbsp;and&nbsp;compose_f_gx_hy&nbsp;**********************/</I></FONT></I></FONT><BR>
<BR>
<Font color="0000FF" >/</FONT><I><FONT face="Arial,Helvetica" color="0000FF" size=-1>*&nbsp;class&nbsp;for&nbsp;the&nbsp;compose_f_gx_hy&nbsp;adapter</I></FONT><BR>
&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1>*/</I></FONT><BR>
template&nbsp;&lt;class&nbsp;OP1,&nbsp;class&nbsp;OP2,&nbsp;class&nbsp;OP3&gt;<BR>
class&nbsp;compose_f_gx_hy_t<BR>
&nbsp;:&nbsp;public&nbsp;std::binary_function&lt;typename&nbsp;OP2::argument_type,<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;typename&nbsp;OP3::argument_type,<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;typename&nbsp;OP1::result_type&gt;<BR>
{<BR>
&nbsp;&nbsp;private:<BR>
&nbsp;&nbsp;&nbsp;&nbsp;OP1&nbsp;op1;&nbsp;&nbsp;&nbsp;&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1>//&nbsp;process:&nbsp;op1(op2(x),op3(y))</I></FONT><BR>
&nbsp;&nbsp;&nbsp;&nbsp;OP2&nbsp;op2;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;OP3&nbsp;op3;<BR>
&nbsp;&nbsp;public:<BR>
&nbsp;&nbsp;&nbsp;&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1>//&nbsp;constructor</I></FONT><BR>
&nbsp;&nbsp;&nbsp;&nbsp;compose_f_gx_hy_t&nbsp;(const&nbsp;OP1&&nbsp;o1,&nbsp;const&nbsp;OP2&&nbsp;o2,&nbsp;const&nbsp;OP3&&nbsp;o3)<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;op1(o1),&nbsp;op2(o2),&nbsp;op3(o3)&nbsp;{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1>//&nbsp;function&nbsp;call</I></FONT><BR>
&nbsp;&nbsp;&nbsp;&nbsp;typename&nbsp;OP1::result_type<BR>
&nbsp;&nbsp;&nbsp;&nbsp;operator()(const&nbsp;typename&nbsp;OP2::argument_type&&nbsp;x,<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const&nbsp;typename&nbsp;OP3::argument_type&&nbsp;y)&nbsp;const&nbsp;{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;op1(op2(x),op3(y));<BR>
&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
};<BR>
<BR>
<Font color="0000FF" >/</FONT><I><FONT face="Arial,Helvetica" color="0000FF" size=-1>*&nbsp;convenience&nbsp;function&nbsp;for&nbsp;the&nbsp;compose_f_gx_hy&nbsp;adapter</I></FONT><BR>
&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1>*/</I></FONT><BR>
template&nbsp;&lt;class&nbsp;OP1,&nbsp;class&nbsp;OP2,&nbsp;class&nbsp;OP3&gt;<BR>
inline&nbsp;compose_f_gx_hy_t&lt;OP1,OP2,OP3&gt;<BR>
compose_f_gx_hy&nbsp;(const&nbsp;OP1&&nbsp;o1,&nbsp;const&nbsp;OP2&&nbsp;o2,&nbsp;const&nbsp;OP3&&nbsp;o3)&nbsp;{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;compose_f_gx_hy_t&lt;OP1,OP2,OP3&gt;(o1,o2,o3);<BR>
}<BR>
<BR>
<I><FONT face="Arial,Helvetica" color="0000FF" size=-1><Font color="0000FF" >/</FONT><I><FONT face="Arial,Helvetica" color="0000FF" size=-1>***********&nbsp;compose_f_g_t&nbsp;and&nbsp;compose_f_g&nbsp;**********************/</I></FONT></I></FONT><BR>
<BR>
<Font color="0000FF" >/</FONT><I><FONT face="Arial,Helvetica" color="0000FF" size=-1>*&nbsp;class&nbsp;for&nbsp;the&nbsp;compose_f_g&nbsp;adapter</I></FONT><BR>
&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1>*/</I></FONT><BR>
template&nbsp;&lt;class&nbsp;OP1,&nbsp;class&nbsp;OP2&gt;<BR>
class&nbsp;compose_f_g_t<BR>
&nbsp;:&nbsp;public&nbsp;boost::nullary_function&lt;typename&nbsp;OP1::result_type&gt;<BR>
{<BR>
&nbsp;&nbsp;private:<BR>
&nbsp;&nbsp;&nbsp;&nbsp;OP1&nbsp;op1;&nbsp;&nbsp;&nbsp;&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1>//&nbsp;process:&nbsp;op1(op2())</I></FONT><BR>
&nbsp;&nbsp;&nbsp;&nbsp;OP2&nbsp;op2;<BR>
&nbsp;&nbsp;public:<BR>
&nbsp;&nbsp;&nbsp;&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1>//&nbsp;constructor</I></FONT><BR>
&nbsp;&nbsp;&nbsp;&nbsp;compose_f_g_t(const&nbsp;OP1&&nbsp;o1,&nbsp;const&nbsp;OP2&&nbsp;o2)<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;op1(o1),&nbsp;op2(o2)&nbsp;{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1>//&nbsp;function&nbsp;call</I></FONT><BR>
&nbsp;&nbsp;&nbsp;&nbsp;typename&nbsp;OP1::result_type<BR>
&nbsp;&nbsp;&nbsp;&nbsp;operator()()&nbsp;const&nbsp;{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;op1(op2());<BR>
&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
};<BR>
<BR>
<Font color="0000FF" >/</FONT><I><FONT face="Arial,Helvetica" color="0000FF" size=-1>*&nbsp;convenience&nbsp;functions&nbsp;for&nbsp;the&nbsp;compose_f_g&nbsp;adapter</I></FONT><BR>
&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1>*/</I></FONT><BR>
template&nbsp;&lt;class&nbsp;OP1,&nbsp;class&nbsp;OP2&gt;<BR>
inline&nbsp;compose_f_g_t&lt;OP1,OP2&gt;<BR>
compose_f_g&nbsp;(const&nbsp;OP1&&nbsp;o1,&nbsp;const&nbsp;OP2&&nbsp;o2)&nbsp;{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;compose_f_g_t&lt;OP1,OP2&gt;(o1,o2);<BR>
}<BR>
<BR>
}&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1><Font color="0000FF" >/</FONT><I><FONT face="Arial,Helvetica" color="0000FF" size=-1>*&nbsp;namespace&nbsp;boost&nbsp;*/</I></FONT></I></FONT><BR>
<BR>
#endif&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1><Font color="0000FF" >/</FONT><I><FONT face="Arial,Helvetica" color="0000FF" size=-1>*BOOST_COMPOSE_HPP*/</I></FONT></I></FONT><BR>
<Font color="0000FF" >/</FONT><I><FONT face="Arial,Helvetica" color="0000FF" size=-1>*&nbsp;supplementing&nbsp;compose&nbsp;function&nbsp;objects</I></FONT><BR>
&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1>*&nbsp;Son&nbsp;Dez&nbsp;26&nbsp;22:14:55&nbsp;MET&nbsp;1999</I></FONT><BR>
&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1>*/</I></FONT><BR>
#ifndef&nbsp;BOOST_COMPOSE_HPP<BR>
#define&nbsp;BOOST_COMPOSE_HPP<BR>
<BR>
#include&nbsp;&lt;functional&gt;<BR>
<BR>
namespace&nbsp;boost&nbsp;{<BR>
<BR>
<Font color="0000FF" >/</FONT><I><FONT face="Arial,Helvetica" color="0000FF" size=-1>**********************************************************</I></FONT><BR>
&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1>*&nbsp;type&nbsp;nullary_function</I></FONT><BR>
&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1>*&nbsp;-&nbsp;as&nbsp;supplement&nbsp;to&nbsp;unary_function&nbsp;and&nbsp;binary_function</I></FONT><BR>
&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1>**********************************************************/</I></FONT><BR>
template&nbsp;&lt;class&nbsp;Result&gt;<BR>
struct&nbsp;nullary_function&nbsp;{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;typedef&nbsp;Result&nbsp;result_type;<BR>
};<BR>
<BR>
<Font color="0000FF" >/</FONT><I><FONT face="Arial,Helvetica" color="0000FF" size=-1>**********************************************************</I></FONT><BR>
&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1>*&nbsp;ptr_fun&nbsp;for&nbsp;functions&nbsp;with&nbsp;no&nbsp;argument</I></FONT><BR>
&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1>**********************************************************/</I></FONT><BR>
template&nbsp;&lt;class&nbsp;Result&gt;<BR>
class&nbsp;pointer_to_nullary_function&nbsp;:&nbsp;public&nbsp;nullary_function&lt;Result&gt;<BR>
{<BR>
&nbsp;&nbsp;protected:<BR>
&nbsp;&nbsp;&nbsp;&nbsp;Result&nbsp;(*ptr)();<BR>
&nbsp;&nbsp;public:<BR>
&nbsp;&nbsp;&nbsp;&nbsp;pointer_to_nullary_function()&nbsp;{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
&nbsp;&nbsp;&nbsp;&nbsp;explicit&nbsp;pointer_to_nullary_function(Result&nbsp;(*x)())&nbsp;:&nbsp;ptr(x)&nbsp;{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
&nbsp;&nbsp;&nbsp;&nbsp;Result&nbsp;operator()()&nbsp;const&nbsp;{&nbsp;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;ptr();<BR>
&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
};<BR>
<BR>
template&nbsp;&lt;class&nbsp;Result&gt;<BR>
inline&nbsp;pointer_to_nullary_function&lt;Result&gt;&nbsp;ptr_fun(Result&nbsp;(*x)())<BR>
{<BR>
&nbsp;&nbsp;return&nbsp;pointer_to_nullary_function&lt;Result&gt;(x);<BR>
}<BR>
<BR>
<I><FONT face="Arial,Helvetica" color="0000FF" size=-1><Font color="0000FF" >/</FONT><I><FONT face="Arial,Helvetica" color="0000FF" size=-1>***********&nbsp;compose_f_gx_t&nbsp;and&nbsp;compose_f_gx&nbsp;**********************/</I></FONT></I></FONT><BR>
<BR>
<Font color="0000FF" >/</FONT><I><FONT face="Arial,Helvetica" color="0000FF" size=-1>*&nbsp;class&nbsp;for&nbsp;the&nbsp;compose_f_gx&nbsp;adapter</I></FONT><BR>
&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1>*/</I></FONT><BR>
template&nbsp;&lt;class&nbsp;OP1,&nbsp;class&nbsp;OP2&gt;<BR>
class&nbsp;compose_f_gx_t<BR>
&nbsp;:&nbsp;public&nbsp;std::unary_function&lt;typename&nbsp;OP2::argument_type,<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;typename&nbsp;OP1::result_type&gt;<BR>
{<BR>
&nbsp;&nbsp;private:<BR>
&nbsp;&nbsp;&nbsp;&nbsp;OP1&nbsp;op1;&nbsp;&nbsp;&nbsp;&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1>//&nbsp;process:&nbsp;op1(op2(x))</I></FONT><BR>
&nbsp;&nbsp;&nbsp;&nbsp;OP2&nbsp;op2;<BR>
&nbsp;&nbsp;public:<BR>
&nbsp;&nbsp;&nbsp;&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1>//&nbsp;constructor</I></FONT><BR>
&nbsp;&nbsp;&nbsp;&nbsp;compose_f_gx_t(const&nbsp;OP1&&nbsp;o1,&nbsp;const&nbsp;OP2&&nbsp;o2)<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;op1(o1),&nbsp;op2(o2)&nbsp;{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1>//&nbsp;function&nbsp;call</I></FONT><BR>
&nbsp;&nbsp;&nbsp;&nbsp;typename&nbsp;OP1::result_type<BR>
&nbsp;&nbsp;&nbsp;&nbsp;operator()(const&nbsp;typename&nbsp;OP2::argument_type&&nbsp;x)&nbsp;const&nbsp;{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;op1(op2(x));<BR>
&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
};<BR>
<BR>
<Font color="0000FF" >/</FONT><I><FONT face="Arial,Helvetica" color="0000FF" size=-1>*&nbsp;convenience&nbsp;functions&nbsp;for&nbsp;the&nbsp;compose_f_gx&nbsp;adapter</I></FONT><BR>
&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1>*/</I></FONT><BR>
template&nbsp;&lt;class&nbsp;OP1,&nbsp;class&nbsp;OP2&gt;<BR>
inline&nbsp;compose_f_gx_t&lt;OP1,OP2&gt;<BR>
compose_f_gx&nbsp;(const&nbsp;OP1&&nbsp;o1,&nbsp;const&nbsp;OP2&&nbsp;o2)&nbsp;{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;compose_f_gx_t&lt;OP1,OP2&gt;(o1,o2);<BR>
}<BR>
<BR>
<I><FONT face="Arial,Helvetica" color="0000FF" size=-1><Font color="0000FF" >/</FONT><I><FONT face="Arial,Helvetica" color="0000FF" size=-1>***********&nbsp;compose_f_gx_hx_t&nbsp;and&nbsp;compose_f_gx_hx&nbsp;**********************/</I></FONT></I></FONT><BR>
<BR>
<Font color="0000FF" >/</FONT><I><FONT face="Arial,Helvetica" color="0000FF" size=-1>*&nbsp;class&nbsp;for&nbsp;the&nbsp;compose_f_gx_hx&nbsp;adapter</I></FONT><BR>
&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1>*/</I></FONT><BR>
template&nbsp;&lt;class&nbsp;OP1,&nbsp;class&nbsp;OP2,&nbsp;class&nbsp;OP3&gt;<BR>
class&nbsp;compose_f_gx_hx_t<BR>
&nbsp;:&nbsp;public&nbsp;std::unary_function&lt;typename&nbsp;OP2::argument_type,<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;typename&nbsp;OP1::result_type&gt;<BR>
{<BR>
&nbsp;&nbsp;private:<BR>
&nbsp;&nbsp;&nbsp;&nbsp;OP1&nbsp;op1;&nbsp;&nbsp;&nbsp;&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1>//&nbsp;process:&nbsp;op1(op2(x),op3(x))</I></FONT><BR>
&nbsp;&nbsp;&nbsp;&nbsp;OP2&nbsp;op2;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;OP3&nbsp;op3;<BR>
&nbsp;&nbsp;public:<BR>
&nbsp;&nbsp;&nbsp;&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1>//&nbsp;constructor</I></FONT><BR>
&nbsp;&nbsp;&nbsp;&nbsp;compose_f_gx_hx_t&nbsp;(const&nbsp;OP1&&nbsp;o1,&nbsp;const&nbsp;OP2&&nbsp;o2,&nbsp;const&nbsp;OP3&&nbsp;o3)<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;op1(o1),&nbsp;op2(o2),&nbsp;op3(o3)&nbsp;{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1>//&nbsp;function&nbsp;call</I></FONT><BR>
&nbsp;&nbsp;&nbsp;&nbsp;typename&nbsp;OP1::result_type<BR>
&nbsp;&nbsp;&nbsp;&nbsp;operator()(const&nbsp;typename&nbsp;OP2::argument_type&&nbsp;x)&nbsp;const&nbsp;{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;op1(op2(x),op3(x));<BR>
&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
};<BR>
<BR>
<Font color="0000FF" >/</FONT><I><FONT face="Arial,Helvetica" color="0000FF" size=-1>*&nbsp;convenience&nbsp;functions&nbsp;for&nbsp;the&nbsp;compose_f_gx_hx&nbsp;adapter</I></FONT><BR>
&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1>*/</I></FONT><BR>
template&nbsp;&lt;class&nbsp;OP1,&nbsp;class&nbsp;OP2,&nbsp;class&nbsp;OP3&gt;<BR>
inline&nbsp;compose_f_gx_hx_t&lt;OP1,OP2,OP3&gt;<BR>
compose_f_gx_hx&nbsp;(const&nbsp;OP1&&nbsp;o1,&nbsp;const&nbsp;OP2&&nbsp;o2,&nbsp;const&nbsp;OP3&&nbsp;o3)&nbsp;{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;compose_f_gx_hx_t&lt;OP1,OP2,OP3&gt;(o1,o2,o3);<BR>
}<BR>
<BR>
<I><FONT face="Arial,Helvetica" color="0000FF" size=-1><Font color="0000FF" >/</FONT><I><FONT face="Arial,Helvetica" color="0000FF" size=-1>***********&nbsp;compose_f_gxy_t&nbsp;and&nbsp;compose_f_gxy&nbsp;**********************/</I></FONT></I></FONT><BR>
<BR>
<Font color="0000FF" >/</FONT><I><FONT face="Arial,Helvetica" color="0000FF" size=-1>*&nbsp;class&nbsp;for&nbsp;the&nbsp;compose_f_gxy&nbsp;adapter</I></FONT><BR>
&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1>*/</I></FONT><BR>
template&nbsp;&lt;class&nbsp;OP1,&nbsp;class&nbsp;OP2&gt;<BR>
class&nbsp;compose_f_gxy_t<BR>
&nbsp;:&nbsp;public&nbsp;std::binary_function&lt;typename&nbsp;OP2::first_argument_type,<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;typename&nbsp;OP2::second_argument_type,<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;typename&nbsp;OP1::result_type&gt;<BR>
{<BR>
&nbsp;&nbsp;private:<BR>
&nbsp;&nbsp;&nbsp;&nbsp;OP1&nbsp;op1;&nbsp;&nbsp;&nbsp;&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1>//&nbsp;process:&nbsp;op1(op2(x,y))</I></FONT><BR>
&nbsp;&nbsp;&nbsp;&nbsp;OP2&nbsp;op2;<BR>
&nbsp;&nbsp;public:<BR>
&nbsp;&nbsp;&nbsp;&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1>//&nbsp;constructor</I></FONT><BR>
&nbsp;&nbsp;&nbsp;&nbsp;compose_f_gxy_t&nbsp;(const&nbsp;OP1&&nbsp;o1,&nbsp;const&nbsp;OP2&&nbsp;o2)<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;op1(o1),&nbsp;op2(o2)&nbsp;{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1>//&nbsp;function&nbsp;call</I></FONT><BR>
&nbsp;&nbsp;&nbsp;&nbsp;typename&nbsp;OP1::result_type<BR>
&nbsp;&nbsp;&nbsp;&nbsp;operator()(const&nbsp;typename&nbsp;OP2::first_argument_type&&nbsp;x,<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const&nbsp;typename&nbsp;OP2::second_argument_type&&nbsp;y)&nbsp;const&nbsp;{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;op1(op2(x,y));<BR>
&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
};<BR>
<BR>
<Font color="0000FF" >/</FONT><I><FONT face="Arial,Helvetica" color="0000FF" size=-1>*&nbsp;convenience&nbsp;function&nbsp;for&nbsp;the&nbsp;compose_f_gxy&nbsp;adapter</I></FONT><BR>
&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1>*/</I></FONT><BR>
template&nbsp;&lt;class&nbsp;OP1,&nbsp;class&nbsp;OP2&gt;<BR>
inline&nbsp;compose_f_gxy_t&lt;OP1,OP2&gt;<BR>
compose_f_gxy&nbsp;(const&nbsp;OP1&&nbsp;o1,&nbsp;const&nbsp;OP2&&nbsp;o2)&nbsp;{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;compose_f_gxy_t&lt;OP1,OP2&gt;(o1,o2);<BR>
}<BR>
<BR>
<I><FONT face="Arial,Helvetica" color="0000FF" size=-1><Font color="0000FF" >/</FONT><I><FONT face="Arial,Helvetica" color="0000FF" size=-1>***********&nbsp;compose_f_gx_hy_t&nbsp;and&nbsp;compose_f_gx_hy&nbsp;**********************/</I></FONT></I></FONT><BR>
<BR>
<Font color="0000FF" >/</FONT><I><FONT face="Arial,Helvetica" color="0000FF" size=-1>*&nbsp;class&nbsp;for&nbsp;the&nbsp;compose_f_gx_hy&nbsp;adapter</I></FONT><BR>
&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1>*/</I></FONT><BR>
template&nbsp;&lt;class&nbsp;OP1,&nbsp;class&nbsp;OP2,&nbsp;class&nbsp;OP3&gt;<BR>
class&nbsp;compose_f_gx_hy_t<BR>
&nbsp;:&nbsp;public&nbsp;std::binary_function&lt;typename&nbsp;OP2::argument_type,<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;typename&nbsp;OP3::argument_type,<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;typename&nbsp;OP1::result_type&gt;<BR>
{<BR>
&nbsp;&nbsp;private:<BR>
&nbsp;&nbsp;&nbsp;&nbsp;OP1&nbsp;op1;&nbsp;&nbsp;&nbsp;&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1>//&nbsp;process:&nbsp;op1(op2(x),op3(y))</I></FONT><BR>
&nbsp;&nbsp;&nbsp;&nbsp;OP2&nbsp;op2;<BR>
&nbsp;&nbsp;&nbsp;&nbsp;OP3&nbsp;op3;<BR>
&nbsp;&nbsp;public:<BR>
&nbsp;&nbsp;&nbsp;&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1>//&nbsp;constructor</I></FONT><BR>
&nbsp;&nbsp;&nbsp;&nbsp;compose_f_gx_hy_t&nbsp;(const&nbsp;OP1&&nbsp;o1,&nbsp;const&nbsp;OP2&&nbsp;o2,&nbsp;const&nbsp;OP3&&nbsp;o3)<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;op1(o1),&nbsp;op2(o2),&nbsp;op3(o3)&nbsp;{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1>//&nbsp;function&nbsp;call</I></FONT><BR>
&nbsp;&nbsp;&nbsp;&nbsp;typename&nbsp;OP1::result_type<BR>
&nbsp;&nbsp;&nbsp;&nbsp;operator()(const&nbsp;typename&nbsp;OP2::argument_type&&nbsp;x,<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;const&nbsp;typename&nbsp;OP3::argument_type&&nbsp;y)&nbsp;const&nbsp;{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;op1(op2(x),op3(y));<BR>
&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
};<BR>
<BR>
<Font color="0000FF" >/</FONT><I><FONT face="Arial,Helvetica" color="0000FF" size=-1>*&nbsp;convenience&nbsp;function&nbsp;for&nbsp;the&nbsp;compose_f_gx_hy&nbsp;adapter</I></FONT><BR>
&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1>*/</I></FONT><BR>
template&nbsp;&lt;class&nbsp;OP1,&nbsp;class&nbsp;OP2,&nbsp;class&nbsp;OP3&gt;<BR>
inline&nbsp;compose_f_gx_hy_t&lt;OP1,OP2,OP3&gt;<BR>
compose_f_gx_hy&nbsp;(const&nbsp;OP1&&nbsp;o1,&nbsp;const&nbsp;OP2&&nbsp;o2,&nbsp;const&nbsp;OP3&&nbsp;o3)&nbsp;{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;compose_f_gx_hy_t&lt;OP1,OP2,OP3&gt;(o1,o2,o3);<BR>
}<BR>
<BR>
<I><FONT face="Arial,Helvetica" color="0000FF" size=-1><Font color="0000FF" >/</FONT><I><FONT face="Arial,Helvetica" color="0000FF" size=-1>***********&nbsp;compose_f_g_t&nbsp;and&nbsp;compose_f_g&nbsp;**********************/</I></FONT></I></FONT><BR>
<BR>
<Font color="0000FF" >/</FONT><I><FONT face="Arial,Helvetica" color="0000FF" size=-1>*&nbsp;class&nbsp;for&nbsp;the&nbsp;compose_f_g&nbsp;adapter</I></FONT><BR>
&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1>*/</I></FONT><BR>
template&nbsp;&lt;class&nbsp;OP1,&nbsp;class&nbsp;OP2&gt;<BR>
class&nbsp;compose_f_g_t<BR>
&nbsp;:&nbsp;public&nbsp;boost::nullary_function&lt;typename&nbsp;OP1::result_type&gt;<BR>
{<BR>
&nbsp;&nbsp;private:<BR>
&nbsp;&nbsp;&nbsp;&nbsp;OP1&nbsp;op1;&nbsp;&nbsp;&nbsp;&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1>//&nbsp;process:&nbsp;op1(op2())</I></FONT><BR>
&nbsp;&nbsp;&nbsp;&nbsp;OP2&nbsp;op2;<BR>
&nbsp;&nbsp;public:<BR>
&nbsp;&nbsp;&nbsp;&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1>//&nbsp;constructor</I></FONT><BR>
&nbsp;&nbsp;&nbsp;&nbsp;compose_f_g_t(const&nbsp;OP1&&nbsp;o1,&nbsp;const&nbsp;OP2&&nbsp;o2)<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;:&nbsp;op1(o1),&nbsp;op2(o2)&nbsp;{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1>//&nbsp;function&nbsp;call</I></FONT><BR>
&nbsp;&nbsp;&nbsp;&nbsp;typename&nbsp;OP1::result_type<BR>
&nbsp;&nbsp;&nbsp;&nbsp;operator()()&nbsp;const&nbsp;{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;op1(op2());<BR>
&nbsp;&nbsp;&nbsp;&nbsp;}<BR>
};<BR>
<BR>
<Font color="0000FF" >/</FONT><I><FONT face="Arial,Helvetica" color="0000FF" size=-1>*&nbsp;convenience&nbsp;functions&nbsp;for&nbsp;the&nbsp;compose_f_g&nbsp;adapter</I></FONT><BR>
&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1>*/</I></FONT><BR>
template&nbsp;&lt;class&nbsp;OP1,&nbsp;class&nbsp;OP2&gt;<BR>
inline&nbsp;compose_f_g_t&lt;OP1,OP2&gt;<BR>
compose_f_g&nbsp;(const&nbsp;OP1&&nbsp;o1,&nbsp;const&nbsp;OP2&&nbsp;o2)&nbsp;{<BR>
&nbsp;&nbsp;&nbsp;&nbsp;return&nbsp;compose_f_g_t&lt;OP1,OP2&gt;(o1,o2);<BR>
}<BR>
<BR>
}&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1><Font color="0000FF" >/</FONT><I><FONT face="Arial,Helvetica" color="0000FF" size=-1>*&nbsp;namespace&nbsp;boost&nbsp;*/</I></FONT></I></FONT><BR>
<BR>
#endif&nbsp;<I><FONT face="Arial,Helvetica" color="0000FF" size=-1><Font color="0000FF" >/</FONT><I><FONT face="Arial,Helvetica" color="0000FF" size=-1>*BOOST_COMPOSE_HPP*/</I></FONT></I></FONT><BR>
</TT>
</BODY>
</HTML>