class.boost.functionN.html 35 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202
  1. <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Class template functionN</title><link rel="stylesheet" href="reference.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.61.3"><link rel="home" href="index.html" title="The Boost C++ Libraries"><link rel="up" href="function.reference.html#header.boost.function.hpp" title="Header &lt;boost/function.hpp&gt;"><link rel="previous" href="class.boost.function_base.html" title="Class function_base"><link rel="next" href="class.boost.function.html" title="Class template function"><link rel="chapter" href="libraries.html" title="The Boost C++ Libraries"><link rel="chapter" href="any.html" title="Boost.Any"><link rel="refentry" href="class.boost.bad_any_cast.html" title="Class bad_any_cast"><link rel="refentry" href="class.boost.any.html" title="Class any"><link rel="refentry" href="id2383300-bb.html" title="Function any_cast"><link rel="chapter" href="array.html" title="Boost.Array"><link rel="refentry" href="class.boost.array.html" title="Class template array"><link rel="chapter" href="function.html" title="Boost.Function"><link rel="refentry" href="class.boost.bad_function_call.html" title="Class bad_function_call"><link rel="refentry" href="class.boost.function_base.html" title="Class function_base"><link rel="refentry" href="class.boost.functionN.html" title="Class template functionN"><link rel="refentry" href="class.boost.function.html" title="Class template function"><link rel="chapter" href="ref.html" title="Boost.Ref"><link rel="refentry" href="class.boost.reference_wrapper.html" title="Class template reference_wrapper"><link rel="refentry" href="class.boost.is_reference_wrapper.html" title="Class template is_reference_wrapper"><link rel="refentry" href="class.boost.unwrap_reference.html" title="Class template unwrap_reference"><link rel="chapter" href="signals.html" title="Boost.Signals"><link rel="refentry" href="class.boost.signalN.html" title="Class template signalN"><link rel="refentry" href="class.boost.signal.html" title="Class template signal"><link rel="refentry" href="class.boost.slot.html" title="Class template slot"><link rel="refentry" href="class.boost.signals.trackable.html" title="Class trackable"><link rel="refentry" href="class.boost.signals.connection.html" title="Class connection"><link rel="refentry" href="class.boost.signals.scoped_connection.html" title="Class scoped_connection"><link rel="refentry" href="id2532119-bb.html" title="Function template visit_each"><link rel="refentry" href="class.boost.last_value.html" title="Class template last_value"><link rel="refentry" href="id2354683-bb.html" title="Class last_value&lt;void&gt;"><link rel="chapter" href="variant.html" title="Boost.Variant"><link rel="refentry" href="BOOST_VARIANT_LIMIT_TYPES.html" title="Macro BOOST_VARIANT_LIMIT_TYPES"><link rel="refentry" href="BOOST_VARIANT_ENUM_PARAMS.html" title="Macro BOOST_VARIANT_ENUM_PARAMS"><link rel="refentry" href="BOOST_VARIANT_ENUM_SHIFTED_PARAMS.html" title="Macro BOOST_VARIANT_ENUM_SHIFTED_PARAMS"><link rel="refentry" href="BOOST_VARIANT_NO_REFERENCE_SUPPORT.html" title="Macro BOOST_VARIANT_NO_REFERENCE_SUPPORT"><link rel="refentry" href="BOOST_VARIANT_NO_TYPE_SEQUENCE_SUPPORT.html" title="Macro BOOST_VARIANT_NO_TYPE_SEQUENCE_SUPPORT"><link rel="refentry" href="BOOST_VARIANT_NO_FULL_RECURSIVE_VARIANT_SUPPORT.html" title="Macro BOOST_VARIANT_NO_FULL_RECURSIVE_VARIANT_SUPPORT"><link rel="refentry" href="class.boost.variant.html" title="Class template variant"><link rel="refentry" href="id2518553-bb.html" title="Function template swap"><link rel="refentry" href="id2524211-bb.html" title="Function template operator&lt;&lt;"><link rel="refentry" href="class.boost.make_variant_over.html" title="Class template make_variant_over"><link rel="refentry" href="class.boost.make_recursive_variant.html" title="Class template make_recursive_variant"><link rel="refentry" href="class.boost.make_recursive_variant_over.html" title="Class template make_recursive_variant_over"><link rel="refentry" href="class.boost.recursive_wrapper.html" title="Class template recursive_wrapper"><link rel="refentry" href="class.boost.is_recursive_wrapper.html" title="Class template is_recursive_wrapper"><link rel="refentry" href="class.boost.unwrap_recursive_wrapper.html" title="Class template unwrap_recursive_wrapper"><link rel="refentry" href="class.boost.apply_visitor_delayed_t.html" title="Class template apply_visitor_delayed_t"><link rel="refentry" href="id2557051-bb.html" title="Function apply_visitor"><link rel="refentry" href="class.boost.bad_get.html" title="Class bad_get"><link rel="refentry" href="id2493238-bb.html" title="Function get"><link rel="refentry" href="class.boost.bad_visit.html" title="Class bad_visit"><link rel="refentry" href="class.boost.static_visitor.html" title="Class template static_visitor"><link rel="refentry" href="class.boost.visitor_ptr_t.html" title="Class template visitor_ptr_t"><link rel="refentry" href="id2544445-bb.html" title="Function template visitor_ptr"><link rel="chapter" href="boostbook.html" title="The BoostBook Documentation Format"><link rel="refentry" href="boostbook.dtd.class-specialization.html" title="
  2. BoostBook element class-specialization"><link rel="refentry" href="boostbook.dtd.link-test.html" title="
  3. BoostBook element link-test"><link rel="refentry" href="boostbook.dtd.link-fail-test.html" title="
  4. BoostBook element link-fail-test"><link rel="refentry" href="boostbook.dtd.typedef.html" title="
  5. BoostBook element typedef"><link rel="refentry" href="boostbook.dtd.static-constant.html" title="
  6. BoostBook element static-constant"><link rel="refentry" href="boostbook.dtd.code.html" title="
  7. BoostBook element code"><link rel="refentry" href="boostbook.dtd.destructor.html" title="
  8. BoostBook element destructor"><link rel="refentry" href="boostbook.dtd.template-type-parameter.html" title="
  9. BoostBook element template-type-parameter"><link rel="refentry" href="boostbook.dtd.description.html" title="
  10. BoostBook element description"><link rel="refentry" href="boostbook.dtd.librarylist.html" title="
  11. BoostBook element librarylist"><link rel="refentry" href="boostbook.dtd.library-reference.html" title="
  12. BoostBook element library-reference"><link rel="refentry" href="boostbook.dtd.boostbook.html" title="
  13. BoostBook element boostbook"><link rel="refentry" href="boostbook.dtd.union.html" title="
  14. BoostBook element union"><link rel="refentry" href="boostbook.dtd.inherit.html" title="
  15. BoostBook element inherit"><link rel="refentry" href="boostbook.dtd.template-varargs.html" title="
  16. BoostBook element template-varargs"><link rel="refentry" href="boostbook.dtd.source.html" title="
  17. BoostBook element source"><link rel="refentry" href="boostbook.dtd.function.html" title="
  18. BoostBook element function"><link rel="refentry" href="boostbook.dtd.postconditions.html" title="
  19. BoostBook element postconditions"><link rel="refentry" href="boostbook.dtd.compile-test.html" title="
  20. BoostBook element compile-test"><link rel="refentry" href="boostbook.dtd.method.html" title="
  21. BoostBook element method"><link rel="refentry" href="boostbook.dtd.snippet.html" title="
  22. BoostBook element snippet"><link rel="refentry" href="boostbook.dtd.constructor.html" title="
  23. BoostBook element constructor"><link rel="refentry" href="boostbook.dtd.namespace.html" title="
  24. BoostBook element namespace"><link rel="refentry" href="boostbook.dtd.if-fails.html" title="
  25. BoostBook element if-fails"><link rel="refentry" href="boostbook.dtd.free-function-group.html" title="
  26. BoostBook element free-function-group"><link rel="refentry" href="boostbook.dtd.functionname.html" title="
  27. BoostBook element functionname"><link rel="refentry" href="boostbook.dtd.librarycategory.html" title="
  28. BoostBook element librarycategory"><link rel="refentry" href="boostbook.dtd.notes.html" title="
  29. BoostBook element notes"><link rel="refentry" href="boostbook.dtd.data-member.html" title="
  30. BoostBook element data-member"><link rel="refentry" href="boostbook.dtd.specialization.html" title="
  31. BoostBook element specialization"><link rel="refentry" href="boostbook.dtd.union-specialization.html" title="
  32. BoostBook element union-specialization"><link rel="refentry" href="boostbook.dtd.throws.html" title="
  33. BoostBook element throws"><link rel="refentry" href="boostbook.dtd.template-arg.html" title="
  34. BoostBook element template-arg"><link rel="refentry" href="boostbook.dtd.method-group.html" title="
  35. BoostBook element method-group"><link rel="refentry" href="boostbook.dtd.requirement.html" title="
  36. BoostBook element requirement"><link rel="refentry" href="boostbook.dtd.precondition.html" title="
  37. BoostBook element precondition"><link rel="refentry" href="boostbook.dtd.paramtype.html" title="
  38. BoostBook element paramtype"><link rel="refentry" href="boostbook.dtd.using-class.html" title="
  39. BoostBook element using-class"><link rel="refentry" href="boostbook.dtd.run-test.html" title="
  40. BoostBook element run-test"><link rel="refentry" href="boostbook.dtd.librarypurpose.html" title="
  41. BoostBook element librarypurpose"><link rel="refentry" href="boostbook.dtd.copy-assignment.html" title="
  42. BoostBook element copy-assignment"><link rel="refentry" href="boostbook.dtd.run-fail-test.html" title="
  43. BoostBook element run-fail-test"><link rel="refentry" href="boostbook.dtd.template.html" title="
  44. BoostBook element template"><link rel="refentry" href="boostbook.dtd.compile-fail-test.html" title="
  45. BoostBook element compile-fail-test"><link rel="refentry" href="boostbook.dtd.returns.html" title="
  46. BoostBook element returns"><link rel="refentry" href="boostbook.dtd.default.html" title="
  47. BoostBook element default"><link rel="refentry" href="boostbook.dtd.parameter.html" title="
  48. BoostBook element parameter"><link rel="refentry" href="boostbook.dtd.signature.html" title="
  49. BoostBook element signature"><link rel="refentry" href="boostbook.dtd.overloaded-function.html" title="
  50. BoostBook element overloaded-function"><link rel="refentry" href="boostbook.dtd.class.html" title="
  51. BoostBook element class"><link rel="refentry" href="boostbook.dtd.librarycategorydef.html" title="
  52. BoostBook element librarycategorydef"><link rel="refentry" href="boostbook.dtd.type.html" title="
  53. BoostBook element type"><link rel="refentry" href="boostbook.dtd.enumvalue.html" title="
  54. BoostBook element enumvalue"><link rel="refentry" href="boostbook.dtd.overloaded-method.html" title="
  55. BoostBook element overloaded-method"><link rel="refentry" href="boostbook.dtd.programlisting.html" title="
  56. BoostBook element programlisting"><link rel="refentry" href="boostbook.dtd.complexity.html" title="
  57. BoostBook element complexity"><link rel="refentry" href="boostbook.dtd.purpose.html" title="
  58. BoostBook element purpose"><link rel="refentry" href="boostbook.dtd.template-nontype-parameter.html" title="
  59. BoostBook element template-nontype-parameter"><link rel="refentry" href="boostbook.dtd.library.html" title="
  60. BoostBook element library"><link rel="refentry" href="boostbook.dtd.librarycategorylist.html" title="
  61. BoostBook element librarycategorylist"><link rel="refentry" href="boostbook.dtd.using-namespace.html" title="
  62. BoostBook element using-namespace"><link rel="refentry" href="boostbook.dtd.struct-specialization.html" title="
  63. BoostBook element struct-specialization"><link rel="refentry" href="boostbook.dtd.struct.html" title="
  64. BoostBook element struct"><link rel="refentry" href="boostbook.dtd.lib.html" title="
  65. BoostBook element lib"><link rel="refentry" href="boostbook.dtd.enum.html" title="
  66. BoostBook element enum"><link rel="refentry" href="boostbook.dtd.requires.html" title="
  67. BoostBook element requires"><link rel="refentry" href="boostbook.dtd.effects.html" title="
  68. BoostBook element effects"><link rel="refentry" href="boostbook.dtd.libraryname.html" title="
  69. BoostBook element libraryname"><link rel="refentry" href="boostbook.dtd.libraryinfo.html" title="
  70. BoostBook element libraryinfo"><link rel="refentry" href="boostbook.dtd.testsuite.html" title="
  71. BoostBook element testsuite"><link rel="refentry" href="boostbook.dtd.header.html" title="
  72. BoostBook element header"><link rel="refentry" href="boostbook.dtd.rationale.html" title="
  73. BoostBook element rationale"><link rel="refentry" href="Assignable.html" title="Concept Assignable"><link rel="refentry" href="InputIterator.html" title="Concept InputIterator"><link rel="refentry" href="OutputIterator.html" title="Concept OutputIterator"><link rel="refentry" href="ForwardIterator.html" title="Concept ForwardIterator"><link rel="refentry" href="BidirectionalIterator.html" title="Concept BidirectionalIterator"><link rel="refentry" href="RandomAccessIterator.html" title="Concept RandomAccessIterator"><link rel="refentry" href="DefaultConstructible.html" title="Concept DefaultConstructible"><link rel="refentry" href="CopyConstructible.html" title="Concept CopyConstructible"><link rel="refentry" href="EqualityComparable.html" title="Concept EqualityComparable"><link rel="refentry" href="LessThanComparable.html" title="Concept LessThanComparable"><link rel="refentry" href="SignedInteger.html" title="Concept SignedInteger"><link rel="section" href="class.boost.functionN.html#id2513667" title="Description"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" border="1" cellpadding="2" bgcolor="#007F7F"><tr><td bgcolor="#FFFFFF"><img src="../../c++boost.gif" alt="c++boost.gif (8819 bytes)" width="277" height="86"></td><td><a href="../../index.htm"><font color="#FFFFFF" size="4" face="Arial">Home</font></a></td><td><a href="libraries.html"><font color="#FFFFFF" size="4" face="Arial">Libraries</font></a></td><td><a href="../../people/people.htm"><font color="#FFFFFF" size="4" face="Arial">People</font></a></td><td><a href="../../more/faq.htm"><font color="#FFFFFF" size="4" face="Arial">FAQ</font></a></td><td><a href="../../more/index.htm"><font color="#FFFFFF" size="4" face="Arial">More</font></a></td></tr></table><div class="refentry" lang="en"><a name="class.boost.functionN"></a><div class="titlepage"><div></div><div></div></div><div class="refnamediv"><h2><span class="refentrytitle">Class template functionN</span></h2><p>boost::functionN &#8212; A set of generalized function pointers that can be used for callbacks or wrapping function objects.</p></div><div class="refsynopsisdiv"><h2>Synopsis</h2><pre class="synopsis"><span class="bold"><b>template</b></span>&lt;<span class="bold"><b>typename</b></span> R, <span class="bold"><b>typename</b></span> T1, <span class="bold"><b>typename</b></span> T2, ..., <span class="bold"><b>typename</b></span> TN,
  74.          <span class="bold"><b>typename</b></span> Allocator = std::allocator&lt;<span class="bold"><b>void</b></span>&gt; &gt;
  75. <span class="bold"><b>class</b></span> functionN : <span class="bold"><b>public</b></span> <a href="class.boost.function_base.html" title="Class function_base">function_base</a> {
  76. <span class="bold"><b>public</b></span>:
  77.   <span class="emphasis"><em>// types</em></span>
  78.   <span class="bold"><b>typedef</b></span> R         result_type;         
  79.   <span class="bold"><b>typedef</b></span> Allocator allocator_type;      
  80.   <span class="bold"><b>typedef</b></span> T1        argument_type;        <span class="emphasis"><em>// If N == 1</em></span>
  81.   <span class="bold"><b>typedef</b></span> T1        first_argument_type;  <span class="emphasis"><em>// If N == 2</em></span>
  82.   <span class="bold"><b>typedef</b></span> T2        second_argument_type; <span class="emphasis"><em>// If N == 2</em></span>
  83.   <span class="bold"><b>typedef</b></span> T1        arg1_type;           
  84.   <span class="bold"><b>typedef</b></span> T2        arg2_type;           
  85.      .
  86.      .
  87.      .
  88.   <span class="bold"><b>typedef</b></span> TN        argN_type;           
  89.   <span class="emphasis"><em>// static constants</em></span>
  90.   <span class="bold"><b>static</b></span> <span class="bold"><b>const</b></span> <span class="bold"><b>int</b></span> arity = N;
  91.   <span class="emphasis"><em>// <a href="../../libs/lambda/index.html" target="_top">Lambda</a> library support</em></span>
  92.   <span class="bold"><b>template</b></span>&lt;<span class="bold"><b>typename</b></span> Args&gt;
  93.   <span class="bold"><b>struct</b></span> sig {
  94.     <span class="emphasis"><em>// types</em></span>
  95.     <span class="bold"><b>typedef</b></span> result_type type;
  96.   };
  97.   <span class="emphasis"><em>// <a href="class.boost.functionN.html#class.boost.functionNconstruct-copy-destruct">construct/copy/destruct</a></em></span>
  98.   <a href="class.boost.functionN.html#id2425430-bb">functionN</a>();
  99.   <a href="class.boost.functionN.html#id2448511-bb">functionN</a>(<span class="bold"><b>const</b></span> <a href="class.boost.functionN.html" title="Class template functionN">functionN</a>&amp;);
  100.   <span class="bold"><b>template</b></span>&lt;<span class="bold"><b>typename</b></span> F&gt; <a href="class.boost.functionN.html#id2452801-bb">functionN</a>(F);
  101.   functionN&amp; <a href="class.boost.functionN.html#id2464584-bb"><span class="bold"><b>operator</b></span>=</a>(<span class="bold"><b>const</b></span> <a href="class.boost.functionN.html" title="Class template functionN">functionN</a>&amp;);
  102.   <a href="class.boost.functionN.html#id2447523-bb">~functionN</a>();
  103.   <span class="emphasis"><em>// <a href="class.boost.functionN.html#id2434651-bb">modifiers</a></em></span>
  104.   <span class="type"><span class="bold"><b>void</b></span></span> <a href="class.boost.functionN.html#id2436304-bb">swap</a>(<span class="bold"><b>const</b></span> <a href="class.boost.functionN.html" title="Class template functionN">functionN</a>&amp;);
  105.   <span class="type"><span class="bold"><b>void</b></span></span> <a href="class.boost.functionN.html#id2422197-bb">clear</a>();
  106.   <span class="emphasis"><em>// <a href="class.boost.functionN.html#id2432680-bb">capacity</a></em></span>
  107.   <span class="type"><span class="bold"><b>bool</b></span></span> <a href="class.boost.functionN.html#id2432683-bb">empty</a>() <span class="bold"><b>const</b></span>;
  108.   <a href="class.boost.functionN.html#id2480292-bb"><span class="bold"><b>operator</b></span> safe_bool</a>() <span class="bold"><b>const</b></span>;
  109.   <span class="type"><span class="bold"><b>bool</b></span></span> <a href="class.boost.functionN.html#id2440722-bb"><span class="bold"><b>operator</b></span>!</a>() <span class="bold"><b>const</b></span>;
  110.   <span class="emphasis"><em>// <a href="class.boost.functionN.html#id2439743-bb">invocation</a></em></span>
  111.   <span class="type">result_type</span> <a href="class.boost.functionN.html#id2427450-bb"><span class="bold"><b>operator</b></span>()</a>(arg1_type, arg2_type, ..., argN_type) <span class="bold"><b>const</b></span>;
  112. };
  113. <span class="emphasis"><em>// <a href="class.boost.functionN.html#id2439736-bb">specialized algorithms</a></em></span>
  114. <span class="bold"><b>template</b></span>&lt;<span class="bold"><b>typename</b></span> T1, <span class="bold"><b>typename</b></span> T2, ..., <span class="bold"><b>typename</b></span> TN, <span class="bold"><b>typename</b></span> Allocator&gt;
  115.   <span class="type"><span class="bold"><b>void</b></span></span> <a href="class.boost.functionN.html#id2462317-bb">swap</a>(<a href="class.boost.functionN.html" title="Class template functionN">functionN</a>&lt;T1, T2, ..., TN, Allocator&gt;&amp;,
  116.             <a href="class.boost.functionN.html" title="Class template functionN">functionN</a>&lt;T1, T2, ..., TN, Allocator&gt;&amp;);
  117. <span class="emphasis"><em>// <a href="class.boost.functionN.html#id2456612-bb">undefined operators</a></em></span>
  118. <span class="bold"><b>template</b></span>&lt;<span class="bold"><b>typename</b></span> T1, <span class="bold"><b>typename</b></span> T2, ..., <span class="bold"><b>typename</b></span> TN, <span class="bold"><b>typename</b></span> Allocator1,
  119.          <span class="bold"><b>typename</b></span> U1, <span class="bold"><b>typename</b></span> U2, ..., <span class="bold"><b>typename</b></span> UN, <span class="bold"><b>typename</b></span> Allocator2&gt;
  120.   <span class="type"><span class="bold"><b>void</b></span></span> <a href="class.boost.functionN.html#id2456566-bb"><span class="bold"><b>operator</b></span>==</a>(<span class="bold"><b>const</b></span> <a href="class.boost.functionN.html" title="Class template functionN">functionN</a>&lt;T1, T2, ..., TN, Allocator1&gt;&amp;,
  121.                   <span class="bold"><b>const</b></span> <a href="class.boost.functionN.html" title="Class template functionN">functionN</a>&lt;U1, U2, ..., UN, Allocator2&gt;&amp;);
  122. <span class="bold"><b>template</b></span>&lt;<span class="bold"><b>typename</b></span> T1, <span class="bold"><b>typename</b></span> T2, ..., <span class="bold"><b>typename</b></span> TN, <span class="bold"><b>typename</b></span> Allocator1,
  123.          <span class="bold"><b>typename</b></span> U1, <span class="bold"><b>typename</b></span> U2, ..., <span class="bold"><b>typename</b></span> UN, <span class="bold"><b>typename</b></span> Allocator2&gt;
  124.   <span class="type"><span class="bold"><b>void</b></span></span> <a href="class.boost.functionN.html#id2452701-bb"><span class="bold"><b>operator</b></span>!=</a>(<span class="bold"><b>const</b></span> <a href="class.boost.functionN.html" title="Class template functionN">functionN</a>&lt;T1, T2, ..., TN, Allocator1&gt;&amp;,
  125.                   <span class="bold"><b>const</b></span> <a href="class.boost.functionN.html" title="Class template functionN">functionN</a>&lt;U1, U2, ..., UN, Allocator2&gt;&amp;);</pre></div><div class="refsect1" lang="en"><h2>Description</h2><p>Class template <a href="class.boost.functionN.html" title="Class template functionN">functionN</a> is
  126. actually a family of related classes <a href="class.boost.functionN.html" title="Class template functionN">function0</a>, <a href="class.boost.functionN.html" title="Class template functionN">function1</a>, etc., up to some
  127. implementation-defined maximum. In this context, <tt class="computeroutput">N</tt>
  128. refers to the number of parameters.</p><div class="refsect2" lang="en"><h3><a name="class.boost.functionNconstruct-copy-destruct"></a><tt class="computeroutput">functionN</tt> construct/copy/destruct</h3><div class="orderedlist"><ol type="1"><li><pre class="literallayout"><a name="id2425430-bb"></a>functionN();</pre><p xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision"><b><span class="term">Postconditions</span></b>:
  129. <tt class="computeroutput">this-&gt;<a href="class.boost.functionN.html#id2432683-bb">empty</a>()</tt><br><b><span class="term">Throws</span></b>:
  130. Will not throw.</p></li><li><pre class="literallayout"><a name="id2448511-bb"></a>functionN(<span class="bold"><b>const</b></span> <a href="class.boost.functionN.html" title="Class template functionN">functionN</a>&amp; f);</pre><p xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision"><b><span class="term">Postconditions</span></b>:
  131. Contains a copy of the <tt class="computeroutput">f</tt>'s target, if it has one, or is empty if <tt class="computeroutput">f.<a href="class.boost.functionN.html#id2432683-bb">empty</a>()</tt>.<br><b><span class="term">Throws</span></b>:
  132. Will not throw unless copying the target of <tt class="computeroutput">f</tt> throws.</p></li><li><pre class="literallayout"><span class="bold"><b>template</b></span>&lt;<span class="bold"><b>typename</b></span> F&gt; <a name="id2452801-bb"></a>functionN(F f);</pre><p xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision"><b><span class="term">Requires</span></b>:
  133. F is a function object Callable from <tt class="computeroutput">this</tt>.<br><b><span class="term">Postconditions</span></b>:
  134. <tt class="computeroutput">*this</tt> targets a copy of <tt class="computeroutput">f</tt> if <tt class="computeroutput">f</tt> is nonempty, or <tt class="computeroutput">this-&gt;<a href="class.boost.functionN.html#id2432683-bb">empty</a>()</tt> if <tt class="computeroutput">f</tt> is empty.<br><b><span class="term">Throws</span></b>:
  135. Will not throw when <tt class="computeroutput">f</tt> is a stateless function object.</p></li><li><pre class="literallayout">functionN&amp; <a name="id2464584-bb"></a><span class="bold"><b>operator</b></span>=(<span class="bold"><b>const</b></span> <a href="class.boost.functionN.html" title="Class template functionN">functionN</a>&amp; f);</pre><p xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision"><b><span class="term">Postconditions</span></b>:
  136. <tt class="computeroutput">*this</tt> targets a copy of <tt class="computeroutput">f</tt>'s target, if it has one, or is empty if <tt class="computeroutput">f.<a href="class.boost.functionN.html#id2432683-bb">empty</a>()</tt>.<br><b><span class="term">Throws</span></b>:
  137. Will not throw when the target of <tt class="computeroutput">f</tt> is a stateless function object or a reference to the function object.</p></li><li><pre class="literallayout"><a name="id2447523-bb"></a>~functionN();</pre><p xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision"><b><span class="term">Effects</span></b>:
  138. If <tt class="computeroutput">!this-&gt;<a href="class.boost.functionN.html#id2432683-bb">empty</a>()</tt>, destroys the target of this.</p></li></ol></div></div><div class="refsect2" lang="en"><h3><a name="id2434651-bb"></a><tt class="computeroutput">functionN</tt> modifiers</h3><div class="orderedlist"><ol type="1"><li><pre class="literallayout"><span class="type"><span class="bold"><b>void</b></span></span> <a name="id2436304-bb"></a>swap(<span class="bold"><b>const</b></span> <a href="class.boost.functionN.html" title="Class template functionN">functionN</a>&amp; f);</pre><p xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision"><b><span class="term">Effects</span></b>:
  139. Interchanges the targets of <tt class="computeroutput">*this</tt> and <tt class="computeroutput">f</tt>.<br><b><span class="term">Throws</span></b>:
  140. Will not throw.</p></li><li><pre class="literallayout"><span class="type"><span class="bold"><b>void</b></span></span> <a name="id2422197-bb"></a>clear();</pre><p xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision"><b><span class="term">Postconditions</span></b>:
  141. this-&gt;<a href="class.boost.functionN.html#id2432683-bb">empty</a>()<br><b><span class="term">Throws</span></b>:
  142. Will not throw.</p></li></ol></div></div><div class="refsect2" lang="en"><h3><a name="id2432680-bb"></a><tt class="computeroutput">functionN</tt> capacity</h3><div class="orderedlist"><ol type="1"><li><pre class="literallayout"><span class="type"><span class="bold"><b>bool</b></span></span> <a name="id2432683-bb"></a>empty() <span class="bold"><b>const</b></span>;</pre><p xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision"><b><span class="term">Returns</span></b>:
  143. <tt class="computeroutput">true</tt> if <tt class="computeroutput">this</tt> has a target, and <tt class="computeroutput">false</tt> otherwise.<br><b><span class="term">Throws</span></b>:
  144. Will not throw.</p></li><li><pre class="literallayout"><a name="id2480292-bb"></a><span class="bold"><b>operator</b></span> safe_bool() <span class="bold"><b>const</b></span>;</pre><p xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision"><b><span class="term">Returns</span></b>:
  145. A <tt class="computeroutput">safe_bool</tt> that evaluates <tt class="computeroutput">false</tt> in a boolean context when <tt class="computeroutput">this-&gt;<a href="class.boost.functionN.html#id2432683-bb">empty</a>()</tt>, and <tt class="computeroutput">true</tt> otherwise.<br><b><span class="term">Throws</span></b>:
  146. Will not throw.</p></li><li><pre class="literallayout"><span class="type"><span class="bold"><b>bool</b></span></span> <a name="id2440722-bb"></a><span class="bold"><b>operator</b></span>!() <span class="bold"><b>const</b></span>;</pre><p xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision"><b><span class="term">Returns</span></b>:
  147. <tt class="computeroutput">this-&gt;<a href="class.boost.functionN.html#id2432683-bb">empty</a>()</tt><br><b><span class="term">Throws</span></b>:
  148. Will not throw.</p></li></ol></div></div><div class="refsect2" lang="en"><h3><a name="id2439743-bb"></a><tt class="computeroutput">functionN</tt> invocation</h3><div class="orderedlist"><ol type="1"><li><pre class="literallayout"><span class="type">result_type</span> <a name="id2427450-bb"></a><span class="bold"><b>operator</b></span>()(arg1_type a1, arg2_type a2, ... , argN_type aN) <span class="bold"><b>const</b></span>;</pre><p xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision"><b><span class="term">Effects</span></b>:
  149. <tt class="computeroutput">f(a1, a2, ..., aN)</tt>, where <tt class="computeroutput">f</tt> is the target of <tt class="computeroutput">*this</tt>.<br><b><span class="term">Returns</span></b>:
  150. if <tt class="computeroutput">R</tt> is <tt class="computeroutput">void</tt>, nothing is returned; otherwise, the return value of the call to <tt class="computeroutput">f</tt> is returned.<br><b><span class="term">Throws</span></b>:
  151. <tt class="computeroutput"><a href="class.boost.bad_function_call.html" title="Class bad_function_call">bad_function_call</a></tt> if <tt class="computeroutput">!this-&gt;<a href="class.boost.functionN.html#id2432683-bb">empty</a>()</tt>. Otherwise, may through any exception thrown by the target function <tt class="computeroutput">f</tt>.</p></li></ol></div></div><div class="refsect2" lang="en"><h3><a name="id2439736-bb"></a><tt class="computeroutput">functionN</tt> specialized algorithms</h3><div class="orderedlist"><ol type="1"><li><pre class="literallayout"><span class="bold"><b>template</b></span>&lt;<span class="bold"><b>typename</b></span> T1, <span class="bold"><b>typename</b></span> T2, ..., <span class="bold"><b>typename</b></span> TN, <span class="bold"><b>typename</b></span> Allocator&gt;
  152.   <span class="type"><span class="bold"><b>void</b></span></span> <a name="id2462317-bb"></a>swap(<a href="class.boost.functionN.html" title="Class template functionN">functionN</a>&lt;T1, T2, ..., TN, Allocator&gt;&amp; f1,
  153.             <a href="class.boost.functionN.html" title="Class template functionN">functionN</a>&lt;T1, T2, ..., TN, Allocator&gt;&amp; f2);</pre><p xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision"><b><span class="term">Effects</span></b>:
  154. <tt class="computeroutput">f1.<a href="class.boost.functionN.html#id2436304-bb">swap</a>(f2)</tt><br><b><span class="term">Throws</span></b>:
  155. Will not throw.</p></li></ol></div></div><div class="refsect2" lang="en"><h3><a name="id2456612-bb"></a><tt class="computeroutput">functionN</tt> undefined operators</h3><div class="orderedlist"><ol type="1"><li><pre class="literallayout"><span class="bold"><b>template</b></span>&lt;<span class="bold"><b>typename</b></span> T1, <span class="bold"><b>typename</b></span> T2, ..., <span class="bold"><b>typename</b></span> TN, <span class="bold"><b>typename</b></span> Allocator1,
  156.          <span class="bold"><b>typename</b></span> U1, <span class="bold"><b>typename</b></span> U2, ..., <span class="bold"><b>typename</b></span> UN, <span class="bold"><b>typename</b></span> Allocator2&gt;
  157.   <span class="type"><span class="bold"><b>void</b></span></span> <a name="id2456566-bb"></a><span class="bold"><b>operator</b></span>==(<span class="bold"><b>const</b></span> <a href="class.boost.functionN.html" title="Class template functionN">functionN</a>&lt;T1, T2, ..., TN, Allocator1&gt;&amp; f1,
  158.                   <span class="bold"><b>const</b></span> <a href="class.boost.functionN.html" title="Class template functionN">functionN</a>&lt;U1, U2, ..., UN, Allocator2&gt;&amp; f2);</pre><p xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision"><b><span class="term">Notes</span></b>:
  159. This function must be left undefined.<br><b><span class="term">Rationale</span></b>:
  160. The <tt class="computeroutput">safe_bool</tt> conversion opens a loophole whereby two function instances can be compared via <tt class="computeroutput">==</tt>. This undefined <tt class="computeroutput">void operator ==</tt> closes the loophole and ensures a compile-time or link-time error.</p></li><li><pre class="literallayout"><span class="bold"><b>template</b></span>&lt;<span class="bold"><b>typename</b></span> T1, <span class="bold"><b>typename</b></span> T2, ..., <span class="bold"><b>typename</b></span> TN, <span class="bold"><b>typename</b></span> Allocator1,
  161.          <span class="bold"><b>typename</b></span> U1, <span class="bold"><b>typename</b></span> U2, ..., <span class="bold"><b>typename</b></span> UN, <span class="bold"><b>typename</b></span> Allocator2&gt;
  162.   <span class="type"><span class="bold"><b>void</b></span></span> <a name="id2452701-bb"></a><span class="bold"><b>operator</b></span>!=(<span class="bold"><b>const</b></span> <a href="class.boost.functionN.html" title="Class template functionN">functionN</a>&lt;T1, T2, ..., TN, Allocator1&gt;&amp; f1,
  163.                   <span class="bold"><b>const</b></span> <a href="class.boost.functionN.html" title="Class template functionN">functionN</a>&lt;U1, U2, ..., UN, Allocator2&gt;&amp; f2);</pre><p xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision"><b><span class="term">Notes</span></b>:
  164. This function must be left undefined.<br><b><span class="term">Rationale</span></b>:
  165. The <tt class="computeroutput">safe_bool</tt> conversion opens a loophole whereby two function instances can be compared via <tt class="computeroutput">!=</tt>. This undefined <tt class="computeroutput">void operator !=</tt> closes the loophole and ensures a compile-time or link-time error.</p></li></ol></div></div></div></div><table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr><td align="left"><small>Last revised: , at GMT</small></td><td align="right"><small>Copyright © 2001-2003 Douglas Gregor</small></td></tr></table><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="class.boost.function_base.html"><img src="images/prev.png" alt="Prev"></a> </td><td width="20%" align="center"><a accesskey="u" href="function.reference.html#header.boost.function.hpp"><img src="images/up.png" alt="Up"></a></td><td width="40%" align="right"> <a accesskey="n" href="class.boost.function.html"><img src="images/next.png" alt="Next"></a></td></tr><tr><td width="40%" align="left" valign="top">Class function_base </td><td width="20%" align="center"><a accesskey="h" href="index.html"><img src="images/home.png" alt="Home"></a></td><td width="40%" align="right" valign="top"> Class template function</td></tr></table></div></body></html>
粤ICP备19079148号