2
0
mirror of https://github.com/boostorg/compose.git synced 2026-01-19 04:02:16 +00:00
Files
compose/compose.hpp.html
Beman Dawes 526353d059 Initial HTML commit
[SVN r7642]
2000-07-27 14:32:20 +00:00

460 lines
32 KiB
HTML

<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>