blob: 30db67504d09bb2df0a85009be64e81d75ed224d [file] [log] [blame]
<?xml version="1.0" ?>
<concept name="PolymorphicFunctionObject" category="utility">
<!--
Copyright 2008 Eric Niebler
Distributed under the Boost
Software License, Version 1.0. (See accompanying
file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-->
<param name="Fn" role="polymorphic-function-object-type" />
<models-sentence>
The type <arg num="1" /> must be a model of <self/>.
</models-sentence>
<description>
<para>
A type that can be called and that follows the TR1 ResultOf
protocol for return type calculation.
</para>
</description>
<notation variables="fn">
<sample-value>
<type name="Fn" />
</sample-value>
</notation>
<notation variables="a0,...an">
<sample-value>
<type name="A0,...An" />
</sample-value>
</notation>
<associated-type name="result_type">
<get-member-type name="type">
<apply-template name="result_of">
<apply-function name="Fn">
<type name="A0,...An" />
</apply-function>
</apply-template>
</get-member-type>
<description>
<simpara>The result of calling the Polymorphic Function Object.</simpara>
</description>
</associated-type>
<valid-expression name="Function Call">
<apply-function name="fn">
<sample-value>
<type name="A0,...An" />
</sample-value>
</apply-function>
<return-type>
<require-same-type testable="yes">
<type name="result_type"/>
</require-same-type>
</return-type>
<semantics>Calls the function object.</semantics>
</valid-expression>
<example-model>
<type name="std::plus&lt;int&gt;" />
</example-model>
</concept>