mirror of
https://github.com/boostorg/function.git
synced 2025-07-19 15:42:11 +02:00
test/function_n_test.cpp:
test/function_test.cpp: - Don't use deprecated functions index.html: doc/reference.html: - Describe deprecations [SVN r14540]
This commit is contained in:
@ -22,19 +22,19 @@
|
||||
};
|
||||
|
||||
// For <i>N</i> in [0, <i>MAX_ARGS</i>]
|
||||
<b>template</b><<b>typename</b> ResultType,
|
||||
<b>template</b><<b>typename</b> Signature,
|
||||
<b>typename</b> Arg1,
|
||||
<b>typename</b> Arg2,
|
||||
<i>...</i>
|
||||
<b>typename</b> Arg<i>N</i>,
|
||||
<b>typename</b> Policy = empty_function_policy,
|
||||
<b>typename</b> Mixin = empty_function_mixin,
|
||||
<b>typename</b> Policy = empty_function_policy, <em>// Deprecated</em>
|
||||
<b>typename</b> Mixin = empty_function_mixin, <em>// Deprecated</em>
|
||||
<b>typename</b> Allocator = std::allocator<function_base> >
|
||||
<b>class</b> <a href="#functionN">function<i>N</i></a> : <b>public</b> <a href="#function_base">function_base</a>, <b>public</b> Mixin
|
||||
{
|
||||
<b>typedef</b> ResultType result_type; <em>// <a href="#novoid">[1]</a></em>
|
||||
<b>typedef</b> Policy policy_type;
|
||||
<b>typedef</b> Mixin mixin_type;
|
||||
<b>typedef</b> Policy policy_type; <em>// Deprecated</em>
|
||||
<b>typedef</b> Mixin mixin_type; <em>// Deprecated</em>
|
||||
<b>typedef</b> Allocator allocator_type;
|
||||
|
||||
<b>typedef</b> Arg1 argument_type; <i>// If N == 1</i>
|
||||
@ -52,8 +52,8 @@
|
||||
<a href="#functionN_copy_assn">function<i>N</i><b>&</b> <b>operator</b>=(<b>const</b> function<i>N</i><b>&</b>)</a>;
|
||||
<a href="#functionN_target_assn"><b>template</b><<b>typename</b> F> function<i>N</i><b>&</b> <b>operator</b>=(F)</a>;
|
||||
<a href="#functionN_target_ref_assn"><b>template</b><<b>typename</b> F> function<i>N</i><b>&</b> <b>operator</b>=(reference_wrapper<F>)</a>;
|
||||
<a href="#functionN_copy_set"><b>void</b> set(<b>const</b> function<i>N</i><b>&</b>)</a>;
|
||||
<a href="#functionN_target_set"><b>template</b><<b>typename</b> F> <b>void</b> set(F)</a>;
|
||||
<a href="#functionN_copy_set"><b>void</b> set(<b>const</b> function<i>N</i><b>&</b>)</a>; <em>// Deprecated</em>
|
||||
<a href="#functionN_target_set"><b>template</b><<b>typename</b> F> <b>void</b> set(F)</a>; <em>// Deprecated</em>
|
||||
<a href="#functionN_swap"><b>void</b> swap(function<i>N</i><b>&</b>)</a>;
|
||||
<a href="#functionN_clear"><b>void</b> clear()</a>;
|
||||
|
||||
@ -66,22 +66,17 @@
|
||||
<b>typename</b> Arg2,
|
||||
<i>...</i>
|
||||
<b>typename</b> Arg<i>N</i>,
|
||||
<b>typename</b> Policy,
|
||||
<b>typename</b> Mixin,
|
||||
<b>typename</b> Policy, <em>// Deprecated</em>
|
||||
<b>typename</b> Mixin, <em>// Deprecated</em>
|
||||
<b>typename</b> Allocator>
|
||||
<b>void</b> <a href="#swap_functionN">swap</a>(function<em>N</em><ResultType, Arg1, Arg2, <i>...</i>, Arg<i>N</i>, Policy, Mixin, Allocator><b>&</b>,
|
||||
function<em>N</em><ResultType, Arg1, Arg2, <i>...</i>, Arg<i>N</i>, Policy, Mixin, Allocator><b>&</b>);
|
||||
|
||||
// For any <i>N</i> in [0, <i>MAX_ARGS</i>]
|
||||
<b>template</b><<b>typename</b> ResultType,
|
||||
<b>typename</b> Arg1,
|
||||
<b>typename</b> Arg2,
|
||||
<i>...</i>
|
||||
<b>typename</b> Arg<i>N</i>,
|
||||
<b>typename</b> Arg<i>N+1</i> = <i>implementation-defined</i>,
|
||||
<b>typename</b> Arg<i>N+2</i> = <i>implementation-defined</i>,
|
||||
<i>...</i>
|
||||
<b>typename</b> Arg<i>MAX_ARGS</i> = <i>implementation-defined</i>>
|
||||
<b>template</b><<b>typename</b> Signature, <em>// Function type: ResultType (Arg1, Arg2, ..., Arg<em>N</em>)</em>
|
||||
<b>typename</b> Policy = empty_function_policy, <em>// Deprecated</em>
|
||||
<b>typename</b> Mixin = empty_function_mixin, <em>// Deprecated</em>
|
||||
<b>typename</b> Allocator = std::allocator<function_base> >
|
||||
<b>class</b> <a href="#function">function</a> : <b>public</b> <a href="#functionN">function<i>N</i></a><ResultType, Arg1, Arg2, <i>...</i>, Arg<i>N</i>>
|
||||
{
|
||||
<i>// Construction</i>
|
||||
@ -94,18 +89,14 @@
|
||||
function<b>&</b> <b>operator</b>=(<b>const</b> function<b>&</b>);
|
||||
function<b>&</b> <b>operator</b>=(<b>const</b> function<i>N</i><ResultType, Arg1, Arg2, ..., Arg<i>N</i>><b>&</b>);
|
||||
<b>template</b><<b>typename</b> F> function<b>&</b> <b>operator</b>=(F);
|
||||
<b>void</b> set(<b>const</b> function<b>&</b>);
|
||||
<b>void</b> set(<b>const</b> function<i>N</i><ResultType, Arg1, Arg2, ..., Arg<i>N</i>><b>&</b>);
|
||||
<b>template</b><<b>typename</b> F> <b>void</b> set(F);
|
||||
<b>void</b> set(<b>const</b> function<b>&</b>); <em>// Deprecated</em>
|
||||
<b>void</b> set(<b>const</b> function<i>N</i><ResultType, Arg1, Arg2, ..., Arg<i>N</i>><b>&</b>); <em>// Deprecated</em>
|
||||
<b>template</b><<b>typename</b> F> <b>void</b> set(F); <em>// Deprecated</em>
|
||||
};
|
||||
|
||||
<b>template</b><<b>typename</b> ResultType,
|
||||
<b>typename</b> Arg1,
|
||||
<b>typename</b> Arg2,
|
||||
<i>...</i>
|
||||
<b>typename</b> Arg<i>MAX_ARGS</i>>
|
||||
<b>void</b> <a href="#swap_function">swap</a>(function<ResultType, Arg1, Arg2, <i>...</i>, Arg<i>MAX_ARGS</i>><b>&</b>,
|
||||
function<ResultType, Arg1, Arg2, <i>...</i>, Arg<i>MAX_ARGS</i>><b>&</b>);
|
||||
<b>template</b><<b>typename</b> Signature, <b>typename</b> Policy, <b>typename</b> Mixin, <b>typename</b> Allocator>
|
||||
<b>void</b> <a href="#swap_function">swap</a>(function<Signature, Policy, Mixin, Allocator><b>&</b>,
|
||||
function<Signature, Policy, Mixin, Allocator><b>&</b>);
|
||||
}
|
||||
</pre>
|
||||
|
||||
@ -218,11 +209,13 @@
|
||||
<p> <a name="functionN_copy_set"><code><b>void</b> set(<b>const</b> function<i>N</i><b>&</b> g);</code></a>
|
||||
<ul>
|
||||
<li><b>Effects</b>: <code><a href="#functionN_copy_assn">*this = g</a></code>.</li>
|
||||
<li><b>Note</b>: This function is deprecated and will be removed in future versions of Boost.Function. Please use the assignment operator instead.</li>
|
||||
</ul>
|
||||
|
||||
<p> <a name="functionN_target_set"><code><b>template</b><<b>typename</b> F> <b>void</b> set(F g);</code></a>
|
||||
<ul>
|
||||
<li><b>Effects</b>: <code><a href="#functionN_target_assn">*this = g</a></code>.</li>
|
||||
<li><b>Note</b>: This function is deprecated and will be removed in future versions of Boost.Function. Please use the assignment operator instead.</li>
|
||||
</ul>
|
||||
|
||||
<p> <a name="functionN_swap"><code><b>void</b> swap(function<i>N</i><b>&</b> g);</code></a>
|
||||
@ -248,6 +241,7 @@
|
||||
<li><code>policy.postcall(this);</code></li>
|
||||
</ol>
|
||||
<li><b>Returns</b>: the value returned by <i>target</i>.</li>
|
||||
<li><b>Note</b>: invocation policies have been deprecated and will be removed in a later release.</li>
|
||||
</ul>
|
||||
|
||||
<h2><a name="function">Class template <code>function</code></a></h2>
|
||||
@ -263,8 +257,8 @@
|
||||
<b>typename</b> Arg2,
|
||||
<i>...</i>
|
||||
<b>typename</b> Arg<i>N</i>,
|
||||
<b>typename</b> Policy,
|
||||
<b>typename</b> Mixin,
|
||||
<b>typename</b> Policy, <em>// Deprecated</em>
|
||||
<b>typename</b> Mixin, <em>// Deprecated</em>
|
||||
<b>typename</b> Allocator>
|
||||
<b>void</b> <a name="swap_functionN">swap</a>(function<i>N</i><ResultType, Arg1, Arg2, <i>...</i>, Arg<i>N</i>, Policy, Mixin, Allocator><b>&</b> f,
|
||||
function<i>N</i><ResultType, Arg1, Arg2, <i>...</i>, Arg<i>N</i>, Policy, Mixin, Allocator><b>&</b> g);
|
||||
@ -275,13 +269,9 @@
|
||||
|
||||
<p>
|
||||
<pre>
|
||||
<b>template</b><<b>typename</b> ResultType,
|
||||
<b>typename</b> Arg1,
|
||||
<b>typename</b> Arg2,
|
||||
<i>...</i>
|
||||
<b>typename</b> Arg<i>MAX_ARGS</i>>
|
||||
<b>void</b> <a name="swap_function">swap</a>(function<ResultType, Arg1, Arg2, <i>...</i>, Arg<i>MAX_ARGS</i>><b>&</b> f,
|
||||
function<ResultType, Arg1, Arg2, <i>...</i>, Arg<i>MAX_ARGS</i>><b>&</b> g);
|
||||
<b>template</b><<b>typename</b> Signature, <b>typename</b> Policy, <b>typename</b> Mixin, <b>typename</b> Allocator>
|
||||
<b>void</b> <a name="swap_function">swap</a>(function<Signature, Policy, Mixin, Allocator><b>&</b> f,
|
||||
function<Signature, Policy, Mixin, Allocator><b>&</b> g);
|
||||
</pre>
|
||||
<ul>
|
||||
<li><b>Effects</b>: <code>f.<a href="#functionN_swap">swap</a>(g);</code></li>
|
||||
@ -293,7 +283,7 @@
|
||||
<address><a href="mailto:gregod@cs.rpi.edu">Douglas Gregor</a></address>
|
||||
<!-- Created: Fri Jul 13 10:57:20 EDT 2001 -->
|
||||
<!-- hhmts start -->
|
||||
Last modified: Thu Jan 31 21:55:35 EST 2002
|
||||
Last modified: Fri Jul 19 16:40:00 EDT 2002
|
||||
<!-- hhmts end -->
|
||||
</body>
|
||||
</html>
|
||||
|
12
index.html
12
index.html
@ -13,6 +13,7 @@
|
||||
<p> Generally, any place in which a function pointer would be used to defer a call or make a callback, Boost.Function can be used instead to allow the user greater flexibility in the implementation of the target. Targets can be any 'compatible' function object (or function pointer), meaning that the arguments to the interface designated by Boost.Function can be converted to the arguments of the target function object.
|
||||
|
||||
<ul>
|
||||
<li><a href="#compatibility">Compatibility Note</a></li>
|
||||
<li><a href="doc/tutorial.html">Tutorial</a></li>
|
||||
<li><a href="doc/reference.html">Reference manual</a></li>
|
||||
<li><a href="#vspointers">Boost.Function vs. Function Pointers</a></li>
|
||||
@ -23,6 +24,17 @@
|
||||
<li><a href="doc/faq.html">Frequently Asked Questions</a></li>
|
||||
</ul>
|
||||
|
||||
<a name="compatibility"><h2>Compatibility Note</h2></a>
|
||||
<p> Boost.Function has been partially redesigned to minimize the interface and make it cleaner. Several seldom- or never-used features of the older Boost.Function have been deprecated and will be removed in the near future. Here is a list of features that have been deprecated, the likely impact of the deprecations, and how to adjust your code:
|
||||
<ul>
|
||||
<li>The <code>boost::function</code> class template syntax has changed. The old syntax, e.g., <code>boost::function<int, float, double, std::string></code>, has been changed to a more natural syntax <code>boost::function<int (float, double, std::string)></code>, where all return and argument types are encoded in a single function type parameter. Any other template parameters (e.g., the <code>Allocator</code>) follow this single parameter.
|
||||
<p> The resolution to this change depends on the abilities of your compiler: if your compiler supports template partial specialization (most do), modify your code to use the newer syntax (preferable) or directly use one of the <code>function<em>N</em></code> classes whose syntax has not changed. If your compiler does not support template partial specialization, you must take the latter option and use the numbered Boost.Function classes.
|
||||
<p> Support for the old syntax with the <code>boost::function</code> class template will persist for a short while, but will eventually be removed so that we can provide better error messages and link compatibility. </li>
|
||||
<li>The invocation policy template parameter (<code>Policy</code>) has been deprecated and will be removed. There is no direct equivalent to this rarely used feature.</li>
|
||||
<li>The mixin template parameter (<code>Mixin</code>) has been deprecated and will be removed. There is not direct equivalent to this rarely used feature.</li>
|
||||
<li>The <code>set</code> methods have been deprecated and will be removed. Use the assignment operator instead.</li>
|
||||
</ul>
|
||||
|
||||
<h2><a name="vspointers">Boost.Function vs. Function Pointers</a></h2>
|
||||
<p>Boost.Function has several advantages over function pointers, namely:
|
||||
|
||||
|
@ -93,7 +93,7 @@ test_zero_args()
|
||||
|
||||
// Invocation and self-assignment
|
||||
global_int = 0;
|
||||
v1.set(v1);
|
||||
v1 = (v1);
|
||||
v1();
|
||||
BOOST_TEST(global_int == 5);
|
||||
|
||||
@ -152,7 +152,7 @@ test_zero_args()
|
||||
BOOST_TEST(global_int == 3);
|
||||
|
||||
// Assignment to a non-empty function
|
||||
v2.set(five);
|
||||
v2 = (five);
|
||||
|
||||
// Invocation
|
||||
global_int = 0;
|
||||
@ -163,7 +163,7 @@ test_zero_args()
|
||||
BOOST_TEST(v2.empty());
|
||||
|
||||
// Assignment to an empty function from a free function
|
||||
v2.set(&write_five);
|
||||
v2 = (&write_five);
|
||||
BOOST_TEST(v2);
|
||||
|
||||
// Invocation
|
||||
|
@ -93,7 +93,7 @@ test_zero_args()
|
||||
|
||||
// Invocation and self-assignment
|
||||
global_int = 0;
|
||||
v1.set(v1);
|
||||
v1 = (v1);
|
||||
v1();
|
||||
BOOST_TEST(global_int == 5);
|
||||
|
||||
@ -152,7 +152,7 @@ test_zero_args()
|
||||
BOOST_TEST(global_int == 3);
|
||||
|
||||
// Assignment to a non-empty function
|
||||
v2.set(five);
|
||||
v2 = (five);
|
||||
|
||||
// Invocation
|
||||
global_int = 0;
|
||||
@ -163,7 +163,7 @@ test_zero_args()
|
||||
BOOST_TEST(v2.empty());
|
||||
|
||||
// Assignment to an empty function from a free function
|
||||
v2.set(BOOST_FUNCTION_TARGET_FIX(&) write_five);
|
||||
v2 = (BOOST_FUNCTION_TARGET_FIX(&) write_five);
|
||||
BOOST_TEST(v2);
|
||||
|
||||
// Invocation
|
||||
|
Reference in New Issue
Block a user