|
Boost-Commit : |
Subject: [Boost-commit] svn:boost r84558 - in trunk/libs/functional: factory/doc/html forward/doc/html
From: dnljms_at_[hidden]
Date: 2013-05-30 13:54:42
Author: danieljames
Date: 2013-05-30 13:54:40 EDT (Thu, 30 May 2013)
New Revision: 84558
URL: http://svn.boost.org/trac/boost/changeset/84558
Log:
Remove generated documentation from forward and factory.
Will add to the build.
Removed:
trunk/libs/functional/factory/doc/html/boostbook.css
trunk/libs/functional/forward/doc/html/boostbook.css
Text files modified:
trunk/libs/functional/factory/doc/html/index.html | 630 ---------------------------------------
trunk/libs/functional/forward/doc/html/index.html | 574 -----------------------------------
2 files changed, 26 insertions(+), 1178 deletions(-)
Deleted: trunk/libs/functional/factory/doc/html/boostbook.css
==============================================================================
--- trunk/libs/functional/factory/doc/html/boostbook.css 2013-05-30 13:54:40 EDT (Thu, 30 May 2013)
+++ (empty file)
@@ -1,528 +0,0 @@
-/*=============================================================================
- Copyright (c) 2004 Joel de Guzman
- http://spirit.sourceforge.net/
-
- Use, modification and distribution is subject to 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)
-=============================================================================*/
-
-/*=============================================================================
- Body defaults
-=============================================================================*/
-
- body
- {
- margin: 1em;
- font-family: sans-serif;
- }
-
-/*=============================================================================
- Paragraphs
-=============================================================================*/
-
- p
- {
- text-align: left;
- font-size: 10pt;
- line-height: 1.15;
- }
-
-/*=============================================================================
- Program listings
-=============================================================================*/
-
- /* Code on paragraphs */
- p tt.computeroutput
- {
- font-size: 9pt;
- }
-
- pre.synopsis
- {
- font-size: 90%;
- margin: 1pc 4% 0pc 4%;
- padding: 0.5pc 0.5pc 0.5pc 0.5pc;
- }
-
- .programlisting,
- .screen
- {
- font-size: 9pt;
- display: block;
- margin: 1pc 4% 0pc 4%;
- padding: 0.5pc 0.5pc 0.5pc 0.5pc;
- }
-
- /* Program listings in tables don't get borders */
- td .programlisting,
- td .screen
- {
- margin: 0pc 0pc 0pc 0pc;
- padding: 0pc 0pc 0pc 0pc;
- }
-
-/*=============================================================================
- Headings
-=============================================================================*/
-
- h1, h2, h3, h4, h5, h6
- {
- text-align: left;
- margin: 1em 0em 0.5em 0em;
- font-weight: bold;
- }
-
- h1 { font: 140% }
- h2 { font: bold 140% }
- h3 { font: bold 130% }
- h4 { font: bold 120% }
- h5 { font: italic 110% }
- h6 { font: italic 100% }
-
- /* Top page titles */
- title,
- h1.title,
- h2.title
- h3.title,
- h4.title,
- h5.title,
- h6.title,
- .refentrytitle
- {
- font-weight: bold;
- margin-bottom: 1pc;
- }
-
- h1.title { font-size: 140% }
- h2.title { font-size: 140% }
- h3.title { font-size: 130% }
- h4.title { font-size: 120% }
- h5.title { font-size: 110% }
- h6.title { font-size: 100% }
-
- .section h1
- {
- margin: 0em 0em 0.5em 0em;
- font-size: 140%;
- }
-
- .section h2 { font-size: 140% }
- .section h3 { font-size: 130% }
- .section h4 { font-size: 120% }
- .section h5 { font-size: 110% }
- .section h6 { font-size: 100% }
-
- /* Code on titles */
- h1 tt.computeroutput { font-size: 140% }
- h2 tt.computeroutput { font-size: 140% }
- h3 tt.computeroutput { font-size: 130% }
- h4 tt.computeroutput { font-size: 120% }
- h5 tt.computeroutput { font-size: 110% }
- h6 tt.computeroutput { font-size: 100% }
-
-/*=============================================================================
- Author
-=============================================================================*/
-
- h3.author
- {
- font-size: 100%
- }
-
-/*=============================================================================
- Lists
-=============================================================================*/
-
- li
- {
- font-size: 10pt;
- line-height: 1.3;
- }
-
- /* Unordered lists */
- ul
- {
- text-align: left;
- }
-
- /* Ordered lists */
- ol
- {
- text-align: left;
- }
-
-/*=============================================================================
- Links
-=============================================================================*/
-
- a
- {
- text-decoration: none; /* no underline */
- }
-
- a:hover
- {
- text-decoration: underline;
- }
-
-/*=============================================================================
- Spirit style navigation
-=============================================================================*/
-
- .spirit-nav
- {
- text-align: right;
- }
-
- .spirit-nav a
- {
- color: white;
- padding-left: 0.5em;
- }
-
- .spirit-nav img
- {
- border-width: 0px;
- }
-
-/*=============================================================================
- Table of contents
-=============================================================================*/
-
- .toc
- {
- margin: 1pc 4% 0pc 4%;
- padding: 0.1pc 1pc 0.1pc 1pc;
- font-size: 80%;
- line-height: 1.15;
- }
-
- .boost-toc
- {
- float: right;
- padding: 0.5pc;
- }
-
-/*=============================================================================
- Tables
-=============================================================================*/
-
- .table-title,
- div.table p.title
- {
- margin-left: 4%;
- padding-right: 0.5em;
- padding-left: 0.5em;
- }
-
- .informaltable table,
- .table table
- {
- width: 92%;
- margin-left: 4%;
- margin-right: 4%;
- }
-
- div.informaltable table,
- div.table table
- {
- padding: 4px;
- }
-
- /* Table Cells */
- div.informaltable table tr td,
- div.table table tr td
- {
- padding: 0.5em;
- text-align: left;
- font-size: 9pt;
- }
-
- div.informaltable table tr th,
- div.table table tr th
- {
- padding: 0.5em 0.5em 0.5em 0.5em;
- border: 1pt solid white;
- font-size: 80%;
- }
-
-/*=============================================================================
- Blurbs
-=============================================================================*/
-
- div.note,
- div.tip,
- div.important,
- div.caution,
- div.warning,
- div.sidebar
- {
- font-size: 9pt; /* A little bit smaller than the main text */
- line-height: 1.2;
- display: block;
- margin: 1pc 4% 0pc 4%;
- padding: 0.5pc 0.5pc 0.0pc 0.5pc;
- }
-
- div.sidebar img
- {
- padding: 1pt;
- }
-
-/*=============================================================================
- Callouts
-=============================================================================*/
- .line_callout_bug img
- {
- float: left;
- position:relative;
- left: 4px;
- top: -12px;
- clear: left;
- margin-left:-22px;
- }
-
- .callout_bug img
- {
- }
-
-/*=============================================================================
- Variable Lists
-=============================================================================*/
-
- /* Make the terms in definition lists bold */
- div.variablelist dl dt,
- span.term
- {
- font-weight: bold;
- font-size: 10pt;
- }
-
- div.variablelist table tbody tr td
- {
- text-align: left;
- vertical-align: top;
- padding: 0em 2em 0em 0em;
- font-size: 10pt;
- margin: 0em 0em 0.5em 0em;
- line-height: 1;
- }
-
- div.variablelist dl dt
- {
- margin-bottom: 0.2em;
- }
-
- div.variablelist dl dd
- {
- margin: 0em 0em 0.5em 2em;
- font-size: 10pt;
- }
-
- div.variablelist table tbody tr td p,
- div.variablelist dl dd p
- {
- margin: 0em 0em 0.5em 0em;
- line-height: 1;
- }
-
-/*=============================================================================
- Misc
-=============================================================================*/
-
- /* Title of books and articles in bibliographies */
- span.title
- {
- font-style: italic;
- }
-
- span.underline
- {
- text-decoration: underline;
- }
-
- span.strikethrough
- {
- text-decoration: line-through;
- }
-
- /* Copyright, Legal Notice */
- div div.legalnotice p
- {
- text-align: left
- }
-
-/*=============================================================================
- Colors
-=============================================================================*/
-
- @media screen
- {
- /* Links */
- a
- {
- color: #005a9c;
- }
-
- a:visited
- {
- color: #9c5a9c;
- }
-
- h1 a, h2 a, h3 a, h4 a, h5 a, h6 a,
- h1 a:hover, h2 a:hover, h3 a:hover, h4 a:hover, h5 a:hover, h6 a:hover,
- h1 a:visited, h2 a:visited, h3 a:visited, h4 a:visited, h5 a:visited, h6 a:visited
- {
- text-decoration: none; /* no underline */
- color: #000000;
- }
-
- /* Syntax Highlighting */
- .keyword { color: #0000AA; }
- .identifier { color: #000000; }
- .special { color: #707070; }
- .preprocessor { color: #402080; }
- .char { color: teal; }
- .comment { color: #800000; }
- .string { color: teal; }
- .number { color: teal; }
- .white_bkd { background-color: #FFFFFF; }
- .dk_grey_bkd { background-color: #999999; }
-
- /* Copyright, Legal Notice */
- .copyright
- {
- color: #666666;
- font-size: small;
- }
-
- div div.legalnotice p
- {
- color: #666666;
- }
-
- /* Program listing */
- pre.synopsis
- {
- border: 1px solid #DCDCDC;
- }
-
- .programlisting,
- .screen
- {
- border: 1px solid #DCDCDC;
- }
-
- td .programlisting,
- td .screen
- {
- border: 0px solid #DCDCDC;
- }
-
- /* Blurbs */
- div.note,
- div.tip,
- div.important,
- div.caution,
- div.warning,
- div.sidebar
- {
- border: 1px solid #DCDCDC;
- }
-
- /* Table of contents */
- .toc
- {
- border: 1px solid #DCDCDC;
- }
-
- /* Tables */
- div.informaltable table tr td,
- div.table table tr td
- {
- border: 1px solid #DCDCDC;
- }
-
- div.informaltable table tr th,
- div.table table tr th
- {
- background-color: #F0F0F0;
- border: 1px solid #DCDCDC;
- }
-
- /* Misc */
- span.highlight
- {
- color: #00A000;
- }
- }
-
- @media print
- {
- /* Links */
- a
- {
- color: black;
- }
-
- a:visited
- {
- color: black;
- }
-
- .spirit-nav
- {
- display: none;
- }
-
- /* Program listing */
- pre.synopsis
- {
- border: 1px solid gray;
- }
-
- .programlisting,
- .screen
- {
- border: 1px solid gray;
- }
-
- td .programlisting,
- td .screen
- {
- border: 0px solid #DCDCDC;
- }
-
- /* Table of contents */
- .toc
- {
- border: 1px solid gray;
- }
-
- .informaltable table,
- .table table
- {
- border: 1px solid gray;
- border-collapse: collapse;
- }
-
- /* Tables */
- div.informaltable table tr td,
- div.table table tr td
- {
- border: 1px solid gray;
- }
-
- div.informaltable table tr th,
- div.table table tr th
- {
- border: 1px solid gray;
- }
-
- /* Misc */
- span.highlight
- {
- font-weight: bold;
- }
- }
Modified: trunk/libs/functional/factory/doc/html/index.html
==============================================================================
--- trunk/libs/functional/factory/doc/html/index.html (original)
+++ trunk/libs/functional/factory/doc/html/index.html 2013-05-30 13:54:40 EDT (Thu, 30 May 2013)
@@ -1,620 +1,16 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
-<head>
-<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>
-<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
-<td align="center">Home</td>
-<td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
-<td align="center">More</td>
-</tr></table>
-<hr>
-<div class="spirit-nav"></div>
-<div class="chapter">
-<div class="titlepage"><div>
-<div><h2 class="title">
-<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 © 2007, 2008 Tobias Schwinger</p></div>
-<div><div class="legalnotice">
-<a name="id3353252"></a><p>
- 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)
- </p>
-</div></div>
-</div></div>
-<div class="toc">
-<p><b>Table of Contents</b></p>
-<dl>
-<dt><span class="section">Brief Description</span></dt>
-<dt><span class="section">Background</span></dt>
-<dt><span class="section">Reference</span></dt>
-<dt><span class="section">Acknowledgements</span></dt>
-<dt><span class="section">References</span></dt>
-</dl>
-</div>
-<div class="section">
-<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<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>.
- </p>
-<pre class="programlisting"><code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">factory</span></code><span class="special"><</span><span class="identifier">T</span><span class="special">*>()(</span><span class="identifier">arg1</span><span class="special">,</span><span class="identifier">arg2</span><span class="special">,</span><span class="identifier">arg3</span><span class="special">)</span>
-<span class="comment">// same as new T(arg1,arg2,arg3)
-</span>
-<code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">value_factory</span></code><span class="special"><</span><span class="identifier">T</span><span class="special">>()(</span><span class="identifier">arg1</span><span class="special">,</span><span class="identifier">arg2</span><span class="special">,</span><span class="identifier">arg3</span><span class="special">)</span>
-<span class="comment">// same as T(arg1,arg2,arg3)
-</span></pre>
-<p>
- For technical reasons the arguments to the function objects have to be LValues.
- A factory that also accepts RValues can be composed using the boost::forward_adapter
- or boost::bind
.
- </p>
-</div>
-<div class="section">
-<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<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
- interfaces.
- </p>
-<pre class="programlisting"><span class="comment">// assuming a_concrete_class and another_concrete_class are derived
-</span><span class="comment">// from an_abstract_class
-</span>
-<span class="keyword">class</span> <span class="identifier">a_factory</span>
-<span class="special">{</span>
- <span class="keyword">public</span><span class="special">:</span>
- <span class="keyword">virtual</span> <span class="identifier">an_abstract_class</span><span class="special">*</span> <span class="identifier">create</span><span class="special">()</span> <span class="keyword">const</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span>
- <span class="keyword">virtual</span> <span class="special">~</span><span class="identifier">a_factory</span><span class="special">()</span> <span class="special">{</span> <span class="special">}</span>
-<span class="special">};</span>
+ <head>
+ <!-- Copyright (C) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
-<span class="keyword">class</span> <span class="identifier">a_concrete_factory</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">a_factory</span>
-<span class="special">{</span>
- <span class="keyword">public</span><span class="special">:</span>
- <span class="keyword">virtual</span> <span class="identifier">an_abstract_class</span><span class="special">*</span> <span class="identifier">create</span><span class="special">()</span> <span class="keyword">const</span>
- <span class="special">{</span>
- <span class="keyword">return</span> <span class="keyword">new</span> <span class="identifier">a_concrete_class</span><span class="special">();</span>
- <span class="special">}</span>
-<span class="special">};</span>
-
-<span class="keyword">class</span> <span class="identifier">another_concrete_factory</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">a_factory</span>
-<span class="special">{</span>
- <span class="keyword">public</span><span class="special">:</span>
- <span class="keyword">virtual</span> <span class="identifier">an_abstract_class</span><span class="special">*</span> <span class="identifier">create</span><span class="special">()</span> <span class="keyword">const</span>
- <span class="special">{</span>
- <span class="keyword">return</span> <span class="keyword">new</span> <span class="identifier">another_concrete_class</span><span class="special">();</span>
- <span class="special">}</span>
-<span class="special">};</span>
-
-<span class="comment">// [...]
-</span>
-<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
-<span class="special">{</span>
- boost::ptr_map
<span class="special"><</span>std::string
<span class="special">,</span><span class="identifier">a_factory</span><span class="special">></span> <span class="identifier">factories</span><span class="special">;</span>
-
- <span class="comment">// [...]
-</span>
- <span class="identifier">factories</span><span class="special">.</span><span class="identifier">insert</span><span class="special">(</span><span class="string">"a_name"</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">a_factory</span><span class="special">>(</span>
- <span class="keyword">new</span> <span class="identifier">a_concrete_factory</span><span class="special">));</span>
- <span class="identifier">factories</span><span class="special">.</span><span class="identifier">insert</span><span class="special">(</span><span class="string">"another_name"</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">a_factory</span><span class="special">>(</span>
- <span class="keyword">new</span> <span class="identifier">another_concrete_factory</span><span class="special">));</span>
-
- <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_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>
-</pre>
-<p>
- This approach has several drawbacks. The most obvious one is that there is
- lots of boilerplate code. In other words there is too much code to express
- a rather simple intention. We could use templates to get rid of some of it
- but the approach remains inflexible:
- </p>
-<div class="itemizedlist"><ul class="itemizedlist" type="disc">
-<li class="listitem">
- We may want a factory that takes some arguments that are forwarded to the
- constructor,
- </li>
-<li class="listitem">
- we will probably want to use smart pointers,
- </li>
-<li class="listitem">
- we may want several member functions to create different kinds of objects,
- </li>
-<li class="listitem">
- we might not necessarily need a polymorphic base class for the objects,
- </li>
-<li class="listitem">
- as we will see, we do not need a factory base class at all,
- </li>
-<li class="listitem">
- we might want to just call the constructor - without <code class="computeroutput"><span class="keyword">new</span></code>
- to create an object on the stack, and
- </li>
-<li class="listitem">
- finally we might want to use customized memory management.
- </li>
-</ul></div>
-<p>
- Experience has shown that using function objects and generic Boost components
- for their composition, Design Patterns that describe callback mechasisms (typically
- requiring a high percentage of boilerplate code with pure Object Oriented methodology)
- become implementable with just few code lines and without extra classes.
- </p>
-<p>
- Factories are callback mechanisms for constructors, so we provide two class
- templates, <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">value_factory</span></code> and <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">factory</span></code>,
- that encasulate object construction via direct application of the constructor
- and the <code class="computeroutput"><span class="keyword">new</span></code> operator, respectively.
- </p>
-<p>
- We let the function objects forward their arguments to the construction expressions
- they encapsulate. Overthis <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">factory</span></code>
- optionally allows the use of smart pointers and Allocators.
- </p>
-<p>
- Compile-time polymorphism can be used where appropriate,
- </p>
-<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span> <span class="keyword">class</span> <span class="identifier">T</span> <span class="special">></span>
-<span class="keyword">void</span> <span class="identifier">do_something</span><span class="special">()</span>
-<span class="special">{</span>
- <span class="comment">// [...]
-</span> <span class="identifier">T</span> <span class="identifier">x</span> <span class="special">=</span> <span class="identifier">T</span><span class="special">(</span><span class="identifier">a</span><span class="special">,</span><span class="identifier">b</span><span class="special">);</span>
-
- <span class="comment">// for conceptually similar objects x we neither need virtual
-</span> <span class="comment">// functions nor a common base class in this context.
-</span> <span class="comment">// [...]
-</span><span class="special">}</span>
-</pre>
-<p>
- Now, to allow inhomogenous signaturs for the constructors of the types passed
- in for <code class="computeroutput"><span class="identifier">T</span></code> we can use <code class="computeroutput"><span class="identifier">value_factory</span></code> and boost::bind
- to normalize between them.
- </p>
-<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span> <span class="keyword">class</span> <span class="identifier">ValueFactory</span> <span class="special">></span>
-<span class="keyword">void</span> <span class="identifier">do_something</span><span class="special">(</span><span class="identifier">ValueFactory</span> <span class="identifier">make_obj</span> <span class="special">=</span> <span class="identifier">ValueFactory</span><span class="special">())</span>
-<span class="special">{</span>
- <span class="comment">// [...]
-</span> <span class="keyword">typename</span> <span class="identifier">ValueFactory</span><span class="special">::</span><span class="identifier">result_type</span> <span class="identifier">x</span> <span class="special">=</span> <span class="identifier">make_obj</span><span class="special">(</span><span class="identifier">a</span><span class="special">,</span><span class="identifier">b</span><span class="special">);</span>
-
- <span class="comment">// for conceptually similar objects x we neither need virtual
-</span> <span class="comment">// functions nor a common base class in this context.
-</span> <span class="comment">// [...]
-</span><span class="special">}</span>
-
-<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
-<span class="special">{</span>
- <span class="comment">// [...]
-</span>
- <span class="identifier">do_something</span><span class="special">(</span><code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">value_factory</span></code><span class="special"><</span><span class="identifier">X</span><span class="special">>());</span>
- <span class="identifier">do_something</span><span class="special">(</span><span class="identifier">boost</span><span class="special">::</span><span class="identifier">bind</span><span class="special">(</span><code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">value_factory</span></code><span class="special"><</span><span class="identifier">Y</span><span class="special">>(),</span><span class="identifier">_1</span><span class="special">,</span><span class="number">5</span><span class="special">,</span><span class="identifier">_2</span><span class="special">));</span>
- <span class="comment">// construct X(a,b) and Y(a,5,b), respectively.
-</span>
- <span class="comment">// [...]
-</span><span class="special">}</span>
-</pre>
-<p>
- Maybe we want our objects to outlive the function's scope, in this case we
- have to use dynamic allocation;
- </p>
-<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span> <span class="keyword">class</span> <span class="identifier">Factory</span> <span class="special">></span>
-<span class="identifier">whatever</span> <span class="identifier">do_something</span><span class="special">(</span><span class="identifier">Factory</span> <span class="identifier">new_obj</span> <span class="special">=</span> <span class="identifier">Factory</span><span class="special">())</span>
-<span class="special">{</span>
- <span class="keyword">typename</span> <span class="identifier">Factory</span><span class="special">::</span><span class="identifier">result_type</span> <span class="identifier">ptr</span> <span class="special">=</span> <span class="identifier">new_obj</span><span class="special">(</span><span class="identifier">a</span><span class="special">,</span><span class="identifier">b</span><span class="special">);</span>
-
- <span class="comment">// again, no common base class or virtual functions needed,
-</span> <span class="comment">// we could enforce a polymorphic base by writing e.g.
-</span> <span class="comment">// boost::shared_ptr<base>
-</span> <span class="comment">// instead of
-</span> <span class="comment">// typename Factory::result_type
-</span> <span class="comment">// above.
-</span> <span class="comment">// Note that we are also free to have the type erasure happen
-</span> <span class="comment">// somewhere else (e.g. in the constructor of this function's
-</span> <span class="comment">// result type).
-</span>
- <span class="comment">// [...]
-</span><span class="special">}</span>
-
-<span class="comment">// [... call do_something like above but with __factory__ instead
-</span><span class="comment">// of __value_factory__]
-</span></pre>
-<p>
- Although we might have created polymorphic objects in the previous example,
- we have used compile time polymorphism for the factory. If we want to erase
- the type of the factory and thus allow polymorphism at run time, we can use
- Boost.Function
- to do so. The first example can be rewritten as follows.
- </p>
-<pre class="programlisting"><span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">function</span><span class="special"><</span> <span class="identifier">an_abstract_class</span><span class="special">*()</span> <span class="special">></span> <span class="identifier">a_factory</span><span class="special">;</span>
-
-<span class="comment">// [...]
-</span>
-<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span>
-<span class="special">{</span>
- std::map
<span class="special"><</span>std::string
<span class="special">,</span><span class="identifier">a_factory</span><span class="special">></span> <span class="identifier">factories</span><span class="special">;</span>
-
- <span class="comment">// [...]
-</span>
- <span class="identifier">factories</span><span class="special">[</span><span class="string">"a_name"</span><span class="special">]</span> <span class="special">=</span> <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">factory</span></code><span class="special"><</span><span class="identifier">a_concrete_class</span><span class="special">*>();</span>
- <span class="identifier">factories</span><span class="special">[</span><span class="string">"another_name"</span><span class="special">]</span> <span class="special">=</span>
- <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">factory</span></code><span class="special"><</span><span class="identifier">another_concrete_class</span><span class="special">*>();</span>
-
- <span class="comment">// [...]
-</span><span class="special">}</span>
-</pre>
-<p>
- Of course we can just as easy create factories that take arguments and/or return
- Smart Pointers.
- </p>
-</div>
-<div class="section">
-<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<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">value_factory</span></dt>
-<dt><span class="section">factory</span></dt>
-</dl></div>
-<div class="section">
-<div class="titlepage"><div><div><h3 class="title">
-<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><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><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>
- <span class="keyword">class</span> <span class="identifier">value_factory</span><span class="special">;</span>
-<span class="special">}</span>
-</pre>
-<div class="variablelist">
-<p class="title"><b>Notation</b></p>
-<dl>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">T</span></code></span></dt>
-<dd><p>
- an arbitrary type with at least one public constructor
- </p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">a0</span></code>...<code class="computeroutput"><span class="identifier">aN</span></code></span></dt>
-<dd><p>
- argument LValues to a constructor of <code class="computeroutput"><span class="identifier">T</span></code>
- </p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">F</span></code></span></dt>
-<dd><p>
- the type <code class="computeroutput"><span class="identifier">value_factory</span><span class="special"><</span><span class="identifier">F</span><span class="special">></span></code>
- </p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">f</span></code></span></dt>
-<dd><p>
- an instance object of <code class="computeroutput"><span class="identifier">F</span></code>
- </p></dd>
-</dl>
-</div>
-<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>
- </h5>
-<div class="informaltable"><table class="table">
-<colgroup>
-<col>
-<col>
-</colgroup>
-<thead><tr>
-<th>
- <p>
- Expression
- </p>
- </th>
-<th>
- <p>
- Semantics
- </p>
- </th>
-</tr></thead>
-<tbody>
-<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">F</span><span class="special">()</span></code>
- </p>
- </td>
-<td>
- <p>
- creates an object of type <code class="computeroutput"><span class="identifier">F</span></code>.
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">F</span><span class="special">(</span><span class="identifier">f</span><span class="special">)</span></code>
- </p>
- </td>
-<td>
- <p>
- creates an object of type <code class="computeroutput"><span class="identifier">F</span></code>.
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">f</span><span class="special">(</span><span class="identifier">a0</span></code>...<code class="computeroutput"><span class="identifier">aN</span><span class="special">)</span></code>
- </p>
- </td>
-<td>
- <p>
- returns <code class="computeroutput"><span class="identifier">T</span><span class="special">(</span><span class="identifier">a0</span></code>...<code class="computeroutput"><span class="identifier">aN</span><span class="special">)</span></code>.
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">F</span><span class="special">::</span><span class="identifier">result_type</span></code>
- </p>
- </td>
-<td>
- <p>
- is the type <code class="computeroutput"><span class="identifier">T</span></code>.
- </p>
- </td>
-</tr>
-</tbody>
-</table></div>
-<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">
-<div class="titlepage"><div><div><h3 class="title">
-<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
- for the template argument, given that <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">pointee</span><span class="special"><</span><span class="identifier">Pointer</span><span class="special">>::</span><span class="identifier">type</span></code>
- yields the pointee type.
- </p>
-<p>
- If an Allocator
- 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 Pointer
- that provides a suitable constructor, such as boost::shared_ptr
).
- </p>
-<p>
- If a third template argument is <code class="computeroutput"><span class="identifier">factory_passes_alloc_to_smart_pointer</span></code>,
- the allocator itself is used for the third constructor argument of <code class="computeroutput"><span class="identifier">Pointer</span></code> (boost::shared_ptr
then uses the allocator
- to manage the memory of its seperately allocated reference counter).
- </p>
-<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><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>
- <span class="special">{</span>
- <span class="identifier">factory_alloc_for_pointee_and_deleter</span><span class="special">,</span>
- <span class="identifier">factory_passes_alloc_to_smart_pointer</span>
- <span class="special">};</span>
-
- <span class="keyword">template</span><span class="special"><</span> <span class="keyword">typename</span> <span class="identifier">Pointer</span><span class="special">,</span>
- <span class="keyword">class</span> <span class="identifier">Allocator</span> <span class="special">=</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">none_t</span><span class="special">,</span>
- <span class="identifier">factory_alloc_propagation</span> <span class="identifier">AllocProp</span> <span class="special">=</span>
- <span class="identifier">factory_alloc_for_pointee_and_deleter</span> <span class="special">></span>
- <span class="keyword">class</span> <span class="identifier">factory</span><span class="special">;</span>
-<span class="special">}</span>
-</pre>
-<div class="variablelist">
-<p class="title"><b>Notation</b></p>
-<dl>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">T</span></code></span></dt>
-<dd><p>
- an arbitrary type with at least one public constructor
- </p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">P</span></code></span></dt>
-<dd><p>
- pointer or smart pointer to <code class="computeroutput"><span class="identifier">T</span></code>
- </p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">a0</span></code>...<code class="computeroutput"><span class="identifier">aN</span></code></span></dt>
-<dd><p>
- argument LValues to a constructor of <code class="computeroutput"><span class="identifier">T</span></code>
- </p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">F</span></code></span></dt>
-<dd><p>
- the type <code class="computeroutput"><span class="identifier">factory</span><span class="special"><</span><span class="identifier">P</span><span class="special">></span></code>
- </p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">f</span></code></span></dt>
-<dd><p>
- an instance object of <code class="computeroutput"><span class="identifier">F</span></code>
- </p></dd>
-</dl>
-</div>
-<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>
- </h5>
-<div class="informaltable"><table class="table">
-<colgroup>
-<col>
-<col>
-</colgroup>
-<thead><tr>
-<th>
- <p>
- Expression
- </p>
- </th>
-<th>
- <p>
- Semantics
- </p>
- </th>
-</tr></thead>
-<tbody>
-<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">F</span><span class="special">()</span></code>
- </p>
- </td>
-<td>
- <p>
- creates an object of type <code class="computeroutput"><span class="identifier">F</span></code>.
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">F</span><span class="special">(</span><span class="identifier">f</span><span class="special">)</span></code>
- </p>
- </td>
-<td>
- <p>
- creates an object of type <code class="computeroutput"><span class="identifier">F</span></code>.
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">f</span><span class="special">(</span><span class="identifier">a0</span></code>...<code class="computeroutput"><span class="identifier">aN</span><span class="special">)</span></code>
- </p>
- </td>
-<td>
- <p>
- dynamically creates an object of type <code class="computeroutput"><span class="identifier">T</span></code>
- using <code class="computeroutput"><span class="identifier">a0</span></code>...<code class="computeroutput"><span class="identifier">aN</span></code> as arguments for the constructor
- invocation.
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">F</span><span class="special">::</span><span class="identifier">result_type</span></code>
- </p>
- </td>
-<td>
- <p>
- is the type <code class="computeroutput"><span class="identifier">P</span></code> with
- top-level cv-qualifiers removed.
- </p>
- </td>
-</tr>
-</tbody>
-</table></div>
-<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">
-<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<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
- are a factored-out generalization of this idea.
- </p>
-<p>
- Dave Abrahams suggested Smart Pointer support for exception safety, providing
- useful hints for the implementation.
- </p>
-<p>
- Joel de Guzman's documentation style was copied from Fusion.
- </p>
-<p>
- Further, I want to thank Peter Dimov for sharing his insights on language details
- and their evolution.
- </p>
-</div>
-<div class="section">
-<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<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">
- Design Patterns,
- Gamma et al. - Addison Wesley Publishing, 1995
- </li>
-<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 class="listitem">
- Boost.Bind,
- Peter Dimov, 2001-2005
- </li>
-<li class="listitem">
- Boost.Function,
- Douglas Gregor, 2001-2004
- </li>
-</ol></div>
-</div>
-</div>
-<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
-<td align="left"><p><small>Last revised: November 01, 2008 at 21:44:52 GMT</small></p></td>
-<td align="right"><div class="copyright-footer"></div></td>
-</tr></table>
-<hr>
-<div class="spirit-nav"></div>
-</body>
+ 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) -->
+ <title>Redirect to generated documentation</title>
+ <meta http-equiv="refresh" content="0; URL=http://boost-sandbox.sourceforge.net/libs/functional/factory/doc/html/">
+ </head>
+ <body>
+ Automatic redirection failed, please go to
+ http://boost-sandbox.sourceforge.net/libs/functional/factory/doc/html/
+ </body>
</html>
Deleted: trunk/libs/functional/forward/doc/html/boostbook.css
==============================================================================
--- trunk/libs/functional/forward/doc/html/boostbook.css 2013-05-30 13:54:40 EDT (Thu, 30 May 2013)
+++ (empty file)
@@ -1,528 +0,0 @@
-/*=============================================================================
- Copyright (c) 2004 Joel de Guzman
- http://spirit.sourceforge.net/
-
- Use, modification and distribution is subject to 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)
-=============================================================================*/
-
-/*=============================================================================
- Body defaults
-=============================================================================*/
-
- body
- {
- margin: 1em;
- font-family: sans-serif;
- }
-
-/*=============================================================================
- Paragraphs
-=============================================================================*/
-
- p
- {
- text-align: left;
- font-size: 10pt;
- line-height: 1.15;
- }
-
-/*=============================================================================
- Program listings
-=============================================================================*/
-
- /* Code on paragraphs */
- p tt.computeroutput
- {
- font-size: 9pt;
- }
-
- pre.synopsis
- {
- font-size: 90%;
- margin: 1pc 4% 0pc 4%;
- padding: 0.5pc 0.5pc 0.5pc 0.5pc;
- }
-
- .programlisting,
- .screen
- {
- font-size: 9pt;
- display: block;
- margin: 1pc 4% 0pc 4%;
- padding: 0.5pc 0.5pc 0.5pc 0.5pc;
- }
-
- /* Program listings in tables don't get borders */
- td .programlisting,
- td .screen
- {
- margin: 0pc 0pc 0pc 0pc;
- padding: 0pc 0pc 0pc 0pc;
- }
-
-/*=============================================================================
- Headings
-=============================================================================*/
-
- h1, h2, h3, h4, h5, h6
- {
- text-align: left;
- margin: 1em 0em 0.5em 0em;
- font-weight: bold;
- }
-
- h1 { font: 140% }
- h2 { font: bold 140% }
- h3 { font: bold 130% }
- h4 { font: bold 120% }
- h5 { font: italic 110% }
- h6 { font: italic 100% }
-
- /* Top page titles */
- title,
- h1.title,
- h2.title
- h3.title,
- h4.title,
- h5.title,
- h6.title,
- .refentrytitle
- {
- font-weight: bold;
- margin-bottom: 1pc;
- }
-
- h1.title { font-size: 140% }
- h2.title { font-size: 140% }
- h3.title { font-size: 130% }
- h4.title { font-size: 120% }
- h5.title { font-size: 110% }
- h6.title { font-size: 100% }
-
- .section h1
- {
- margin: 0em 0em 0.5em 0em;
- font-size: 140%;
- }
-
- .section h2 { font-size: 140% }
- .section h3 { font-size: 130% }
- .section h4 { font-size: 120% }
- .section h5 { font-size: 110% }
- .section h6 { font-size: 100% }
-
- /* Code on titles */
- h1 tt.computeroutput { font-size: 140% }
- h2 tt.computeroutput { font-size: 140% }
- h3 tt.computeroutput { font-size: 130% }
- h4 tt.computeroutput { font-size: 120% }
- h5 tt.computeroutput { font-size: 110% }
- h6 tt.computeroutput { font-size: 100% }
-
-/*=============================================================================
- Author
-=============================================================================*/
-
- h3.author
- {
- font-size: 100%
- }
-
-/*=============================================================================
- Lists
-=============================================================================*/
-
- li
- {
- font-size: 10pt;
- line-height: 1.3;
- }
-
- /* Unordered lists */
- ul
- {
- text-align: left;
- }
-
- /* Ordered lists */
- ol
- {
- text-align: left;
- }
-
-/*=============================================================================
- Links
-=============================================================================*/
-
- a
- {
- text-decoration: none; /* no underline */
- }
-
- a:hover
- {
- text-decoration: underline;
- }
-
-/*=============================================================================
- Spirit style navigation
-=============================================================================*/
-
- .spirit-nav
- {
- text-align: right;
- }
-
- .spirit-nav a
- {
- color: white;
- padding-left: 0.5em;
- }
-
- .spirit-nav img
- {
- border-width: 0px;
- }
-
-/*=============================================================================
- Table of contents
-=============================================================================*/
-
- .toc
- {
- margin: 1pc 4% 0pc 4%;
- padding: 0.1pc 1pc 0.1pc 1pc;
- font-size: 80%;
- line-height: 1.15;
- }
-
- .boost-toc
- {
- float: right;
- padding: 0.5pc;
- }
-
-/*=============================================================================
- Tables
-=============================================================================*/
-
- .table-title,
- div.table p.title
- {
- margin-left: 4%;
- padding-right: 0.5em;
- padding-left: 0.5em;
- }
-
- .informaltable table,
- .table table
- {
- width: 92%;
- margin-left: 4%;
- margin-right: 4%;
- }
-
- div.informaltable table,
- div.table table
- {
- padding: 4px;
- }
-
- /* Table Cells */
- div.informaltable table tr td,
- div.table table tr td
- {
- padding: 0.5em;
- text-align: left;
- font-size: 9pt;
- }
-
- div.informaltable table tr th,
- div.table table tr th
- {
- padding: 0.5em 0.5em 0.5em 0.5em;
- border: 1pt solid white;
- font-size: 80%;
- }
-
-/*=============================================================================
- Blurbs
-=============================================================================*/
-
- div.note,
- div.tip,
- div.important,
- div.caution,
- div.warning,
- div.sidebar
- {
- font-size: 9pt; /* A little bit smaller than the main text */
- line-height: 1.2;
- display: block;
- margin: 1pc 4% 0pc 4%;
- padding: 0.5pc 0.5pc 0.0pc 0.5pc;
- }
-
- div.sidebar img
- {
- padding: 1pt;
- }
-
-/*=============================================================================
- Callouts
-=============================================================================*/
- .line_callout_bug img
- {
- float: left;
- position:relative;
- left: 4px;
- top: -12px;
- clear: left;
- margin-left:-22px;
- }
-
- .callout_bug img
- {
- }
-
-/*=============================================================================
- Variable Lists
-=============================================================================*/
-
- /* Make the terms in definition lists bold */
- div.variablelist dl dt,
- span.term
- {
- font-weight: bold;
- font-size: 10pt;
- }
-
- div.variablelist table tbody tr td
- {
- text-align: left;
- vertical-align: top;
- padding: 0em 2em 0em 0em;
- font-size: 10pt;
- margin: 0em 0em 0.5em 0em;
- line-height: 1;
- }
-
- div.variablelist dl dt
- {
- margin-bottom: 0.2em;
- }
-
- div.variablelist dl dd
- {
- margin: 0em 0em 0.5em 2em;
- font-size: 10pt;
- }
-
- div.variablelist table tbody tr td p,
- div.variablelist dl dd p
- {
- margin: 0em 0em 0.5em 0em;
- line-height: 1;
- }
-
-/*=============================================================================
- Misc
-=============================================================================*/
-
- /* Title of books and articles in bibliographies */
- span.title
- {
- font-style: italic;
- }
-
- span.underline
- {
- text-decoration: underline;
- }
-
- span.strikethrough
- {
- text-decoration: line-through;
- }
-
- /* Copyright, Legal Notice */
- div div.legalnotice p
- {
- text-align: left
- }
-
-/*=============================================================================
- Colors
-=============================================================================*/
-
- @media screen
- {
- /* Links */
- a
- {
- color: #005a9c;
- }
-
- a:visited
- {
- color: #9c5a9c;
- }
-
- h1 a, h2 a, h3 a, h4 a, h5 a, h6 a,
- h1 a:hover, h2 a:hover, h3 a:hover, h4 a:hover, h5 a:hover, h6 a:hover,
- h1 a:visited, h2 a:visited, h3 a:visited, h4 a:visited, h5 a:visited, h6 a:visited
- {
- text-decoration: none; /* no underline */
- color: #000000;
- }
-
- /* Syntax Highlighting */
- .keyword { color: #0000AA; }
- .identifier { color: #000000; }
- .special { color: #707070; }
- .preprocessor { color: #402080; }
- .char { color: teal; }
- .comment { color: #800000; }
- .string { color: teal; }
- .number { color: teal; }
- .white_bkd { background-color: #FFFFFF; }
- .dk_grey_bkd { background-color: #999999; }
-
- /* Copyright, Legal Notice */
- .copyright
- {
- color: #666666;
- font-size: small;
- }
-
- div div.legalnotice p
- {
- color: #666666;
- }
-
- /* Program listing */
- pre.synopsis
- {
- border: 1px solid #DCDCDC;
- }
-
- .programlisting,
- .screen
- {
- border: 1px solid #DCDCDC;
- }
-
- td .programlisting,
- td .screen
- {
- border: 0px solid #DCDCDC;
- }
-
- /* Blurbs */
- div.note,
- div.tip,
- div.important,
- div.caution,
- div.warning,
- div.sidebar
- {
- border: 1px solid #DCDCDC;
- }
-
- /* Table of contents */
- .toc
- {
- border: 1px solid #DCDCDC;
- }
-
- /* Tables */
- div.informaltable table tr td,
- div.table table tr td
- {
- border: 1px solid #DCDCDC;
- }
-
- div.informaltable table tr th,
- div.table table tr th
- {
- background-color: #F0F0F0;
- border: 1px solid #DCDCDC;
- }
-
- /* Misc */
- span.highlight
- {
- color: #00A000;
- }
- }
-
- @media print
- {
- /* Links */
- a
- {
- color: black;
- }
-
- a:visited
- {
- color: black;
- }
-
- .spirit-nav
- {
- display: none;
- }
-
- /* Program listing */
- pre.synopsis
- {
- border: 1px solid gray;
- }
-
- .programlisting,
- .screen
- {
- border: 1px solid gray;
- }
-
- td .programlisting,
- td .screen
- {
- border: 0px solid #DCDCDC;
- }
-
- /* Table of contents */
- .toc
- {
- border: 1px solid gray;
- }
-
- .informaltable table,
- .table table
- {
- border: 1px solid gray;
- border-collapse: collapse;
- }
-
- /* Tables */
- div.informaltable table tr td,
- div.table table tr td
- {
- border: 1px solid gray;
- }
-
- div.informaltable table tr th,
- div.table table tr th
- {
- border: 1px solid gray;
- }
-
- /* Misc */
- span.highlight
- {
- font-weight: bold;
- }
- }
Modified: trunk/libs/functional/forward/doc/html/index.html
==============================================================================
--- trunk/libs/functional/forward/doc/html/index.html (original)
+++ trunk/libs/functional/forward/doc/html/index.html 2013-05-30 13:54:40 EDT (Thu, 30 May 2013)
@@ -1,564 +1,16 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
-<title>Chapter 1. Boost.Functional/Forward 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 1. Boost.Functional/Forward 1.0">
-</head>
-<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
-<table cellpadding="2" width="100%"><tr>
-<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
-<td align="center">Home</td>
-<td align="center">Libraries</td>
-<td align="center">People</td>
-<td align="center">FAQ</td>
-<td align="center">More</td>
-</tr></table>
-<hr>
-<div class="spirit-nav"></div>
-<div class="chapter" lang="en">
-<div class="titlepage"><div>
-<div><h2 class="title">
-<a name="boost_functional_forward"></a>Chapter 1. Boost.Functional/Forward 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 © 2007, 2008 Tobias Schwinger</p></div>
-<div><div class="legalnotice">
-<a name="id934161"></a><p>
- 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)
- </p>
-</div></div>
-</div></div>
-<div class="toc">
-<p><b>Table of Contents</b></p>
-<dl>
-<dt><span class="section">Brief Description</span></dt>
-<dt><span class="section">Background</span></dt>
-<dt><span class="section"> Reference</span></dt>
-<dt><span class="section">Acknowledgements</span></dt>
-<dt><span class="section">References</span></dt>
-</dl>
-</div>
-<div class="section" lang="en">
-<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="boost_functional_forward.brief_description"></a>Brief Description</h2></div></div></div>
-<p>
- <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">forward_adapter</span></code> provides a reusable adapter
- template for function objects. It forwards RValues as references to const,
- while leaving LValues as-is.
- </p>
-<pre class="programlisting"><span class="keyword">struct</span> <span class="identifier">g</span> <span class="comment">// function object that only accept LValues
-</span><span class="special">{</span>
- <span class="keyword">template</span><span class="special"><</span> <span class="keyword">typename</span> <span class="identifier">T0</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T1</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T2</span> <span class="special">></span>
- <span class="keyword">void</span> <span class="keyword">operator</span><span class="special">()(</span><span class="identifier">T0</span> <span class="special">&</span> <span class="identifier">t0</span><span class="special">,</span> <span class="identifier">T1</span> <span class="special">&</span> <span class="identifier">t1</span><span class="special">,</span> <span class="identifier">T2</span> <span class="special">&</span> <span class="identifier">t2</span><span class="special">)</span> <span class="keyword">const</span><span class="special">;</span>
+ <head>
+ <!-- Copyright (C) 2002 Douglas Gregor <doug.gregor -at- gmail.com>
- <span class="keyword">typedef</span> <span class="keyword">void</span> <span class="identifier">result_type</span><span class="special">;</span>
-<span class="special">};</span>
-
-<span class="comment">// Adapted version also accepts RValues and forwards
-</span><span class="comment">// them as references to const, LValues as-is
-</span><span class="keyword">typedef</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">forward_adapter</span><span class="special"><</span><span class="identifier">g</span><span class="special">></span> <span class="identifier">f</span><span class="special">;</span>
-</pre>
-<p>
- Another adapter, <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">lighweight_forward_adapter</span></code> allows forwarding
- with some help from the user accepting and unwrapping reference wrappers (see
- Boost.Ref) for
- reference arguments, const qualifying all other arguments.
- </p>
-<p>
- The target functions must be compatible with Boost.ResultOf,
- and so are the adapters.
- </p>
-</div>
-<div class="section" lang="en">
-<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="boost_functional_forward.background"></a>Background</h2></div></div></div>
-<p>
- Let's suppose we have some function <code class="computeroutput"><span class="identifier">f</span></code>
- that we can call like this:
- </p>
-<pre class="programlisting"><span class="identifier">f</span><span class="special">(</span><span class="number">123</span><span class="special">,</span><span class="identifier">a_variable</span><span class="special">);</span>
-</pre>
-<p>
- Now we want to write another, generic function <code class="computeroutput"><span class="identifier">g</span></code>
- that can be called the same way and returns some object that calls <code class="computeroutput"><span class="identifier">f</span></code> with the same arguments.
- </p>
-<pre class="programlisting"><span class="identifier">f</span><span class="special">(</span><span class="number">123</span><span class="special">,</span><span class="identifier">a_variable</span><span class="special">)</span> <span class="special">==</span> <span class="identifier">g</span><span class="special">(</span><span class="identifier">f</span><span class="special">,</span><span class="number">123</span><span class="special">,</span><span class="identifier">a_variable</span><span class="special">).</span><span class="identifier">call_f</span><span class="special">()</span>
-</pre>
-<a name="boost_functional_forward.background.why_would_we_want_to_do_it__anyway_"></a><h3>
-<a name="id934701"></a>
- <a href="index.html#boost_functional_forward.background.why_would_we_want_to_do_it__anyway_">Why
- would we want to do it, anyway?</a>
- </h3>
-<p>
- Maybe we want to run <code class="computeroutput"><span class="identifier">f</span></code> several
- times. Or maybe we want to run it within another thread. Maybe we just want
- to encapsulate the call expression for now, and then use it with other code
- that allows to compose more complex expressions in order to decompose it with
- C++ templates and have the compiler generate some machinery that eventually
- calls <code class="computeroutput"><span class="identifier">f</span></code> at runtime (in other
- words; apply a technique that is commonly referred to as Expression Templates).
- </p>
-<a name="boost_functional_forward.background.now__how_do_we_do_it_"></a><h3>
-<a name="id934755"></a>
- <a href="index.html#boost_functional_forward.background.now__how_do_we_do_it_">Now,
- how do we do it?</a>
- </h3>
-<p>
- The bad news is: It's impossible.
- </p>
-<p>
- That is so because there is a slight difference between a variable and an expression
- that evaluates to its value: Given
- </p>
-<pre class="programlisting"><span class="keyword">int</span> <span class="identifier">y</span><span class="special">;</span>
-<span class="keyword">int</span> <span class="keyword">const</span> <span class="identifier">z</span> <span class="special">=</span> <span class="number">0</span><span class="special">;</span>
-</pre>
-<p>
- and
- </p>
-<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span> <span class="keyword">typename</span> <span class="identifier">T</span> <span class="special">></span> <span class="keyword">void</span> <span class="identifier">func1</span><span class="special">(</span><span class="identifier">T</span> <span class="special">&</span> <span class="identifier">x</span><span class="special">);</span>
-</pre>
-<p>
- we can call
- </p>
-<pre class="programlisting"><span class="identifier">func1</span><span class="special">(</span><span class="identifier">y</span><span class="special">);</span> <span class="comment">// x is a reference to a non-const object
-</span><span class="identifier">func1</span><span class="special">(</span><span class="identifier">z</span><span class="special">);</span> <span class="comment">// x is a reference to a const object
-</span></pre>
-<p>
- where
- </p>
-<pre class="programlisting"><span class="identifier">func1</span><span class="special">(</span><span class="number">1</span><span class="special">);</span> <span class="comment">// fails to compile.
-</span></pre>
-<p>
- This way we can safely have <code class="computeroutput"><span class="identifier">func1</span></code>
- store its reference argument and the compiler keeps us from storing a reference
- to an object with temporary lifetime.
- </p>
-<p>
- It is important to realize that non-constness and whether an object binds to
- a non-const reference parameter are two different properties. The latter is
- the distinction between LValues and RValues. The names stem from the left hand
- side and the right hand side of assignment expressions, thus LValues are typically
- the ones you can assign to, and RValues the temporary results from the right
- hand side expression.
- </p>
-<pre class="programlisting"><span class="identifier">y</span> <span class="special">=</span> <span class="number">1</span><span class="special">+</span><span class="number">2</span><span class="special">;</span> <span class="comment">// a is LValue, 1+2 is the expression producing the RValue,
-</span><span class="comment">// 1+2 = a; // usually makes no sense.
-</span>
-<span class="identifier">func1</span><span class="special">(</span><span class="identifier">y</span><span class="special">);</span> <span class="comment">// works, because y is an LValue
-</span><span class="comment">// func1(1+2); // fails to compile, because we only got an RValue.
-</span></pre>
-<p>
- If we add const qualification on the parameter, our function also accepts RValues:
- </p>
-<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span> <span class="keyword">typename</span> <span class="identifier">T</span> <span class="special">></span> <span class="keyword">void</span> <span class="identifier">func2</span><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">x</span><span class="special">);</span>
-
-<span class="comment">// [...] function scope:
-</span><span class="identifier">func2</span><span class="special">(</span><span class="number">1</span><span class="special">);</span> <span class="comment">// x is a reference to a const temporary, object,
-</span><span class="identifier">func2</span><span class="special">(</span><span class="identifier">y</span><span class="special">);</span> <span class="comment">// x is a reference to a const object, while y is not const, and
-</span><span class="identifier">func2</span><span class="special">(</span><span class="identifier">z</span><span class="special">);</span> <span class="comment">// x is a reference to a const object, just like z.
-</span></pre>
-<p>
- In all cases, the argument <code class="computeroutput"><span class="identifier">x</span></code>
- in <code class="computeroutput"><span class="identifier">func2</span></code> is a const-qualified
- LValue. We can use function overloading to identify non-const LValues:
- </p>
-<pre class="programlisting"><span class="keyword">template</span><span class="special"><</span> <span class="keyword">typename</span> <span class="identifier">T</span> <span class="special">></span> <span class="keyword">void</span> <span class="identifier">func3</span><span class="special">(</span><span class="identifier">T</span> <span class="keyword">const</span> <span class="special">&</span> <span class="identifier">x</span><span class="special">);</span> <span class="comment">// #1
-</span><span class="keyword">template</span><span class="special"><</span> <span class="keyword">typename</span> <span class="identifier">T</span> <span class="special">></span> <span class="keyword">void</span> <span class="identifier">func3</span><span class="special">(</span><span class="identifier">T</span> <span class="special">&</span> <span class="identifier">x</span><span class="special">);</span> <span class="comment">// #2
-</span>
-<span class="comment">// [...] function scope:
-</span><span class="identifier">func3</span><span class="special">(</span><span class="number">1</span><span class="special">);</span> <span class="comment">// x is a reference to a const, temporary object in #1,
-</span><span class="identifier">func3</span><span class="special">(</span><span class="identifier">y</span><span class="special">);</span> <span class="comment">// x is a reference to a non-const object in #2, and
-</span><span class="identifier">func3</span><span class="special">(</span><span class="identifier">z</span><span class="special">);</span> <span class="comment">// x is a reference to a const object in #1.
-</span></pre>
-<p>
- Note that all arguments <code class="computeroutput"><span class="identifier">x</span></code> in
- the overloaded function <code class="computeroutput"><span class="identifier">func3</span></code>
- are LValues. In fact, there is no way to transport RValues into a function
- as-is in C++98. Also note that we can't distinguish between what used to be
- a const qualified LValue and an RValue.
- </p>
-<p>
- That's as close as we can get to a generic forwarding function <code class="computeroutput"><span class="identifier">g</span></code> as described above by the means of C++
- 98. See <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2002/n1385.htm" target="_top">The
- Forwarding Problem</a> for a very detailed discussion including solutions
- that require language changes.
- </p>
-<p>
- Now, for actually implementing it, we need 2^N overloads for N parameters (each
- with and without const qualifier) for each number of arguments (that is 2^(Nmax+1)
- - 2^Nmin). Right, that means the compile-time complexity is O(2^N), however
- the factor is low so it works quite well for a reasonable number (< 10)
- of arguments.
- </p>
-</div>
-<div class="section" lang="en">
-<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="boost_functional_forward.reference"></a> Reference</h2></div></div></div>
-<div class="toc"><dl>
-<dt><span class="section">forward_adapter</span></dt>
-<dt><span class="section">lightweight_forward_adapter</span></dt>
-</dl></div>
-<div class="section" lang="en">
-<div class="titlepage"><div><div><h3 class="title">
-<a name="boost_functional_forward.reference.forward_adapter"></a>forward_adapter</h3></div></div></div>
-<a name="boost_functional_forward.reference.forward_adapter.description"></a><h4>
-<a name="id935594"></a>
- Description
- </h4>
-<p>
- Function object adapter template whose instances are callable with LValue
- and RValue arguments. RValue arguments are forwarded as reference-to-const
- typed LValues.
- </p>
-<p>
- An arity can be given as second, numeric non-type template argument to restrict
- forwarding to a specific arity. If a third, numeric non-type template argument
- is present, the second and third template argument are treated as minimum
- and maximum arity, respectively. Specifying an arity can be helpful to improve
- the readability of diagnostic messages and compile time performance.
- </p>
-<p>
- Boost.ResultOf
- can be used to determine the result types of specific call expressions.
- </p>
-<a name="boost_functional_forward.reference.forward_adapter.header"></a><h4>
-<a name="id935646"></a>
- Header
- </h4>
-<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">forward_adapter</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
-</pre>
-<a name="boost_functional_forward.reference.forward_adapter.synopsis"></a><h4>
-<a name="id935721"></a>
- Synopsis
- </h4>
-<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">class</span> <span class="identifier">Function</span><span class="special">,</span>
- <span class="keyword">int</span> <span class="identifier">Arity_Or_MinArity</span> <span class="special">=</span> <span class="emphasis"><em>unspecified</em></span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">MaxArity</span> <span class="special">=</span> <span class="emphasis"><em>unspecified</em></span> <span class="special">></span>
- <span class="keyword">class</span> <span class="identifier">forward_adapter</span><span class="special">;</span>
-<span class="special">}</span>
-</pre>
-<div class="variablelist">
-<p class="title"><b>Notation</b></p>
-<dl>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">F</span></code></span></dt>
-<dd><p>
- a possibly const qualified function object type or reference type thereof
- </p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">f</span></code></span></dt>
-<dd><p>
- an object convertible to <code class="computeroutput"><span class="identifier">F</span></code>
- </p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">FA</span></code></span></dt>
-<dd><p>
- the type <code class="computeroutput"><span class="identifier">forward_adapter</span><span class="special"><</span><span class="identifier">F</span><span class="special">></span></code>
- </p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">fa</span></code></span></dt>
-<dd><p>
- an instance object of <code class="computeroutput"><span class="identifier">FA</span></code>,
- initialized with <code class="computeroutput"><span class="identifier">f</span></code>
- </p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">a0</span></code>...<code class="computeroutput"><span class="identifier">aN</span></code></span></dt>
-<dd><p>
- arguments to <code class="computeroutput"><span class="identifier">fa</span></code>
- </p></dd>
-</dl>
-</div>
-<p>
- The result type of a target function invocation must be
- </p>
-<pre class="programlisting">boost::result_of
<span class="special"><</span><span class="identifier">F</span><span class="special">*(</span><span class="identifier">TA0</span> <span class="special">[</span><span class="keyword">const</span><span class="special">]&...</span><span class="identifier">TAN</span> <span class="special">[</span><span class="keyword">const</span><span class="special">]&])>::</span><span class="identifier">type</span>
-</pre>
-<p>
- where <code class="computeroutput"><span class="identifier">TA0</span></code>...<code class="computeroutput"><span class="identifier">TAN</span></code> denote the argument types of <code class="computeroutput"><span class="identifier">a0</span></code>...<code class="computeroutput"><span class="identifier">aN</span></code>.
- </p>
-<a name="boost_functional_forward.reference.forward_adapter.expression_semantics"></a><h4>
-<a name="id936177"></a>
- <a href="index.html#boost_functional_forward.reference.forward_adapter.expression_semantics">Expression
- Semantics</a>
- </h4>
-<div class="informaltable"><table class="table">
-<colgroup>
-<col>
-<col>
-</colgroup>
-<thead><tr>
-<th>
- <p>
- Expression
- </p>
- </th>
-<th>
- <p>
- Semantics
- </p>
- </th>
-</tr></thead>
-<tbody>
-<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">FA</span><span class="special">(</span><span class="identifier">f</span><span class="special">)</span></code>
- </p>
- </td>
-<td>
- <p>
- creates an adapter, initializes the target function with <code class="computeroutput"><span class="identifier">f</span></code>.
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">FA</span><span class="special">()</span></code>
- </p>
- </td>
-<td>
- <p>
- creates an adapter, attempts to use <code class="computeroutput"><span class="identifier">F</span></code>'s
- default constructor.
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">fa</span><span class="special">(</span><span class="identifier">a0</span></code>...<code class="computeroutput"><span class="identifier">aN</span><span class="special">)</span></code>
- </p>
- </td>
-<td>
- <p>
- calls <code class="computeroutput"><span class="identifier">f</span></code> with with
- arguments <code class="computeroutput"><span class="identifier">a0</span></code>...<code class="computeroutput"><span class="identifier">aN</span></code>.
- </p>
- </td>
-</tr>
-</tbody>
-</table></div>
-<a name="boost_functional_forward.reference.forward_adapter.limits"></a><h4>
-<a name="id936405"></a>
- Limits
- </h4>
-<p>
- The macro BOOST_FUNCTIONAL_FORWARD_ADAPTER_MAX_ARITY can be defined to set
- the maximum call arity. It defaults to 6.
- </p>
-<a name="boost_functional_forward.reference.forward_adapter.complexity"></a><h4>
-<a name="id936434"></a>
- Complexity
- </h4>
-<p>
- Preprocessing time: O(2^N), where N is the arity limit. Compile time: O(2^N),
- where N depends on the arity range. Run time: O(0) if the compiler inlines,
- O(1) otherwise.
- </p>
-</div>
-<div class="section" lang="en">
-<div class="titlepage"><div><div><h3 class="title">
-<a name="boost_functional_forward.reference.lightweight_forward_adapter"></a>lightweight_forward_adapter</h3></div></div></div>
-<a name="boost_functional_forward.reference.lightweight_forward_adapter.description"></a><h4>
-<a name="id936485"></a>
- Description
- </h4>
-<p>
- Function object adapter template whose instances are callable with LValue
- and RValue arguments. All arguments are forwarded as reference-to-const typed
- LValues, except for reference wrappers which are unwrapped and may yield
- non-const LValues.
- </p>
-<p>
- An arity can be given as second, numeric non-type template argument to restrict
- forwarding to a specific arity. If a third, numeric non-type template argument
- is present, the second and third template argument are treated as minimum
- and maximum arity, respectively. Specifying an arity can be helpful to improve
- the readability of diagnostic messages and compile time performance.
- </p>
-<p>
- Boost.ResultOf
- can be used to determine the result types of specific call expressions.
- </p>
-<a name="boost_functional_forward.reference.lightweight_forward_adapter.header"></a><h4>
-<a name="id936540"></a>
- Header
- </h4>
-<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">lightweight_forward_adapter</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
-</pre>
-<a name="boost_functional_forward.reference.lightweight_forward_adapter.synopsis"></a><h4>
-<a name="id936616"></a>
- Synopsis
- </h4>
-<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">class</span> <span class="identifier">Function</span><span class="special">,</span>
- <span class="keyword">int</span> <span class="identifier">Arity_Or_MinArity</span> <span class="special">=</span> <span class="emphasis"><em>unspecified</em></span><span class="special">,</span> <span class="keyword">int</span> <span class="identifier">MaxArity</span> <span class="special">=</span> <span class="emphasis"><em>unspecified</em></span> <span class="special">></span>
- <span class="keyword">struct</span> <span class="identifier">lightweight_forward_adapter</span><span class="special">;</span>
-<span class="special">}</span>
-</pre>
-<div class="variablelist">
-<p class="title"><b>Notation</b></p>
-<dl>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">F</span></code></span></dt>
-<dd><p>
- a possibly const qualified function object type or reference type thereof
- </p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">f</span></code></span></dt>
-<dd><p>
- an object convertible to <code class="computeroutput"><span class="identifier">F</span></code>
- </p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">FA</span></code></span></dt>
-<dd><p>
- the type <code class="computeroutput"><span class="identifier">lightweight_forward_adapter</span><span class="special"><</span><span class="identifier">F</span><span class="special">></span></code>
- </p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">fa</span></code></span></dt>
-<dd><p>
- an instance of <code class="computeroutput"><span class="identifier">FA</span></code>, initialized
- with <code class="computeroutput"><span class="identifier">f</span></code>
- </p></dd>
-<dt><span class="term"><code class="computeroutput"><span class="identifier">a0</span></code>...<code class="computeroutput"><span class="identifier">aN</span></code></span></dt>
-<dd><p>
- arguments to <code class="computeroutput"><span class="identifier">fa</span></code>
- </p></dd>
-</dl>
-</div>
-<p>
- The result type of a target function invocation must be
- </p>
-<pre class="programlisting">boost::result_of
<span class="special"><</span><span class="identifier">F</span><span class="special">*(</span><span class="identifier">TA0</span> <span class="special">[</span><span class="keyword">const</span><span class="special">]&...</span><span class="identifier">TAN</span> <span class="special">[</span><span class="keyword">const</span><span class="special">]&])>::</span><span class="identifier">type</span>
-</pre>
-<p>
- where <code class="computeroutput"><span class="identifier">TA0</span></code>...<code class="computeroutput"><span class="identifier">TAN</span></code> denote the argument types of <code class="computeroutput"><span class="identifier">a0</span></code>...<code class="computeroutput"><span class="identifier">aN</span></code>.
- </p>
-<a name="boost_functional_forward.reference.lightweight_forward_adapter.expression_semantics"></a><h4>
-<a name="id937073"></a>
- <a href="index.html#boost_functional_forward.reference.lightweight_forward_adapter.expression_semantics">Expression
- Semantics</a>
- </h4>
-<div class="informaltable"><table class="table">
-<colgroup>
-<col>
-<col>
-</colgroup>
-<thead><tr>
-<th>
- <p>
- Expression
- </p>
- </th>
-<th>
- <p>
- Semantics
- </p>
- </th>
-</tr></thead>
-<tbody>
-<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">FA</span><span class="special">(</span><span class="identifier">f</span><span class="special">)</span></code>
- </p>
- </td>
-<td>
- <p>
- creates an adapter, initializes the target function with <code class="computeroutput"><span class="identifier">f</span></code>.
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">FA</span><span class="special">()</span></code>
- </p>
- </td>
-<td>
- <p>
- creates an adapter, attempts to use <code class="computeroutput"><span class="identifier">F</span></code>'s
- default constructor.
- </p>
- </td>
-</tr>
-<tr>
-<td>
- <p>
- <code class="computeroutput"><span class="identifier">fa</span><span class="special">(</span><span class="identifier">a0</span></code>...<code class="computeroutput"><span class="identifier">aN</span><span class="special">)</span></code>
- </p>
- </td>
-<td>
- <p>
- calls <code class="computeroutput"><span class="identifier">f</span></code> with with
- const arguments <code class="computeroutput"><span class="identifier">a0</span></code>...<code class="computeroutput"><span class="identifier">aN</span></code>. If <code class="computeroutput"><span class="identifier">aI</span></code>
- is a reference wrapper it is unwrapped.
- </p>
- </td>
-</tr>
-</tbody>
-</table></div>
-<a name="boost_functional_forward.reference.lightweight_forward_adapter.limits"></a><h4>
-<a name="id937311"></a>
- Limits
- </h4>
-<p>
- The macro BOOST_FUNCTIONAL_LIGHTWEIGHT_FORWARD_ADAPTER_MAX_ARITY can be defined
- to set the maximum call arity. It defaults to 10.
- </p>
-<a name="boost_functional_forward.reference.lightweight_forward_adapter.complexity"></a><h4>
-<a name="id937342"></a>
- Complexity
- </h4>
-<p>
- Preprocessing time: O(N), where N is the arity limit. Compile time: O(N),
- where N is the effective arity of a call. Run time: O(0) if the compiler
- inlines, O(1) otherwise.
- </p>
-</div>
-</div>
-<div class="section" lang="en">
-<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="boost_functional_forward.acknowledgements"></a>Acknowledgements</h2></div></div></div>
-<p>
- As these utilities are factored out of the Boost.Fusion
- functional module, I want to thank Dan Marsden and Joel de Guzman for letting
- me participate in the development of that great library in the first place.
- </p>
-<p>
- Further, I want to credit the authors of the references below, for their in-depth
- investigation of the problem and the solution implemented here.
- </p>
-<p>
- Last but not least I want to thank Vesa Karnoven and Paul Mensonides for the
- Boost Preprocessor library. Without it, I would have ended up with an external
- code generator for this one.
- </p>
-</div>
-<div class="section" lang="en">
-<div class="titlepage"><div><div><h2 class="title" style="clear: both">
-<a name="boost_functional_forward.references"></a>References</h2></div></div></div>
-<div class="orderedlist"><ol type="1">
-<li>
-<a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2002/n1385.htm" target="_top">The
- Forwarding Problem</a>, Peter Dimov, Howard E. Hinnant, David Abrahams,
- 2002
- </li>
-<li>
-Boost.ResultOf,
- Douglas Gregor, 2004
- </li>
-<li>
-Boost.Ref, Jaakko
- Jarvi, Peter Dimov, Douglas Gregor, David Abrahams, 1999-2002
- </li>
-</ol></div>
-</div>
-</div>
-<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
-<td align="left"><p><small>Last revised: November 01, 2008 at 19:58:50 GMT</small></p></td>
-<td align="right"><div class="copyright-footer"></div></td>
-</tr></table>
-<hr>
-<div class="spirit-nav"></div>
-</body>
+ 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) -->
+ <title>Redirect to generated documentation</title>
+ <meta http-equiv="refresh" content="0; URL=http://boost-sandbox.sourceforge.net/libs/functional/forward/doc/html/">
+ </head>
+ <body>
+ Automatic redirection failed, please go to
+ http://boost-sandbox.sourceforge.net/libs/functional/forward/doc/html/
+ </body>
</html>
Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk