forked from boostorg/function
libs/function/doc/reference.xml:
- Document target() member function - Documented new comparison operators libs/function/doc/tests.xml: Include contains_test.cpp libs/function/doc/function.xml: Use the new XInclude name [SVN r21903]
This commit is contained in:
@ -3,7 +3,7 @@
|
|||||||
"http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
|
"http://www.boost.org/tools/boostbook/dtd/boostbook.dtd">
|
||||||
<library name="Function" dirname="function" id="function"
|
<library name="Function" dirname="function" id="function"
|
||||||
last-revision="$Date$"
|
last-revision="$Date$"
|
||||||
xmlns:xi="http://www.w3.org/2001/XInclude">
|
xmlns:xi="http://www.w3.org/2003/XInclude">
|
||||||
<libraryinfo>
|
<libraryinfo>
|
||||||
<author>
|
<author>
|
||||||
<firstname>Douglas</firstname>
|
<firstname>Douglas</firstname>
|
||||||
|
@ -83,6 +83,30 @@
|
|||||||
<throws><simpara>Will not throw.</simpara></throws>
|
<throws><simpara>Will not throw.</simpara></throws>
|
||||||
</method>
|
</method>
|
||||||
</method-group>
|
</method-group>
|
||||||
|
|
||||||
|
<method-group name="target access">
|
||||||
|
<overloaded-method name="target">
|
||||||
|
<signature>
|
||||||
|
<template>
|
||||||
|
<template-type-parameter name="Functor"/>
|
||||||
|
</template>
|
||||||
|
<type>Functor*</type>
|
||||||
|
</signature>
|
||||||
|
<signature cv="const">
|
||||||
|
<template>
|
||||||
|
<template-type-parameter name="Functor"/>
|
||||||
|
</template>
|
||||||
|
<type>const Functor*</type>
|
||||||
|
</signature>
|
||||||
|
|
||||||
|
<returns><simpara>If <code>this</code> stores a target of type
|
||||||
|
<code>Functor</code>, returns the address of the
|
||||||
|
target. Otherwise, returns the NULL
|
||||||
|
pointer.</simpara></returns>
|
||||||
|
|
||||||
|
<throws><simpara>Will not throw.</simpara></throws>
|
||||||
|
</overloaded-method>
|
||||||
|
</method-group>
|
||||||
</class>
|
</class>
|
||||||
|
|
||||||
<class name="functionN">
|
<class name="functionN">
|
||||||
@ -216,6 +240,30 @@
|
|||||||
</method>
|
</method>
|
||||||
</method-group>
|
</method-group>
|
||||||
|
|
||||||
|
<method-group name="target access">
|
||||||
|
<overloaded-method name="target">
|
||||||
|
<signature>
|
||||||
|
<template>
|
||||||
|
<template-type-parameter name="Functor"/>
|
||||||
|
</template>
|
||||||
|
<type>Functor*</type>
|
||||||
|
</signature>
|
||||||
|
<signature cv="const">
|
||||||
|
<template>
|
||||||
|
<template-type-parameter name="Functor"/>
|
||||||
|
</template>
|
||||||
|
<type>const Functor*</type>
|
||||||
|
</signature>
|
||||||
|
|
||||||
|
<returns><simpara>If <code>this</code> stores a target of type
|
||||||
|
<code>Functor</code>, returns the address of the
|
||||||
|
target. Otherwise, returns the NULL
|
||||||
|
pointer.</simpara></returns>
|
||||||
|
|
||||||
|
<throws><simpara>Will not throw.</simpara></throws>
|
||||||
|
</overloaded-method>
|
||||||
|
</method-group>
|
||||||
|
|
||||||
<method-group name="invocation">
|
<method-group name="invocation">
|
||||||
<method name="operator()" cv="const">
|
<method name="operator()" cv="const">
|
||||||
<type>result_type</type>
|
<type>result_type</type>
|
||||||
@ -246,46 +294,208 @@
|
|||||||
</function>
|
</function>
|
||||||
</free-function-group>
|
</free-function-group>
|
||||||
|
|
||||||
<free-function-group name="undefined operators">
|
<free-function-group name="comparison operators">
|
||||||
<function name="operator==">
|
<overloaded-function name="operator==">
|
||||||
<template>
|
<signature>
|
||||||
<template-type-parameter name="T1"/>
|
<template>
|
||||||
<template-type-parameter name="T2"/>
|
<template-type-parameter name="T1"/>
|
||||||
<template-varargs/>
|
<template-type-parameter name="T2"/>
|
||||||
<template-type-parameter name="TN"/>
|
<template-varargs/>
|
||||||
<template-type-parameter name="Allocator1"/>
|
<template-type-parameter name="TN"/>
|
||||||
<template-type-parameter name="U1"/>
|
<template-type-parameter name="Allocator"/>
|
||||||
<template-type-parameter name="U2"/>
|
<template-type-parameter name="Functor"/>
|
||||||
<template-varargs/>
|
</template>
|
||||||
<template-type-parameter name="UN"/>
|
<type>bool</type>
|
||||||
<template-type-parameter name="Allocator2"/>
|
<parameter name="f"><paramtype>const <classname>functionN</classname><T1, T2, ..., TN, Allocator>&</paramtype></parameter>
|
||||||
</template>
|
<parameter name="g"><paramtype>Functor</paramtype></parameter>
|
||||||
<type>void</type>
|
</signature>
|
||||||
<parameter name="f1"><paramtype>const <classname>functionN</classname><T1, T2, ..., TN, Allocator1>&</paramtype></parameter>
|
<signature>
|
||||||
<parameter name="f2"><paramtype>const <classname>functionN</classname><U1, U2, ..., UN, Allocator2>&</paramtype></parameter>
|
<template>
|
||||||
<notes><simpara>This function must be left undefined.</simpara></notes>
|
<template-type-parameter name="T1"/>
|
||||||
<rationale><simpara>The <code>safe_bool</code> conversion opens a loophole whereby two function instances can be compared via <code>==</code>. This undefined <code>void operator ==</code> closes the loophole and ensures a compile-time or link-time error.</simpara></rationale>
|
<template-type-parameter name="T2"/>
|
||||||
</function>
|
<template-varargs/>
|
||||||
|
<template-type-parameter name="TN"/>
|
||||||
|
<template-type-parameter name="Allocator"/>
|
||||||
|
<template-type-parameter name="Functor"/>
|
||||||
|
</template>
|
||||||
|
<type>bool</type>
|
||||||
|
<parameter name="g"><paramtype>Functor</paramtype></parameter>
|
||||||
|
<parameter name="f"><paramtype>const <classname>functionN</classname><T1, T2, ..., TN, Allocator>&</paramtype></parameter>
|
||||||
|
</signature>
|
||||||
|
<signature>
|
||||||
|
<template>
|
||||||
|
<template-type-parameter name="T1"/>
|
||||||
|
<template-type-parameter name="T2"/>
|
||||||
|
<template-varargs/>
|
||||||
|
<template-type-parameter name="TN"/>
|
||||||
|
<template-type-parameter name="Allocator"/>
|
||||||
|
<template-type-parameter name="Functor"/>
|
||||||
|
</template>
|
||||||
|
<type>bool</type>
|
||||||
|
<parameter name="f"><paramtype>const <classname>functionN</classname><T1, T2, ..., TN, Allocator>&</paramtype></parameter>
|
||||||
|
<parameter name="g"><paramtype><classname>reference_wrapper</classname><Functor></paramtype></parameter>
|
||||||
|
</signature>
|
||||||
|
<signature>
|
||||||
|
<template>
|
||||||
|
<template-type-parameter name="T1"/>
|
||||||
|
<template-type-parameter name="T2"/>
|
||||||
|
<template-varargs/>
|
||||||
|
<template-type-parameter name="TN"/>
|
||||||
|
<template-type-parameter name="Allocator"/>
|
||||||
|
<template-type-parameter name="Functor"/>
|
||||||
|
</template>
|
||||||
|
<type>bool</type>
|
||||||
|
<parameter name="g"><paramtype><classname>reference_wrapper</classname><Functor></paramtype></parameter>
|
||||||
|
<parameter name="f"><paramtype>const <classname>functionN</classname><T1, T2, ..., TN, Allocator>&</paramtype></parameter>
|
||||||
|
</signature>
|
||||||
|
<signature>
|
||||||
|
<template>
|
||||||
|
<template-type-parameter name="T1"/>
|
||||||
|
<template-type-parameter name="T2"/>
|
||||||
|
<template-varargs/>
|
||||||
|
<template-type-parameter name="TN"/>
|
||||||
|
<template-type-parameter name="Allocator1"/>
|
||||||
|
<template-type-parameter name="U1"/>
|
||||||
|
<template-type-parameter name="U2"/>
|
||||||
|
<template-varargs/>
|
||||||
|
<template-type-parameter name="UN"/>
|
||||||
|
<template-type-parameter name="Allocator2"/>
|
||||||
|
</template>
|
||||||
|
<type>void</type>
|
||||||
|
<parameter name="f1"><paramtype>const <classname>functionN</classname><T1, T2, ..., TN, Allocator1>&</paramtype></parameter>
|
||||||
|
<parameter name="f2"><paramtype>const <classname>functionN</classname><U1, U2, ..., UN, Allocator2>&</paramtype></parameter>
|
||||||
|
</signature>
|
||||||
|
|
||||||
<function name="operator!=">
|
<returns><simpara>True when <code>f</code> stores an object of
|
||||||
<template>
|
type <code>Functor</code> and one of the following conditions applies:
|
||||||
<template-type-parameter name="T1"/>
|
<itemizedlist>
|
||||||
<template-type-parameter name="T2"/>
|
|
||||||
<template-varargs/>
|
<listitem><simpara><code>g</code> is of type
|
||||||
<template-type-parameter name="TN"/>
|
<code><classname>reference_wrapper</classname><Functor></code>
|
||||||
<template-type-parameter name="Allocator1"/>
|
and <code>f.target<Functor>() == g.<methodname
|
||||||
<template-type-parameter name="U1"/>
|
alt="reference_wrapper::get_pointer">get_pointer</methodname>()</code>.</simpara></listitem>
|
||||||
<template-type-parameter name="U2"/>
|
|
||||||
<template-varargs/>
|
<listitem><simpara><code>g</code> is not of type
|
||||||
<template-type-parameter name="UN"/>
|
<code><classname>reference_wrapper</classname><Functor></code>
|
||||||
<template-type-parameter name="Allocator2"/>
|
and <code>*(f.target<Functor>()) ==
|
||||||
</template>
|
g</code>.</simpara></listitem>
|
||||||
<type>void</type>
|
|
||||||
<parameter name="f1"><paramtype>const <classname>functionN</classname><T1, T2, ..., TN, Allocator1>&</paramtype></parameter>
|
</itemizedlist>
|
||||||
<parameter name="f2"><paramtype>const <classname>functionN</classname><U1, U2, ..., UN, Allocator2>&</paramtype></parameter>
|
</simpara></returns>
|
||||||
<notes><simpara>This function must be left undefined.</simpara></notes>
|
|
||||||
<rationale><simpara>The <code>safe_bool</code> conversion opens a loophole whereby two function instances can be compared via <code>!=</code>. This undefined <code>void operator !=</code> closes the loophole and ensures a compile-time or link-time error.</simpara></rationale>
|
<notes><simpara><code><classname>functionN</classname></code>
|
||||||
</function>
|
objects are not
|
||||||
|
<conceptname>EqualityComparable</conceptname>.</simpara></notes>
|
||||||
|
|
||||||
|
<rationale><simpara>The <code>safe_bool</code> conversion
|
||||||
|
opens a loophole whereby two <code>functionN</code>
|
||||||
|
instances can be compared via <code>==</code>, although this
|
||||||
|
is not feasible to implement. The undefined <code>void
|
||||||
|
operator==</code> closes the loophole and ensures a
|
||||||
|
compile-time or link-time error.</simpara></rationale>
|
||||||
|
</overloaded-function>
|
||||||
|
|
||||||
|
<overloaded-function name="operator!=">
|
||||||
|
<signature>
|
||||||
|
<template>
|
||||||
|
<template-type-parameter name="T1"/>
|
||||||
|
<template-type-parameter name="T2"/>
|
||||||
|
<template-varargs/>
|
||||||
|
<template-type-parameter name="TN"/>
|
||||||
|
<template-type-parameter name="Allocator"/>
|
||||||
|
<template-type-parameter name="Functor"/>
|
||||||
|
</template>
|
||||||
|
<type>bool</type>
|
||||||
|
<parameter name="f"><paramtype>const <classname>functionN</classname><T1, T2, ..., TN, Allocator>&</paramtype></parameter>
|
||||||
|
<parameter name="g"><paramtype>Functor</paramtype></parameter>
|
||||||
|
</signature>
|
||||||
|
<signature>
|
||||||
|
<template>
|
||||||
|
<template-type-parameter name="T1"/>
|
||||||
|
<template-type-parameter name="T2"/>
|
||||||
|
<template-varargs/>
|
||||||
|
<template-type-parameter name="TN"/>
|
||||||
|
<template-type-parameter name="Allocator"/>
|
||||||
|
<template-type-parameter name="Functor"/>
|
||||||
|
</template>
|
||||||
|
<type>bool</type>
|
||||||
|
<parameter name="g"><paramtype>Functor</paramtype></parameter>
|
||||||
|
<parameter name="f"><paramtype>const <classname>functionN</classname><T1, T2, ..., TN, Allocator>&</paramtype></parameter>
|
||||||
|
</signature>
|
||||||
|
<signature>
|
||||||
|
<template>
|
||||||
|
<template-type-parameter name="T1"/>
|
||||||
|
<template-type-parameter name="T2"/>
|
||||||
|
<template-varargs/>
|
||||||
|
<template-type-parameter name="TN"/>
|
||||||
|
<template-type-parameter name="Allocator"/>
|
||||||
|
<template-type-parameter name="Functor"/>
|
||||||
|
</template>
|
||||||
|
<type>bool</type>
|
||||||
|
<parameter name="f"><paramtype>const <classname>functionN</classname><T1, T2, ..., TN, Allocator>&</paramtype></parameter>
|
||||||
|
<parameter name="g"><paramtype><classname>reference_wrapper</classname><Functor></paramtype></parameter>
|
||||||
|
</signature>
|
||||||
|
<signature>
|
||||||
|
<template>
|
||||||
|
<template-type-parameter name="T1"/>
|
||||||
|
<template-type-parameter name="T2"/>
|
||||||
|
<template-varargs/>
|
||||||
|
<template-type-parameter name="TN"/>
|
||||||
|
<template-type-parameter name="Allocator"/>
|
||||||
|
<template-type-parameter name="Functor"/>
|
||||||
|
</template>
|
||||||
|
<type>bool</type>
|
||||||
|
<parameter name="g"><paramtype><classname>reference_wrapper</classname><Functor></paramtype></parameter>
|
||||||
|
<parameter name="f"><paramtype>const <classname>functionN</classname><T1, T2, ..., TN, Allocator>&</paramtype></parameter>
|
||||||
|
</signature>
|
||||||
|
<signature>
|
||||||
|
<template>
|
||||||
|
<template-type-parameter name="T1"/>
|
||||||
|
<template-type-parameter name="T2"/>
|
||||||
|
<template-varargs/>
|
||||||
|
<template-type-parameter name="TN"/>
|
||||||
|
<template-type-parameter name="Allocator1"/>
|
||||||
|
<template-type-parameter name="U1"/>
|
||||||
|
<template-type-parameter name="U2"/>
|
||||||
|
<template-varargs/>
|
||||||
|
<template-type-parameter name="UN"/>
|
||||||
|
<template-type-parameter name="Allocator2"/>
|
||||||
|
</template>
|
||||||
|
<type>void</type>
|
||||||
|
<parameter name="f1"><paramtype>const <classname>functionN</classname><T1, T2, ..., TN, Allocator1>&</paramtype></parameter>
|
||||||
|
<parameter name="f2"><paramtype>const <classname>functionN</classname><U1, U2, ..., UN, Allocator2>&</paramtype></parameter>
|
||||||
|
</signature>
|
||||||
|
|
||||||
|
<returns><simpara>True when <code>f</code> does not store an
|
||||||
|
object of type <code>Functor</code> or it stores an object of
|
||||||
|
type <code>Functor</code> and one of the following conditions
|
||||||
|
applies:
|
||||||
|
<itemizedlist>
|
||||||
|
|
||||||
|
<listitem><simpara><code>g</code> is of type
|
||||||
|
<code><classname>reference_wrapper</classname><Functor></code>
|
||||||
|
and <code>f.target<Functor>() != g.<methodname
|
||||||
|
alt="reference_wrapper::get_pointer">get_pointer</methodname>()</code>.</simpara></listitem>
|
||||||
|
|
||||||
|
<listitem><simpara><code>g</code> is not of type
|
||||||
|
<code><classname>reference_wrapper</classname><Functor></code>
|
||||||
|
and <code>*(f.target<Functor>()) !=
|
||||||
|
g</code>.</simpara></listitem>
|
||||||
|
|
||||||
|
</itemizedlist>
|
||||||
|
</simpara></returns>
|
||||||
|
|
||||||
|
<notes><simpara><code><classname>functionN</classname></code>
|
||||||
|
objects are not
|
||||||
|
<conceptname>EqualityComparable</conceptname>.</simpara></notes>
|
||||||
|
|
||||||
|
<rationale><simpara>The <code>safe_bool</code> conversion
|
||||||
|
opens a loophole whereby two <code>functionN</code>
|
||||||
|
instances can be compared via <code>!=</code>, although this
|
||||||
|
is not feasible to implement. The undefined <code>void
|
||||||
|
operator!=</code> closes the loophole and ensures a
|
||||||
|
compile-time or link-time error.</simpara></rationale>
|
||||||
|
</overloaded-function>
|
||||||
</free-function-group>
|
</free-function-group>
|
||||||
</class>
|
</class>
|
||||||
|
|
||||||
@ -441,6 +651,29 @@
|
|||||||
</method>
|
</method>
|
||||||
</method-group>
|
</method-group>
|
||||||
|
|
||||||
|
<method-group name="target access">
|
||||||
|
<overloaded-method name="target">
|
||||||
|
<signature>
|
||||||
|
<template>
|
||||||
|
<template-type-parameter name="Functor"/>
|
||||||
|
</template>
|
||||||
|
<type>Functor*</type>
|
||||||
|
</signature>
|
||||||
|
<signature cv="const">
|
||||||
|
<template>
|
||||||
|
<template-type-parameter name="Functor"/>
|
||||||
|
</template>
|
||||||
|
<type>const Functor*</type>
|
||||||
|
</signature>
|
||||||
|
|
||||||
|
<returns><simpara>If <code>this</code> stores a target of type
|
||||||
|
<code>Functor</code>, returns the address of the
|
||||||
|
target. Otherwise, returns the NULL
|
||||||
|
pointer.</simpara></returns>
|
||||||
|
<throws><simpara>Will not throw.</simpara></throws>
|
||||||
|
</overloaded-method>
|
||||||
|
</method-group>
|
||||||
|
|
||||||
<method-group name="invocation">
|
<method-group name="invocation">
|
||||||
<method name="operator()" cv="const">
|
<method name="operator()" cv="const">
|
||||||
<type>result_type</type>
|
<type>result_type</type>
|
||||||
@ -468,34 +701,172 @@
|
|||||||
</function>
|
</function>
|
||||||
</free-function-group>
|
</free-function-group>
|
||||||
|
|
||||||
<free-function-group name="undefined operators">
|
<free-function-group name="comparison operators">
|
||||||
<function name="operator==">
|
<overloaded-function name="operator==">
|
||||||
<template>
|
<signature>
|
||||||
<template-type-parameter name="Signature1"/>
|
<template>
|
||||||
<template-type-parameter name="Allocator1"/>
|
<template-type-parameter name="Signature"/>
|
||||||
<template-type-parameter name="Signature2"/>
|
<template-type-parameter name="Allocator"/>
|
||||||
<template-type-parameter name="Allocator2"/>
|
<template-type-parameter name="Functor"/>
|
||||||
</template>
|
</template>
|
||||||
<type>void</type>
|
<type>bool</type>
|
||||||
<parameter name="f1"><paramtype>const <classname>function</classname><Signature1, Allocator1>&</paramtype></parameter>
|
<parameter name="f"><paramtype>const <classname>function</classname><Signature, Allocator>&</paramtype></parameter>
|
||||||
<parameter name="f2"><paramtype>const <classname>function</classname><Signature2, Allocator2>&</paramtype></parameter>
|
<parameter name="g"><paramtype>Functor</paramtype></parameter>
|
||||||
<notes><simpara>This function must be left undefined.</simpara></notes>
|
</signature>
|
||||||
<rationale><simpara>The <code>safe_bool</code> conversion opens a loophole whereby two function instances can be compared via <code>==</code>. This undefined <code>void operator ==</code> closes the loophole and ensures a compile-time or link-time error.</simpara></rationale>
|
<signature>
|
||||||
</function>
|
<template>
|
||||||
|
<template-type-parameter name="Signature"/>
|
||||||
|
<template-type-parameter name="Allocator"/>
|
||||||
|
<template-type-parameter name="Functor"/>
|
||||||
|
</template>
|
||||||
|
<type>bool</type>
|
||||||
|
<parameter name="g"><paramtype>Functor</paramtype></parameter>
|
||||||
|
<parameter name="f"><paramtype>const <classname>function</classname><Signature, Allocator>&</paramtype></parameter>
|
||||||
|
</signature>
|
||||||
|
<signature>
|
||||||
|
<template>
|
||||||
|
<template-type-parameter name="Signature"/>
|
||||||
|
<template-type-parameter name="Allocator"/>
|
||||||
|
<template-type-parameter name="Functor"/>
|
||||||
|
</template>
|
||||||
|
<type>bool</type>
|
||||||
|
<parameter name="f"><paramtype>const <classname>function</classname><Signature, Allocator>&</paramtype></parameter>
|
||||||
|
<parameter name="g"><paramtype><classname>reference_wrapper</classname><Functor></paramtype></parameter>
|
||||||
|
</signature>
|
||||||
|
<signature>
|
||||||
|
<template>
|
||||||
|
<template-type-parameter name="Signature"/>
|
||||||
|
<template-type-parameter name="Allocator"/>
|
||||||
|
<template-type-parameter name="Functor"/>
|
||||||
|
</template>
|
||||||
|
<type>bool</type>
|
||||||
|
<parameter name="g"><paramtype><classname>reference_wrapper</classname><Functor></paramtype></parameter>
|
||||||
|
<parameter name="f"><paramtype>const <classname>function</classname><Signature, Allocator>&</paramtype></parameter>
|
||||||
|
</signature>
|
||||||
|
<signature>
|
||||||
|
<template>
|
||||||
|
<template-type-parameter name="Signature1"/>
|
||||||
|
<template-type-parameter name="Allocator1"/>
|
||||||
|
<template-type-parameter name="Signature2"/>
|
||||||
|
<template-type-parameter name="Allocator2"/>
|
||||||
|
</template>
|
||||||
|
<type>void</type>
|
||||||
|
<parameter name="f1"><paramtype>const <classname>function</classname><Signature1, Allocator1>&</paramtype></parameter>
|
||||||
|
<parameter name="f2"><paramtype>const <classname>function</classname><Signature2, Allocator2>&</paramtype></parameter>
|
||||||
|
</signature>
|
||||||
|
|
||||||
<function name="operator!=">
|
<returns><simpara>True when <code>f</code> stores an object of
|
||||||
<template>
|
type <code>Functor</code> and one of the following conditions applies:
|
||||||
<template-type-parameter name="Signature1"/>
|
<itemizedlist>
|
||||||
<template-type-parameter name="Allocator1"/>
|
|
||||||
<template-type-parameter name="Signature2"/>
|
<listitem><simpara><code>g</code> is of type
|
||||||
<template-type-parameter name="Allocator2"/>
|
<code><classname>reference_wrapper</classname><Functor></code>
|
||||||
</template>
|
and <code>f.target<Functor>() == g.<methodname
|
||||||
<type>void</type>
|
alt="reference_wrapper::get_pointer">get_pointer</methodname>()</code>.</simpara></listitem>
|
||||||
<parameter name="f1"><paramtype>const <classname>function</classname><Signature1, Allocator1>&</paramtype></parameter>
|
|
||||||
<parameter name="f2"><paramtype>const <classname>function</classname><Signature2, Allocator2>&</paramtype></parameter>
|
<listitem><simpara><code>g</code> is not of type
|
||||||
<notes><simpara>This function must be left undefined.</simpara></notes>
|
<code><classname>reference_wrapper</classname><Functor></code>
|
||||||
<rationale><simpara>The <code>safe_bool</code> conversion opens a loophole whereby two function instances can be compared via <code>!=</code>. This undefined <code>void operator !=</code> closes the loophole and ensures a compile-time or link-time error.</simpara></rationale>
|
and <code>*(f.target<Functor>()) ==
|
||||||
</function>
|
g</code>.</simpara></listitem>
|
||||||
|
|
||||||
|
</itemizedlist>
|
||||||
|
</simpara></returns>
|
||||||
|
|
||||||
|
<notes><simpara><code><classname>function</classname></code>
|
||||||
|
objects are not
|
||||||
|
<conceptname>EqualityComparable</conceptname>.</simpara></notes>
|
||||||
|
|
||||||
|
<rationale><simpara>The <code>safe_bool</code> conversion
|
||||||
|
opens a loophole whereby two <code>function</code>
|
||||||
|
instances can be compared via <code>==</code>, although this
|
||||||
|
is not feasible to implement. The undefined <code>void
|
||||||
|
operator==</code> closes the loophole and ensures a
|
||||||
|
compile-time or link-time error.</simpara></rationale>
|
||||||
|
</overloaded-function>
|
||||||
|
|
||||||
|
<overloaded-function name="operator!=">
|
||||||
|
<signature>
|
||||||
|
<template>
|
||||||
|
<template-type-parameter name="Signature"/>
|
||||||
|
<template-type-parameter name="Allocator"/>
|
||||||
|
<template-type-parameter name="Functor"/>
|
||||||
|
</template>
|
||||||
|
<type>bool</type>
|
||||||
|
<parameter name="f"><paramtype>const <classname>function</classname><Signature, Allocator>&</paramtype></parameter>
|
||||||
|
<parameter name="g"><paramtype>Functor</paramtype></parameter>
|
||||||
|
</signature>
|
||||||
|
<signature>
|
||||||
|
<template>
|
||||||
|
<template-type-parameter name="Signature"/>
|
||||||
|
<template-type-parameter name="Allocator"/>
|
||||||
|
<template-type-parameter name="Functor"/>
|
||||||
|
</template>
|
||||||
|
<type>bool</type>
|
||||||
|
<parameter name="g"><paramtype>Functor</paramtype></parameter>
|
||||||
|
<parameter name="f"><paramtype>const <classname>function</classname><Signature, Allocator>&</paramtype></parameter>
|
||||||
|
</signature>
|
||||||
|
<signature>
|
||||||
|
<template>
|
||||||
|
<template-type-parameter name="Signature"/>
|
||||||
|
<template-type-parameter name="Allocator"/>
|
||||||
|
<template-type-parameter name="Functor"/>
|
||||||
|
</template>
|
||||||
|
<type>bool</type>
|
||||||
|
<parameter name="f"><paramtype>const <classname>function</classname><Signature, Allocator>&</paramtype></parameter>
|
||||||
|
<parameter name="g"><paramtype><classname>reference_wrapper</classname><Functor></paramtype></parameter>
|
||||||
|
</signature>
|
||||||
|
<signature>
|
||||||
|
<template>
|
||||||
|
<template-type-parameter name="Signature"/>
|
||||||
|
<template-type-parameter name="Allocator"/>
|
||||||
|
<template-type-parameter name="Functor"/>
|
||||||
|
</template>
|
||||||
|
<type>bool</type>
|
||||||
|
<parameter name="g"><paramtype><classname>reference_wrapper</classname><Functor></paramtype></parameter>
|
||||||
|
<parameter name="f"><paramtype>const <classname>function</classname><Signature, Allocator>&</paramtype></parameter>
|
||||||
|
</signature>
|
||||||
|
<signature>
|
||||||
|
<template>
|
||||||
|
<template-type-parameter name="Signature1"/>
|
||||||
|
<template-type-parameter name="Allocator1"/>
|
||||||
|
<template-type-parameter name="Signature2"/>
|
||||||
|
<template-type-parameter name="Allocator2"/>
|
||||||
|
</template>
|
||||||
|
<type>void</type>
|
||||||
|
<parameter name="f1"><paramtype>const <classname>function</classname><Signature1, Allocator1>&</paramtype></parameter>
|
||||||
|
<parameter name="f2"><paramtype>const <classname>function</classname><Signature2, Allocator2>&</paramtype></parameter>
|
||||||
|
</signature>
|
||||||
|
|
||||||
|
<returns><simpara>True when <code>f</code> does not store an
|
||||||
|
object of type <code>Functor</code> or it stores an object of
|
||||||
|
type <code>Functor</code> and one of the following conditions
|
||||||
|
applies:
|
||||||
|
<itemizedlist>
|
||||||
|
|
||||||
|
<listitem><simpara><code>g</code> is of type
|
||||||
|
<code><classname>reference_wrapper</classname><Functor></code>
|
||||||
|
and <code>f.target<Functor>() != g.<methodname
|
||||||
|
alt="reference_wrapper::get_pointer">get_pointer</methodname>()</code>.</simpara></listitem>
|
||||||
|
|
||||||
|
<listitem><simpara><code>g</code> is not of type
|
||||||
|
<code><classname>reference_wrapper</classname><Functor></code>
|
||||||
|
and <code>*(f.target<Functor>()) !=
|
||||||
|
g</code>.</simpara></listitem>
|
||||||
|
|
||||||
|
</itemizedlist>
|
||||||
|
</simpara></returns>
|
||||||
|
|
||||||
|
<notes><simpara><code><classname>function</classname></code>
|
||||||
|
objects are not
|
||||||
|
<conceptname>EqualityComparable</conceptname>.</simpara></notes>
|
||||||
|
|
||||||
|
<rationale><simpara>The <code>safe_bool</code> conversion
|
||||||
|
opens a loophole whereby two <code>function</code>
|
||||||
|
instances can be compared via <code>!=</code>, although this
|
||||||
|
is not feasible to implement. The undefined <code>void
|
||||||
|
operator!=</code> closes the loophole and ensures a
|
||||||
|
compile-time or link-time error.</simpara></rationale>
|
||||||
|
</overloaded-function>
|
||||||
</free-function-group>
|
</free-function-group>
|
||||||
</class>
|
</class>
|
||||||
</namespace>
|
</namespace>
|
||||||
|
@ -26,6 +26,12 @@
|
|||||||
<if-fails><para>Either Boost.Lambda does not work on the platform, or Boost.Function cannot safely be applied without the use of <functionname>boost::unlambda</functionname>.</para></if-fails>
|
<if-fails><para>Either Boost.Lambda does not work on the platform, or Boost.Function cannot safely be applied without the use of <functionname>boost::unlambda</functionname>.</para></if-fails>
|
||||||
</run-test>
|
</run-test>
|
||||||
|
|
||||||
|
<run-test filename="contains_test.cpp">
|
||||||
|
<purpose><para>Test the operation of the
|
||||||
|
<code><methodname>target</methodname></code> member function and the
|
||||||
|
equality operators.</para></purpose>
|
||||||
|
</run-test>
|
||||||
|
|
||||||
<compile-fail-test filename="function_test_fail1.cpp">
|
<compile-fail-test filename="function_test_fail1.cpp">
|
||||||
<purpose><para>Test the (incorrect!) use of comparisons between Boost.Function function objects.</para></purpose>
|
<purpose><para>Test the (incorrect!) use of comparisons between Boost.Function function objects.</para></purpose>
|
||||||
<if-fails><para>Intuitive (but incorrect!) code may compile and will give meaningless results.</para></if-fails>
|
<if-fails><para>Intuitive (but incorrect!) code may compile and will give meaningless results.</para></if-fails>
|
||||||
|
Reference in New Issue
Block a user