Topic: Revision of N3702: Introducing an optional parameter


Author: Mikhail Semenov <mikhailsemenov1957@gmail.com>
Date: Sat, 21 Sep 2013 12:01:21 -0700 (PDT)
Raw View
------=_Part_3485_20469894.1379790081477
Content-Type: multipart/alternative;
 boundary="----=_Part_3486_15221040.1379790081477"

------=_Part_3486_15221040.1379790081477
Content-Type: text/plain; charset=ISO-8859-1

The revised version has an improved implementation, which allows to pass
objects, pointers to objects and smart pointers as the second parameter to
mem_fn.

--

---
You received this message because you are subscribed to the Google Groups "ISO C++ Standard - Future Proposals" group.
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposals+unsubscribe@isocpp.org.
To post to this group, send email to std-proposals@isocpp.org.
Visit this group at http://groups.google.com/a/isocpp.org/group/std-proposals/.

------=_Part_3486_15221040.1379790081477
Content-Type: text/html; charset=ISO-8859-1

<div dir="ltr">The revised version has an&nbsp;improved implementation, which allows to pass objects, pointers to objects and smart pointers as&nbsp;the second parameter to mem_fn. </div>

<p></p>

-- <br />
&nbsp;<br />
--- <br />
You received this message because you are subscribed to the Google Groups &quot;ISO C++ Standard - Future Proposals&quot; group.<br />
To unsubscribe from this group and stop receiving emails from it, send an email to std-proposals+unsubscribe@isocpp.org.<br />
To post to this group, send email to std-proposals@isocpp.org.<br />
Visit this group at <a href="http://groups.google.com/a/isocpp.org/group/std-proposals/">http://groups.google.com/a/isocpp.org/group/std-proposals/</a>.<br />

------=_Part_3486_15221040.1379790081477--
------=_Part_3485_20469894.1379790081477
Content-Type: text/html; charset=windows-1252; name=mem_fn_revised.htm
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment; filename=mem_fn_revised.htm
X-Attachment-Id: 70169989-8ada-46b8-8a67-6d404a01949a
Content-ID: <70169989-8ada-46b8-8a67-6d404a01949a>

<html>

<head>
<meta http-equiv=3DContent-Type content=3D"text/html; charset=3Dwindows-125=
2">
<meta name=3DGenerator content=3D"Microsoft Word 14 (filtered)">
<style>
<!--
 /* Font Definitions */
 @font-face
=09{font-family:SimSun;
=09panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
=09{font-family:"Cambria Math";
=09panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
=09{font-family:Cambria;
=09panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
=09{font-family:Calibri;
=09panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
=09{font-family:Verdana;
=09panose-1:2 11 6 4 3 5 4 4 2 4;}
@font-face
=09{font-family:"Anonymous Pro";
=09panose-1:2 6 6 9 3 2 2 0 5 4;}
@font-face
=09{font-family:"Segoe UI";
=09panose-1:2 11 5 2 4 2 4 2 2 3;}
@font-face
=09{font-family:"\@SimSun";
=09panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
=09{font-family:Consolas;
=09panose-1:2 11 6 9 2 2 4 3 2 4;}
@font-face
=09{font-family:"Trebuchet MS";
=09panose-1:2 11 6 3 2 2 2 2 2 4;}
@font-face
=09{font-family:"Arial Rounded MT Bold";
=09panose-1:2 15 7 4 3 5 4 3 2 4;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
=09{margin-top:0cm;
=09margin-right:0cm;
=09margin-bottom:8.0pt;
=09margin-left:0cm;
=09line-height:115%;
=09font-size:12.0pt;
=09font-family:"Times New Roman","serif";}
h1
=09{mso-style-link:"Heading 1 Char";
=09margin-top:12.0pt;
=09margin-right:0cm;
=09margin-bottom:3.0pt;
=09margin-left:0cm;
=09line-height:115%;
=09page-break-after:avoid;
=09font-size:16.0pt;
=09font-family:"Verdana","sans-serif";}
h2
=09{mso-style-link:"Heading 2 Char";
=09margin-top:12.0pt;
=09margin-right:0cm;
=09margin-bottom:3.0pt;
=09margin-left:0cm;
=09line-height:115%;
=09page-break-after:avoid;
=09font-size:15.0pt;
=09font-family:"Times New Roman","serif";}
h3
=09{mso-style-link:"Heading 3 Char";
=09margin-top:12.0pt;
=09margin-right:0cm;
=09margin-bottom:3.0pt;
=09margin-left:0cm;
=09line-height:115%;
=09page-break-after:avoid;
=09font-size:13.0pt;
=09font-family:"Cambria","serif";}
p.MsoHeader, li.MsoHeader, div.MsoHeader
=09{mso-style-link:"Header Char";
=09margin-top:0cm;
=09margin-right:0cm;
=09margin-bottom:8.0pt;
=09margin-left:0cm;
=09line-height:115%;
=09font-size:12.0pt;
=09font-family:"Times New Roman","serif";}
p.MsoFooter, li.MsoFooter, div.MsoFooter
=09{mso-style-link:"Footer Char";
=09margin-top:0cm;
=09margin-right:0cm;
=09margin-bottom:8.0pt;
=09margin-left:0cm;
=09line-height:115%;
=09font-size:12.0pt;
=09font-family:"Times New Roman","serif";}
a:link, span.MsoHyperlink
=09{color:blue;
=09text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
=09{color:purple;
=09text-decoration:underline;}
strong
=09{font-family:"Calibri","sans-serif";}
p.MsoNoSpacing, li.MsoNoSpacing, div.MsoNoSpacing
=09{margin:0cm;
=09margin-bottom:.0001pt;
=09font-size:12.0pt;
=09font-family:"Times New Roman","serif";}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
=09{margin-top:0cm;
=09margin-right:0cm;
=09margin-bottom:8.0pt;
=09margin-left:36.0pt;
=09line-height:115%;
=09font-size:12.0pt;
=09font-family:"Times New Roman","serif";}
p.MsoQuote, li.MsoQuote, div.MsoQuote
=09{mso-style-link:"Quote Char";
=09margin-top:0cm;
=09margin-right:0cm;
=09margin-bottom:8.0pt;
=09margin-left:0cm;
=09line-height:115%;
=09font-size:12.0pt;
=09font-family:"Trebuchet MS","sans-serif";
=09color:black;
=09font-style:italic;}
p.MsoIntenseQuote, li.MsoIntenseQuote, div.MsoIntenseQuote
=09{mso-style-link:"Intense Quote Char";
=09margin-top:10.0pt;
=09margin-right:46.8pt;
=09margin-bottom:14.0pt;
=09margin-left:46.8pt;
=09line-height:115%;
=09font-size:12.0pt;
=09font-family:"Arial Rounded MT Bold","sans-serif";
=09font-weight:bold;}
span.MsoIntenseEmphasis
=09{font-family:"Trebuchet MS","sans-serif";
=09color:windowtext;
=09font-weight:bold;
=09font-style:normal;}
span.Heading1Char
=09{mso-style-name:"Heading 1 Char";
=09mso-style-link:"Heading 1";
=09font-family:"Verdana","sans-serif";
=09font-weight:bold;}
span.Heading2Char
=09{mso-style-name:"Heading 2 Char";
=09mso-style-link:"Heading 2";
=09font-family:"Times New Roman","serif";
=09font-weight:bold;}
span.Heading3Char
=09{mso-style-name:"Heading 3 Char";
=09mso-style-link:"Heading 3";
=09font-family:"Cambria","serif";
=09font-weight:bold;}
span.HeaderChar
=09{mso-style-name:"Header Char";
=09mso-style-link:Header;
=09font-family:"Times New Roman","serif";}
span.FooterChar
=09{mso-style-name:"Footer Char";
=09mso-style-link:Footer;
=09font-family:"Times New Roman","serif";}
span.QuoteChar
=09{mso-style-name:"Quote Char";
=09mso-style-link:Quote;
=09font-family:"Trebuchet MS","sans-serif";
=09color:black;
=09font-style:italic;}
span.IntenseQuoteChar
=09{mso-style-name:"Intense Quote Char";
=09mso-style-link:"Intense Quote";
=09font-family:"Arial Rounded MT Bold","sans-serif";
=09font-weight:bold;}
p.msolistparagraphcxspfirst, li.msolistparagraphcxspfirst, div.msolistparag=
raphcxspfirst
=09{mso-style-name:msolistparagraphcxspfirst;
=09margin-top:0cm;
=09margin-right:0cm;
=09margin-bottom:0cm;
=09margin-left:36.0pt;
=09margin-bottom:.0001pt;
=09line-height:115%;
=09font-size:12.0pt;
=09font-family:"Times New Roman","serif";}
p.msolistparagraphcxspmiddle, li.msolistparagraphcxspmiddle, div.msolistpar=
agraphcxspmiddle
=09{mso-style-name:msolistparagraphcxspmiddle;
=09margin-top:0cm;
=09margin-right:0cm;
=09margin-bottom:0cm;
=09margin-left:36.0pt;
=09margin-bottom:.0001pt;
=09line-height:115%;
=09font-size:12.0pt;
=09font-family:"Times New Roman","serif";}
p.msolistparagraphcxsplast, li.msolistparagraphcxsplast, div.msolistparagra=
phcxsplast
=09{mso-style-name:msolistparagraphcxsplast;
=09margin-top:0cm;
=09margin-right:0cm;
=09margin-bottom:8.0pt;
=09margin-left:36.0pt;
=09line-height:115%;
=09font-size:12.0pt;
=09font-family:"Times New Roman","serif";}
p.ecxmsonormal, li.ecxmsonormal, div.ecxmsonormal
=09{mso-style-name:ecxmsonormal;
=09margin-top:0cm;
=09margin-right:0cm;
=09margin-bottom:16.2pt;
=09margin-left:0cm;
=09font-size:12.0pt;
=09font-family:"Times New Roman","serif";}
p.msochpdefault, li.msochpdefault, div.msochpdefault
=09{mso-style-name:msochpdefault;
=09margin-right:0cm;
=09margin-left:0cm;
=09font-size:10.0pt;
=09font-family:"Calibri","sans-serif";}
span.unsafesenderemail1
=09{mso-style-name:unsafesenderemail1;}
..MsoChpDefault
=09{font-size:10.0pt;
=09font-family:"Calibri","sans-serif";}
@page WordSection1
=09{size:595.3pt 841.9pt;
=09margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
=09{page:WordSection1;}
-->
</style>

</head>

<body lang=3DEN-GB link=3Dblue vlink=3Dpurple>

<div class=3DWordSection1>

<table class=3DMsoNormalTable border=3D0 cellspacing=3D0 cellpadding=3D0 wi=
dth=3D619
 style=3D'width:464.25pt;border-collapse:collapse'>
 <tr>
  <td width=3D123 valign=3Dtop style=3D'width:92.4pt;padding:0cm 0cm 0cm 0c=
m'>
  <p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;lin=
e-height:
  normal'><span style=3D'font-size:10.0pt'>Document number:</span></p>
  </td>
  <td width=3D496 style=3D'width:371.85pt;padding:0cm 0cm 0cm 0cm'></td>
 </tr>
 <tr>
  <td width=3D123 valign=3Dtop style=3D'width:92.4pt;padding:0cm 0cm 0cm 0c=
m'>
  <p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;lin=
e-height:
  normal'><span style=3D'font-size:10.0pt'>Date:</span></p>
  <p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;lin=
e-height:
  normal'><span style=3D'font-size:10.0pt'>Revises:</span></p>
  </td>
  <td width=3D496 style=3D'width:371.85pt;padding:0cm 0cm 0cm 0cm'>
  <p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;lin=
e-height:
  normal'><span style=3D'font-size:10.0pt'>2013-09-21</span></p>
  <p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;lin=
e-height:
  normal'><span style=3D'font-size:10.0pt'>N3702</span></p>
  </td>
 </tr>
 <tr>
  <td width=3D123 valign=3Dtop style=3D'width:92.4pt;padding:0cm 0cm 0cm 0c=
m'>
  <p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;lin=
e-height:
  normal'><span style=3D'font-size:10.0pt'>Project:</span></p>
  </td>
  <td width=3D496 style=3D'width:371.85pt;padding:0cm 0cm 0cm 0cm'>
  <p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;lin=
e-height:
  normal'><span style=3D'font-size:10.0pt'>Programming Language C++, Librar=
y
  Working Group</span></p>
  </td>
 </tr>
 <tr>
  <td width=3D123 valign=3Dtop style=3D'width:92.4pt;padding:0cm 0cm 0cm 0c=
m'>
  <p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;lin=
e-height:
  normal'><span style=3D'font-size:10.0pt'>Reply-to:</span></p>
  </td>
  <td width=3D496 style=3D'width:371.85pt;padding:0cm 0cm 0cm 0cm'>
  <p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;lin=
e-height:
  normal'><span style=3D'font-size:10.0pt'>Mikhail Semenov&lt;<span
  class=3Dunsafesenderemail1><span style=3D'color:black'>mikhailsemenov1957=
@gmail.com</span></span>&gt;</span></p>
  </td>
 </tr>
</table>

<h1>&nbsp;</h1>

<h1 align=3Dcenter style=3D'text-align:center'><span style=3D'font-size:15.=
0pt;
line-height:115%'>Introducing an optional parameter for </span><strong><spa=
n
style=3D'font-size:15.0pt;line-height:115%'>mem_fn</span></strong><span
style=3D'font-size:15.0pt;line-height:115%'>, which allows to bind an objec=
t to
its member function</span></h1>

<h2 style=3D'margin-left:36.0pt;text-indent:-18.0pt'>1.<span style=3D'font-=
size:
7.0pt;line-height:115%'>&nbsp;&nbsp;&nbsp;&nbsp; </span>Introduction</h2>

<p class=3DMsoNormal>When a member function is used as a parameter to anoth=
er
function (the latter is usually called a <b><i>functional</i></b>) it is of=
ten
necessary to provide the corresponding class object as a parameter as well.=
 But
functionals, like for example an integral, are often written to accept one
global function. In cases when a member function and an object are needed, =
it
is necessary to bind them together,&nbsp; so that the result can be supplie=
d to
the corresponding functional as one parameter. Let us consider the followin=
g
functional <b>integrate </b>(it can be part of&nbsp; a library):&nbsp;</p>

<p class=3DMsoNormal><strong><span lang=3DFR>double
integrate(std::function&lt;double(double, double, double, double, double)&g=
t;
f,</span></strong></p>

<p class=3DMsoNormal><strong><span lang=3DFR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;
double x1, double x2, double y1, double y2, double z1, double z2,&nbsp; dou=
ble
a1, double a2, double b1, double b2)&nbsp;;</span></strong></p>

<p class=3DMsoNormal>We need to call <b>integrate</b> with&nbsp; the
parameterized function <b>fa</b>, which is defined as a member of the class=
 <b>A</b>:</p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><str=
ong>class
A</strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><str=
ong>{</strong></p>

<p class=3Decxmsonormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;
background:white'><strong>&nbsp;&nbsp;&nbsp;&nbsp; double p;</strong></p>

<p class=3Decxmsonormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;
background:white'><strong>&nbsp;</strong></p>

<p class=3Decxmsonormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;
background:white'><strong>public:</strong></p>

<p class=3Decxmsonormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;
background:white'><strong>&nbsp;&nbsp;&nbsp;&nbsp; A(double p1):p(p1) {}</s=
trong></p>

<p class=3Decxmsonormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;
background:white'><strong>&nbsp;&nbsp;&nbsp;&nbsp; void set_param(double p1=
)
{&nbsp; p =3D p1; }</strong></p>

<p class=3Decxmsonormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;
background:white'><strong>&nbsp;&nbsp;&nbsp;&nbsp; double fa(double x, doub=
le
y, double z, double a, double b);</strong></p>

<p class=3Decxmsonormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;
background:white'><strong>};</strong></p>

<p class=3Decxmsonormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;
background:white'>&nbsp;</p>

<p class=3DMsoNormal>The member-variable&nbsp; <b>p</b> is a &quot;hidden&q=
uot;
parameter of the function <b>fa</b>. We create an object:</p>

<p class=3Decxmsonormal style=3D'background:white'><strong><span style=3D'f=
ont-size:
11.0pt'>A a(5.0);</span></strong></p>

<p class=3Decxmsonormal style=3D'background:white'>If we want to call <b>in=
tegrate</b>
with <b>a.fa</b>&nbsp; we have three options:</p>

<p class=3Decxmsonormal style=3D'margin-top:0cm;margin-right:0cm;margin-bot=
tom:
0cm;margin-left:36.0pt;margin-bottom:.0001pt;text-indent:-18.0pt;background=
:
white'><strong><span style=3D'font-weight:normal'>(1)</span></strong><stron=
g><span
style=3D'font-size:7.0pt;font-family:"Times New Roman","serif"'>&nbsp;&nbsp=
; </span>double
r =3D </strong><strong><span style=3D'font-size:10.5pt;font-family:"Segoe U=
I","sans-serif";
color:black'>&nbsp;</span>integrate(std::bind(&amp;A::fa, &amp;a, _1, _2, _=
3,
_4, _5), x1, x2, y1,y2, z1, z2,&nbsp;&nbsp; </strong></p>

<p class=3Decxmsonormal style=3D'margin-top:0cm;margin-right:0cm;margin-bot=
tom:
0cm;margin-left:36.0pt;margin-bottom:.0001pt;background:white'><strong>&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
a1, a2, b1, b2);</strong></p>

<p class=3Decxmsonormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;
background:white'><strong>&nbsp;</strong></p>

<p class=3Decxmsonormal style=3D'margin-top:0cm;margin-right:0cm;margin-bot=
tom:
0cm;margin-left:36.0pt;margin-bottom:.0001pt;text-indent:-18.0pt;background=
:
white'><strong><span style=3D'font-weight:normal'>(2)</span></strong><stron=
g><span
style=3D'font-size:7.0pt;font-family:"Times New Roman","serif";font-weight:=
normal'>&nbsp;&nbsp;
</span></strong><span style=3D'font-size:10.5pt;font-family:"Segoe UI","san=
s-serif";
color:black'>&nbsp;</span><strong>double r =3D integrate</strong></p>

<p class=3Decxmsonormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;
background:white'><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</strong><strong><span lang=3DFR>([&amp;a](double x, double y, double z, do=
uble
a, double b) { return a.fa(x, y, z, a, b);},&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; =
</span></strong></p>

<p class=3Decxmsonormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;
background:white'><strong><span lang=3DFR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
x1, x2, y1, y2, z1, z2, a1, a2, b1, b2);&nbsp;</span></strong></p>

<p class=3Decxmsonormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;
background:white'><strong><span lang=3DFR>&nbsp;</span></strong></p>

<p class=3Decxmsonormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;
background:white'><strong><span lang=3DFR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </=
span></strong><strong><span
style=3D'font-weight:normal'>(3)</span>&nbsp;&nbsp; </strong><strong><span
style=3D'font-weight:normal'>define a global function (a wrapper), which we=
 will
use as a&nbsp; parameter to the function </span>integrate</strong><strong><=
span
style=3D'font-weight:normal'>:</span></strong></p>

<p class=3Decxmsonormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;
background:white'><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbs=
p;&nbsp;
double f(double x, double y, double z, double a, double b) { return
a.fa(x,y,z,a,b); }</strong></p>

<p class=3Decxmsonormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;
background:white'><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
=85</strong></p>

<p class=3Decxmsonormal style=3D'margin-top:0cm;margin-right:0cm;margin-bot=
tom:
0cm;margin-left:36.0pt;margin-bottom:.0001pt;text-indent:-18.0pt;background=
:
white'><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; double r =
=3D
integrate(f, x1, x2, y1, y2, z1, z2, a1, a2, b1, b2);</strong></p>

<p class=3Decxmsonormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;
background:white'><strong>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </stro=
ng></p>

<p class=3Decxmsonormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;
background:white'>In all these examples, if the function <b>fa</b> had more
parameters we would have to write even a longer statement. </p>

<p class=3Decxmsonormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;
background:white'>&nbsp;</p>

<p class=3Decxmsonormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;
background:white'>It would be much more convenient to be able to write
something like this:</p>

<p class=3Decxmsonormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;
line-height:150%;background:white'><strong>double r =3D integrate(<i>some_b=
inder</i>(&amp;A::fa,
&amp;a), x1, x2, y1, y2, z1, z2, a1, a2, b1, b2);&nbsp;</strong></p>

<p class=3DMsoNormal><strong><span style=3D'font-family:"Times New Roman","=
serif";
font-weight:normal'>which looks more simple and clearer</span></strong><str=
ong><span
style=3D'font-family:SimSun;font-weight:normal'>.</span></strong></p>

<h2 style=3D'margin-left:36.0pt;text-indent:-18.0pt'>2.<span style=3D'font-=
size:
7.0pt;line-height:115%'>&nbsp;&nbsp;&nbsp;&nbsp; </span>Proposal</h2>

<p class=3DMsoNormal>The proposal is to allow <b>mem_fn</b> to accept a sec=
ond,
optional parameter. The full definition is as follows (the first option is =
the
same as in <b>N3690, </b>section<b> 20.10.10</b>):</p>

<p class=3DMsoNormal style=3D'margin-left:14.2pt'><strong><span style=3D'fo=
nt-size:
11.0pt;line-height:115%;font-family:Consolas'>template&lt;class R, class T&=
gt;
unspecified mem_fn(R T::* pm);</span></strong></p>

<p class=3DMsoNormal style=3D'margin-left:14.2pt'><strong><i><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif"'>Returns:</span></i></strong><strong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif";
font-weight:normal'> A simple call wrapper (20.10.1) </span></strong><stron=
g><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif"'>fn</span></strong><strong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif";
font-weight:normal'> such that the expression </span></strong><span
class=3DIntenseQuoteChar><span style=3D'font-size:11.0pt;line-height:115%;
font-family:"Times New Roman","serif"'>fn(t, a2, ..., aN)</span></span><str=
ong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif";
font-weight:normal'> is equivalent to </span></strong><span
class=3DIntenseQuoteChar><span style=3D'font-size:11.0pt;line-height:115%;
font-family:"Times New Roman","serif"'>INVOKE (pm, t, a2, ..., aN)</span></=
span><strong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif";
font-weight:normal'> (20.10.2). </span></strong><span class=3DIntenseQuoteC=
har><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif"'>fn
</span></span><strong><span style=3D'font-size:11.0pt;line-height:115%;
font-family:"Times New Roman","serif";font-weight:normal'>shall have a nest=
ed
type </span></strong><span class=3DIntenseQuoteChar><span style=3D'font-siz=
e:11.0pt;
line-height:115%;font-family:"Times New Roman","serif"'>result_type</span><=
/span><strong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif";
font-weight:normal'> that is a synonym for the return type of </span></stro=
ng><span
class=3DIntenseQuoteChar><span style=3D'font-size:11.0pt;line-height:115%;
font-family:"Times New Roman","serif"'>pm</span></span><strong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif";
font-weight:normal'> when </span></strong><span class=3DIntenseQuoteChar><s=
pan
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif"'>pm</span></span><strong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif";
font-weight:normal'> is a pointer to member function.</span></strong></p>

<p class=3DMsoNormal style=3D'margin-left:14.2pt'><strong><span style=3D'fo=
nt-size:
11.0pt;line-height:115%;font-family:"Times New Roman","serif";font-weight:n=
ormal'>The
simple call wrapper shall define two nested types named </span></strong><st=
rong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif"'>argument_type</span></strong><strong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif";
font-weight:normal'> and </span></strong><strong><span style=3D'font-size:1=
1.0pt;
line-height:115%;font-family:"Times New Roman","serif"'>result_type</span><=
/strong><strong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif";
font-weight:normal'> as synonyms for </span></strong><strong><i><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif"'>cv</span></i></strong><strong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif";
font-weight:normal'> </span></strong><strong><span style=3D'font-size:11.0p=
t;
line-height:115%;font-family:"Times New Roman","serif"'>T*</span></strong><=
strong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif";
font-weight:normal'> and </span></strong><strong><span style=3D'font-size:1=
1.0pt;
line-height:115%;font-family:"Times New Roman","serif"'>Ret</span></strong>=
<strong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif";
font-weight:normal'>, respectively, when </span></strong><strong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif"'>pm</span></strong><strong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif";
font-weight:normal'> is a pointer to member function with <i>cv-</i>qualifi=
er </span></strong><strong><i><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif"'>cv</span></i></strong><strong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif";
font-weight:normal'> and taking no arguments, where </span></strong><span
class=3DIntenseQuoteChar><i><span style=3D'font-size:11.0pt;line-height:115=
%;
font-family:"Times New Roman","serif"'>Ret</span></i></span><strong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif";
font-weight:normal'>&nbsp; is </span></strong><span class=3DIntenseQuoteCha=
r><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif"'>pm</span></span><strong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif";
font-weight:normal'>=92s return type.</span></strong></p>

<p class=3DMsoNormal style=3D'margin-left:14.2pt'><strong><span style=3D'fo=
nt-size:
11.0pt;line-height:115%;font-family:"Times New Roman","serif";font-weight:n=
ormal'>The
simple call wrapper shall define three nested types named </span></strong><=
span
class=3DIntenseQuoteChar><span style=3D'font-size:11.0pt;line-height:115%;
font-family:"Times New Roman","serif"'>first_argument_type</span></span><st=
rong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif";
font-weight:normal'>, </span></strong><span class=3DIntenseQuoteChar><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif"'>second_argument_type</span></span><strong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif";
font-weight:normal'>, and </span></strong><span class=3DIntenseQuoteChar><s=
pan
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif"'>result_type</span></span><strong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif";
font-weight:normal'> as synonyms for </span></strong><span
class=3DIntenseQuoteChar><i><span style=3D'font-size:11.0pt;line-height:115=
%;
font-family:"Times New Roman","serif"'>cv</span></i></span><strong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif"'>&nbsp;
</span></strong><span class=3DIntenseQuoteChar><span style=3D'font-size:11.=
0pt;
line-height:115%;font-family:"Times New Roman","serif"'>T*</span></span><st=
rong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif"'>,
</span></strong><span class=3DIntenseQuoteChar><span style=3D'font-size:11.=
0pt;
line-height:115%;font-family:"Times New Roman","serif"'>T1</span></span><st=
rong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif"'>,</span></strong><strong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif";
font-weight:normal'> and </span></strong><span class=3DIntenseQuoteChar><sp=
an
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif"'>Ret</span></span><strong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif";
font-weight:normal'>, respectively, when </span></strong><span
class=3DIntenseQuoteChar><span style=3D'font-size:11.0pt;line-height:115%;
font-family:"Times New Roman","serif"'>pm</span></span><strong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif";
font-weight:normal'> is a pointer to member function with </span></strong><=
span
class=3DQuoteChar><b><span style=3D'font-size:11.0pt;line-height:115%;font-=
family:
"Times New Roman","serif"'>cv-</span></b></span><strong><span style=3D'font=
-size:
11.0pt;line-height:115%;font-family:"Times New Roman","serif";font-weight:n=
ormal'>qualifier
</span></strong><span class=3DIntenseQuoteChar><i><span style=3D'font-size:=
11.0pt;
line-height:115%;font-family:"Times New Roman","serif"'>cv</span></i></span=
><strong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif";
font-weight:normal'> and taking one argument of type </span></strong><span
class=3DIntenseQuoteChar><span style=3D'font-size:11.0pt;line-height:115%;
font-family:"Times New Roman","serif"'>T1</span></span><strong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif";
font-weight:normal'>, where </span></strong><span class=3DIntenseQuoteChar>=
<i><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif"'>Ret</span></i></span><strong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif";
font-weight:normal'> is </span></strong><span class=3DIntenseQuoteChar><spa=
n
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif"'>pm</span></span><strong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif";
font-weight:normal'>=92s return type.</span></strong></p>

<p class=3DMsoNormal style=3D'margin-left:14.2pt'><strong><i><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif"'>Throws:
</span></i></strong><strong><span style=3D'font-size:11.0pt;line-height:115=
%;
font-family:"Times New Roman","serif";font-weight:normal'>Nothing</span></s=
trong><strong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Trebuchet MS","sans=
-serif";
font-weight:normal'>.</span></strong></p>

<p class=3DMsoNormal style=3D'margin-top:0cm;margin-right:46.8pt;margin-bot=
tom:
0cm;margin-left:14.2pt;margin-bottom:.0001pt;line-height:normal'><b><span
style=3D'font-size:11.0pt;font-family:Consolas'>template&lt;class R, class =
T,
class ObjT, class =85 Arg&gt; </span></b></p>

<p class=3DMsoNormal style=3D'margin-top:0cm;margin-right:46.8pt;margin-bot=
tom:
0cm;margin-left:14.2pt;margin-bottom:.0001pt;line-height:normal'><b><span
style=3D'font-size:11.0pt;font-family:Consolas'>&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
unspecified mem_fn(R T::* pm, ObjT obj);</span></b></p>

<p class=3DMsoNormal style=3D'margin-top:0cm;margin-right:46.8pt;margin-bot=
tom:
0cm;margin-left:14.2pt;margin-bottom:.0001pt;line-height:normal'><b><i><spa=
n
style=3D'font-size:11.0pt'>&nbsp;</span></i></b></p>

<p class=3DMsoNormal style=3D'margin-top:0cm;margin-right:46.8pt;margin-bot=
tom:
0cm;margin-left:14.2pt;margin-bottom:.0001pt;line-height:normal'><b><i><spa=
n
style=3D'font-size:11.0pt'>Requires: </span></i></b><b><span style=3D'font-=
size:
11.0pt;font-family:Consolas'>ObjT </span></b><span style=3D'font-size:11.0p=
t;
font-family:Consolas'>is<b> CopyConstructible</b>.</span></p>

<p class=3DMsoNormal style=3D'margin-top:0cm;margin-right:46.8pt;margin-bot=
tom:
0cm;margin-left:14.2pt;margin-bottom:.0001pt;line-height:normal'>&nbsp;</p>

<p class=3DMsoNormal style=3D'margin-left:14.2pt'><strong><i><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif"'>Returns:</span></i></strong><strong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif";
font-weight:normal'> A simple call wrapper (20.10.1) </span></strong><span
class=3DIntenseQuoteChar><span style=3D'font-size:11.0pt;line-height:115%;
font-family:"Times New Roman","serif"'>fn</span></span><strong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif";
font-weight:normal'> such that the expression </span></strong><strong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif"'>fn(a1,
...., aN)</span></strong><strong><span style=3D'font-size:11.0pt;line-height=
:115%;
font-family:"Times New Roman","serif";font-weight:normal'> is equivalent to=
 </span></strong><strong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif"'>INVOKE(pm,
obj, a1,=85aN)</span></strong><strong><span style=3D'font-size:11.0pt;line-=
height:
115%;font-family:"Times New Roman","serif";font-weight:normal'>. </span></s=
trong><strong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif"'>fn</span></strong><strong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif";
font-weight:normal'> shall have a nested type </span></strong><strong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif"'>result_type</span></strong><strong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif";
font-weight:normal'> that is a synonym for the return type of </span></stro=
ng><strong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif"'>pm</span></strong><strong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif";
font-weight:normal'> when </span></strong><strong><span style=3D'font-size:=
11.0pt;
line-height:115%;font-family:"Times New Roman","serif"'>pm</span></strong><=
strong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif";
font-weight:normal'> is a pointer to member function.</span></strong></p>

<p class=3DMsoNormal style=3D'margin-left:14.2pt'><strong><span style=3D'fo=
nt-size:
11.0pt;line-height:115%;font-family:"Times New Roman","serif";font-weight:n=
ormal'>The
simple call wrapper shall define one nested type named </span></strong><str=
ong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif"'>result_type</span></strong><strong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif";
font-weight:normal'> as a synonym for </span></strong><strong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif"'>Ret</span></strong><strong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif";
font-weight:normal'>, where </span></strong><span class=3DIntenseQuoteChar>=
<i><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif"'>Ret</span></i></span><span
class=3DIntenseQuoteChar><i><span style=3D'font-size:11.0pt;line-height:115=
%;
font-family:"Times New Roman","serif";font-weight:normal'> </span></i></spa=
n><strong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif";
font-weight:normal'>&nbsp;is </span></strong><span class=3DIntenseQuoteChar=
><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif"'>pm</span></span><strong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif";
font-weight:normal'>=92s return type.</span></strong></p>

<p class=3DMsoNormal style=3D'margin-left:14.2pt'><strong><span style=3D'fo=
nt-size:
11.0pt;line-height:115%;font-family:"Times New Roman","serif";font-weight:n=
ormal'>The
simple call wrapper shall define two nested types named </span></strong><st=
rong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif"'>argument_type
</span></strong><strong><span style=3D'font-size:11.0pt;line-height:115%;
font-family:"Times New Roman","serif";font-weight:normal'>and </span></stro=
ng><strong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif"'>result_type</span></strong><strong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif";
font-weight:normal'> as synonyms for </span></strong><strong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif"'>T1</span></strong><strong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif";
font-weight:normal'> and </span></strong><strong><span style=3D'font-size:1=
1.0pt;
line-height:115%;font-family:"Times New Roman","serif"'>Ret</span></strong>=
<strong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif";
font-weight:normal'>, respectively, when </span></strong><span
class=3DIntenseQuoteChar><span style=3D'font-family:"Times New Roman","seri=
f"'>pm</span></span><strong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif";
font-weight:normal'> is a pointer to member function taking&nbsp; one argum=
ent
of type </span></strong><span class=3DIntenseQuoteChar><span style=3D'font-=
family:
"Times New Roman","serif"'>T1</span></span><strong><span style=3D'font-size=
:11.0pt;
line-height:115%;font-family:"Times New Roman","serif";font-weight:normal'>=
,
where </span></strong><span class=3DIntenseQuoteChar><i><span style=3D'font=
-size:
11.0pt;line-height:115%;font-family:"Times New Roman","serif"'>Ret</span></=
i></span><strong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif";
font-weight:normal'> is </span></strong><span class=3DIntenseQuoteChar><spa=
n
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif"'>pm</span></span><strong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif";
font-weight:normal'>=92s return type.</span></strong></p>

<p class=3DMsoNormal style=3D'margin-left:14.2pt'><strong><span style=3D'fo=
nt-size:
11.0pt;line-height:115%;font-family:"Times New Roman","serif";font-weight:n=
ormal'>The
simple call wrapper shall define three nested types named </span></strong><=
span
class=3DIntenseQuoteChar><span style=3D'font-size:11.0pt;line-height:115%;
font-family:"Times New Roman","serif"'>first_argument_type</span></span><st=
rong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif";
font-weight:normal'>, </span></strong><span class=3DIntenseQuoteChar><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif"'>second_argument_type</span></span><strong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif";
font-weight:normal'>, and </span></strong><span class=3DIntenseQuoteChar><s=
pan
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif"'>result_type</span></span><strong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif";
font-weight:normal'> as synonyms for </span></strong><span
class=3DIntenseQuoteChar><span style=3D'font-size:11.0pt;line-height:115%;
font-family:"Times New Roman","serif"'>T1</span></span><strong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif"'>,
</span></strong><span class=3DIntenseQuoteChar><span style=3D'font-size:11.=
0pt;
line-height:115%;font-family:"Times New Roman","serif"'>T2</span></span><st=
rong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif"'>,</span></strong><strong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif";
font-weight:normal'> and </span></strong><span class=3DIntenseQuoteChar><sp=
an
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif"'>Ret</span></span><strong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif";
font-weight:normal'>, respectively, when </span></strong><span
class=3DIntenseQuoteChar><span style=3D'font-size:11.0pt;line-height:115%;
font-family:"Times New Roman","serif"'>pm</span></span><strong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif";
font-weight:normal'> is a pointer to member function taking two arguments o=
f
types </span></strong><span class=3DIntenseQuoteChar><span style=3D'font-si=
ze:11.0pt;
line-height:115%;font-family:"Times New Roman","serif"'>T1</span></span><sp=
an
class=3DIntenseQuoteChar><span style=3D'font-size:11.0pt;line-height:115%;
font-family:"Times New Roman","serif";font-weight:normal'> and&nbsp; </span=
></span><span
class=3DIntenseQuoteChar><span style=3D'font-size:11.0pt;line-height:115%;
font-family:"Times New Roman","serif"'>T2</span></span><strong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif";
font-weight:normal'>, where </span></strong><span class=3DIntenseQuoteChar>=
<i><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif"'>Ret</span></i></span><strong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif";
font-weight:normal'> is </span></strong><span class=3DIntenseQuoteChar><spa=
n
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif"'>pm</span></span><strong><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif";
font-weight:normal'>=92s return type.</span></strong></p>

<p class=3DMsoNormal style=3D'margin-left:14.2pt'><strong><i><span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif"'>Throws:
</span></i></strong><strong><span style=3D'font-size:11.0pt;line-height:115=
%;
font-family:"Times New Roman","serif";font-weight:normal'>Nothing unless th=
e
evaluation of </span></strong><strong><span style=3D'font-size:11.0pt;line-=
height:
115%;font-family:"Times New Roman","serif"'>obj</span></strong><strong><spa=
n
style=3D'font-size:11.0pt;line-height:115%;font-family:"Times New Roman","s=
erif";
font-weight:normal'> throws</span></strong><strong><span style=3D'font-size=
:11.0pt;
line-height:115%;font-family:"Times New Roman","serif"'>.</span></strong></=
p>

<p class=3DMsoNormal><strong><span style=3D'font-family:"Times New Roman","=
serif";
font-weight:normal'>The second option means that the object and the member =
function
will be bound together.&nbsp; Using this feature we can now write the follo=
wing
code (the class and the function used here were explained in the introducti=
on):</span></strong></p>

<p class=3DMsoQuote style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-h=
eight:
normal'><strong><span style=3D'font-style:normal'>double x =3D 1.0;</span><=
/strong></p>

<p class=3DMsoQuote style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-h=
eight:
normal'><strong><span style=3D'font-style:normal'>double sum =3D 0.0;</span=
></strong></p>

<p class=3DMsoQuote style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-h=
eight:
normal'><strong><span style=3D'font-style:normal'>for (int i =3D 0; i &lt; =
10; i++)</span></strong></p>

<p class=3DMsoQuote style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-h=
eight:
normal'><strong><span style=3D'font-style:normal'>{</span></strong></p>

<p class=3DMsoQuote style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-h=
eight:
normal'><strong><span style=3D'font-style:normal'>&nbsp;&nbsp; a.set_param(=
x);</span></strong></p>

<p class=3DMsoQuote style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-h=
eight:
normal'><strong><span style=3D'font-style:normal'>&nbsp;&nbsp; sum +=3D
integrate(mem_fn(&amp;A::fa, &amp;a), x1, x2, y1, y2, z1, z2, a1, a2, b1, b=
2);
// summing up ten values</span></strong></p>

<p class=3DMsoQuote style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-h=
eight:
normal'><strong><span style=3D'font-style:normal'>&nbsp;&nbsp; x +=3D 0.1;<=
/span></strong></p>

<p class=3DMsoQuote style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-h=
eight:
normal'><strong><span style=3D'font-style:normal'>}</span></strong></p>

<h2>Examples</h2>

<h3><u>Example 1.</u></h3>

<p class=3DMsoNormal>Here is a sample program, which shows the application
of&nbsp; <b>mem_fn</b> to simple member functions, and also its use with a =
shared
pointer&nbsp; as the second parameter:</p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>cla=
ss A2</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>{</=
span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>&nb=
sp;&nbsp;&nbsp;
int i;</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>pub=
lic:&nbsp;&nbsp;&nbsp;
</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>&nb=
sp;&nbsp;&nbsp;
A2(int k):i(k) {}</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>&nb=
sp;</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>&nb=
sp;&nbsp;&nbsp;
auto get()const -&gt;int { return i;}&nbsp; </span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>&nb=
sp;&nbsp;&nbsp;
auto getv() volatile -&gt;int { return i;}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </=
span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>&nb=
sp;&nbsp;&nbsp;
auto set(int v)-&gt;void { i =3D v;}</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>&nb=
sp;</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>&nb=
sp;&nbsp;&nbsp;
auto inc(int g)-&gt;int&amp; { i+=3Dg; return i;}</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>&nb=
sp;&nbsp;&nbsp;
auto incp(int&amp; g)-&gt;int&amp; { g+=3Di; return g;}</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>&nb=
sp;&nbsp;&nbsp;
</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>&nb=
sp;&nbsp;&nbsp;
auto f8 (int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8) co=
nst
-&gt; int</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>&nb=
sp;&nbsp;&nbsp;
{</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
return i+a1+a2+a3+a4+a5+a6+a7+a8;</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>&nb=
sp;&nbsp;&nbsp;
}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>};<=
/span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>&nb=
sp;</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>int
main()</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>{</=
span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>&nb=
sp;&nbsp;&nbsp;
A2 a(11);&nbsp; </span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>&nb=
sp;&nbsp;
</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>&nb=
sp;&nbsp;&nbsp;
auto get2 =3D std::mem_fn(&amp;A2::get,a);&nbsp;&nbsp;&nbsp; </span></b></p=
>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>&nb=
sp;&nbsp;&nbsp;
std::cout &lt;&lt; get2() &lt;&lt; std::endl;&nbsp;&nbsp; </span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>&nb=
sp;&nbsp;&nbsp;
{</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
A2 b(25);</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
get2 =3D std::mem_fn(&amp;A2::get, b);</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>&nb=
sp;&nbsp;&nbsp;
}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>&nb=
sp;&nbsp;&nbsp;
std::cout &lt;&lt; get2() &lt;&lt; std::endl;&nbsp;&nbsp; </span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>&nb=
sp;&nbsp;&nbsp;
</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>&nb=
sp;&nbsp;&nbsp;
auto a_get1 =3D std::mem_fn(&amp;A2::get);</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>&nb=
sp;
&nbsp;&nbsp;std::cout &lt;&lt; a_get1(&amp;a) &lt;&lt; std::endl;</span></b=
></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>&nb=
sp;</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>&nb=
sp;&nbsp;&nbsp;
auto set1 =3D std::mem_fn(&amp;A2::set, &amp;a);</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>&nb=
sp;&nbsp;&nbsp;
</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>&nb=
sp;&nbsp;&nbsp;
std::shared_ptr&lt;A2&gt; sh_a(new A2(22));</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>&nb=
sp;&nbsp;&nbsp;
auto inc =3D std::mem_fn(&amp;A2::inc, sh_a);</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>&nb=
sp;&nbsp;&nbsp;
auto incp =3D std::mem_fn(&amp;A2::incp, sh_a); </span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>&nb=
sp;&nbsp;&nbsp;
auto af8&nbsp; =3D std::mem_fn(&amp;A2::f8,sh_a);</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>&nb=
sp;&nbsp;&nbsp;
auto b_af8 =3D std::bind(&amp;A2::f8, sh_a, _1, _2, _3, _4, _5, _6, _7,
_8);&nbsp;&nbsp;&nbsp;&nbsp; </span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>&nb=
sp;&nbsp;&nbsp;
set1(15);</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>&nb=
sp;&nbsp;&nbsp;
std::cout &lt;&lt; &quot;a.get():&quot; &lt;&lt; a.get() &lt;&lt;
std::endl;&nbsp;&nbsp;&nbsp; </span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>&nb=
sp;&nbsp;&nbsp;
</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>&nb=
sp;&nbsp;&nbsp;
auto sh_get&nbsp; =3D std::mem_fn(&amp;A2::get,sh_a);</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>&nb=
sp;&nbsp;&nbsp;
</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>&nb=
sp;&nbsp;&nbsp;
std::cout &lt;&lt; &quot;sh_get:&quot; &lt;&lt; sh_get() &lt;&lt;
std::endl;&nbsp;&nbsp; </span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>&nb=
sp;&nbsp;&nbsp;
</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>&nb=
sp;&nbsp;&nbsp;
int x =3D 5;</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>&nb=
sp;&nbsp;&nbsp;
int k =3D inc(x);</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>&nb=
sp;&nbsp;&nbsp;
int&amp; k2 =3D incp(x);</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>&nb=
sp;&nbsp;&nbsp;
</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>&nb=
sp;&nbsp;&nbsp;
k2 *=3D 7;</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>&nb=
sp;&nbsp;&nbsp;
std::cout &lt;&lt; &quot;a.get():&quot; &lt;&lt; a.get() &lt;&lt; std::endl=
;</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>&nb=
sp;&nbsp;&nbsp;
std::cout &lt;&lt; &quot;k: &quot; &lt;&lt; k &lt;&lt; std::endl;</span></b=
></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>&nb=
sp;&nbsp;&nbsp;
std::cout &lt;&lt; &quot;x: &quot; &lt;&lt; x &lt;&lt; std::endl;</span></b=
></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>&nb=
sp;&nbsp;&nbsp;
std::cout &lt;&lt; &quot;af8(1,2,3,4,5,6,7,8): &quot; &lt;&lt;
af8(1,2,3,4,5,6,7,8) &lt;&lt; std::endl;&nbsp;&nbsp;&nbsp; </span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>&nb=
sp;&nbsp;&nbsp;&nbsp;&nbsp;
std::cout &lt;&lt; &quot;b_af8(1,2,3,4,5,6,7,8): &quot; &lt;&lt;
b_af8(1,2,3,4,5,6,7,8) &lt;&lt; std::endl;</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>&nb=
sp;</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>&nb=
sp;&nbsp;&nbsp;
A2 av(45);</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>&nb=
sp;&nbsp;&nbsp;
auto getv =3D std::mem_fn(&amp;A2::getv,av);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&=
nbsp; </span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>&nb=
sp;&nbsp;&nbsp;
std::cout &lt;&lt; getv() &lt;&lt; std::endl;</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>&nb=
sp;&nbsp;&nbsp;
auto getv2 =3D
std::mem_fn(&amp;A2::getv,&amp;av);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </s=
pan></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><b><=
span
style=3D'font-size:11.0pt;line-height:115%;font-family:"Anonymous Pro"'>&nb=
sp;&nbsp;&nbsp;
std::cout &lt;&lt; getv2() &lt;&lt; std::endl;</span></b></p>

<p class=3DMsoNormal><b><span style=3D'font-size:11.0pt;line-height:115%;
font-family:"Anonymous Pro"'>}</span></b></p>

<p class=3DMsoNormal>This program will print:</p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><spa=
n
class=3DMsoIntenseEmphasis>11</span></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><spa=
n
class=3DMsoIntenseEmphasis>25</span></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><spa=
n
class=3DMsoIntenseEmphasis>11</span></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><spa=
n
class=3DMsoIntenseEmphasis>a.get():15</span></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><spa=
n
class=3DMsoIntenseEmphasis>sh_get:22</span></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><spa=
n
class=3DMsoIntenseEmphasis>a.get():15</span></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><spa=
n
class=3DMsoIntenseEmphasis>k: 27</span></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><spa=
n
class=3DMsoIntenseEmphasis>x: 224</span></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><spa=
n
class=3DMsoIntenseEmphasis>af8(1,2,3,4,5,6,7,8): 63</span></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><spa=
n
class=3DMsoIntenseEmphasis>b_af8(1,2,3,4,5,6,7,8): 63</span></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><spa=
n
class=3DMsoIntenseEmphasis>45</span></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt'><spa=
n
class=3DMsoIntenseEmphasis>45&nbsp;</span></p>

<h3><span class=3DMsoIntenseEmphasis><u>Example 2.</u></span></h3>

<p class=3DMsoNormal>This program&nbsp; shows how to apply <b>mem_fn</b> to=
&nbsp;
overloaded member functions:</p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"'>#in=
clude
&lt;iostream&gt;</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"'>#in=
clude
&lt;functional&gt;</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"'>#in=
clude
&lt;vector&gt;</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>&nbsp;</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>class
B</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>{</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>&nbsp;&nbsp;&nbsp;
double x;</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>&nbsp;&nbsp;&nbsp;
std::vector&lt;double&gt; y;</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span lang=3DFR style=3D'font-size:11.0pt;font-family:"Anon=
ymous Pro"'>public:</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span lang=3DFR style=3D'font-size:11.0pt;font-family:"Anon=
ymous Pro"'>&nbsp;&nbsp;&nbsp;
B(double x1):x(x1),y(3) </span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span lang=3DFR style=3D'font-size:11.0pt;font-family:"Anon=
ymous Pro"'>&nbsp;&nbsp;&nbsp;
</span></strong><strong><span style=3D'font-size:11.0pt;font-family:"Anonym=
ous Pro"'>{</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
y[0] =3D 1.5;</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
y[1] =3D 2.7;</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
y[2] =3D 4.9;</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>&nbsp;&nbsp;&nbsp;
}</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>&nbsp;&nbsp;&nbsp;
</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>&nbsp;&nbsp;&nbsp;
std::vector&lt;double&gt; add_vector(std::vector&lt;double&gt;&amp;&amp; z)=
</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>&nbsp;&nbsp;&nbsp;
{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
std::cout &lt;&lt; &quot;move&quot; &lt;&lt; std::endl;&nbsp;&nbsp;&nbsp; <=
/span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
for (int i =3D 0; i &lt; 3; i++)</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
{</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
z[i] +=3D y[i];</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
return std::move(z);</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>&nbsp;&nbsp;&nbsp;
}</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>&nbsp;&nbsp;&nbsp;
</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>&nbsp;</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>&nbsp;</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>&nbsp;</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>&nbsp;&nbsp;&nbsp;
std::vector&lt;double&gt; add_vector(const std::vector&lt;double&gt;&amp; z=
)
const</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>&nbsp;&nbsp;&nbsp;
{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
std::cout &lt;&lt; &quot;copy&quot; &lt;&lt; std::endl;&nbsp;&nbsp;&nbsp; <=
/span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
std::vector&lt;double&gt; c(z);&nbsp;&nbsp; </span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
for (int i =3D 0; i &lt; 3; i++)</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
{</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
c[i] +=3D y[i];</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
return c;</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>&nbsp;&nbsp;&nbsp;
}</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>&nbsp;&nbsp;&nbsp;
</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>&nbsp;&nbsp;&nbsp;
void add_vector(std::vector&lt;double&gt;&amp; z)</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>&nbsp;&nbsp;&nbsp;
{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
std::cout &lt;&lt; &quot;out&quot; &lt;&lt;
std::endl;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp=
; </span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
for (int i =3D 0; i &lt; 3; i++)</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
{</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
z[i] +=3D y[i];</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>&nbsp;&nbsp;&nbsp;
}</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>};</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>&nbsp;</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>int
main()</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>{=A0=A0=A0
</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>=A0=A0=A0
B b(3.5);</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>=A0=A0=A0 </span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>=A0=A0=A0
std::vector&lt;double&gt; v(3);</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>=A0=A0=A0
v[0] =3D 10.0;</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>=A0=A0=A0
v[1] =3D 100.0;</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>=A0=A0=A0
v[2] =3D 1000.0;=A0=A0 </span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>=A0=A0=A0 </span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>=A0=A0=A0
auto b_add_vector_copy =3D
std::mem_fn(static_cast&lt;std::vector&lt;double&gt;(B::*)(const
std::vector&lt;double&gt;&amp;) const&gt;(&amp;B::add_vector), &amp;b); </s=
pan></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>=A0=A0=A0 </span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>=A0=A0=A0
std::vector&lt;double&gt; v1 =3D b_add_vector_copy(v); </span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>=A0=A0=A0
std::cout &lt;&lt; &quot;v.size(): &quot; &lt;&lt; v.size() &lt;&lt; std::e=
ndl;</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>=A0=A0=A0
for (int i =3D 0; i &lt; 3; i++)</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>=A0=A0=A0
{</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>=A0=A0=A0=A0=A0=A0=A0
std::cout &lt;&lt; &quot;v1: &quot; &lt;&lt; v1[i] &lt;&lt; std::endl;</spa=
n></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>=A0=A0=A0
}</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>=A0=A0=A0=A0=A0=A0
</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>=A0=A0=A0
auto b_add_vector_move =3D
std::mem_fn(static_cast&lt;std::vector&lt;double&gt;(B::*)(std::vector&lt;d=
ouble&gt;&amp;&amp;)&gt;(&amp;B::add_vector),&amp;b);</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>=A0=A0=A0
std::vector&lt;double&gt; v2 =3D b_add_vector_move(std::move(v));</span></s=
trong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>=A0=A0=A0
std::cout &lt;&lt; &quot;v.size(): &quot; &lt;&lt; v.size() &lt;&lt; std::e=
ndl;
// v size is now 0</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>=A0=A0=A0
for (int i =3D 0; i &lt; 3; i++)</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>=A0=A0=A0
{</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>=A0=A0=A0=A0=A0=A0=A0
std::cout &lt;&lt; &quot;v2: &quot; &lt;&lt; v2[i] &lt;&lt; std::endl;</spa=
n></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>=A0=A0=A0
}</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>&nbsp;</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>=A0=A0=A0
std::vector&lt;double&gt; v3(3);</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>=A0=A0=A0
v3[0] =3D 10.0;</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>=A0=A0=A0
v3[1] =3D 100.0;</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>=A0=A0=A0
v3[2] =3D 1000.0;=A0=A0=A0 </span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>=A0=A0=A0 </span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>=A0=A0=A0 </span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>=A0=A0=A0
auto b_add_vector_ref =3D std::mem_fn(static_cast&lt;void(B::*)(std::vector=
&lt;double&gt;&amp;)&gt;(&amp;B::add_vector),&amp;b);</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>=A0=A0=A0
b_add_vector_ref(v3);</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>=A0=A0=A0
for (int i =3D 0; i &lt; 3; i++)</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>=A0=A0=A0
{</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>=A0=A0=A0=A0=A0=A0=A0
std::cout &lt;&lt; &quot;v3: &quot; &lt;&lt; v3[i] &lt;&lt; std::endl;</spa=
n></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>=A0=A0=A0
}</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>}</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-size:11.0pt;font-family:"Anonymous Pro"=
'>&nbsp;</span></strong></p>

<p class=3DMsoNormal><strong><span style=3D'font-family:"Times New Roman","=
serif";
font-weight:normal'>This program will print:</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-family:"Trebuchet MS","sans-serif"'>cop=
y</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-family:"Trebuchet MS","sans-serif"'>v.s=
ize():
3</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-family:"Trebuchet MS","sans-serif"'>v1:=
 11.5</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-family:"Trebuchet MS","sans-serif"'>v1:=
 102.7</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-family:"Trebuchet MS","sans-serif"'>v1:
1004.9</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-family:"Trebuchet MS","sans-serif"'>mov=
e</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-family:"Trebuchet MS","sans-serif"'>v.s=
ize():
0</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-family:"Trebuchet MS","sans-serif"'>v2:=
 11.5</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-family:"Trebuchet MS","sans-serif"'>v2:=
 102.7</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-family:"Trebuchet MS","sans-serif"'>v2:
1004.9</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-family:"Trebuchet MS","sans-serif"'>out=
</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-family:"Trebuchet MS","sans-serif"'>v3:=
 11.5</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-family:"Trebuchet MS","sans-serif"'>v3:=
 102.7</span></strong></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><strong><span style=3D'font-family:"Trebuchet MS","sans-serif"'>v3:
1004.9</span></strong></p>

<p class=3DMsoNormal>&nbsp;</p>

<h2 style=3D'margin-left:36.0pt;text-indent:-18.0pt'>3.<span style=3D'font-=
size:
7.0pt;line-height:115%'>&nbsp;&nbsp;&nbsp;&nbsp; </span>Implementation</h2>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>namespace =
std</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>{</span></=
b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>&nbsp;</sp=
an></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>#define
_getRef1(_SIG, _NAME)\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>template
&lt;class _P, class _R, class _T, class ... _A&gt;\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>typename
std::enable_if&lt;std::is_convertible&lt;_SIG _P&amp;,_SIG _T&amp;&gt;::val=
ue,
_SIG _T&amp;&gt;::type \</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>_getRef ##
_NAME(_R (_T::*f)(_A ...) _SIG, _SIG _P&amp; x)\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>{\</span><=
/b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>=A0=A0=A0 =
return
static_cast&lt;_SIG _T&amp;&gt;(x);\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>}</span></=
b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>&nbsp;</sp=
an></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>&nbsp;</sp=
an></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>#define
_getRef2(_SIG, _NAME)\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>template
&lt;class _P, class _R, class _T, class ... _A&gt;\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>typename
std::enable_if&lt;std::is_convertible&lt;_SIG typename _P::element_type&amp=
;,
_SIG _T&amp;&gt;::value, _SIG _T&amp;&gt;::type \</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>_getRef ##=
 _NAME(_R
(_T::*f)(_A ...) _SIG, _SIG _P&amp; x)\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>{\</span><=
/b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>=A0=A0=A0 =
return
static_cast&lt;_SIG _T&amp;&gt;(*x);\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>}</span></=
b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>&nbsp;</sp=
an></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>#define
_getRef3(_SIG, _NAME)\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>template
&lt;class _P, class _R, class _T, class ... _A&gt;\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>typename
std::enable_if&lt;std::is_convertible&lt;_P* _SIG, _T* _SIG&gt;::value, _SI=
G
_T&amp;&gt;::type \</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>=A0_getRef=
 ##
_NAME(_R (_T::*f)(_A ...) _SIG, _P* _SIG x)\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>{\</span><=
/b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>=A0=A0=A0 =
return
*static_cast&lt;_T* _SIG&gt;(x);\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>}</span></=
b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>&nbsp;</sp=
an></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>_getRef1(,=
_simple)</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>_getRef1(c=
onst,_const)</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>_getRef1(c=
onst
volatile,_const_volatile)</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>_getRef1(v=
olatile,_volatile)</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>&nbsp;</sp=
an></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>_getRef2(,=
_simple)</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>_getRef2(c=
onst,_const)</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>_getRef2(c=
onst
volatile,_const_volatile)</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>_getRef2(v=
olatile,_volatile)</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>&nbsp;</sp=
an></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>&nbsp;</sp=
an></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>_getRef3(,=
_simple)</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>_getRef3(c=
onst,_const)</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>_getRef3(c=
onst
volatile,_const_volatile)</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>_getRef3(v=
olatile,_volatile)</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>&nbsp;</sp=
an></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>&nbsp;</sp=
an></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>#define
_two_param_delegate2(_SIG, _NAME)\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>template&l=
t;class
_OBJECT1, class _T, class _R, class _Arg1, class _Arg2, class ... _Arg&gt;\=
</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>class _del=
egate2
## _NAME\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>{\</span><=
/b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>=A0=A0=A0 =
_OBJECT1
_obj;\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>=A0=A0=A0 =
_R
(_T::*f1)(_Arg1, _Arg2, _Arg ... ) _SIG;\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>public:\</=
span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>=A0=A0=A0 =
typedef
_Arg1 first_argument_type;\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>=A0=A0=A0 =
typedef
_Arg2 second_argument_type;\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>=A0=A0=A0 =
typedef _R
return_type;\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>\</span></=
b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>=A0=A0=A0 =
_delegate2
## _NAME(_R (_T::*_fx)(_Arg1, _Arg2, _Arg ... ) _SIG, _OBJECT1
_obj1):_obj(_obj1),f1(_fx)\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>=A0=A0=A0 =
{\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>=A0=A0=A0 =
} \</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>\</span></=
b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>=A0=A0=A0 =
_R operator()(_Arg1
_x1, _Arg2 _x2, _Arg ...=A0 _x) _SIG\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>=A0=A0=A0 =
{\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>=A0=A0=A0=
=A0=A0=A0=A0 return
(_getRef ## _NAME(f1, _obj).*f1)(std::forward&lt;_Arg1&gt;(_x1),
std::forward&lt;_Arg2&gt;(_x2), std::forward&lt;_Arg&gt;(_x) ...);\</span><=
/b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>=A0=A0=A0 =
}\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>};</span><=
/b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>&nbsp;</sp=
an></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>_two_param=
_delegate2(,_simple)</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>_two_param=
_delegate2(const,
_const)</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>_two_param=
_delegate2(const
volatile, _const_volatile)</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>_two_param=
_delegate2(volatile,
_volatile)</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>&nbsp;</sp=
an></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>&nbsp;</sp=
an></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>&nbsp;</sp=
an></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>#define
_two_param_delegate1(_SIG, _NAME)\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>template&l=
t;class
_OBJECT1, class _T, class _R, class _Arg1&gt;\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>class _del=
egate1
## _NAME\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>{\</span><=
/b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>=A0=A0=A0 =
_OBJECT1
_obj;\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>=A0=A0=A0 =
</span></b><b><span
lang=3DFR style=3D'font-size:10.0pt;font-family:Consolas'>_R (_T::*f1)(_Arg=
1)
_SIG;\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span lang=3DFR style=3D'font-size:10.0pt;font-family:Consolas'>=
public:\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span lang=3DFR style=3D'font-size:10.0pt;font-family:Consolas'>=
=A0=A0=A0 </span></b><b><span
style=3D'font-size:10.0pt;font-family:Consolas'>typedef _Arg1 argument_type=
;\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>=A0=A0=A0 =
typedef _R
return_type;\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>\</span></=
b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>=A0=A0=A0 =
_delegate1
## _NAME(_R (_T::*_fx)(_Arg1) _SIG, _OBJECT1 _obj1):_obj(_obj1),f1(_fx)\</s=
pan></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>=A0=A0=A0 =
{\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>=A0=A0=A0 =
} \</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>\</span></=
b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>=A0=A0=A0 =
_R
operator()(_Arg1 _x1) _SIG\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>=A0=A0=A0 =
{\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>=A0=A0=A0=
=A0=A0=A0=A0 return
(_getRef=A0 ## _NAME(f1, _obj).*f1)(std::forward&lt;_Arg1&gt;(_x1));\</span=
></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>=A0=A0=A0 =
}\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>};</span><=
/b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>&nbsp;</sp=
an></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>_two_param=
_delegate1(,_simple)</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>_two_param=
_delegate1(const,
_const)</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>_two_param=
_delegate1(const
volatile, _const_volatile)</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>_two_param=
_delegate1(volatile,
_volatile)</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>&nbsp;</sp=
an></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>#define
_two_param_delegate0(_SIG, _NAME)\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>template&l=
t;class
_OBJECT1, class _T, class _R&gt;\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>class _del=
egate0
## _NAME\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>{\</span><=
/b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>=A0=A0=A0 =
_OBJECT1
_obj;\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>=A0=A0=A0 =
</span></b><b><span
lang=3DFR style=3D'font-size:10.0pt;font-family:Consolas'>_R (_T::*f1)() _S=
IG;\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span lang=3DFR style=3D'font-size:10.0pt;font-family:Consolas'>=
public:\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span lang=3DFR style=3D'font-size:10.0pt;font-family:Consolas'>=
=A0=A0=A0 </span></b><b><span
style=3D'font-size:10.0pt;font-family:Consolas'>typedef _R return_type;\</s=
pan></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>\</span></=
b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>=A0=A0=A0 =
_delegate0
## _NAME(_R (_T::*_fx)() _SIG, _OBJECT1 _obj1):_obj(_obj1),f1(_fx)\</span><=
/b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>=A0=A0=A0 =
{\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>=A0=A0=A0 =
} \</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>\</span></=
b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>=A0=A0=A0 =
_R
operator()() _SIG\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>=A0=A0=A0 =
{\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>=A0=A0=A0=
=A0=A0=A0=A0 return
(_getRef=A0 ## _NAME(f1, _obj).*f1)();\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>=A0=A0=A0 =
}\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>};</span><=
/b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>&nbsp;</sp=
an></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>_two_param=
_delegate0(,_simple)</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>_two_param=
_delegate0(const,
_const)</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>_two_param=
_delegate0(const
volatile, _const_volatile)</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>_two_param=
_delegate0(volatile,
_volatile)</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>&nbsp;</sp=
an></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>#define
_one_param_delegate1(_SIG, _NAME)\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>template&l=
t;class
_T, class _R, class _Arg1, class ... _Arg&gt;\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>class
_one_p_delegate1 ## _NAME\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span lang=3DFR style=3D'font-size:10.0pt;font-family:Consolas'>=
{\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span lang=3DFR style=3D'font-size:10.0pt;font-family:Consolas'>=
=A0=A0=A0 _R
(_T::*f1)(_Arg1, _Arg ... ) _SIG;\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>public:\</=
span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>=A0=A0=A0 =
typedef _SIG
_T* first_argument_type;\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>=A0=A0=A0 =
typedef
_Arg1 second_argument_type;\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>=A0=A0=A0 =
typedef _R
return_type;\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>\</span></=
b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>=A0=A0=A0
_one_p_delegate1 ## _NAME(_R (_T::*_fx)(_Arg1, _Arg ... ) _SIG):f1(_fx)\</s=
pan></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>=A0=A0=A0 =
{\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>=A0=A0=A0 =
} \</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>\</span></=
b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>=A0=A0=A0
template&lt;class _OBJECT&gt;\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>=A0=A0=A0 =
_R
operator()(_OBJECT _obj,_Arg1 _x1, _Arg ...=A0 _x) _SIG\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>=A0=A0=A0 =
{\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>=A0=A0=A0=
=A0=A0=A0=A0 return
(_getRef=A0 ## _NAME(f1, _obj).*f1)(std::forward&lt;_Arg1&gt;(_x1),
std::forward&lt;_Arg&gt;(_x) ...);\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>=A0=A0=A0 =
}\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>};</span><=
/b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>&nbsp;</sp=
an></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>_one_param=
_delegate1(,_simple)</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>_one_param=
_delegate1(const,
_const)</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>_one_param=
_delegate1(const
volatile, _const_volatile)</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>_one_param=
_delegate1(volatile,
_volatile)</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>&nbsp;</sp=
an></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>#define
_one_param_delegate0(_SIG, _NAME)\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>template&l=
t;class
_T, class _R&gt;\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>class
_one_p_delegate0 ## _NAME\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span lang=3DFR style=3D'font-size:10.0pt;font-family:Consolas'>=
{\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span lang=3DFR style=3D'font-size:10.0pt;font-family:Consolas'>=
=A0=A0=A0 _R
(_T::*f1)() _SIG;\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span lang=3DFR style=3D'font-size:10.0pt;font-family:Consolas'>=
public:\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span lang=3DFR style=3D'font-size:10.0pt;font-family:Consolas'>=
=A0=A0=A0 </span></b><b><span
style=3D'font-size:10.0pt;font-family:Consolas'>typedef _SIG _T* argument_t=
ype;\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>=A0=A0=A0 =
typedef _R
return_type;\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>\</span></=
b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>=A0=A0=A0
_one_p_delegate0 ## _NAME(_R (_T::*_fx)() _SIG):f1(_fx)\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>=A0=A0=A0 =
{\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>=A0=A0=A0 =
} \</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>\</span></=
b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>=A0=A0=A0
template&lt;class _OBJECT&gt;\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>=A0=A0=A0 =
_R
operator()(_OBJECT _obj) _SIG\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>=A0=A0=A0 =
{\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>=A0=A0=A0=
=A0=A0=A0=A0 return (_getRef=A0
## _NAME(f1, _obj).*f1)();\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>=A0=A0=A0 =
}\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>};</span><=
/b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>&nbsp;</sp=
an></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>_one_param=
_delegate0(,_simple)</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>_one_param=
_delegate0(const,
_const)</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>_one_param=
_delegate0(const
volatile, _const_volatile)</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>_one_param=
_delegate0(volatile,
_volatile)</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>&nbsp;</sp=
an></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>&nbsp;</sp=
an></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>#define
_mem_fn_macro2(_SIG,_NAME)\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>template&l=
t;class
_OBJECT, class _T, class _R, class _Arg1, class _Arg2, class ... _Arg&gt;\<=
/span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>_delegate2=
 ##
_NAME&lt;_OBJECT,_T,_R,_Arg1, _Arg2, _Arg ... </span></b><b><span lang=3DFR
style=3D'font-size:10.0pt;font-family:Consolas'>&gt; mem_fn(_R (_T::*_f)(_A=
rg1,
_Arg2, _Arg ... ) </span></b><b><span style=3D'font-size:10.0pt;font-family=
:Consolas'>_SIG,
_OBJECT _obj)\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>{\</span><=
/b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>=A0=A0=A0 =
return
_delegate2 ## _NAME &lt;_OBJECT,_T,_R, _Arg1, _Arg2, _Arg ... &gt;(_f, _obj=
);\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>}</span></=
b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>&nbsp;</sp=
an></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>_mem_fn_ma=
cro2(,_simple)</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>_mem_fn_ma=
cro2(const,_const)</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>_mem_fn_ma=
cro2(const
volatile, _const_volatile)</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>_mem_fn_ma=
cro2(volatile,
_volatile)</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>&nbsp;</sp=
an></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>&nbsp;</sp=
an></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>#define
_mem_fn_macro1(_SIG,_NAME)\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>template&l=
t;class
_OBJECT, class _T, class _R, class _Arg1&gt;\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>_delegate1=
 ##
_NAME&lt;_OBJECT,_T,_R,_Arg1&gt; mem_fn(_R (_T::*_f)(_Arg1) _SIG, _OBJECT
_obj)\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>{\</span><=
/b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>=A0=A0=A0 =
return
_delegate1 ## _NAME &lt;_OBJECT,_T,_R, _Arg1&gt;(_f, _obj);\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>}</span></=
b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>&nbsp;</sp=
an></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>_mem_fn_ma=
cro1(,_simple)</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>_mem_fn_ma=
cro1(const,_const)</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>_mem_fn_ma=
cro1(const
volatile, _const_volatile)</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>_mem_fn_ma=
cro1(volatile,
_volatile)</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>&nbsp;</sp=
an></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>#define
_mem_fn_macro0(_SIG,_NAME)\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>template&l=
t;class
_OBJECT, class _T, class _R&gt;\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>_delegate0=
 ##
_NAME&lt;_OBJECT,_T,_R&gt; mem_fn(_R (_T::*_f)() _SIG, _OBJECT _obj)\</span=
></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>{\</span><=
/b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>=A0=A0=A0 =
return
_delegate0 ## _NAME &lt;_OBJECT,_T,_R&gt;(_f, _obj);\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>}</span></=
b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>&nbsp;</sp=
an></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>_mem_fn_ma=
cro0(,_simple)</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>_mem_fn_ma=
cro0(const,_const)</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>_mem_fn_ma=
cro0(const
volatile, _const_volatile)</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>_mem_fn_ma=
cro0(volatile,
_volatile)</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>&nbsp;</sp=
an></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>#define
_one_p_mem_fn_macro1(_SIG,_NAME)\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>template&l=
t;class
_T, class _R, class _Arg1, class ... _Arg&gt;\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>_one_p_del=
egate1
## _NAME&lt;_T,_R,_Arg1, _Arg ... </span></b><b><span lang=3DFR style=3D'fo=
nt-size:
10.0pt;font-family:Consolas'>&gt; mem_fn(_R (_T::*_f)(_Arg1, _Arg ... ) </s=
pan></b><b><span
style=3D'font-size:10.0pt;font-family:Consolas'>_SIG)\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>{\</span><=
/b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>=A0=A0=A0 =
return
_one_p_delegate1 ## _NAME &lt;_T,_R,_Arg1, _Arg ... &gt;(_f);\</span></b></=
p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>}</span></=
b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>&nbsp;</sp=
an></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>_one_p_mem=
_fn_macro1(,_simple)</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>_one_p_mem=
_fn_macro1(const,_const)</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>_one_p_mem=
_fn_macro1(const
volatile, _const_volatile)</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>_one_p_mem=
_fn_macro1(volatile,
_volatile)</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>&nbsp;</sp=
an></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>#define
_one_p_mem_fn_macro0(_SIG,_NAME)\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>template&l=
t;class
_T, class _R&gt;\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>_one_p_del=
egate0
## _NAME&lt;_T,_R&gt; mem_fn(_R (_T::*_f)() _SIG)\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>{\</span><=
/b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>=A0=A0=A0 =
return
_one_p_delegate0 ## _NAME &lt;_T,_R&gt;(_f);\</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>}</span></=
b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>&nbsp;</sp=
an></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>_one_p_mem=
_fn_macro0(,_simple)</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>_one_p_mem=
_fn_macro0(const,_const)</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>_one_p_mem=
_fn_macro0(const
volatile, _const_volatile)</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>_one_p_mem=
_fn_macro0(volatile,
_volatile)</span></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>&nbsp;</sp=
an></b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'><b><span style=3D'font-size:10.0pt;font-family:Consolas'>}</span></=
b></p>

<p class=3DMsoNormal style=3D'margin-bottom:0cm;margin-bottom:.0001pt;line-=
height:
normal'>&nbsp;</p>

</div>

</body>

</html>

------=_Part_3485_20469894.1379790081477--

.