mirror of
https://github.com/boostorg/functional.git
synced 2025-08-02 22:14:28 +02:00
@@ -107,7 +107,7 @@ interfaces.
|
||||
|
||||
// [...]
|
||||
|
||||
std::auto_ptr<an_abstract_factory> x = factories[some_name]->create();
|
||||
std::auto_ptr<an_abstract_class> x(factories.at(some_name).create());
|
||||
|
||||
// [...]
|
||||
}
|
||||
|
@@ -1,10 +1,10 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
|
||||
<title>Chapter<EFBFBD>1.<2E>Boost.Functional/Factory 1.0</title>
|
||||
<link rel="stylesheet" href="boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
|
||||
<link rel="start" href="index.html" title="Chapter<EFBFBD>1.<2E>Boost.Functional/Factory 1.0">
|
||||
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
|
||||
<title>Chapter 1. Boost.Functional/Factory 1.0</title>
|
||||
<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
|
||||
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
|
||||
<link rel="home" href="index.html" title="Chapter 1. Boost.Functional/Factory 1.0">
|
||||
</head>
|
||||
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
||||
<table cellpadding="2" width="100%"><tr>
|
||||
@@ -17,16 +17,16 @@
|
||||
</tr></table>
|
||||
<hr>
|
||||
<div class="spirit-nav"></div>
|
||||
<div class="chapter" lang="en">
|
||||
<div class="chapter">
|
||||
<div class="titlepage"><div>
|
||||
<div><h2 class="title">
|
||||
<a name="boost_functional_factory"></a>Chapter<EFBFBD>1.<2E>Boost.Functional/Factory 1.0</h2></div>
|
||||
<a name="boost_functional_factory"></a>Chapter 1. Boost.Functional/Factory 1.0</h2></div>
|
||||
<div><div class="author"><h3 class="author">
|
||||
<span class="firstname">Tobias</span> <span class="surname">Schwinger</span>
|
||||
</h3></div></div>
|
||||
<div><p class="copyright">Copyright <EFBFBD> 2007, 2008 Tobias Schwinger</p></div>
|
||||
<div><p class="copyright">Copyright © 2007, 2008 Tobias Schwinger</p></div>
|
||||
<div><div class="legalnotice">
|
||||
<a name="id934161"></a><p>
|
||||
<a name="id2865350"></a><p>
|
||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||
</p>
|
||||
@@ -37,14 +37,15 @@
|
||||
<dl>
|
||||
<dt><span class="section"><a href="index.html#boost_functional_factory.brief_description">Brief Description</a></span></dt>
|
||||
<dt><span class="section"><a href="index.html#boost_functional_factory.background">Background</a></span></dt>
|
||||
<dt><span class="section"><a href="index.html#boost_functional_factory.reference"> Reference</a></span></dt>
|
||||
<dt><span class="section"><a href="index.html#boost_functional_factory.reference">Reference</a></span></dt>
|
||||
<dt><span class="section"><a href="index.html#boost_functional_factory.acknowledgements">Acknowledgements</a></span></dt>
|
||||
<dt><span class="section"><a href="index.html#boost_functional_factory.references">References</a></span></dt>
|
||||
</dl>
|
||||
</div>
|
||||
<div class="section" lang="en">
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
|
||||
<a name="boost_functional_factory.brief_description"></a><a href="index.html#boost_functional_factory.brief_description" title="Brief Description">Brief Description</a></h2></div></div></div>
|
||||
<a name="boost_functional_factory.brief_description"></a><a class="link" href="index.html#boost_functional_factory.brief_description" title="Brief Description">Brief Description</a>
|
||||
</h2></div></div></div>
|
||||
<p>
|
||||
The template <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">factory</span></code> lets you encapsulate a <code class="computeroutput"><span class="keyword">new</span></code> expression as a function object, <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">value_factory</span></code>
|
||||
encapsulates a constructor invocation without <code class="computeroutput"><span class="keyword">new</span></code>.
|
||||
@@ -61,9 +62,10 @@
|
||||
or <a href="http://www.boost.org/libs/bind/bind.html" target="_top"><code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">bind</span></code></a>.
|
||||
</p>
|
||||
</div>
|
||||
<div class="section" lang="en">
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
|
||||
<a name="boost_functional_factory.background"></a><a href="index.html#boost_functional_factory.background" title="Background">Background</a></h2></div></div></div>
|
||||
<a name="boost_functional_factory.background"></a><a class="link" href="index.html#boost_functional_factory.background" title="Background">Background</a>
|
||||
</h2></div></div></div>
|
||||
<p>
|
||||
In traditional Object Oriented Programming a Factory is an object implementing
|
||||
an interface of one or more methods that construct objects conforming to known
|
||||
@@ -112,7 +114,7 @@
|
||||
|
||||
<span class="comment">// [...]
|
||||
</span>
|
||||
<span class="identifier">std</span><span class="special">::</span><span class="identifier">auto_ptr</span><span class="special"><</span><span class="identifier">an_abstract_factory</span><span class="special">></span> <span class="identifier">x</span> <span class="special">=</span> <span class="identifier">factories</span><span class="special">[</span><span class="identifier">some_name</span><span class="special">]-></span><span class="identifier">create</span><span class="special">();</span>
|
||||
<span class="identifier">std</span><span class="special">::</span><span class="identifier">auto_ptr</span><span class="special"><</span><span class="identifier">an_abstract_class</span><span class="special">></span> <span class="identifier">x</span><span class="special">(</span><span class="identifier">factories</span><span class="special">.</span><span class="identifier">at</span><span class="special">(</span><span class="identifier">some_name</span><span class="special">).</span><span class="identifier">create</span><span class="special">());</span>
|
||||
|
||||
<span class="comment">// [...]
|
||||
</span><span class="special">}</span>
|
||||
@@ -130,7 +132,7 @@
|
||||
<span class="identifier">objects</span><span class="special">,</span>
|
||||
<span class="identifier">o</span> <span class="identifier">we</span> <span class="identifier">might</span> <span class="keyword">not</span> <span class="identifier">necessarily</span> <span class="identifier">need</span> <span class="identifier">a</span> <span class="identifier">polymorphic</span> <span class="identifier">base</span> <span class="keyword">class</span> <span class="keyword">for</span> <span class="identifier">the</span> <span class="identifier">objects</span><span class="special">,</span>
|
||||
<span class="identifier">o</span> <span class="identifier">as</span> <span class="identifier">we</span> <span class="identifier">will</span> <span class="identifier">see</span><span class="special">,</span> <span class="identifier">we</span> <span class="keyword">do</span> <span class="keyword">not</span> <span class="identifier">need</span> <span class="identifier">a</span> <span class="identifier">factory</span> <span class="identifier">base</span> <span class="keyword">class</span> <span class="identifier">at</span> <span class="identifier">all</span><span class="special">,</span>
|
||||
<span class="identifier">o</span> <span class="identifier">we</span> <span class="identifier">might</span> <span class="identifier">want</span> <span class="identifier">to</span> <span class="identifier">just</span> <span class="identifier">call</span> <span class="identifier">the</span> <span class="identifier">constructor</span> <span class="special">-</span> <span class="identifier">without</span> #<span class="keyword">new</span># <span class="identifier">to</span> <span class="identifier">create</span>
|
||||
<span class="identifier">o</span> <span class="identifier">we</span> <span class="identifier">might</span> <span class="identifier">want</span> <span class="identifier">to</span> <span class="identifier">just</span> <span class="identifier">call</span> <span class="identifier">the</span> <span class="identifier">constructor</span> <span class="special">-</span> <span class="identifier">without</span> <span class="error">`</span><span class="keyword">new</span><span class="error">`</span> <span class="identifier">to</span> <span class="identifier">create</span>
|
||||
<span class="identifier">an</span> <span class="identifier">object</span> <span class="identifier">on</span> <span class="identifier">the</span> <span class="identifier">stack</span><span class="special">,</span> <span class="keyword">and</span>
|
||||
<span class="identifier">o</span> <span class="identifier">finally</span> <span class="identifier">we</span> <span class="identifier">might</span> <span class="identifier">want</span> <span class="identifier">to</span> <span class="identifier">use</span> <span class="identifier">customized</span> <span class="identifier">memory</span> <span class="identifier">management</span><span class="special">.</span>
|
||||
</pre>
|
||||
@@ -246,33 +248,35 @@
|
||||
<a href="http://www.boost.org/libs/smart_ptr/index.html" target="_top">Smart Pointers</a>.
|
||||
</p>
|
||||
</div>
|
||||
<div class="section" lang="en">
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
|
||||
<a name="boost_functional_factory.reference"></a><a href="index.html#boost_functional_factory.reference" title=" Reference"> Reference</a></h2></div></div></div>
|
||||
<a name="boost_functional_factory.reference"></a><a class="link" href="index.html#boost_functional_factory.reference" title="Reference">Reference</a>
|
||||
</h2></div></div></div>
|
||||
<div class="toc"><dl>
|
||||
<dt><span class="section"><a href="index.html#boost_functional_factory.reference.value_factory">value_factory</a></span></dt>
|
||||
<dt><span class="section"><a href="index.html#boost_functional_factory.reference.factory">factory</a></span></dt>
|
||||
</dl></div>
|
||||
<div class="section" lang="en">
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h3 class="title">
|
||||
<a name="boost_functional_factory.reference.value_factory"></a><a href="index.html#boost_functional_factory.reference.value_factory" title="value_factory">value_factory</a></h3></div></div></div>
|
||||
<a name="boost_functional_factory.reference.value_factory.description"></a><h4>
|
||||
<a name="id936876"></a>
|
||||
<a href="index.html#boost_functional_factory.reference.value_factory.description">Description</a>
|
||||
</h4>
|
||||
<a name="boost_functional_factory.reference.value_factory"></a><a class="link" href="index.html#boost_functional_factory.reference.value_factory" title="value_factory">value_factory</a>
|
||||
</h3></div></div></div>
|
||||
<a name="boost_functional_factory.reference.value_factory.description"></a><h5>
|
||||
<a name="boost_functional_factory.reference.value_factory.description-heading"></a>
|
||||
<a class="link" href="index.html#boost_functional_factory.reference.value_factory.description">Description</a>
|
||||
</h5>
|
||||
<p>
|
||||
Function object template that invokes the constructor of the type <code class="computeroutput"><span class="identifier">T</span></code>.
|
||||
</p>
|
||||
<a name="boost_functional_factory.reference.value_factory.header"></a><h4>
|
||||
<a name="id936914"></a>
|
||||
<a href="index.html#boost_functional_factory.reference.value_factory.header">Header</a>
|
||||
</h4>
|
||||
<a name="boost_functional_factory.reference.value_factory.header"></a><h5>
|
||||
<a name="boost_functional_factory.reference.value_factory.header-heading"></a>
|
||||
<a class="link" href="index.html#boost_functional_factory.reference.value_factory.header">Header</a>
|
||||
</h5>
|
||||
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">functional</span><span class="special">/</span><span class="identifier">value_factory</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
|
||||
</pre>
|
||||
<a name="boost_functional_factory.reference.value_factory.synopsis"></a><h4>
|
||||
<a name="id936989"></a>
|
||||
<a href="index.html#boost_functional_factory.reference.value_factory.synopsis">Synopsis</a>
|
||||
</h4>
|
||||
<a name="boost_functional_factory.reference.value_factory.synopsis"></a><h5>
|
||||
<a name="boost_functional_factory.reference.value_factory.synopsis-heading"></a>
|
||||
<a class="link" href="index.html#boost_functional_factory.reference.value_factory.synopsis">Synopsis</a>
|
||||
</h5>
|
||||
<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span>
|
||||
<span class="special">{</span>
|
||||
<span class="keyword">template</span><span class="special"><</span> <span class="keyword">typename</span> <span class="identifier">T</span> <span class="special">></span>
|
||||
@@ -300,11 +304,11 @@
|
||||
</p></dd>
|
||||
</dl>
|
||||
</div>
|
||||
<a name="boost_functional_factory.reference.value_factory.expression_semantics"></a><h4>
|
||||
<a name="id937226"></a>
|
||||
<a href="index.html#boost_functional_factory.reference.value_factory.expression_semantics">Expression
|
||||
<a name="boost_functional_factory.reference.value_factory.expression_semantics"></a><h5>
|
||||
<a name="boost_functional_factory.reference.value_factory.expression_semantics-heading"></a>
|
||||
<a class="link" href="index.html#boost_functional_factory.reference.value_factory.expression_semantics">Expression
|
||||
Semantics</a>
|
||||
</h4>
|
||||
</h5>
|
||||
<div class="informaltable"><table class="table">
|
||||
<colgroup>
|
||||
<col>
|
||||
@@ -373,22 +377,23 @@
|
||||
</tr>
|
||||
</tbody>
|
||||
</table></div>
|
||||
<a name="boost_functional_factory.reference.value_factory.limits"></a><h4>
|
||||
<a name="id937498"></a>
|
||||
<a href="index.html#boost_functional_factory.reference.value_factory.limits">Limits</a>
|
||||
</h4>
|
||||
<a name="boost_functional_factory.reference.value_factory.limits"></a><h5>
|
||||
<a name="boost_functional_factory.reference.value_factory.limits-heading"></a>
|
||||
<a class="link" href="index.html#boost_functional_factory.reference.value_factory.limits">Limits</a>
|
||||
</h5>
|
||||
<p>
|
||||
The macro BOOST_FUNCTIONAL_VALUE_FACTORY_MAX_ARITY can be defined to set
|
||||
the maximum arity. It defaults to 10.
|
||||
</p>
|
||||
</div>
|
||||
<div class="section" lang="en">
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h3 class="title">
|
||||
<a name="boost_functional_factory.reference.factory"></a><a href="index.html#boost_functional_factory.reference.factory" title="factory">factory</a></h3></div></div></div>
|
||||
<a name="boost_functional_factory.reference.factory.description"></a><h4>
|
||||
<a name="id937545"></a>
|
||||
<a href="index.html#boost_functional_factory.reference.factory.description">Description</a>
|
||||
</h4>
|
||||
<a name="boost_functional_factory.reference.factory"></a><a class="link" href="index.html#boost_functional_factory.reference.factory" title="factory">factory</a>
|
||||
</h3></div></div></div>
|
||||
<a name="boost_functional_factory.reference.factory.description"></a><h5>
|
||||
<a name="boost_functional_factory.reference.factory.description-heading"></a>
|
||||
<a class="link" href="index.html#boost_functional_factory.reference.factory.description">Description</a>
|
||||
</h5>
|
||||
<p>
|
||||
Function object template that dynamically constructs a pointee object for
|
||||
the type of pointer given as template argument. Smart pointers may be used
|
||||
@@ -396,12 +401,12 @@
|
||||
yields the pointee type.
|
||||
</p>
|
||||
<p>
|
||||
If an <span class="underline">_allocator</span>_ is given, it is used
|
||||
If an <span class="underline">_allocator_</span> is given, it is used
|
||||
for memory allocation and the placement form of the <code class="computeroutput"><span class="keyword">new</span></code>
|
||||
operator is used to construct the object. A function object that calls the
|
||||
destructor and deallocates the memory with a copy of the Allocator is used
|
||||
for the second constructor argument of <code class="computeroutput"><span class="identifier">Pointer</span></code>
|
||||
(thus it must be a __smart<span class="underline">pointer</span>_
|
||||
(thus it must be a <span class="underline">_smart_pointer_</span>
|
||||
that provides a suitable constructor, such as <a href="http://www.boost.org/libs/smart_ptr/shared_ptr.htm" target="_top"><code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">shared_ptr</span></code></a>).
|
||||
</p>
|
||||
<p>
|
||||
@@ -409,16 +414,16 @@
|
||||
the allocator itself is used for the third constructor argument of <code class="computeroutput"><span class="identifier">Pointer</span></code> (<a href="http://www.boost.org/libs/smart_ptr/shared_ptr.htm" target="_top"><code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">shared_ptr</span></code></a> then uses the allocator
|
||||
to manage the memory of its seperately allocated reference counter).
|
||||
</p>
|
||||
<a name="boost_functional_factory.reference.factory.header"></a><h4>
|
||||
<a name="id937729"></a>
|
||||
<a href="index.html#boost_functional_factory.reference.factory.header">Header</a>
|
||||
</h4>
|
||||
<a name="boost_functional_factory.reference.factory.header"></a><h5>
|
||||
<a name="boost_functional_factory.reference.factory.header-heading"></a>
|
||||
<a class="link" href="index.html#boost_functional_factory.reference.factory.header">Header</a>
|
||||
</h5>
|
||||
<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">functional</span><span class="special">/</span><span class="identifier">factory</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
|
||||
</pre>
|
||||
<a name="boost_functional_factory.reference.factory.synopsis"></a><h4>
|
||||
<a name="id937804"></a>
|
||||
<a href="index.html#boost_functional_factory.reference.factory.synopsis">Synopsis</a>
|
||||
</h4>
|
||||
<a name="boost_functional_factory.reference.factory.synopsis"></a><h5>
|
||||
<a name="boost_functional_factory.reference.factory.synopsis-heading"></a>
|
||||
<a class="link" href="index.html#boost_functional_factory.reference.factory.synopsis">Synopsis</a>
|
||||
</h5>
|
||||
<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost</span>
|
||||
<span class="special">{</span>
|
||||
<span class="keyword">enum</span> <span class="identifier">factory_alloc_propagation</span>
|
||||
@@ -459,11 +464,11 @@
|
||||
</p></dd>
|
||||
</dl>
|
||||
</div>
|
||||
<a name="boost_functional_factory.reference.factory.expression_semantics"></a><h4>
|
||||
<a name="id938169"></a>
|
||||
<a href="index.html#boost_functional_factory.reference.factory.expression_semantics">Expression
|
||||
<a name="boost_functional_factory.reference.factory.expression_semantics"></a><h5>
|
||||
<a name="boost_functional_factory.reference.factory.expression_semantics-heading"></a>
|
||||
<a class="link" href="index.html#boost_functional_factory.reference.factory.expression_semantics">Expression
|
||||
Semantics</a>
|
||||
</h4>
|
||||
</h5>
|
||||
<div class="informaltable"><table class="table">
|
||||
<colgroup>
|
||||
<col>
|
||||
@@ -535,19 +540,20 @@
|
||||
</tr>
|
||||
</tbody>
|
||||
</table></div>
|
||||
<a name="boost_functional_factory.reference.factory.limits"></a><h4>
|
||||
<a name="id938440"></a>
|
||||
<a href="index.html#boost_functional_factory.reference.factory.limits">Limits</a>
|
||||
</h4>
|
||||
<a name="boost_functional_factory.reference.factory.limits"></a><h5>
|
||||
<a name="boost_functional_factory.reference.factory.limits-heading"></a>
|
||||
<a class="link" href="index.html#boost_functional_factory.reference.factory.limits">Limits</a>
|
||||
</h5>
|
||||
<p>
|
||||
The macro BOOST_FUNCTIONAL_FACTORY_MAX_ARITY can be defined to set the maximum
|
||||
arity. It defaults to 10.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="section" lang="en">
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
|
||||
<a name="boost_functional_factory.acknowledgements"></a><a href="index.html#boost_functional_factory.acknowledgements" title="Acknowledgements">Acknowledgements</a></h2></div></div></div>
|
||||
<a name="boost_functional_factory.acknowledgements"></a><a class="link" href="index.html#boost_functional_factory.acknowledgements" title="Acknowledgements">Acknowledgements</a>
|
||||
</h2></div></div></div>
|
||||
<p>
|
||||
Eric Niebler requested a function to invoke a type's constructor (with the
|
||||
arguments supplied as a Tuple) as a Fusion feature. These Factory utilities
|
||||
@@ -565,24 +571,25 @@
|
||||
and their evolution.
|
||||
</p>
|
||||
</div>
|
||||
<div class="section" lang="en">
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
|
||||
<a name="boost_functional_factory.references"></a><a href="index.html#boost_functional_factory.references" title="References">References</a></h2></div></div></div>
|
||||
<div class="orderedlist"><ol type="1">
|
||||
<li>
|
||||
<a href="http://en.wikipedia.org/wiki/Design_Patterns" target="_top">Design Patterns</a>,
|
||||
<a name="boost_functional_factory.references"></a><a class="link" href="index.html#boost_functional_factory.references" title="References">References</a>
|
||||
</h2></div></div></div>
|
||||
<div class="orderedlist"><ol class="orderedlist" type="1">
|
||||
<li class="listitem">
|
||||
<a href="http://en.wikipedia.org/wiki/Design_Patterns" target="_top">Design Patterns</a>,
|
||||
Gamma et al. - Addison Wesley Publishing, 1995
|
||||
</li>
|
||||
<li>
|
||||
<a href="http://www.sgi.com/tech/stl/" target="_top">Standard Template Library Programmer's
|
||||
<li class="listitem">
|
||||
<a href="http://www.sgi.com/tech/stl/" target="_top">Standard Template Library Programmer's
|
||||
Guide</a>, Hewlett-Packard Company, 1994
|
||||
</li>
|
||||
<li>
|
||||
<a href="http://www.boost.org/libs/bind/bind.html" target="_top">Boost.Bind</a>,
|
||||
<li class="listitem">
|
||||
<a href="http://www.boost.org/libs/bind/bind.html" target="_top">Boost.Bind</a>,
|
||||
Peter Dimov, 2001-2005
|
||||
</li>
|
||||
<li>
|
||||
<a href="http://www.boost.org/doc/html/function.html" target="_top">Boost.Function</a>,
|
||||
<li class="listitem">
|
||||
<a href="http://www.boost.org/doc/html/function.html" target="_top">Boost.Function</a>,
|
||||
Douglas Gregor, 2001-2004
|
||||
</li>
|
||||
</ol></div>
|
||||
|
Reference in New Issue
Block a user