Compare commits

..

28 Commits

Author SHA1 Message Date
7ce07a8920 v2, v3, integration branch
[SVN r62649]
2010-06-09 11:34:33 +00:00
e39914bddd Undo r56305
[SVN r58129]
2009-12-03 22:20:47 +00:00
64776ee43c rm cmake from trunk. I'm not entirely sure this is necessary to satisfy the inspect script, but I'm not taking any chances, and it is easy to put back
[SVN r56942]
2009-10-17 02:07:38 +00:00
d3b53cbdf8 Merged 2009 GSoC work from sandbox-branches/bhy/py3k branch back into trunk.
[SVN r56305]
2009-09-19 02:32:41 +00:00
0bf0587f58 Copyrights on CMakeLists.txt to keep them from clogging up the inspect
reports.  This is essentially the same commit as r55095 on the release
branch.



[SVN r55159]
2009-07-26 00:49:56 +00:00
1b4fdee6ff Cleanup function_types Jamfile.
Make it directly depends on Wave target. Simplify naming
of targets. Addresses #1653


[SVN r53619]
2009-06-04 09:36:17 +00:00
b7da1bd1ab adds tests with const result
[SVN r49980]
2008-11-28 11:38:38 +00:00
8554f430fe Updating dependency information for modularized libraries.
[SVN r49628]
2008-11-07 17:05:27 +00:00
ee8ed76bc5 Updating CMake files to latest trunk. Added dependency information for regression tests and a few new macros for internal use.
[SVN r49627]
2008-11-07 17:02:56 +00:00
e60e1b82aa Continuing merge of CMake build system files into trunk with the encouragement of Doug Gregor
[SVN r49510]
2008-11-01 13:15:41 +00:00
594c159568 Added some parenthesis to disambiguate expressions.
[SVN r44631]
2008-04-20 13:51:15 +00:00
0071f74393 Rebuild the function types documentation.
[SVN r44131]
2008-04-09 17:27:08 +00:00
f9a2056786 Fix a typo.
[SVN r44130]
2008-04-09 17:26:31 +00:00
e4da19535d adds acknowledgement for Noel helping to support Sun compilers
[SVN r43608]
2008-03-14 18:36:46 +00:00
04a28f6d46 resolves #1100 and #1602
[SVN r43606]
2008-03-14 18:29:26 +00:00
8bc1c768ad attempts to finally make Sun work
[SVN r43605]
2008-03-14 17:59:22 +00:00
f5084b1410 removes unnecessary comment
[SVN r43412]
2008-02-25 11:47:59 +00:00
adcac6d5d0 attempts to make synthesis metafunctions work with sun compiler
[SVN r43125]
2008-02-06 13:00:08 +00:00
9d9c35e797 attempts to allow some preprocessing with VACPP (IBM)
[SVN r42987]
2008-01-26 21:50:14 +00:00
096ac6aac4 touched
[SVN r42958]
2008-01-25 00:28:15 +00:00
0a515cc963 simplifies preprocessing code
[SVN r42957]
2008-01-25 00:26:16 +00:00
2fe398d9f8 correctsbroken compiler support for MPL
[SVN r42950]
2008-01-24 18:56:27 +00:00
e171bda08f attempts to fix pathscale failure
[SVN r42859]
2008-01-18 21:06:44 +00:00
72f89e9434 attempts to fix BCB 5.9 regression in synthesis/mem_func_ptr_cv_ptr_to_this test
[SVN r42858]
2008-01-18 20:52:06 +00:00
508b6ff4d7 makes member object support work with BCC
[SVN r42843]
2008-01-18 14:37:41 +00:00
5ee20a4383 attempts to fix Borland regressions
[SVN r42822]
2008-01-16 19:17:09 +00:00
d989383a27 works around MSVC7.1 problems (hopefully)
[SVN r42821]
2008-01-16 19:16:37 +00:00
d209118686 adds missing #include
[SVN r42797]
2008-01-15 19:46:10 +00:00
22 changed files with 408 additions and 352 deletions

View File

@ -6,25 +6,25 @@
# Generates preprocessed files with wave.
rule wave
{
Depends $1 : $2 ;
}
actions wave
{
$(BOOST_ROOT)/dist/bin/wave -S$(BOOST_ROOT) $(>) -o $(<)
$(>[1]) -S../../.. $(>[2]) -o $(<)
}
make $(BOOST_ROOT)/libs/function_types/build/timestamps/arity_loops
: preprocess_arity_loops.cpp : wave
W = ../../../tools/wave/build//wave ;
make arity_loops
: preprocess_arity_loops.cpp $(W) : wave : <location>build/timestamps
;
make $(BOOST_ROOT)/libs/function_types/build/timestamps/encoding
: preprocess_encoding.cpp : wave
make encoding
: preprocess_encoding.cpp $(W) : wave : <location>build/timestamps
;
make $(BOOST_ROOT)/libs/function_types/build/timestamps/cc_names
: preprocess_cc_names.cpp : wave
;
make cc_names
: preprocess_cc_names.cpp $(W) : wave : <location>build/timestamps
;
explicit arity_loops encoding cc_names ;

View File

@ -1 +1 @@
timestamp file
timestamp file

View File

@ -1 +1 @@
timestamp file
timestamp file

View File

@ -897,7 +897,7 @@ definition of [^BOOST_FT_CC_NAMES]:
[section:BOOST_FT_CC BOOST_FT\_CC\_*]
Enables a specific calling convention. * dentoes the macro suffix, as
Enables a specific calling convention. * denotes the macro suffix, as
defined by
[link boost_functiontypes.reference.macros.BOOST_FT_CC_NAMES [^BOOST_FT_CC_NAMES]]
or
@ -1099,6 +1099,7 @@ library in one or the other way:
* Jonathan Turkanis
* Pavel Vozenilek
* Steven Watanabe
* K. Noel Belcourt
[endsect]

View File

@ -1,21 +1,21 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title> About Tag Types</title>
<title>About Tag Types</title>
<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
<link rel="start" href="../index.html" title="Chapter<65>1.<2E>Boost.FunctionTypes 2.5">
<link rel="up" href="../index.html" title="Chapter<65>1.<2E>Boost.FunctionTypes 2.5">
<link rel="prev" href="use_cases.html" title=" Use Cases">
<link rel="next" href="reference.html" title=" Reference">
<link rel="prev" href="use_cases.html" title="Use Cases">
<link rel="next" href="reference.html" title="Reference">
</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"><a href="../../../../../index.htm">Home</a></td>
<td align="center"><a href="../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../libraries.htm">Libraries</a></td>
<td align="center"><a href="../../../../../people/people.htm">People</a></td>
<td align="center"><a href="../../../../../more/faq.htm">FAQ</a></td>
<td align="center"><a href="http://www.boost.org/people/people.htm">People</a></td>
<td align="center"><a href="http://www.boost.org/more/faq.htm">FAQ</a></td>
<td align="center"><a href="../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
@ -24,7 +24,8 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="boost_functiontypes.about_tag_types"></a><a href="about_tag_types.html" title=" About Tag Types"> About Tag Types</a></h2></div></div></div>
<a name="boost_functiontypes.about_tag_types"></a><a class="link" href="about_tag_types.html" title="About Tag Types"> About Tag Types</a>
</h2></div></div></div>
<p>
Boost.FunctionTypes uses tag types to encode properties that are not types
per se, such as calling convention or whether a function is variadic or cv-
@ -84,7 +85,11 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><small>Copyright <20> 2004 -2007 Tobias Schwinger</small></td>
<td align="right"><div class="copyright-footer">Copyright <20> 2004 -2007 Tobias Schwinger<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>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">

View File

@ -1,20 +1,20 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title> Acknowledgements</title>
<title>Acknowledgements</title>
<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
<link rel="start" href="../index.html" title="Chapter<65>1.<2E>Boost.FunctionTypes 2.5">
<link rel="up" href="../index.html" title="Chapter<65>1.<2E>Boost.FunctionTypes 2.5">
<link rel="prev" href="rationale.html" title=" Rationale">
<link rel="prev" href="rationale.html" title="Rationale">
</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"><a href="../../../../../index.htm">Home</a></td>
<td align="center"><a href="../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../libraries.htm">Libraries</a></td>
<td align="center"><a href="../../../../../people/people.htm">People</a></td>
<td align="center"><a href="../../../../../more/faq.htm">FAQ</a></td>
<td align="center"><a href="http://www.boost.org/people/people.htm">People</a></td>
<td align="center"><a href="http://www.boost.org/more/faq.htm">FAQ</a></td>
<td align="center"><a href="../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
@ -23,7 +23,8 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="boost_functiontypes.acknowledgements"></a><a href="acknowledgements.html" title=" Acknowledgements"> Acknowledgements</a></h2></div></div></div>
<a name="boost_functiontypes.acknowledgements"></a><a class="link" href="acknowledgements.html" title="Acknowledgements"> Acknowledgements</a>
</h2></div></div></div>
<p>
Thanks go to the following people for supporting the development of this library
in one or the other way:
@ -71,11 +72,18 @@
<li>
Steven Watanabe
</li>
<li>
K. Noel Belcourt
</li>
</ul></div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><small>Copyright <20> 2004 -2007 Tobias Schwinger</small></td>
<td align="right"><div class="copyright-footer">Copyright <20> 2004 -2007 Tobias Schwinger<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>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">

View File

@ -1,21 +1,21 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title> Introduction</title>
<title>Introduction</title>
<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
<link rel="start" href="../index.html" title="Chapter<65>1.<2E>Boost.FunctionTypes 2.5">
<link rel="up" href="../index.html" title="Chapter<65>1.<2E>Boost.FunctionTypes 2.5">
<link rel="prev" href="../index.html" title="Chapter<65>1.<2E>Boost.FunctionTypes 2.5">
<link rel="next" href="use_cases.html" title=" Use Cases">
<link rel="next" href="use_cases.html" title="Use Cases">
</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"><a href="../../../../../index.htm">Home</a></td>
<td align="center"><a href="../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../libraries.htm">Libraries</a></td>
<td align="center"><a href="../../../../../people/people.htm">People</a></td>
<td align="center"><a href="../../../../../more/faq.htm">FAQ</a></td>
<td align="center"><a href="http://www.boost.org/people/people.htm">People</a></td>
<td align="center"><a href="http://www.boost.org/more/faq.htm">FAQ</a></td>
<td align="center"><a href="../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
@ -24,7 +24,8 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="boost_functiontypes.introduction"></a><a href="introduction.html" title=" Introduction"> Introduction</a></h2></div></div></div>
<a name="boost_functiontypes.introduction"></a><a class="link" href="introduction.html" title="Introduction"> Introduction</a>
</h2></div></div></div>
<p>
Boost.FunctionTypes provides functionality to classify, decompose and synthesize
function, function pointer, function reference and pointer to member types.
@ -56,35 +57,34 @@
constant called <code class="literal">value</code>.
</p>
<pre class="programlisting">
<a href="reference/classification.html#boost_functiontypes.reference.classification.is_function_pointer" title="
is_function_pointer">is_function_pointer</a><span class="special">&lt;</span> <span class="keyword">bool</span><span class="special">(*)(</span><span class="keyword">int</span><span class="special">)</span> <span class="special">&gt;::</span><span class="identifier">value</span> <span class="comment">// == true
<a class="link" href="reference/classification.html#boost_functiontypes.reference.classification.is_function_pointer" title="is_function_pointer">is_function_pointer</a><span class="special">&lt;</span> <span class="keyword">bool</span><span class="special">(*)(</span><span class="keyword">int</span><span class="special">)</span> <span class="special">&gt;::</span><span class="identifier">value</span> <span class="comment">// == true
</span>
<a href="reference/decomposition.html#boost_functiontypes.reference.decomposition.function_arity" title="
function_arity">function_arity</a><span class="special">&lt;</span> <span class="keyword">bool</span><span class="special">(*)(</span><span class="keyword">int</span><span class="special">)</span> <span class="special">&gt;::</span><span class="identifier">value</span> <span class="comment">// == 1
<a class="link" href="reference/decomposition.html#boost_functiontypes.reference.decomposition.function_arity" title="function_arity">function_arity</a><span class="special">&lt;</span> <span class="keyword">bool</span><span class="special">(*)(</span><span class="keyword">int</span><span class="special">)</span> <span class="special">&gt;::</span><span class="identifier">value</span> <span class="comment">// == 1
</span></pre>
<p>
Templates that encapsulate properties that are single types contain a type
member called <code class="literal">type</code>.
</p>
<pre class="programlisting">
<a href="reference/synthesis.html#boost_functiontypes.reference.synthesis.function_type" title="
function_type">function_type</a><span class="special">&lt;</span> <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="keyword">bool</span><span class="special">,</span><span class="keyword">int</span><span class="special">&gt;</span> <span class="special">&gt;::</span><span class="identifier">type</span> <span class="comment">// is bool(int)
<a class="link" href="reference/synthesis.html#boost_functiontypes.reference.synthesis.function_type" title="function_type">function_type</a><span class="special">&lt;</span> <span class="identifier">mpl</span><span class="special">::</span><span class="identifier">vector</span><span class="special">&lt;</span><span class="keyword">bool</span><span class="special">,</span><span class="keyword">int</span><span class="special">&gt;</span> <span class="special">&gt;::</span><span class="identifier">type</span> <span class="comment">// is bool(int)
</span>
<a href="reference/decomposition.html#boost_functiontypes.reference.decomposition.result_type" title="
result_type">result_type</a><span class="special">&lt;</span> <span class="keyword">bool</span><span class="special">(&amp;)(</span><span class="keyword">int</span><span class="special">)</span> <span class="special">&gt;::</span><span class="identifier">type</span> <span class="comment">// is bool
<a class="link" href="reference/decomposition.html#boost_functiontypes.reference.decomposition.result_type" title="result_type">result_type</a><span class="special">&lt;</span> <span class="keyword">bool</span><span class="special">(&amp;)(</span><span class="keyword">int</span><span class="special">)</span> <span class="special">&gt;::</span><span class="identifier">type</span> <span class="comment">// is bool
</span></pre>
<p>
Templates that encapsulate properties that are type lists model an MPL-compatible
type sequence.
</p>
<pre class="programlisting">
<a href="reference/decomposition.html#boost_functiontypes.reference.decomposition.parameter_types" title="
parameter_types">parameter_types</a><span class="special">&lt;</span> <span class="keyword">bool</span><span class="special">(</span><span class="keyword">int</span><span class="special">)</span> <span class="special">&gt;</span> <span class="comment">// models an MPL sequence
<a class="link" href="reference/decomposition.html#boost_functiontypes.reference.decomposition.parameter_types" title="parameter_types">parameter_types</a><span class="special">&lt;</span> <span class="keyword">bool</span><span class="special">(</span><span class="keyword">int</span><span class="special">)</span> <span class="special">&gt;</span> <span class="comment">// models an MPL sequence
</span></pre>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><small>Copyright <20> 2004 -2007 Tobias Schwinger</small></td>
<td align="right"><div class="copyright-footer">Copyright <20> 2004 -2007 Tobias Schwinger<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>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">

View File

@ -1,21 +1,21 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title> Rationale</title>
<title>Rationale</title>
<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
<link rel="start" href="../index.html" title="Chapter<65>1.<2E>Boost.FunctionTypes 2.5">
<link rel="up" href="../index.html" title="Chapter<65>1.<2E>Boost.FunctionTypes 2.5">
<link rel="prev" href="reference/macros.html" title=" Macros">
<link rel="next" href="acknowledgements.html" title=" Acknowledgements">
<link rel="prev" href="reference/macros.html" title="Macros">
<link rel="next" href="acknowledgements.html" title="Acknowledgements">
</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"><a href="../../../../../index.htm">Home</a></td>
<td align="center"><a href="../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../libraries.htm">Libraries</a></td>
<td align="center"><a href="../../../../../people/people.htm">People</a></td>
<td align="center"><a href="../../../../../more/faq.htm">FAQ</a></td>
<td align="center"><a href="http://www.boost.org/people/people.htm">People</a></td>
<td align="center"><a href="http://www.boost.org/more/faq.htm">FAQ</a></td>
<td align="center"><a href="../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
@ -24,12 +24,13 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="boost_functiontypes.rationale"></a><a href="rationale.html" title=" Rationale"> Rationale</a></h2></div></div></div>
<a name="boost_functiontypes.rationale.error_handling_rationale"></a><h3>
<a name="id932133"></a>
<a href="rationale.html#boost_functiontypes.rationale.error_handling_rationale">Error
<a name="boost_functiontypes.rationale"></a><a class="link" href="rationale.html" title="Rationale"> Rationale</a>
</h2></div></div></div>
<a name="boost_functiontypes.rationale.error_handling_rationale"></a><h4>
<a name="id2644279"></a>
<a class="link" href="rationale.html#boost_functiontypes.rationale.error_handling_rationale">Error
handling rationale</a>
</h3>
</h4>
<p>
The library does not define the required members of class templates in case
of an error. This technique causes the compiler to stop displaying diagnostics
@ -40,10 +41,10 @@
The library's components have limited error conditions, so problematic input
can be spotted easily.
</p>
<a name="boost_functiontypes.rationale.why_mpl_sequences_"></a><h3>
<a name="id932170"></a>
<a href="rationale.html#boost_functiontypes.rationale.why_mpl_sequences_">Why MPL Sequences?</a>
</h3>
<a name="boost_functiontypes.rationale.why_mpl_sequences_"></a><h4>
<a name="id2644312"></a>
<a class="link" href="rationale.html#boost_functiontypes.rationale.why_mpl_sequences_">Why MPL Sequences?</a>
</h4>
<p>
MPL provides algorithms on Sequences, so transformations (such as turning by-value
parameter types into const references for optimized forwarding or computing
@ -53,20 +54,20 @@
other Boost libraries (most importantly <a href="../../../../fusion/index.html" target="_top">Fusion</a>),
so another reason is interoperability.
</p>
<a name="boost_functiontypes.rationale.pointer_to_member_object_types"></a><h3>
<a name="id932228"></a>
<a href="rationale.html#boost_functiontypes.rationale.pointer_to_member_object_types">Pointer
<a name="boost_functiontypes.rationale.pointer_to_member_object_types"></a><h4>
<a name="id2644363"></a>
<a class="link" href="rationale.html#boost_functiontypes.rationale.pointer_to_member_object_types">Pointer
to member object types</a>
</h3>
</h4>
<p>
Despite their syntax, pointer to member object types can be seen as dereferencing
functionals.
</p>
<a name="boost_functiontypes.rationale.the_classtransform_template_parameter"></a><h3>
<a name="id932259"></a>
<a href="rationale.html#boost_functiontypes.rationale.the_classtransform_template_parameter">The
<a name="boost_functiontypes.rationale.the_classtransform_template_parameter"></a><h4>
<a name="id2644388"></a>
<a class="link" href="rationale.html#boost_functiontypes.rationale.the_classtransform_template_parameter">The
ClassTransform template parameter</a>
</h3>
</h4>
<p>
<code class="literal">This</code>-pointer, <code class="literal">this</code>-reference or just
the object (or maybe even a smart pointer to the object) plus adjustments of
@ -79,10 +80,10 @@
client to adjust the class type before the sequence is formed and then treat
all parameters uniformly.
</p>
<a name="boost_functiontypes.rationale.why_tag_types_"></a><h3>
<a name="id932315"></a>
<a href="rationale.html#boost_functiontypes.rationale.why_tag_types_">Why tag types?</a>
</h3>
<a name="boost_functiontypes.rationale.why_tag_types_"></a><h4>
<a name="id2644439"></a>
<a class="link" href="rationale.html#boost_functiontypes.rationale.why_tag_types_">Why tag types?</a>
</h4>
<p>
Let's consider the alternatives.
</p>
@ -98,12 +99,12 @@
parameters do not work within MPL lambda expressions and can cause problems
with older compilers.
</p>
<a name="boost_functiontypes.rationale.is_it_safe_to_have_the_synthesis_templates_take_a_callable__builtin_type_or_an_mpl_sequence_as_the_first_template_argument_"></a><h3>
<a name="id932365"></a>
<a href="rationale.html#boost_functiontypes.rationale.is_it_safe_to_have_the_synthesis_templates_take_a_callable__builtin_type_or_an_mpl_sequence_as_the_first_template_argument_">Is
<a name="boost_functiontypes.rationale.is_it_safe_to_have_the_synthesis_templates_take_a_callable__builtin_type_or_an_mpl_sequence_as_the_first_template_argument_"></a><h4>
<a name="id2644479"></a>
<a class="link" href="rationale.html#boost_functiontypes.rationale.is_it_safe_to_have_the_synthesis_templates_take_a_callable__builtin_type_or_an_mpl_sequence_as_the_first_template_argument_">Is
it safe to have the synthesis templates take a callable builtin type or an
MPL sequence as the first template argument?</a>
</h3>
</h4>
<p>
Yes, but it isn't immediately obvious as the set of possible MPL sequences
isn't inherently disjoint from the set of callable builtin types.
@ -113,25 +114,23 @@
idea, because builtin types are accessible before the headers that make the
type a sequence have been included, which can easily violate the ODR.
</p>
<a name="boost_functiontypes.rationale.why_does_the_hidden__literal_this__literal__parameter_count_for_the__function_arity_of_member_functions_"></a><h3>
<a name="id932413"></a>
<a href="rationale.html#boost_functiontypes.rationale.why_does_the_hidden__literal_this__literal__parameter_count_for_the__function_arity_of_member_functions_">Why
<a name="boost_functiontypes.rationale.why_does_the_hidden__literal_this__literal__parameter_count_for_the__function_arity_of_member_functions_"></a><h4>
<a name="id2644521"></a>
<a class="link" href="rationale.html#boost_functiontypes.rationale.why_does_the_hidden__literal_this__literal__parameter_count_for_the__function_arity_of_member_functions_">Why
does the hidden <code class="literal">this</code> parameter count for the function arity
of member functions?</a>
</h3>
</h4>
<p>
It was found preferable that the following condition holds:
</p>
<pre class="programlisting">
<span class="identifier">mpl</span><span class="special">::</span><span class="identifier">size</span><span class="special">&lt;</span> <a href="reference/decomposition.html#boost_functiontypes.reference.decomposition.parameter_types" title="
parameter_types">parameter_types</a><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&gt;::</span><span class="identifier">value</span> <span class="special">==</span> <a href="reference/decomposition.html#boost_functiontypes.reference.decomposition.function_arity" title="
function_arity">function_arity</a><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">value</span>
<span class="identifier">mpl</span><span class="special">::</span><span class="identifier">size</span><span class="special">&lt;</span> <a class="link" href="reference/decomposition.html#boost_functiontypes.reference.decomposition.parameter_types" title="parameter_types">parameter_types</a><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;</span> <span class="special">&gt;::</span><span class="identifier">value</span> <span class="special">==</span> <a class="link" href="reference/decomposition.html#boost_functiontypes.reference.decomposition.function_arity" title="function_arity">function_arity</a><span class="special">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</span><span class="identifier">value</span>
</pre>
<a name="boost_functiontypes.rationale.why_ignore_top_level_cv_qualifiers_on_pointers_"></a><h3>
<a name="id932540"></a>
<a href="rationale.html#boost_functiontypes.rationale.why_ignore_top_level_cv_qualifiers_on_pointers_">Why
<a name="boost_functiontypes.rationale.why_ignore_top_level_cv_qualifiers_on_pointers_"></a><h4>
<a name="id2644638"></a>
<a class="link" href="rationale.html#boost_functiontypes.rationale.why_ignore_top_level_cv_qualifiers_on_pointers_">Why
ignore top-level cv-qualifiers on pointers?</a>
</h3>
</h4>
<p>
A cv-qualified pointer is still a pointer. It usually doesn't matter and even
if it does, it's a job for <a href="../../../../type_traits/index.html" target="_top">Boost.TypeTraits</a>.
@ -139,7 +138,11 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><small>Copyright <20> 2004 -2007 Tobias Schwinger</small></td>
<td align="right"><div class="copyright-footer">Copyright <20> 2004 -2007 Tobias Schwinger<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>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">

View File

@ -1,22 +1,21 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title> Reference</title>
<title>Reference</title>
<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
<link rel="start" href="../index.html" title="Chapter<65>1.<2E>Boost.FunctionTypes 2.5">
<link rel="up" href="../index.html" title="Chapter<65>1.<2E>Boost.FunctionTypes 2.5">
<link rel="prev" href="about_tag_types.html" title=" About Tag Types">
<link rel="next" href="reference/classification.html" title=" Class
templates for type classification">
<link rel="prev" href="about_tag_types.html" title="About Tag Types">
<link rel="next" href="reference/classification.html" title="Class templates for type classification">
</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"><a href="../../../../../index.htm">Home</a></td>
<td align="center"><a href="../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../libraries.htm">Libraries</a></td>
<td align="center"><a href="../../../../../people/people.htm">People</a></td>
<td align="center"><a href="../../../../../more/faq.htm">FAQ</a></td>
<td align="center"><a href="http://www.boost.org/people/people.htm">People</a></td>
<td align="center"><a href="http://www.boost.org/more/faq.htm">FAQ</a></td>
<td align="center"><a href="../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
@ -25,7 +24,8 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="boost_functiontypes.reference"></a><a href="reference.html" title=" Reference"> Reference</a></h2></div></div></div>
<a name="boost_functiontypes.reference"></a><a class="link" href="reference.html" title="Reference"> Reference</a>
</h2></div></div></div>
<div class="toc"><dl>
<dt><span class="section"><a href="reference/classification.html"> Class
templates for type classification</a></span></dt>
@ -39,7 +39,11 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><small>Copyright <20> 2004 -2007 Tobias Schwinger</small></td>
<td align="right"><div class="copyright-footer">Copyright <20> 2004 -2007 Tobias Schwinger<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>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">

View File

@ -1,23 +1,21 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title> Class
templates for type classification</title>
<title>Class templates for type classification</title>
<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
<link rel="start" href="../../index.html" title="Chapter<65>1.<2E>Boost.FunctionTypes 2.5">
<link rel="up" href="../reference.html" title=" Reference">
<link rel="prev" href="../reference.html" title=" Reference">
<link rel="next" href="decomposition.html" title=" Class templates
for type decomposition">
<link rel="up" href="../reference.html" title="Reference">
<link rel="prev" href="../reference.html" title="Reference">
<link rel="next" href="decomposition.html" title="Class templates for type decomposition">
</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"><a href="../../../../../../index.htm">Home</a></td>
<td align="center"><a href="../../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../libraries.htm">Libraries</a></td>
<td align="center"><a href="../../../../../../people/people.htm">People</a></td>
<td align="center"><a href="../../../../../../more/faq.htm">FAQ</a></td>
<td align="center"><a href="http://www.boost.org/people/people.htm">People</a></td>
<td align="center"><a href="http://www.boost.org/more/faq.htm">FAQ</a></td>
<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
@ -26,9 +24,9 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_functiontypes.reference.classification"></a><a href="classification.html" title=" Class
templates for type classification"> Class
templates for type classification</a></h3></div></div></div>
<a name="boost_functiontypes.reference.classification"></a><a class="link" href="classification.html" title="Class templates for type classification"> Class
templates for type classification</a>
</h3></div></div></div>
<div class="toc"><dl>
<dt><span class="section"><a href="classification.html#boost_functiontypes.reference.classification.is_function">
is_function</a></span></dt>
@ -49,12 +47,11 @@
</dl></div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_functiontypes.reference.classification.is_function"></a><a href="classification.html#boost_functiontypes.reference.classification.is_function" title="
is_function">
is_function</a></h4></div></div></div>
<a name="boost_functiontypes.reference.classification.is_function"></a><a class="link" href="classification.html#boost_functiontypes.reference.classification.is_function" title="is_function">
is_function</a>
</h4></div></div></div>
<pre class="programlisting">
<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="
null_tag">null_tag</a><span class="special">&gt;</span>
<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="null_tag">null_tag</a><span class="special">&gt;</span>
<span class="keyword">struct</span> <span class="identifier">is_function</span><span class="special">;</span>
</pre>
<p>
@ -93,12 +90,11 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_functiontypes.reference.classification.is_function_pointer"></a><a href="classification.html#boost_functiontypes.reference.classification.is_function_pointer" title="
is_function_pointer">
is_function_pointer</a></h4></div></div></div>
<a name="boost_functiontypes.reference.classification.is_function_pointer"></a><a class="link" href="classification.html#boost_functiontypes.reference.classification.is_function_pointer" title="is_function_pointer">
is_function_pointer</a>
</h4></div></div></div>
<pre class="programlisting">
<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="
null_tag">null_tag</a><span class="special">&gt;</span>
<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="null_tag">null_tag</a><span class="special">&gt;</span>
<span class="keyword">struct</span> <span class="identifier">is_function_pointer</span><span class="special">;</span>
</pre>
<p>
@ -137,12 +133,11 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_functiontypes.reference.classification.is_function_reference"></a><a href="classification.html#boost_functiontypes.reference.classification.is_function_reference" title="
is_function_reference">
is_function_reference</a></h4></div></div></div>
<a name="boost_functiontypes.reference.classification.is_function_reference"></a><a class="link" href="classification.html#boost_functiontypes.reference.classification.is_function_reference" title="is_function_reference">
is_function_reference</a>
</h4></div></div></div>
<pre class="programlisting">
<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="
null_tag">null_tag</a><span class="special">&gt;</span>
<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="null_tag">null_tag</a><span class="special">&gt;</span>
<span class="keyword">struct</span> <span class="identifier">is_function_reference</span><span class="special">;</span>
</pre>
<p>
@ -181,12 +176,11 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_functiontypes.reference.classification.is_member_pointer"></a><a href="classification.html#boost_functiontypes.reference.classification.is_member_pointer" title="
is_member_pointer">
is_member_pointer</a></h4></div></div></div>
<a name="boost_functiontypes.reference.classification.is_member_pointer"></a><a class="link" href="classification.html#boost_functiontypes.reference.classification.is_member_pointer" title="is_member_pointer">
is_member_pointer</a>
</h4></div></div></div>
<pre class="programlisting">
<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="
null_tag">null_tag</a><span class="special">&gt;</span>
<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="null_tag">null_tag</a><span class="special">&gt;</span>
<span class="keyword">struct</span> <span class="identifier">is_member_pointer</span><span class="special">;</span>
</pre>
<p>
@ -225,9 +219,9 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_functiontypes.reference.classification.is_member_object_pointer"></a><a href="classification.html#boost_functiontypes.reference.classification.is_member_object_pointer" title="
is_member_object_pointer">
is_member_object_pointer</a></h4></div></div></div>
<a name="boost_functiontypes.reference.classification.is_member_object_pointer"></a><a class="link" href="classification.html#boost_functiontypes.reference.classification.is_member_object_pointer" title="is_member_object_pointer">
is_member_object_pointer</a>
</h4></div></div></div>
<pre class="programlisting">
<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</span>
<span class="keyword">struct</span> <span class="identifier">is_member_object_pointer</span><span class="special">;</span>
@ -263,12 +257,11 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_functiontypes.reference.classification.is_member_function_pointer"></a><a href="classification.html#boost_functiontypes.reference.classification.is_member_function_pointer" title="
is_member_function_pointer">
is_member_function_pointer</a></h4></div></div></div>
<a name="boost_functiontypes.reference.classification.is_member_function_pointer"></a><a class="link" href="classification.html#boost_functiontypes.reference.classification.is_member_function_pointer" title="is_member_function_pointer">
is_member_function_pointer</a>
</h4></div></div></div>
<pre class="programlisting">
<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="
null_tag">null_tag</a><span class="special">&gt;</span>
<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="null_tag">null_tag</a><span class="special">&gt;</span>
<span class="keyword">struct</span> <span class="identifier">is_member_function_pointer</span><span class="special">;</span>
</pre>
<p>
@ -307,12 +300,11 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_functiontypes.reference.classification.is_callable_builtin"></a><a href="classification.html#boost_functiontypes.reference.classification.is_callable_builtin" title="
is_callable_builtin">
is_callable_builtin</a></h4></div></div></div>
<a name="boost_functiontypes.reference.classification.is_callable_builtin"></a><a class="link" href="classification.html#boost_functiontypes.reference.classification.is_callable_builtin" title="is_callable_builtin">
is_callable_builtin</a>
</h4></div></div></div>
<pre class="programlisting">
<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="
null_tag">null_tag</a><span class="special">&gt;</span>
<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="null_tag">null_tag</a><span class="special">&gt;</span>
<span class="keyword">struct</span> <span class="identifier">is_callable_builtin</span><span class="special">;</span>
</pre>
<p>
@ -351,12 +343,11 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_functiontypes.reference.classification.is_nonmember_callable_builtin"></a><a href="classification.html#boost_functiontypes.reference.classification.is_nonmember_callable_builtin" title="
is_nonmember_callable_builtin">
is_nonmember_callable_builtin</a></h4></div></div></div>
<a name="boost_functiontypes.reference.classification.is_nonmember_callable_builtin"></a><a class="link" href="classification.html#boost_functiontypes.reference.classification.is_nonmember_callable_builtin" title="is_nonmember_callable_builtin">
is_nonmember_callable_builtin</a>
</h4></div></div></div>
<pre class="programlisting">
<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="
null_tag">null_tag</a><span class="special">&gt;</span>
<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="null_tag">null_tag</a><span class="special">&gt;</span>
<span class="keyword">struct</span> <span class="identifier">is_nonmember_callable_builtin</span><span class="special">;</span>
</pre>
<p>
@ -397,7 +388,11 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><small>Copyright <20> 2004 -2007 Tobias Schwinger</small></td>
<td align="right"><div class="copyright-footer">Copyright <20> 2004 -2007 Tobias Schwinger<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>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">

View File

@ -1,24 +1,21 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title> Class templates
for type decomposition</title>
<title>Class templates for type decomposition</title>
<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
<link rel="start" href="../../index.html" title="Chapter<65>1.<2E>Boost.FunctionTypes 2.5">
<link rel="up" href="../reference.html" title=" Reference">
<link rel="prev" href="classification.html" title=" Class
templates for type classification">
<link rel="next" href="synthesis.html" title=" Class templates
for type synthesis">
<link rel="up" href="../reference.html" title="Reference">
<link rel="prev" href="classification.html" title="Class templates for type classification">
<link rel="next" href="synthesis.html" title="Class templates for type synthesis">
</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"><a href="../../../../../../index.htm">Home</a></td>
<td align="center"><a href="../../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../libraries.htm">Libraries</a></td>
<td align="center"><a href="../../../../../../people/people.htm">People</a></td>
<td align="center"><a href="../../../../../../more/faq.htm">FAQ</a></td>
<td align="center"><a href="http://www.boost.org/people/people.htm">People</a></td>
<td align="center"><a href="http://www.boost.org/more/faq.htm">FAQ</a></td>
<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
@ -27,9 +24,9 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_functiontypes.reference.decomposition"></a><a href="decomposition.html" title=" Class templates
for type decomposition"> Class templates
for type decomposition</a></h3></div></div></div>
<a name="boost_functiontypes.reference.decomposition"></a><a class="link" href="decomposition.html" title="Class templates for type decomposition"> Class templates
for type decomposition</a>
</h3></div></div></div>
<div class="toc"><dl>
<dt><span class="section"><a href="decomposition.html#boost_functiontypes.reference.decomposition.result_type">
result_type</a></span></dt>
@ -42,9 +39,9 @@
</dl></div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_functiontypes.reference.decomposition.result_type"></a><a href="decomposition.html#boost_functiontypes.reference.decomposition.result_type" title="
result_type">
result_type</a></h4></div></div></div>
<a name="boost_functiontypes.reference.decomposition.result_type"></a><a class="link" href="decomposition.html#boost_functiontypes.reference.decomposition.result_type" title="result_type">
result_type</a>
</h4></div></div></div>
<pre class="programlisting">
<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">F</span><span class="special">&gt;</span>
<span class="keyword">struct</span> <span class="identifier">result_type</span><span class="special">;</span>
@ -78,9 +75,9 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_functiontypes.reference.decomposition.parameter_types"></a><a href="decomposition.html#boost_functiontypes.reference.decomposition.parameter_types" title="
parameter_types">
parameter_types</a></h4></div></div></div>
<a name="boost_functiontypes.reference.decomposition.parameter_types"></a><a class="link" href="decomposition.html#boost_functiontypes.reference.decomposition.parameter_types" title="parameter_types">
parameter_types</a>
</h4></div></div></div>
<pre class="programlisting">
<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">F</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">ClassTransform</span> <span class="special">=</span> <span class="identifier">add_reference</span><span class="special">&lt;</span><span class="identifier">_</span><span class="special">&gt;</span> <span class="special">&gt;</span>
<span class="keyword">struct</span> <span class="identifier">parameter_types</span><span class="special">;</span>
@ -124,9 +121,9 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_functiontypes.reference.decomposition.function_arity"></a><a href="decomposition.html#boost_functiontypes.reference.decomposition.function_arity" title="
function_arity">
function_arity</a></h4></div></div></div>
<a name="boost_functiontypes.reference.decomposition.function_arity"></a><a class="link" href="decomposition.html#boost_functiontypes.reference.decomposition.function_arity" title="function_arity">
function_arity</a>
</h4></div></div></div>
<pre class="programlisting">
<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">F</span><span class="special">&gt;</span>
<span class="keyword">struct</span> <span class="identifier">function_arity</span><span class="special">;</span>
@ -169,9 +166,9 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_functiontypes.reference.decomposition.components"></a><a href="decomposition.html#boost_functiontypes.reference.decomposition.components" title="
components">
components</a></h4></div></div></div>
<a name="boost_functiontypes.reference.decomposition.components"></a><a class="link" href="decomposition.html#boost_functiontypes.reference.decomposition.components" title="components">
components</a>
</h4></div></div></div>
<pre class="programlisting">
<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">ClassTransform</span> <span class="special">=</span> <span class="identifier">add_reference</span><span class="special">&lt;</span><span class="identifier">_</span><span class="special">&gt;</span> <span class="special">&gt;</span>
<span class="keyword">struct</span> <span class="identifier">components</span><span class="special">;</span>
@ -216,14 +213,17 @@
</p>
<p>
If <code class="literal">T</code> is no callable builtin type, the component types
are an empty sequence and the Tag's meaning is equivalent to the <code class="literal"><a href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="
null_tag">null_tag</a></code>.
are an empty sequence and the Tag's meaning is equivalent to the <code class="literal"><a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="null_tag">null_tag</a></code>.
</p>
</div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><small>Copyright <20> 2004 -2007 Tobias Schwinger</small></td>
<td align="right"><div class="copyright-footer">Copyright <20> 2004 -2007 Tobias Schwinger<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>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">

View File

@ -1,21 +1,21 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title> Macros</title>
<title>Macros</title>
<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
<link rel="start" href="../../index.html" title="Chapter<65>1.<2E>Boost.FunctionTypes 2.5">
<link rel="up" href="../reference.html" title=" Reference">
<link rel="prev" href="tag_types.html" title=" Tag Types">
<link rel="next" href="../rationale.html" title=" Rationale">
<link rel="up" href="../reference.html" title="Reference">
<link rel="prev" href="tag_types.html" title="Tag Types">
<link rel="next" href="../rationale.html" title="Rationale">
</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"><a href="../../../../../../index.htm">Home</a></td>
<td align="center"><a href="../../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../libraries.htm">Libraries</a></td>
<td align="center"><a href="../../../../../../people/people.htm">People</a></td>
<td align="center"><a href="../../../../../../more/faq.htm">FAQ</a></td>
<td align="center"><a href="http://www.boost.org/people/people.htm">People</a></td>
<td align="center"><a href="http://www.boost.org/more/faq.htm">FAQ</a></td>
<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
@ -24,7 +24,8 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_functiontypes.reference.macros"></a><a href="macros.html" title=" Macros"> Macros</a></h3></div></div></div>
<a name="boost_functiontypes.reference.macros"></a><a class="link" href="macros.html" title="Macros"> Macros</a>
</h3></div></div></div>
<div class="toc"><dl>
<dt><span class="section"><a href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_MAX_ARITY">
BOOST_FT_MAX_ARITY</a></span></dt>
@ -47,9 +48,9 @@
</dl></div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_functiontypes.reference.macros.BOOST_FT_MAX_ARITY"></a><a href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_MAX_ARITY" title="
BOOST_FT_MAX_ARITY">
BOOST_FT_MAX_ARITY</a></h4></div></div></div>
<a name="boost_functiontypes.reference.macros.BOOST_FT_MAX_ARITY"></a><a class="link" href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_MAX_ARITY" title="BOOST_FT_MAX_ARITY">
BOOST_FT_MAX_ARITY</a>
</h4></div></div></div>
<p>
Expands to a numeric value that describes the maximum function arity supported
by the library.
@ -66,17 +67,16 @@
</p>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_functiontypes.reference.macros.BOOST_FT_CC_NAMES"></a><a href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_CC_NAMES" title="
BOOST_FT_CC_NAMES">
BOOST_FT_CC_NAMES</a></h4></div></div></div>
<a name="boost_functiontypes.reference.macros.BOOST_FT_CC_NAMES"></a><a class="link" href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_CC_NAMES" title="BOOST_FT_CC_NAMES">
BOOST_FT_CC_NAMES</a>
</h4></div></div></div>
<p>
Expands to a <a href="../../../../../preprocessor/doc/data/sequences.html" target="_top">sequence</a>
of ternary <a href="../../../../../preprocessor/doc/data/tuples.html" target="_top">tuples</a>
(these data types are defined in the <a href="../../../../../preprocessor/doc/index.html" target="_top">documentation
of the Boost Preprocessor library</a>). Each sequence element describes
one calling convention specifier. The first element in each tuple is the
macro suffix for <a href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_CC" title="
BOOST_FT_CC_*"><code class="literal">BOOST_FT_CC_*</code></a>,
macro suffix for <a class="link" href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_CC" title="BOOST_FT_CC_*"><code class="literal">BOOST_FT_CC_*</code></a>,
the second element is the name of the tag that describes the calling convention
and the third is the name of the specifier. The specifier is allowed to
be an empty string, so the third tuple element is either <a href="../../../../../preprocessor/doc/ref/empty.html" target="_top"><code class="literal">BOOST_PP_EMPTY</code></a>
@ -106,15 +106,13 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_functiontypes.reference.macros.BOOST_FT_CC"></a><a href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_CC" title="
BOOST_FT_CC_*">
BOOST_FT_CC_*</a></h4></div></div></div>
<a name="boost_functiontypes.reference.macros.BOOST_FT_CC"></a><a class="link" href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_CC" title="BOOST_FT_CC_*">
BOOST_FT_CC_*</a>
</h4></div></div></div>
<p>
Enables a specific calling convention. * dentoes the macro suffix, as defined
by <a href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_CC_NAMES" title="
BOOST_FT_CC_NAMES"><code class="literal">BOOST_FT_CC_NAMES</code></a>
or <a href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_CC_NAMES" title="
BOOST_FT_CC_NAMES"><code class="literal">BOOST_FT_BUILTIN_CC_NAMES</code></a>.
Enables a specific calling convention. * denotes the macro suffix, as defined
by <a class="link" href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_CC_NAMES" title="BOOST_FT_CC_NAMES"><code class="literal">BOOST_FT_CC_NAMES</code></a>
or <a class="link" href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_CC_NAMES" title="BOOST_FT_CC_NAMES"><code class="literal">BOOST_FT_BUILTIN_CC_NAMES</code></a>.
</p>
<p>
The macro expands to a list of restrictions, separated by the <code class="literal">|</code>
@ -149,9 +147,9 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_functiontypes.reference.macros.BOOST_FT_COMMON_X86_CCs"></a><a href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_COMMON_X86_CCs" title="
BOOST_FT_COMMON_X86_CCs">
BOOST_FT_COMMON_X86_CCs</a></h4></div></div></div>
<a name="boost_functiontypes.reference.macros.BOOST_FT_COMMON_X86_CCs"></a><a class="link" href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_COMMON_X86_CCs" title="BOOST_FT_COMMON_X86_CCs">
BOOST_FT_COMMON_X86_CCs</a>
</h4></div></div></div>
<p>
Defining this macro causes the following macros to be defined, if not defined
already:
@ -164,9 +162,9 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_functiontypes.reference.macros.BOOST_FT_SYNTAX"></a><a href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_SYNTAX" title="
BOOST_FT_SYNTAX">
BOOST_FT_SYNTAX</a></h4></div></div></div>
<a name="boost_functiontypes.reference.macros.BOOST_FT_SYNTAX"></a><a class="link" href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_SYNTAX" title="BOOST_FT_SYNTAX">
BOOST_FT_SYNTAX</a>
</h4></div></div></div>
<p>
This macro allows to change the syntax of callable builtin types. It is
useful to handle the compiler specific placement of the calling convention
@ -182,9 +180,9 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_functiontypes.reference.macros.BOOST_FT_NULLARY_PARAM"></a><a href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_NULLARY_PARAM" title="
BOOST_FT_NULLARY_PARAM">
BOOST_FT_NULLARY_PARAM</a></h4></div></div></div>
<a name="boost_functiontypes.reference.macros.BOOST_FT_NULLARY_PARAM"></a><a class="link" href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_NULLARY_PARAM" title="BOOST_FT_NULLARY_PARAM">
BOOST_FT_NULLARY_PARAM</a>
</h4></div></div></div>
<p>
Set to <code class="literal">void</code> for compilers that insist on a <code class="literal">void</code>
parameter for nullary function types, empty by default.
@ -192,9 +190,9 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_functiontypes.reference.macros.BOOST_FT_NO_CV_FUNC_SUPPORT"></a><a href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_NO_CV_FUNC_SUPPORT" title="
BOOST_FT_NO_CV_FUNC_SUPPORT">
BOOST_FT_NO_CV_FUNC_SUPPORT</a></h4></div></div></div>
<a name="boost_functiontypes.reference.macros.BOOST_FT_NO_CV_FUNC_SUPPORT"></a><a class="link" href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_NO_CV_FUNC_SUPPORT" title="BOOST_FT_NO_CV_FUNC_SUPPORT">
BOOST_FT_NO_CV_FUNC_SUPPORT</a>
</h4></div></div></div>
<p>
Disables support for cv-qualified function types. Cv-qualified function
types are illegal by the current standard version, but there is a pending
@ -209,9 +207,9 @@
</p>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_functiontypes.reference.macros.BOOST_FT_PREPROCESSING_MODE"></a><a href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_PREPROCESSING_MODE" title="
BOOST_FT_PREPROCESSING_MODE">
BOOST_FT_PREPROCESSING_MODE</a></h4></div></div></div>
<a name="boost_functiontypes.reference.macros.BOOST_FT_PREPROCESSING_MODE"></a><a class="link" href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_PREPROCESSING_MODE" title="BOOST_FT_PREPROCESSING_MODE">
BOOST_FT_PREPROCESSING_MODE</a>
</h4></div></div></div>
<p>
Makes the compiler preprocess as much as possible of the library code (rather
than loading already-preprocessed header files) if defined.
@ -219,24 +217,27 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_functiontypes.reference.macros.BOOST_FT_CC_PREPROCESSING"></a><a href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_CC_PREPROCESSING" title="
BOOST_FT_CC_PREPROCESSING">
BOOST_FT_CC_PREPROCESSING</a></h4></div></div></div>
<a name="boost_functiontypes.reference.macros.BOOST_FT_CC_PREPROCESSING"></a><a class="link" href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_CC_PREPROCESSING" title="BOOST_FT_CC_PREPROCESSING">
BOOST_FT_CC_PREPROCESSING</a>
</h4></div></div></div>
<p>
Makes the compiler preprocess the loop over possible names for custom calling
conventions (rather than loading an already-preprocessed header file) if
defined.
</p>
<p>
This macro is defined automatically if <a href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_CC_NAMES" title="
BOOST_FT_CC_NAMES"><code class="literal">BOOST_FT_CC_NAMES</code></a>
This macro is defined automatically if <a class="link" href="macros.html#boost_functiontypes.reference.macros.BOOST_FT_CC_NAMES" title="BOOST_FT_CC_NAMES"><code class="literal">BOOST_FT_CC_NAMES</code></a>
has been defined.
</p>
</div>
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><small>Copyright <20> 2004 -2007 Tobias Schwinger</small></td>
<td align="right"><div class="copyright-footer">Copyright <20> 2004 -2007 Tobias Schwinger<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>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">

View File

@ -1,23 +1,21 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title> Class templates
for type synthesis</title>
<title>Class templates for type synthesis</title>
<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
<link rel="start" href="../../index.html" title="Chapter<65>1.<2E>Boost.FunctionTypes 2.5">
<link rel="up" href="../reference.html" title=" Reference">
<link rel="prev" href="decomposition.html" title=" Class templates
for type decomposition">
<link rel="next" href="tag_types.html" title=" Tag Types">
<link rel="up" href="../reference.html" title="Reference">
<link rel="prev" href="decomposition.html" title="Class templates for type decomposition">
<link rel="next" href="tag_types.html" title="Tag Types">
</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"><a href="../../../../../../index.htm">Home</a></td>
<td align="center"><a href="../../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../libraries.htm">Libraries</a></td>
<td align="center"><a href="../../../../../../people/people.htm">People</a></td>
<td align="center"><a href="../../../../../../more/faq.htm">FAQ</a></td>
<td align="center"><a href="http://www.boost.org/people/people.htm">People</a></td>
<td align="center"><a href="http://www.boost.org/more/faq.htm">FAQ</a></td>
<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
@ -26,9 +24,9 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_functiontypes.reference.synthesis"></a><a href="synthesis.html" title=" Class templates
for type synthesis"> Class templates
for type synthesis</a></h3></div></div></div>
<a name="boost_functiontypes.reference.synthesis"></a><a class="link" href="synthesis.html" title="Class templates for type synthesis"> Class templates
for type synthesis</a>
</h3></div></div></div>
<div class="toc"><dl>
<dt><span class="section"><a href="synthesis.html#boost_functiontypes.reference.synthesis.function_type">
function_type</a></span></dt>
@ -41,12 +39,11 @@
</dl></div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_functiontypes.reference.synthesis.function_type"></a><a href="synthesis.html#boost_functiontypes.reference.synthesis.function_type" title="
function_type">
function_type</a></h4></div></div></div>
<a name="boost_functiontypes.reference.synthesis.function_type"></a><a class="link" href="synthesis.html#boost_functiontypes.reference.synthesis.function_type" title="function_type">
function_type</a>
</h4></div></div></div>
<pre class="programlisting">
<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Types</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="
null_tag">null_tag</a><span class="special">&gt;</span>
<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Types</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="null_tag">null_tag</a><span class="special">&gt;</span>
<span class="keyword">struct</span> <span class="identifier">function_type</span><span class="special">;</span>
</pre>
<p>
@ -84,12 +81,11 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_functiontypes.reference.synthesis.function_pointer"></a><a href="synthesis.html#boost_functiontypes.reference.synthesis.function_pointer" title="
function_pointer">
function_pointer</a></h4></div></div></div>
<a name="boost_functiontypes.reference.synthesis.function_pointer"></a><a class="link" href="synthesis.html#boost_functiontypes.reference.synthesis.function_pointer" title="function_pointer">
function_pointer</a>
</h4></div></div></div>
<pre class="programlisting">
<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Types</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="
null_tag">null_tag</a><span class="special">&gt;</span>
<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Types</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="null_tag">null_tag</a><span class="special">&gt;</span>
<span class="keyword">struct</span> <span class="identifier">function_pointer</span><span class="special">;</span>
</pre>
<p>
@ -127,12 +123,11 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_functiontypes.reference.synthesis.function_reference"></a><a href="synthesis.html#boost_functiontypes.reference.synthesis.function_reference" title="
function_reference">
function_reference</a></h4></div></div></div>
<a name="boost_functiontypes.reference.synthesis.function_reference"></a><a class="link" href="synthesis.html#boost_functiontypes.reference.synthesis.function_reference" title="function_reference">
function_reference</a>
</h4></div></div></div>
<pre class="programlisting">
<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Types</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="
null_tag">null_tag</a><span class="special">&gt;</span>
<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Types</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="null_tag">null_tag</a><span class="special">&gt;</span>
<span class="keyword">struct</span> <span class="identifier">function_reference</span><span class="special">;</span>
</pre>
<p>
@ -170,12 +165,11 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_functiontypes.reference.synthesis.member_function_pointer"></a><a href="synthesis.html#boost_functiontypes.reference.synthesis.member_function_pointer" title="
member_function_pointer">
member_function_pointer</a></h4></div></div></div>
<a name="boost_functiontypes.reference.synthesis.member_function_pointer"></a><a class="link" href="synthesis.html#boost_functiontypes.reference.synthesis.member_function_pointer" title="member_function_pointer">
member_function_pointer</a>
</h4></div></div></div>
<pre class="programlisting">
<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Types</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="
null_tag">null_tag</a><span class="special">&gt;</span>
<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">Types</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">Tag</span> <span class="special">=</span> <a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="null_tag">null_tag</a><span class="special">&gt;</span>
<span class="keyword">struct</span> <span class="identifier">member_function_pointer</span><span class="special">;</span>
</pre>
<p>
@ -220,7 +214,11 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><small>Copyright <20> 2004 -2007 Tobias Schwinger</small></td>
<td align="right"><div class="copyright-footer">Copyright <20> 2004 -2007 Tobias Schwinger<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>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">

View File

@ -1,22 +1,21 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title> Tag Types</title>
<title>Tag Types</title>
<link rel="stylesheet" href="../../../../../../doc/html/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
<link rel="start" href="../../index.html" title="Chapter<65>1.<2E>Boost.FunctionTypes 2.5">
<link rel="up" href="../reference.html" title=" Reference">
<link rel="prev" href="synthesis.html" title=" Class templates
for type synthesis">
<link rel="next" href="macros.html" title=" Macros">
<link rel="up" href="../reference.html" title="Reference">
<link rel="prev" href="synthesis.html" title="Class templates for type synthesis">
<link rel="next" href="macros.html" title="Macros">
</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"><a href="../../../../../../index.htm">Home</a></td>
<td align="center"><a href="../../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../../libraries.htm">Libraries</a></td>
<td align="center"><a href="../../../../../../people/people.htm">People</a></td>
<td align="center"><a href="../../../../../../more/faq.htm">FAQ</a></td>
<td align="center"><a href="http://www.boost.org/people/people.htm">People</a></td>
<td align="center"><a href="http://www.boost.org/more/faq.htm">FAQ</a></td>
<td align="center"><a href="../../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
@ -25,7 +24,8 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_functiontypes.reference.tag_types"></a><a href="tag_types.html" title=" Tag Types"> Tag Types</a></h3></div></div></div>
<a name="boost_functiontypes.reference.tag_types"></a><a class="link" href="tag_types.html" title="Tag Types"> Tag Types</a>
</h3></div></div></div>
<div class="toc"><dl>
<dt><span class="section"><a href="tag_types.html#boost_functiontypes.reference.tag_types.variadic">
variadic</a></span></dt>
@ -54,9 +54,9 @@
</dl></div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_functiontypes.reference.tag_types.variadic"></a><a href="tag_types.html#boost_functiontypes.reference.tag_types.variadic" title="
variadic">
variadic</a></h4></div></div></div>
<a name="boost_functiontypes.reference.tag_types.variadic"></a><a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.variadic" title="variadic">
variadic</a>
</h4></div></div></div>
<pre class="programlisting">
<span class="keyword">typedef</span> <span class="emphasis"><em>unspecified</em></span> <span class="identifier">variadic</span><span class="special">;</span>
</pre>
@ -73,9 +73,9 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_functiontypes.reference.tag_types.non_variadic"></a><a href="tag_types.html#boost_functiontypes.reference.tag_types.non_variadic" title="
non_variadic">
non_variadic</a></h4></div></div></div>
<a name="boost_functiontypes.reference.tag_types.non_variadic"></a><a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.non_variadic" title="non_variadic">
non_variadic</a>
</h4></div></div></div>
<pre class="programlisting">
<span class="keyword">typedef</span> <span class="emphasis"><em>unspecified</em></span> <span class="identifier">non_variadic</span><span class="special">;</span>
</pre>
@ -91,9 +91,9 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_functiontypes.reference.tag_types.default_cc"></a><a href="tag_types.html#boost_functiontypes.reference.tag_types.default_cc" title="
default_cc">
default_cc</a></h4></div></div></div>
<a name="boost_functiontypes.reference.tag_types.default_cc"></a><a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.default_cc" title="default_cc">
default_cc</a>
</h4></div></div></div>
<pre class="programlisting">
<span class="keyword">typedef</span> <span class="emphasis"><em>unspecified</em></span> <span class="identifier">default_cc</span><span class="special">;</span>
</pre>
@ -109,9 +109,9 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_functiontypes.reference.tag_types.const_qualified"></a><a href="tag_types.html#boost_functiontypes.reference.tag_types.const_qualified" title="
const_qualified">
const_qualified</a></h4></div></div></div>
<a name="boost_functiontypes.reference.tag_types.const_qualified"></a><a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.const_qualified" title="const_qualified">
const_qualified</a>
</h4></div></div></div>
<pre class="programlisting">
<span class="keyword">typedef</span> <span class="emphasis"><em>unspecified</em></span> <span class="identifier">const_qualified</span><span class="special">;</span>
</pre>
@ -127,9 +127,9 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_functiontypes.reference.tag_types.non_const"></a><a href="tag_types.html#boost_functiontypes.reference.tag_types.non_const" title="
non_const">
non_const</a></h4></div></div></div>
<a name="boost_functiontypes.reference.tag_types.non_const"></a><a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.non_const" title="non_const">
non_const</a>
</h4></div></div></div>
<pre class="programlisting">
<span class="keyword">typedef</span> <span class="emphasis"><em>unspecified</em></span> <span class="identifier">non_const</span><span class="special">;</span>
</pre>
@ -145,9 +145,9 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_functiontypes.reference.tag_types.volatile_qualified"></a><a href="tag_types.html#boost_functiontypes.reference.tag_types.volatile_qualified" title="
volatile_qualified">
volatile_qualified</a></h4></div></div></div>
<a name="boost_functiontypes.reference.tag_types.volatile_qualified"></a><a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.volatile_qualified" title="volatile_qualified">
volatile_qualified</a>
</h4></div></div></div>
<pre class="programlisting">
<span class="keyword">typedef</span> <span class="emphasis"><em>unspecified</em></span> <span class="identifier">volatile_qualified</span><span class="special">;</span>
</pre>
@ -163,9 +163,9 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_functiontypes.reference.tag_types.non_volatile"></a><a href="tag_types.html#boost_functiontypes.reference.tag_types.non_volatile" title="
non_volatile">
non_volatile</a></h4></div></div></div>
<a name="boost_functiontypes.reference.tag_types.non_volatile"></a><a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.non_volatile" title="non_volatile">
non_volatile</a>
</h4></div></div></div>
<pre class="programlisting">
<span class="keyword">typedef</span> <span class="emphasis"><em>unspecified</em></span> <span class="identifier">non_volatile</span><span class="special">;</span>
</pre>
@ -181,7 +181,8 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_functiontypes.reference.tag_types.non_cv"></a><a href="tag_types.html#boost_functiontypes.reference.tag_types.non_cv" title=" non_cv"> non_cv</a></h4></div></div></div>
<a name="boost_functiontypes.reference.tag_types.non_cv"></a><a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.non_cv" title="non_cv"> non_cv</a>
</h4></div></div></div>
<pre class="programlisting">
<span class="keyword">typedef</span> <span class="emphasis"><em>unspecified</em></span> <span class="identifier">non_cv</span><span class="special">;</span>
</pre>
@ -199,9 +200,9 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_functiontypes.reference.tag_types.const_non_volatile"></a><a href="tag_types.html#boost_functiontypes.reference.tag_types.const_non_volatile" title="
const_non_volatile">
const_non_volatile</a></h4></div></div></div>
<a name="boost_functiontypes.reference.tag_types.const_non_volatile"></a><a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.const_non_volatile" title="const_non_volatile">
const_non_volatile</a>
</h4></div></div></div>
<pre class="programlisting">
<span class="keyword">typedef</span> <span class="emphasis"><em>unspecified</em></span> <span class="identifier">const_non_volatile</span><span class="special">;</span>
</pre>
@ -219,9 +220,9 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_functiontypes.reference.tag_types.volatile_non_const"></a><a href="tag_types.html#boost_functiontypes.reference.tag_types.volatile_non_const" title="
volatile_non_const">
volatile_non_const</a></h4></div></div></div>
<a name="boost_functiontypes.reference.tag_types.volatile_non_const"></a><a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.volatile_non_const" title="volatile_non_const">
volatile_non_const</a>
</h4></div></div></div>
<pre class="programlisting">
<span class="keyword">typedef</span> <span class="emphasis"><em>unspecified</em></span> <span class="identifier">volatile_non_const</span><span class="special">;</span>
</pre>
@ -239,9 +240,9 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_functiontypes.reference.tag_types.cv_qualfied"></a><a href="tag_types.html#boost_functiontypes.reference.tag_types.cv_qualfied" title="
cv_qualfied">
cv_qualfied</a></h4></div></div></div>
<a name="boost_functiontypes.reference.tag_types.cv_qualfied"></a><a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.cv_qualfied" title="cv_qualfied">
cv_qualfied</a>
</h4></div></div></div>
<pre class="programlisting">
<span class="keyword">typedef</span> <span class="emphasis"><em>unspecified</em></span> <span class="identifier">cv_qualified</span><span class="special">;</span>
</pre>
@ -259,9 +260,9 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_functiontypes.reference.tag_types.null_tag"></a><a href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="
null_tag">
null_tag</a></h4></div></div></div>
<a name="boost_functiontypes.reference.tag_types.null_tag"></a><a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.null_tag" title="null_tag">
null_tag</a>
</h4></div></div></div>
<pre class="programlisting">
<span class="keyword">typedef</span> <span class="emphasis"><em>unspecified</em></span> <span class="identifier">null_tag</span><span class="special">;</span>
</pre>
@ -277,7 +278,8 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_functiontypes.reference.tag_types.tag"></a><a href="tag_types.html#boost_functiontypes.reference.tag_types.tag" title=" tag"> tag</a></h4></div></div></div>
<a name="boost_functiontypes.reference.tag_types.tag"></a><a class="link" href="tag_types.html#boost_functiontypes.reference.tag_types.tag" title="tag"> tag</a>
</h4></div></div></div>
<pre class="programlisting">
<span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">Tag1</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Tag2</span><span class="special">,</span>
<span class="keyword">class</span> <span class="identifier">Tag3</span> <span class="special">=</span> <span class="identifier">null_tag</span><span class="special">,</span> <span class="keyword">class</span> <span class="identifier">Tag4</span> <span class="special">=</span> <span class="identifier">null_tag</span><span class="special">&gt;</span>
@ -310,7 +312,11 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><small>Copyright <20> 2004 -2007 Tobias Schwinger</small></td>
<td align="right"><div class="copyright-footer">Copyright <20> 2004 -2007 Tobias Schwinger<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>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">

View File

@ -1,21 +1,21 @@
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title> Use Cases</title>
<title>Use Cases</title>
<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
<link rel="start" href="../index.html" title="Chapter<65>1.<2E>Boost.FunctionTypes 2.5">
<link rel="up" href="../index.html" title="Chapter<65>1.<2E>Boost.FunctionTypes 2.5">
<link rel="prev" href="introduction.html" title=" Introduction">
<link rel="next" href="about_tag_types.html" title=" About Tag Types">
<link rel="prev" href="introduction.html" title="Introduction">
<link rel="next" href="about_tag_types.html" title="About Tag Types">
</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"><a href="../../../../../index.htm">Home</a></td>
<td align="center"><a href="../../../../../index.html">Home</a></td>
<td align="center"><a href="../../../../libraries.htm">Libraries</a></td>
<td align="center"><a href="../../../../../people/people.htm">People</a></td>
<td align="center"><a href="../../../../../more/faq.htm">FAQ</a></td>
<td align="center"><a href="http://www.boost.org/people/people.htm">People</a></td>
<td align="center"><a href="http://www.boost.org/more/faq.htm">FAQ</a></td>
<td align="center"><a href="../../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
@ -24,7 +24,8 @@
</div>
<div class="section" lang="en">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="boost_functiontypes.use_cases"></a><a href="use_cases.html" title=" Use Cases"> Use Cases</a></h2></div></div></div>
<a name="boost_functiontypes.use_cases"></a><a class="link" href="use_cases.html" title="Use Cases"> Use Cases</a>
</h2></div></div></div>
<p>
Generic libraries that accept callable arguments are common in C++. Accepting
a callable argument of builin type often involves a lot of repetitive code
@ -143,8 +144,7 @@
arguments from a type sequence in a single expression:
</p>
<pre class="programlisting">
<span class="keyword">static_cast</span><span class="special">&lt;</span><a href="reference/synthesis.html#boost_functiontypes.reference.synthesis.function_pointer" title="
function_pointer">function_pointer</a><span class="special">&lt;</span><span class="identifier">Seq</span><span class="special">&gt;::</span><span class="identifier">type</span><span class="special">&gt;(&amp;</span> <span class="identifier">overloaded</span><span class="special">)</span>
<span class="keyword">static_cast</span><span class="special">&lt;</span><a class="link" href="reference/synthesis.html#boost_functiontypes.reference.synthesis.function_pointer" title="function_pointer">function_pointer</a><span class="special">&lt;</span><span class="identifier">Seq</span><span class="special">&gt;::</span><span class="identifier">type</span><span class="special">&gt;(&amp;</span> <span class="identifier">overloaded</span><span class="special">)</span>
</pre>
<p>
This technique can be occasionally more flexible than template argument deduction
@ -165,7 +165,11 @@
</div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"></td>
<td align="right"><small>Copyright <20> 2004 -2007 Tobias Schwinger</small></td>
<td align="right"><div class="copyright-footer">Copyright <20> 2004 -2007 Tobias Schwinger<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>
</div></td>
</tr></table>
<hr>
<div class="spirit-nav">

View File

@ -3,17 +3,17 @@
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Chapter<EFBFBD>1.<2E>Boost.FunctionTypes 2.5</title>
<link rel="stylesheet" href="../../../../doc/html/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.68.1">
<meta name="generator" content="DocBook XSL Stylesheets V1.73.2">
<link rel="start" href="index.html" title="Chapter<65>1.<2E>Boost.FunctionTypes 2.5">
<link rel="next" href="boost_functiontypes/introduction.html" title=" Introduction">
<link rel="next" href="boost_functiontypes/introduction.html" title="Introduction">
</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"><a href="../../../../index.htm">Home</a></td>
<td align="center"><a href="../../../../index.html">Home</a></td>
<td align="center"><a href="../../../libraries.htm">Libraries</a></td>
<td align="center"><a href="../../../../people/people.htm">People</a></td>
<td align="center"><a href="../../../../more/faq.htm">FAQ</a></td>
<td align="center"><a href="http://www.boost.org/people/people.htm">People</a></td>
<td align="center"><a href="http://www.boost.org/more/faq.htm">FAQ</a></td>
<td align="center"><a href="../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
@ -27,7 +27,7 @@
</h3></div></div>
<div><p class="copyright">Copyright <20> 2004 -2007 Tobias Schwinger</p></div>
<div><div class="legalnotice">
<a name="id905080"></a><p>
<a name="id2626484"></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>
@ -46,8 +46,8 @@
</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 05, 2007 at 18:24:58 +0100</small></p></td>
<td align="right"><small></small></td>
<td align="left"><p><small>Last revised: March 14, 2008 at 18:36:46 +0000</small></p></td>
<td align="right"><div class="copyright-footer"></div></td>
</tr></table>
<hr>
<div class="spirit-nav"><a accesskey="n" href="boost_functiontypes/introduction.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a></div>

View File

@ -13,8 +13,7 @@
#include <boost/detail/workaround.hpp>
#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
|| BOOST_WORKAROUND(__BORLANDC__, <= 0x582) \
|| BOOST_WORKAROUND(__SUNPRO_CC, BOOST_TESTED_AT(0x590))
|| BOOST_WORKAROUND(__BORLANDC__, <= 0x582)
# include <boost/type_traits/remove_cv.hpp>
# include <boost/type_traits/remove_pointer.hpp>
# include <boost/type_traits/remove_reference.hpp>
@ -24,12 +23,8 @@
namespace boost { namespace function_types { namespace detail {
namespace ft = boost::function_types;
#if ! (defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
|| BOOST_WORKAROUND(__BORLANDC__, <= 0x582) \
|| BOOST_WORKAROUND(__SUNPRO_CC, BOOST_TESTED_AT(0x590)))
|| BOOST_WORKAROUND(__BORLANDC__, <= 0x582))
template<typename T> struct cv_traits
{ typedef non_cv tag; typedef T type; };
@ -113,12 +108,13 @@ struct cv_code
{
static T _t;
BOOST_STATIC_CONSTANT(std::size_t, value =
sizeof(ft::detail::switch_cv(ft::detail::ref_to_ptr(_t) ) ));
sizeof(::boost::function_types::detail::switch_cv(
::boost::function_types::detail::ref_to_ptr(_t) ) ));
};
template<typename T> struct cv_traits
{
typedef typename ft::detail::cv_tag_impl<
typedef typename boost::function_types::detail::cv_tag_impl<
::boost::function_types::detail::cv_code<T>::value >::type
tag;

View File

@ -30,8 +30,8 @@ namespace detail
# include BOOST_PP_ASSIGN_SLOT(1)
BOOST_STATIC_CONSTANT(bits_t, value = (
::boost::function_types::detail::bits<Tag>::value & BOOST_FT_default_cc
| ::boost::function_types::detail::bits<RefTag>::value & BOOST_PP_SLOT(1)
(::boost::function_types::detail::bits<Tag>::value & BOOST_FT_default_cc)
| (::boost::function_types::detail::bits<RefTag>::value & BOOST_PP_SLOT(1))
));
};

View File

@ -15,8 +15,8 @@ namespace detail
template<class Tag, class RefTag> struct selector_bits
{
BOOST_STATIC_CONSTANT(bits_t, value = (
::boost::function_types::detail::bits<Tag> ::value & 0x00008000
| ::boost::function_types::detail::bits<RefTag> ::value & 802
(::boost::function_types::detail::bits<Tag> ::value & 0x00008000)
| (::boost::function_types::detail::bits<RefTag> ::value & 802)
));
};
template<bits_t SelectorBits> struct default_cc_tag;

View File

@ -82,7 +82,7 @@ namespace detail {
);
BOOST_STATIC_CONSTANT(bits_t, combined_bits =
LHS_bits & ~RHS_mask | RHS_bits
(LHS_bits & ~RHS_mask) | RHS_bits
);
BOOST_STATIC_CONSTANT(bits_t, combined_mask =

View File

@ -53,7 +53,7 @@ BOOST_STATIC_CONSTANT(bool, match =
RHS_bits == (LHS_bits & RHS_mask & (RHS_bits | ~0x000000ff))
);
BOOST_STATIC_CONSTANT(bits_t, combined_bits =
LHS_bits & ~RHS_mask | RHS_bits
(LHS_bits & ~RHS_mask) | RHS_bits
);
BOOST_STATIC_CONSTANT(bits_t, combined_mask =
LHS_mask | RHS_mask

View File

@ -16,12 +16,19 @@ namespace ft = boost::function_types;
class C;
typedef C func();
typedef C const c_func();
typedef C (*func_ptr)();
typedef C const (*c_func_ptr)();
typedef C (&func_ref)();
typedef C const (&c_func_ref)();
typedef C (C::*mem_func_ptr)();
typedef C (C::*c_mem_func_ptr)() const;
typedef C (C::*v_mem_func_ptr)() volatile;
typedef C (C::*cv_mem_func_ptr)() const volatile;
typedef C const (C::*c_mem_func_ptr)();
typedef C (C::*mem_func_ptr_c)() const;
typedef C const (C::*c_mem_func_ptr_c)() const;
typedef C (C::*mem_func_ptr_v)() volatile;
typedef C const (C::*c_mem_func_ptr_v)() volatile;
typedef C (C::*mem_func_ptr_cv)() const volatile;
typedef C const (C::*c_mem_func_ptr_cv)() const volatile;
typedef int C::* mem_ptr;
typedef int const C::* c_mem_ptr;
@ -29,28 +36,56 @@ BOOST_MPL_ASSERT((
boost::is_same<ft::result_type<func>::type,C>
));
BOOST_MPL_ASSERT((
boost::is_same<ft::result_type<c_func>::type,C const>
));
BOOST_MPL_ASSERT((
boost::is_same<ft::result_type<func_ptr>::type,C>
));
BOOST_MPL_ASSERT((
boost::is_same<ft::result_type<c_func_ptr>::type,C const>
));
BOOST_MPL_ASSERT((
boost::is_same<ft::result_type<func_ref>::type,C>
));
BOOST_MPL_ASSERT((
boost::is_same<ft::result_type<c_func_ref>::type,C const>
));
BOOST_MPL_ASSERT((
boost::is_same<ft::result_type<mem_func_ptr>::type,C>
));
BOOST_MPL_ASSERT((
boost::is_same<ft::result_type<c_mem_func_ptr>::type,C>
boost::is_same<ft::result_type<c_mem_func_ptr>::type,C const>
));
BOOST_MPL_ASSERT((
boost::is_same<ft::result_type<v_mem_func_ptr>::type,C>
boost::is_same<ft::result_type<mem_func_ptr_c>::type,C>
));
BOOST_MPL_ASSERT((
boost::is_same<ft::result_type<cv_mem_func_ptr>::type,C>
boost::is_same<ft::result_type<c_mem_func_ptr_c>::type,C const>
));
BOOST_MPL_ASSERT((
boost::is_same<ft::result_type<mem_func_ptr_v>::type,C>
));
BOOST_MPL_ASSERT((
boost::is_same<ft::result_type<c_mem_func_ptr_v>::type,C const>
));
BOOST_MPL_ASSERT((
boost::is_same<ft::result_type<mem_func_ptr_cv>::type,C>
));
BOOST_MPL_ASSERT((
boost::is_same<ft::result_type<c_mem_func_ptr_cv>::type,C const>
));
BOOST_MPL_ASSERT((