Merge documentation update.

[SVN r63517]
This commit is contained in:
Daniel James
2010-07-02 08:27:42 +00:00
parent ceeb9d5366
commit 648508cb89
5 changed files with 2386 additions and 2403 deletions

View File

@ -2,8 +2,8 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Acknowledgements</title>
<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
<link rel="home" href="../index.html" title="Boost.Config">
<link rel="up" href="../index.html" title="Boost.Config">
<link rel="prev" href="rationale.html" title="Rationale">
@ -19,9 +19,9 @@
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="rationale.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a>
<a accesskey="p" href="rationale.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a>
</div>
<div class="section" lang="en">
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="boost_config.acknowledgements"></a><a class="link" href="acknowledgements.html" title="Acknowledgements">Acknowledgements</a>
</h2></div></div></div>
@ -55,7 +55,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="rationale.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a>
<a accesskey="p" href="rationale.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a>
</div>
</body>
</html>

View File

@ -2,8 +2,8 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Boost Macro Reference</title>
<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
<link rel="home" href="../index.html" title="Boost.Config">
<link rel="up" href="../index.html" title="Boost.Config">
<link rel="prev" href="../index.html" title="Boost.Config">
@ -20,9 +20,9 @@
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="../index.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="guidelines_for_boost_authors.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
<a accesskey="p" href="../index.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="guidelines_for_boost_authors.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section" lang="en">
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="boost_config.boost_macro_reference"></a><a class="link" href="boost_macro_reference.html" title="Boost Macro Reference">Boost Macro Reference</a>
</h2></div></div></div>
@ -44,7 +44,7 @@
</dl></div>
<a name="config_defects"></a><p>
</p>
<div class="section" lang="en">
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_config.boost_macro_reference.macros_that_describe_defects"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_defects" title="Macros that describe defects">Macros
that describe defects</a>
@ -109,12 +109,12 @@
</td>
<td>
<p>
Argument dependent lookup fails if there is a using declaration for
the symbol being looked up in the current scope. For example, using
<code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">get_pointer</span></code>; prevents ADL from
Argument dependent lookup fails if there is a using declaration
for the symbol being looked up in the current scope. For example,
using <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">get_pointer</span></code>; prevents ADL from
finding overloads of <code class="computeroutput"><span class="identifier">get_pointer</span></code>
in namespaces nested inside boost (but not elsewhere). Probably Borland
specific.
in namespaces nested inside boost (but not elsewhere). Probably
Borland specific.
</p>
</td>
</tr>
@ -361,12 +361,12 @@
</td>
<td>
<p>
The compiler does not support exception handling (this setting is
typically required by many C++ compilers for embedded platforms).
Note that there is no requirement for boost libraries to honor this
configuration setting - indeed doing so may be impossible in some
cases. Those libraries that do honor this will typically abort if
a critical error occurs - you have been warned!
The compiler does not support exception handling (this setting
is typically required by many C++ compilers for embedded platforms).
Note that there is no requirement for boost libraries to honor
this configuration setting - indeed doing so may be impossible
in some cases. Those libraries that do honor this will typically
abort if a critical error occurs - you have been warned!
</p>
</td>
</tr>
@ -401,8 +401,8 @@
</td>
<td>
<p>
The compiler does not perform function template ordering or its function
template ordering is incorrect.
The compiler does not perform function template ordering or its
function template ordering is incorrect.
</p>
<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="comment">// #1
</span><span class="keyword">template</span><span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">void</span> <span class="identifier">f</span><span class="special">(</span><span class="identifier">T</span><span class="special">);</span>
@ -450,9 +450,9 @@
<p>
The C++ implementation does not provide <code class="computeroutput"><span class="keyword">wchar_t</span></code>,
or it is really a synonym for another integral type. Use this symbol
to decide whether it is appropriate to explicitly specialize a template
on <code class="computeroutput"><span class="keyword">wchar_t</span></code> if there
is already a specialization for other integer types.
to decide whether it is appropriate to explicitly specialize a
template on <code class="computeroutput"><span class="keyword">wchar_t</span></code>
if there is already a specialization for other integer types.
</p>
</td>
</tr>
@ -586,8 +586,8 @@
</td>
<td>
<p>
The compiler does not support the specialization of individual member
functions of template classes.
The compiler does not support the specialization of individual
member functions of template classes.
</p>
</td>
</tr>
@ -604,8 +604,8 @@
</td>
<td>
<p>
If the compiler supports member templates, but not the template keyword
when accessing member template classes.
If the compiler supports member templates, but not the template
keyword when accessing member template classes.
</p>
</td>
</tr>
@ -681,8 +681,8 @@
</td>
<td>
<p>
Compiler doesn't allow a nested class to access private members of
its containing class. Probably Borland/CodeGear specific.
Compiler doesn't allow a nested class to access private members
of its containing class. Probably Borland/CodeGear specific.
</p>
</td>
</tr>
@ -701,8 +701,7 @@
<p>
Compiler requires inherited operator friend functions to be defined
at namespace scope, then using'ed to boost. Probably GCC specific.
See <a href="../../../../../boost/operators.hpp" target="_top"><code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">operators</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a>
for example.
See <a href="../../../../../boost/operators.hpp" target="_top"><code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">operators</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a> for example.
</p>
</td>
</tr>
@ -719,8 +718,8 @@
</td>
<td>
<p>
The compiler does not correctly handle partial specializations which
depend upon default arguments in the primary template.
The compiler does not correctly handle partial specializations
which depend upon default arguments in the primary template.
</p>
</td>
</tr>
@ -737,9 +736,9 @@
</td>
<td>
<p>
The compiler does not correctly handle pointers to const member functions,
preventing use of these in overloaded function templates. See <a href="../../../../../boost/functional.hpp" target="_top"><code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">functional</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a>
for example.
The compiler does not correctly handle pointers to const member
functions, preventing use of these in overloaded function templates.
See <a href="../../../../../boost/functional.hpp" target="_top"><code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">functional</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a> for example.
</p>
</td>
</tr>
@ -773,8 +772,8 @@
</td>
<td>
<p>
The compiler misreads 8.5.1, treating classes as non-aggregate if
they contain private or protected member functions.
The compiler misreads 8.5.1, treating classes as non-aggregate
if they contain private or protected member functions.
</p>
</td>
</tr>
@ -809,8 +808,8 @@
</td>
<td>
<p>
The compiler does not support the "Substitution Failure Is Not
An Error" meta-programming idiom.
The compiler does not support the "Substitution Failure Is
Not An Error" meta-programming idiom.
</p>
</td>
</tr>
@ -1059,9 +1058,9 @@
The contents of C++ standard headers for C library functions (the
<code class="computeroutput"><span class="special">&lt;</span><span class="identifier">c</span><span class="special">...&gt;</span></code> headers) have not been placed
in namespace std. This test is difficult - some libraries "fake"
the std C functions by adding using declarations to import them into
namespace std, unfortunately they don't necessarily catch all of
them...
the std C functions by adding using declarations to import them
into namespace std, unfortunately they don't necessarily catch
all of them...
</p>
</td>
</tr>
@ -1218,9 +1217,9 @@
</td>
<td>
<p>
If a return is unreachable, then no return statement should be required,
however some compilers insist on it, while other issue a bunch of
warnings if it is in fact present.
If a return is unreachable, then no return statement should be
required, however some compilers insist on it, while other issue
a bunch of warnings if it is in fact present.
</p>
</td>
</tr>
@ -1237,9 +1236,9 @@
</td>
<td>
<p>
The compiler will not accept a using declaration that brings a function
from a typename used as a base class into a derived class if functions
of the same name are present in the derived class.
The compiler will not accept a using declaration that brings a
function from a typename used as a base class into a derived class
if functions of the same name are present in the derived class.
</p>
</td>
</tr>
@ -1256,11 +1255,11 @@
</td>
<td>
<p>
The compiler will not accept a using declaration that imports a template
class or function from another namespace. Originally a Borland specific
problem with imports to/from the global namespace, extended to MSVC6
which has a specific issue with importing template classes (but not
functions).
The compiler will not accept a using declaration that imports a
template class or function from another namespace. Originally a
Borland specific problem with imports to/from the global namespace,
extended to MSVC6 which has a specific issue with importing template
classes (but not functions).
</p>
</td>
</tr>
@ -1292,7 +1291,7 @@
</div>
<a name="config_features"></a><p>
</p>
<div class="section" lang="en">
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_config.boost_macro_reference.macros_that_describe_optional_features"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_optional_features" title="Macros that describe optional features">Macros
that describe optional features</a>
@ -1441,11 +1440,11 @@
</td>
<td>
<p>
The C++ implementation provides the (SGI) hash_set and hash_map classes.
When defined, <code class="computeroutput"><span class="identifier">BOOST_HASH_SET_HEADER</span></code>
The C++ implementation provides the (SGI) hash_set and hash_map
classes. When defined, <code class="computeroutput"><span class="identifier">BOOST_HASH_SET_HEADER</span></code>
and <code class="computeroutput"><span class="identifier">BOOST_HASH_LIST_HEADER</span></code>
will contain the names of the header needed to access hash_set and
hash_map; <code class="computeroutput"><span class="identifier">BOOST_STD_EXTENSION_NAMESPACE</span></code>
will contain the names of the header needed to access hash_set
and hash_map; <code class="computeroutput"><span class="identifier">BOOST_STD_EXTENSION_NAMESPACE</span></code>
will provide the namespace in which the two class templates reside.
</p>
</td>
@ -2076,9 +2075,9 @@
</td>
<td>
<p>
The standard library lacks a conforming std::use_facet, but has a
two argument version that does the job. This is primarily for the
Rogue Wave std lib.
The standard library lacks a conforming std::use_facet, but has
a two argument version that does the job. This is primarily for
the Rogue Wave std lib.
</p>
</td>
</tr>
@ -2173,17 +2172,18 @@
<p>
There are no 1998 C++ Standard headers <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">stdint</span><span class="special">.</span><span class="identifier">h</span><span class="special">&gt;</span></code>
or <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">cstdint</span><span class="special">&gt;</span></code>, although the 1999 C Standard
does include <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">stdint</span><span class="special">.</span><span class="identifier">h</span><span class="special">&gt;</span></code>. If <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">stdint</span><span class="special">.</span><span class="identifier">h</span><span class="special">&gt;</span></code>
is present, <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stdint</span><span class="special">.</span><span class="identifier">h</span><span class="special">&gt;</span></code> can make good use of it, so a
flag is supplied (signalling presence; thus the default is not present,
conforming to the current C++ standard).
does include <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">stdint</span><span class="special">.</span><span class="identifier">h</span><span class="special">&gt;</span></code>.
If <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">stdint</span><span class="special">.</span><span class="identifier">h</span><span class="special">&gt;</span></code> is present, <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stdint</span><span class="special">.</span><span class="identifier">h</span><span class="special">&gt;</span></code>
can make good use of it, so a flag is supplied (signalling presence;
thus the default is not present, conforming to the current C++
standard).
</p>
</td>
</tr>
</tbody>
</table></div>
</div>
<div class="section" lang="en">
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_config.boost_macro_reference.macros_that_describe_possible_c__0x_features"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_possible_c__0x_features" title="Macros that describe possible C++0x features">Macros
that describe possible C++0x features</a>
@ -2224,7 +2224,7 @@
</tr></tbody>
</table></div>
</div>
<div class="section" lang="en">
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_config.boost_macro_reference.macros_that_describe_c__0x_features_not_supported"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_c__0x_features_not_supported" title="Macros that describe C++0x features not supported">Macros
that describe C++0x features not supported</a>
@ -2789,7 +2789,8 @@
</td>
<td>
<p>
The standard library does not support &lt;unordered_map&gt; and &lt;unordered_set&gt;.
The standard library does not support &lt;unordered_map&gt; and
&lt;unordered_set&gt;.
</p>
</td>
</tr>
@ -2835,7 +2836,7 @@
</div>
<a name="config_helpers"></a><p>
</p>
<div class="section" lang="en">
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_config.boost_macro_reference.boost_helper_macros"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.boost_helper_macros" title="Boost Helper Macros">Boost
Helper Macros</a>
@ -2886,10 +2887,10 @@
</span><span class="preprocessor">#endif</span>
</pre>
<p>
where <code class="computeroutput"><span class="identifier">MACRONAME</span></code> is
a macro that usually describes the version number to be tested against,
and <code class="computeroutput"><span class="identifier">CONDITION</span></code> is
a comparison operator followed by a value. For example <code class="computeroutput"><span class="identifier">BOOST_WORKAROUND</span><span class="special">(</span><span class="identifier">BOOST_INTEL</span><span class="special">,</span>
where <code class="computeroutput"><span class="identifier">MACRONAME</span></code>
is a macro that usually describes the version number to be tested
against, and <code class="computeroutput"><span class="identifier">CONDITION</span></code>
is a comparison operator followed by a value. For example <code class="computeroutput"><span class="identifier">BOOST_WORKAROUND</span><span class="special">(</span><span class="identifier">BOOST_INTEL</span><span class="special">,</span>
<span class="special">&lt;=</span> <span class="number">1010</span><span class="special">)</span></code> would evaluate to <code class="computeroutput"><span class="number">1</span></code> for Intel C++ 10.1 and earlier.
</p>
<p>
@ -2898,8 +2899,8 @@
is expected to be fixed at some later point.
</p>
<p>
For example <code class="computeroutput"><span class="identifier">BOOST_WORKAROUND</span><span class="special">(</span><span class="identifier">__BORLANDC__</span><span class="special">,</span> <span class="identifier">BOOST_TESTED_AT</span><span class="special">(</span><span class="number">0x590</span><span class="special">))</span></code> would normally evaluate to <code class="computeroutput"><span class="number">1</span></code> for all values of <code class="computeroutput"><span class="identifier">__BORLANDC__</span></code>
<span class="emphasis"><em>unless</em></span> the macro <code class="computeroutput"><span class="identifier">BOOST_DETECT_OUTDATED_WORKAROUNDS</span></code>
For example <code class="computeroutput"><span class="identifier">BOOST_WORKAROUND</span><span class="special">(</span><span class="identifier">__BORLANDC__</span><span class="special">,</span> <span class="identifier">BOOST_TESTED_AT</span><span class="special">(</span><span class="number">0x590</span><span class="special">))</span></code> would normally evaluate to <code class="computeroutput"><span class="number">1</span></code> for all values of <code class="computeroutput"><span class="identifier">__BORLANDC__</span></code> <span class="emphasis"><em>unless</em></span>
the macro <code class="computeroutput"><span class="identifier">BOOST_DETECT_OUTDATED_WORKAROUNDS</span></code>
is defined, in which case evaluates to <code class="computeroutput"><span class="special">(</span><span class="identifier">__BORLANDC__</span> <span class="special">&lt;=</span>
<span class="number">0x590</span><span class="special">)</span></code>.
</p>
@ -2917,15 +2918,15 @@
</td>
<td>
<p>
Some compilers don't support the use of typename for dependent types
in deduced contexts. This macro expands to nothing on those compilers,
and typename elsewhere. For example, replace: <code class="computeroutput"><span class="keyword">template</span>
Some compilers don't support the use of typename for dependent
types in deduced contexts. This macro expands to nothing on those
compilers, and typename elsewhere. For example, replace: <code class="computeroutput"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">void</span>
<span class="identifier">f</span><span class="special">(</span><span class="identifier">T</span><span class="special">,</span>
<span class="keyword">typename</span> <span class="identifier">T</span><span class="special">::</span><span class="identifier">type</span><span class="special">);</span></code> with: <code class="computeroutput"><span class="keyword">template</span>
<span class="special">&lt;</span><span class="keyword">class</span>
<span class="identifier">T</span><span class="special">&gt;</span>
<span class="keyword">void</span> <span class="identifier">f</span><span class="special">(</span><span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span>
<span class="keyword">void</span> <span class="identifier">f</span><span class="special">(</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">BOOST_DEDUCED_TYPENAME</span>
<span class="identifier">T</span><span class="special">::</span><span class="identifier">type</span><span class="special">);</span></code>
with: <code class="computeroutput"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">void</span>
<span class="identifier">f</span><span class="special">(</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">BOOST_DEDUCED_TYPENAME</span> <span class="identifier">T</span><span class="special">::</span><span class="identifier">type</span><span class="special">);</span></code>
</p>
</td>
</tr>
@ -2993,10 +2994,10 @@
<td>
<p>
On compilers which don't allow in-class initialization of static
integral constant members, we must use enums as a workaround if we
want the constants to be available at compile-time. This macro gives
us a convenient way to declare such constants. For example instead
of:
integral constant members, we must use enums as a workaround if
we want the constants to be available at compile-time. This macro
gives us a convenient way to declare such constants. For example
instead of:
</p>
<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">struct</span> <span class="identifier">foo</span><span class="special">{</span>
<span class="keyword">static</span> <span class="keyword">const</span> <span class="keyword">int</span> <span class="identifier">value</span> <span class="special">=</span> <span class="number">2</span><span class="special">;</span>
@ -3035,8 +3036,8 @@
<td>
<p>
Some compilers silently "fold" different function template
instantiations if some of the template parameters don't appear in
the function parameter list. For instance:
instantiations if some of the template parameters don't appear
in the function parameter list. For instance:
</p>
<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span>
<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">ostream</span><span class="special">&gt;</span>
@ -3058,9 +3059,9 @@
</pre>
<p>
incorrectly outputs <code class="literal">2 2 double double</code> on VC++
6. These macros, to be used in the function parameter list, fix the
problem without effects on the calling syntax. For instance, in the
case above write:
6. These macros, to be used in the function parameter list, fix
the problem without effects on the calling syntax. For instance,
in the case above write:
</p>
<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">int</span> <span class="identifier">n</span><span class="special">&gt;</span>
<span class="keyword">void</span> <span class="identifier">f</span><span class="special">(</span><span class="identifier">BOOST_EXPLICIT_TEMPLATE_NON_TYPE</span><span class="special">(</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">n</span><span class="special">))</span> <span class="special">{</span> <span class="special">...</span> <span class="special">}</span>
@ -3081,25 +3082,24 @@
</p>
<p>
Furthermore, in order to add any needed comma separator, an <code class="computeroutput"><span class="identifier">APPEND_</span><span class="special">*</span></code>
version must be used when the macro invocation appears after a normal
parameter declaration or after the invocation of another macro of
this same group.
version must be used when the macro invocation appears after a
normal parameter declaration or after the invocation of another
macro of this same group.
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">BOOST_USE_FACET</span><span class="special">(</span><span class="identifier">Type</span><span class="special">,</span>
<span class="identifier">loc</span><span class="special">)</span></code>
<code class="computeroutput"><span class="identifier">BOOST_USE_FACET</span><span class="special">(</span><span class="identifier">Type</span><span class="special">,</span> <span class="identifier">loc</span><span class="special">)</span></code>
</p>
</td>
<td>
<p>
When the standard library does not have a comforming <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">use_facet</span></code> there are various workarounds
available, but they differ from library to library. This macro provides
a consistent way to access a locale's facets. For example, replace:
<code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">use_facet</span><span class="special">&lt;</span><span class="identifier">Type</span><span class="special">&gt;(</span><span class="identifier">loc</span><span class="special">);</span></code>
available, but they differ from library to library. This macro
provides a consistent way to access a locale's facets. For example,
replace: <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">use_facet</span><span class="special">&lt;</span><span class="identifier">Type</span><span class="special">&gt;(</span><span class="identifier">loc</span><span class="special">);</span></code>
with: <code class="computeroutput"><span class="identifier">BOOST_USE_FACET</span><span class="special">(</span><span class="identifier">Type</span><span class="special">,</span> <span class="identifier">loc</span><span class="special">);</span></code> Note do not add a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span></code>
prefix to the front of <code class="computeroutput"><span class="identifier">BOOST_USE_FACET</span></code>.
</p>
@ -3108,16 +3108,15 @@
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">BOOST_HAS_FACET</span><span class="special">(</span><span class="identifier">Type</span><span class="special">,</span>
<span class="identifier">loc</span><span class="special">)</span></code>
<code class="computeroutput"><span class="identifier">BOOST_HAS_FACET</span><span class="special">(</span><span class="identifier">Type</span><span class="special">,</span> <span class="identifier">loc</span><span class="special">)</span></code>
</p>
</td>
<td>
<p>
When the standard library does not have a comforming <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">has_facet</span></code> there are various workarounds
available, but they differ from library to library. This macro provides
a consistent way to check a locale's facets. For example, replace:
<code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">has_facet</span><span class="special">&lt;</span><span class="identifier">Type</span><span class="special">&gt;(</span><span class="identifier">loc</span><span class="special">);</span></code>
available, but they differ from library to library. This macro
provides a consistent way to check a locale's facets. For example,
replace: <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">has_facet</span><span class="special">&lt;</span><span class="identifier">Type</span><span class="special">&gt;(</span><span class="identifier">loc</span><span class="special">);</span></code>
with: <code class="computeroutput"><span class="identifier">BOOST_HAS_FACET</span><span class="special">(</span><span class="identifier">Type</span><span class="special">,</span> <span class="identifier">loc</span><span class="special">);</span></code> Note do not add a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span></code>
prefix to the front of <code class="computeroutput"><span class="identifier">BOOST_HAS_FACET</span></code>.
</p>
@ -3132,12 +3131,14 @@
<td>
<p>
Member templates are supported by some compilers even though they
can't use the <code class="computeroutput"><span class="identifier">A</span><span class="special">::</span><span class="keyword">template</span> <span class="identifier">member</span><span class="special">&lt;</span><span class="identifier">U</span><span class="special">&gt;</span></code> syntax, as a workaround replace:
<code class="computeroutput"><span class="keyword">typedef</span> <span class="keyword">typename</span>
<span class="identifier">A</span><span class="special">::</span><span class="keyword">template</span> <span class="identifier">rebind</span><span class="special">&lt;</span><span class="identifier">U</span><span class="special">&gt;</span> <span class="identifier">binder</span><span class="special">;</span></code> with: <code class="computeroutput"><span class="keyword">typedef</span>
<span class="keyword">typename</span> <span class="identifier">A</span><span class="special">::</span><span class="identifier">BOOST_NESTED_TEMPLATE</span>
can't use the <code class="computeroutput"><span class="identifier">A</span><span class="special">::</span><span class="keyword">template</span>
<span class="identifier">member</span><span class="special">&lt;</span><span class="identifier">U</span><span class="special">&gt;</span></code>
syntax, as a workaround replace: <code class="computeroutput"><span class="keyword">typedef</span>
<span class="keyword">typename</span> <span class="identifier">A</span><span class="special">::</span><span class="keyword">template</span>
<span class="identifier">rebind</span><span class="special">&lt;</span><span class="identifier">U</span><span class="special">&gt;</span>
<span class="identifier">binder</span><span class="special">;</span></code>
with: <code class="computeroutput"><span class="keyword">typedef</span> <span class="keyword">typename</span>
<span class="identifier">A</span><span class="special">::</span><span class="identifier">BOOST_NESTED_TEMPLATE</span> <span class="identifier">rebind</span><span class="special">&lt;</span><span class="identifier">U</span><span class="special">&gt;</span> <span class="identifier">binder</span><span class="special">;</span></code>
</p>
</td>
</tr>
@ -3164,9 +3165,9 @@
<td>
<p>
This piece of macro magic joins the two arguments together, even
when one of the arguments is itself a macro (see 16.3.1 in C++ standard).
This is normally used to create a mangled name in combination with
a predefined macro such a __LINE__.
when one of the arguments is itself a macro (see 16.3.1 in C++
standard). This is normally used to create a mangled name in combination
with a predefined macro such a __LINE__.
</p>
</td>
</tr>
@ -3175,7 +3176,7 @@
</div>
<a name="config_info_macros"></a><p>
</p>
<div class="section" lang="en">
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_config.boost_macro_reference.boost_informational_macros"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.boost_informational_macros" title="Boost Informational Macros">Boost
Informational Macros</a>
@ -3221,7 +3222,8 @@
</td>
<td>
<p>
Describes the boost version number in XYYYZZ format such that: <code class="computeroutput"><span class="special">(</span><span class="identifier">BOOST_VERSION</span>
Describes the boost version number in XYYYZZ format such that:
<code class="computeroutput"><span class="special">(</span><span class="identifier">BOOST_VERSION</span>
<span class="special">%</span> <span class="number">100</span><span class="special">)</span></code> is the sub-minor version, <code class="computeroutput"><span class="special">((</span><span class="identifier">BOOST_VERSION</span>
<span class="special">/</span> <span class="number">100</span><span class="special">)</span> <span class="special">%</span> <span class="number">1000</span><span class="special">)</span></code>
is the minor version, and <code class="computeroutput"><span class="special">(</span><span class="identifier">BOOST_VERSION</span> <span class="special">/</span>
@ -3262,8 +3264,8 @@
<td>
<p>
Defined if <code class="computeroutput"><span class="identifier">int64_t</span></code>
as defined by <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">cstdint</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code> is not usable in integral constant
expressions.
as defined by <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">cstdint</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
is not usable in integral constant expressions.
</p>
</td>
</tr>
@ -3281,8 +3283,8 @@
<td>
<p>
Defined if the compiler is really Microsoft Visual C++, as opposed
to one of the many other compilers that also define <code class="computeroutput"><span class="identifier">_MSC_VER</span></code>. Has the same value as
_MSC_VER.
to one of the many other compilers that also define <code class="computeroutput"><span class="identifier">_MSC_VER</span></code>. Has the same value
as _MSC_VER.
</p>
</td>
</tr>
@ -3299,10 +3301,10 @@
</td>
<td>
<p>
Defined to a normalised 9 digit version of _MSC_FULL_VER (which sometimes
only has 8 digits), the macro has the form VVMMPPPPP where VV is
the major version number, MM is the minor version number, and PPPPP
is the compiler build number.
Defined to a normalised 9 digit version of _MSC_FULL_VER (which
sometimes only has 8 digits), the macro has the form VVMMPPPPP
where VV is the major version number, MM is the minor version number,
and PPPPP is the compiler build number.
</p>
</td>
</tr>
@ -3371,9 +3373,9 @@
</td>
<td>
<p>
Defined if the dinkumware standard library is in use, takes the same
value as the Dinkumware library version macro <code class="computeroutput"><span class="identifier">_CPPLIB_VER</span></code>
if defined, otherwise 1.
Defined if the dinkumware standard library is in use, takes the
same value as the Dinkumware library version macro <code class="computeroutput"><span class="identifier">_CPPLIB_VER</span></code> if defined, otherwise
1.
</p>
</td>
</tr>
@ -3444,15 +3446,15 @@
</td>
<td>
<p>
Defined as a string describing the name of the platform. Mainly for
debugging the configuration.
Defined as a string describing the name of the platform. Mainly
for debugging the configuration.
</p>
</td>
</tr>
</tbody>
</table></div>
</div>
<div class="section" lang="en">
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code" title="Macros for libraries with separate source code">Macros
for libraries with separate source code</a>
@ -3469,14 +3471,14 @@
The following macros and helper headers are of use to authors whose libraries
include separate source code, and are intended to address several issues:
</p>
<div class="itemizedlist"><ul type="disc">
<li>
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem">
Controlling shared library symbol visibility
</li>
<li>
<li class="listitem">
Fixing the ABI of the compiled library
</li>
<li>
<li class="listitem">
Selecting which compiled library to link against based upon the compilers
settings
</li>
@ -3485,7 +3487,7 @@
See <a href="http://svn.boost.org/trac/boost/wiki/Guidelines/Separate" target="_top">Guidelines
for Authors of Boost Libraries Containing Separate Source</a>
</p>
<div class="section" lang="en">
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code.macros_controlling_shared_library_symbol_visibility"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code.macros_controlling_shared_library_symbol_visibility" title="Macros controlling shared library symbol visibility">Macros
controlling shared library symbol visibility</a>
@ -3534,8 +3536,8 @@
</td>
<td>
<p>
Defines the syntax of a C++ language extension that indicates a
symbol is to be exported from a shared library. If the compiler
Defines the syntax of a C++ language extension that indicates
a symbol is to be exported from a shared library. If the compiler
has no such extension, the macro is defined with no replacement
text.
</p>
@ -3549,8 +3551,8 @@
</td>
<td>
<p>
Defines the syntax of a C++ language extension that indicates a
symbol is to be imported from a shared library. If the compiler
Defines the syntax of a C++ language extension that indicates
a symbol is to be imported from a shared library. If the compiler
has no such extension, the macro is defined with no replacement
text.
</p>
@ -3564,20 +3566,21 @@
</td>
<td>
<p>
Defines the syntax of a C++ language extension that indicates a
symbol is to be globally visible. If the compiler has no such extension,
the macro is defined with no replacement text. Needed for classes
that are not otherwise exported, but are used by RTTI. Examples
include class for objects that will be thrown as exceptions or
used in dynamic_casts, across shared library boundaries. For example,
a header-only exception class might look like this:
Defines the syntax of a C++ language extension that indicates
a symbol is to be globally visible. If the compiler has no such
extension, the macro is defined with no replacement text. Needed
for classes that are not otherwise exported, but are used by
RTTI. Examples include class for objects that will be thrown
as exceptions or used in dynamic_casts, across shared library
boundaries. For example, a header-only exception class might
look like this:
</p>
<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">class</span> <span class="identifier">BOOST_SYMBOL_VISIBLE</span> <span class="identifier">my_exception</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">runtime_error</span> <span class="special">{</span> <span class="special">...</span> <span class="special">};</span>
</pre>
<p>
Without BOOST_SYMBOL_VISIBLE, it would be impossible to catch my_exception
thrown from a shared library compiled by GCC with the -fvisibility=hidden
option.
Without BOOST_SYMBOL_VISIBLE, it would be impossible to catch
my_exception thrown from a shared library compiled by GCC with
the -fvisibility=hidden option.
</p>
</td>
</tr>
@ -3589,10 +3592,10 @@
</td>
<td>
<p>
The compiler has C++ extensions <code class="computeroutput"><span class="identifier">__declspec</span><span class="special">(</span><span class="identifier">dllexport</span><span class="special">)</span></code> and <code class="computeroutput"><span class="identifier">__declspec</span><span class="special">(</span><span class="identifier">dllimport</span><span class="special">)</span></code> to control export/import of symbols
from shared libraries. <span class="emphasis"><em>Deprecated. This macro is no longer
necessary since BOOST_SYMBOL_EXPORT and BOOST_SYMBOL_IMPORT are
now supplied. It is provided to support legacy code.</em></span>
The compiler has C++ extensions <code class="computeroutput"><span class="identifier">__declspec</span><span class="special">(</span><span class="identifier">dllexport</span><span class="special">)</span></code> and <code class="computeroutput"><span class="identifier">__declspec</span><span class="special">(</span><span class="identifier">dllimport</span><span class="special">)</span></code> to control export/import of
symbols from shared libraries. <span class="emphasis"><em>Deprecated. This macro
is no longer necessary since BOOST_SYMBOL_EXPORT and BOOST_SYMBOL_IMPORT
are now supplied. It is provided to support legacy code.</em></span>
</p>
</td>
</tr>
@ -3639,7 +3642,7 @@
<span class="special">...</span>
</pre>
</div>
<div class="section" lang="en">
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code.abi_fixing"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code.abi_fixing" title="ABI Fixing">ABI
Fixing</a>
@ -3697,7 +3700,7 @@
to point to their own prefix/suffix headers if they so wish.
</p>
</div>
<div class="section" lang="en">
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code.automatic_library_selection"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code.automatic_library_selection" title="Automatic library selection">Automatic
library selection</a>
@ -3790,7 +3793,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="../index.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="guidelines_for_boost_authors.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
<a accesskey="p" href="../index.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="guidelines_for_boost_authors.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>

View File

@ -2,8 +2,8 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Guidelines for Boost Authors</title>
<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
<link rel="home" href="../index.html" title="Boost.Config">
<link rel="up" href="../index.html" title="Boost.Config">
<link rel="prev" href="boost_macro_reference.html" title="Boost Macro Reference">
@ -20,9 +20,9 @@
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="boost_macro_reference.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="rationale.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
<a accesskey="p" href="boost_macro_reference.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="rationale.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section" lang="en">
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="boost_config.guidelines_for_boost_authors"></a><a class="link" href="guidelines_for_boost_authors.html" title="Guidelines for Boost Authors">Guidelines for
Boost Authors</a>
@ -61,49 +61,49 @@
<p>
Note that:
</p>
<div class="itemizedlist"><ul type="disc">
<li>
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem">
Boost library implementers are not required to "<code class="computeroutput"><span class="preprocessor">#include</span>
<span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>",
and are not required in any way to support compilers that do not comply with
the C++ Standard (ISO/IEC 14882).
<span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>", and are not required in any
way to support compilers that do not comply with the C++ Standard (ISO/IEC
14882).
</li>
<li>
<li class="listitem">
If a library implementer wishes to support some non-conforming compiler,
or to support some platform specific feature, "<code class="computeroutput"><span class="preprocessor">#include</span>
<span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>"
is the preferred way to obtain configuration information not available from
the standard headers such as <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">climits</span><span class="special">&gt;</span></code>,
etc.
<span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>" is the preferred way to obtain
configuration information not available from the standard headers such
as <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">climits</span><span class="special">&gt;</span></code>, etc.
</li>
<li>
If configuration information can be deduced from standard headers such as
<code class="computeroutput"><span class="special">&lt;</span><span class="identifier">climits</span><span class="special">&gt;</span></code>, use those standard headers rather than
<code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>.
<li class="listitem">
If configuration information can be deduced from standard headers such
as <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">climits</span><span class="special">&gt;</span></code>, use those standard headers rather
than <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>.
</li>
<li>
<li class="listitem">
Boost files that use macros defined in <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
should have sensible, standard conforming, default behavior if the macro
is not defined. This means that the starting point for porting <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>
to a new platform is simply to define nothing at all specific to that platform.
In the rare case where there is no sensible default behavior, an #error message
should describe the problem.
is not defined. This means that the starting point for porting <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code> to a new platform is simply to define
nothing at all specific to that platform. In the rare case where there
is no sensible default behavior, an #error message should describe the
problem.
</li>
<li>
If a Boost library implementer wants something added to <code class="computeroutput"><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span></code>, post
a request on the Boost mailing list. There is no guarantee such a request
will be honored; the intent is to limit the complexity of config.hpp.
<li class="listitem">
If a Boost library implementer wants something added to <code class="computeroutput"><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span></code>,
post a request on the Boost mailing list. There is no guarantee such a
request will be honored; the intent is to limit the complexity of config.hpp.
</li>
<li>
<li class="listitem">
The intent is to support only compilers which appear on their way to becoming
C++ Standard compliant, and only recent releases of those compilers at that.
C++ Standard compliant, and only recent releases of those compilers at
that.
</li>
<li>
The intent is not to disable mainstream features now well-supported by the
majority of compilers, such as namespaces, exceptions, RTTI, or templates.
<li class="listitem">
The intent is not to disable mainstream features now well-supported by
the majority of compilers, such as namespaces, exceptions, RTTI, or templates.
</li>
</ul></div>
<div class="section" lang="en">
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_config.guidelines_for_boost_authors.warnings"></a><a class="link" href="guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.warnings" title="Disabling Compiler Warnings">
Disabling Compiler Warnings</a>
@ -116,17 +116,17 @@
<p>
Note that:
</p>
<div class="itemizedlist"><ul type="disc">
<li>
This header <span class="bold"><strong><span class="emphasis"><em>should never be included by
another Boost header</em></span></strong></span>, it should only ever be used
by a library source file or a test case.
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem">
This header <span class="bold"><strong><span class="emphasis"><em>should never be included
by another Boost header</em></span></strong></span>, it should only ever be
used by a library source file or a test case.
</li>
<li>
The header should be included <span class="bold"><strong><span class="emphasis"><em>before you
include any other header</em></span></strong></span>.
<li class="listitem">
The header should be included <span class="bold"><strong><span class="emphasis"><em>before
you include any other header</em></span></strong></span>.
</li>
<li>
<li class="listitem">
This header only disables warnings that are hard or impossible to otherwise
deal with, and which are typically emitted by one compiler only, or in
one compilers own standard library headers.
@ -182,7 +182,7 @@
</tbody>
</table></div>
</div>
<div class="section" lang="en">
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_config.guidelines_for_boost_authors.adding_new_defect_macros"></a><a class="link" href="guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.adding_new_defect_macros" title="Adding New Defect Macros">Adding
New Defect Macros</a>
@ -233,25 +233,27 @@
Once the test code is in place in libs/config/test, updating the configuration
test system proceeds as:
</p>
<div class="itemizedlist"><ul type="disc">
<li>
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem">
cd into <code class="computeroutput"><span class="identifier">libs</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">tools</span></code> and run <code class="computeroutput"><span class="identifier">bjam</span></code>.
This generates the <code class="computeroutput"><span class="special">.</span><span class="identifier">cpp</span></code>
file test cases from the <code class="computeroutput"><span class="special">.</span><span class="identifier">ipp</span></code> file, updates the libs/config/test/all/Jamfile.v2,
<code class="computeroutput"><span class="identifier">config_test</span><span class="special">.</span><span class="identifier">cpp</span></code> and <code class="computeroutput"><span class="identifier">config_info</span><span class="special">.</span><span class="identifier">cpp</span></code>.<br><br>
</li>
<li>
<code class="computeroutput"><span class="identifier">config_test</span><span class="special">.</span><span class="identifier">cpp</span></code> and <code class="computeroutput"><span class="identifier">config_info</span><span class="special">.</span><span class="identifier">cpp</span></code>.<br>
<br>
</li>
<li class="listitem">
cd into <code class="computeroutput"><span class="identifier">libs</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">test</span><span class="special">/</span><span class="identifier">all</span></code> and run <code class="computeroutput"><span class="identifier">bjam</span>
</code><span class="emphasis"><em>MACRONAME<code class="computeroutput"> <span class="identifier">compiler</span><span class="special">-</span><span class="identifier">list</span></code></em></span>,
where <span class="emphasis"><em>MACRONAME</em></span> is the name of the new macro, and
<span class="emphasis"><em><code class="computeroutput"><span class="identifier">compiler</span><span class="special">-</span><span class="identifier">list</span></code></em></span> is a space separated
list of compilers to test with.<br><br> The xxx_pass_test and the
xxx_fail_test <span class="bold"><strong>should both report <code class="computeroutput"><span class="special">**</span><span class="identifier">passed</span><span class="special">**</span></code></strong></span>.<br><br> If <span class="emphasis"><em>MACRONAME</em></span> is not defined when it should
be defined, xxx_pass_test will not report <code class="computeroutput"><span class="special">**</span><span class="identifier">passed</span><span class="special">**</span></code>.
If <span class="emphasis"><em>MACRONAME</em></span> is defined when it should not be defined,
xxx_fail_test will not report <code class="computeroutput"><span class="special">**</span><span class="identifier">passed</span><span class="special">**</span></code>.<br><br>
</li>
<li>
list of compilers to test with.<br> <br> The xxx_pass_test and the
xxx_fail_test <span class="bold"><strong>should both report <code class="computeroutput"><span class="special">**</span><span class="identifier">passed</span><span class="special">**</span></code></strong></span>.<br> <br> If <span class="emphasis"><em>MACRONAME</em></span>
is not defined when it should be defined, xxx_pass_test will not report
<code class="computeroutput"><span class="special">**</span><span class="identifier">passed</span><span class="special">**</span></code>. If <span class="emphasis"><em>MACRONAME</em></span>
is defined when it should not be defined, xxx_fail_test will not report
<code class="computeroutput"><span class="special">**</span><span class="identifier">passed</span><span class="special">**</span></code>.<br> <br>
</li>
<li class="listitem">
cd into <code class="computeroutput"><span class="identifier">libs</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">test</span></code> and run <code class="computeroutput"><span class="identifier">bjam</span>
<span class="identifier">config_info</span> <span class="identifier">config_test</span>
</code><span class="emphasis"><em><code class="computeroutput"><span class="identifier">compiler</span><span class="special">-</span><span class="identifier">list</span></code></em></span>.
@ -264,26 +266,26 @@
<p>
Then you should:
</p>
<div class="itemizedlist"><ul type="disc">
<li>
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem">
Define the defect macro in those config headers that require it.
</li>
<li>
<li class="listitem">
Document the macro in this documentation (please do not forget this step!!)
</li>
<li>
<li class="listitem">
Commit everything.
</li>
<li>
Keep an eye on the regression tests for new failures in Boost.Config caused
by the addition.
<li class="listitem">
Keep an eye on the regression tests for new failures in Boost.Config
caused by the addition.
</li>
<li>
<li class="listitem">
Start using the macro.
</li>
</ul></div>
</div>
<div class="section" lang="en">
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_config.guidelines_for_boost_authors.adding_new_feature_test_macros"></a><a class="link" href="guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.adding_new_feature_test_macros" title="Adding New Feature Test Macros">Adding
New Feature Test Macros</a>
@ -307,7 +309,7 @@
<code class="computeroutput"><span class="special">&lt;</span><span class="identifier">unistd</span><span class="special">.</span><span class="identifier">h</span><span class="special">&gt;</span></code>).
</p>
</div>
<div class="section" lang="en">
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_config.guidelines_for_boost_authors.modifying_the_boost_configuration_headers"></a><a class="link" href="guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.modifying_the_boost_configuration_headers" title="Modifying the Boost Configuration Headers">Modifying
the Boost Configuration Headers</a>
@ -368,7 +370,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="boost_macro_reference.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="rationale.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
<a accesskey="p" href="boost_macro_reference.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="rationale.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>

View File

@ -2,8 +2,8 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Rationale</title>
<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
<link rel="home" href="../index.html" title="Boost.Config">
<link rel="up" href="../index.html" title="Boost.Config">
<link rel="prev" href="guidelines_for_boost_authors.html" title="Guidelines for Boost Authors">
@ -20,9 +20,9 @@
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="guidelines_for_boost_authors.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="acknowledgements.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
<a accesskey="p" href="guidelines_for_boost_authors.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="acknowledgements.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
<div class="section" lang="en">
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="boost_config.rationale"></a><a class="link" href="rationale.html" title="Rationale">Rationale</a>
</h2></div></div></div>
@ -39,7 +39,7 @@
principles from the <a href="http://www.objectmentor.com/resources/articles/Principles_and_Patterns.pdf" target="_top">following
article</a>.
</p>
<div class="section" lang="en">
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_config.rationale.the_problem"></a><a class="link" href="rationale.html#boost_config.rationale.the_problem" title="The problem">The problem</a>
</h3></div></div></div>
@ -56,16 +56,10 @@
have nothing to do with each other. Essentially, the traditional solution
employed by configuration headers does not conform to the Open-Closed Principle:
</p>
<div class="blockquote"><blockquote class="blockquote">
<p>
</p>
<p>
<span class="bold"><strong>"A module should be open for extension but
closed for modification."</strong></span>
</p>
<p>
</p>
</blockquote></div>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="bold"><strong>"A module should be open for extension but closed
for modification."</strong></span>
</p></blockquote></div>
<p>
Extending a traditional configuration header implies modifying existing code.
</p>
@ -78,15 +72,9 @@
of the entire library, and more stable elements of Boost would depend on
it. This violates the Stable Dependencies Principle:
</p>
<div class="blockquote"><blockquote class="blockquote">
<p>
</p>
<p>
<div class="blockquote"><blockquote class="blockquote"><p>
<span class="bold"><strong>"Depend in the direction of stability."</strong></span>
</p>
<p>
</p>
</blockquote></div>
</p></blockquote></div>
<p>
After even a minor change to a traditional configuration header on one minor
platform, almost everything on every platform should be tested if we follow
@ -102,7 +90,7 @@
code must be provided.
</p>
</div>
<div class="section" lang="en">
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_config.rationale.the_solution"></a><a class="link" href="rationale.html#boost_config.rationale.the_solution" title="The solution">The solution</a>
</h3></div></div></div>
@ -129,7 +117,7 @@
</tr></table>
<hr>
<div class="spirit-nav">
<a accesskey="p" href="guidelines_for_boost_authors.html"><img src="../../../../../doc/html/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/html/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/html/images/home.png" alt="Home"></a><a accesskey="n" href="acknowledgements.html"><img src="../../../../../doc/html/images/next.png" alt="Next"></a>
<a accesskey="p" href="guidelines_for_boost_authors.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="acknowledgements.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
</div>
</body>
</html>

View File

@ -2,8 +2,8 @@
<head>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Boost.Config</title>
<link rel="stylesheet" href="../../../../doc/html/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
<link rel="stylesheet" href="../../../../doc/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
<link rel="home" href="index.html" title="Boost.Config">
<link rel="next" href="boost_config/boost_macro_reference.html" title="Boost Macro Reference">
</head>
@ -17,8 +17,8 @@
<td align="center"><a href="../../../../more/index.htm">More</a></td>
</tr></table>
<hr>
<div class="spirit-nav"><a accesskey="n" href="boost_config/boost_macro_reference.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a></div>
<div class="article" lang="en">
<div class="spirit-nav"><a accesskey="n" href="boost_config/boost_macro_reference.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a></div>
<div class="article">
<div class="titlepage">
<div>
<div><h2 class="title">
@ -28,7 +28,7 @@
</h3></div></div></div>
<div><p class="copyright">Copyright &#169; 2001 -2007 Beman Dawes, Vesa Karvonen, John Maddock</p></div>
<div><div class="legalnotice">
<a name="id873629"></a><p>
<a name="id759700"></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>
@ -92,7 +92,7 @@
<dt><span class="section"><a href="boost_config/acknowledgements.html">Acknowledgements</a></span></dt>
</dl>
</div>
<div class="section" lang="en">
<div class="section">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="boost_config.configuring_boost_for_your_platform"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform" title="Configuring Boost for Your Platform">Configuring
Boost for Your Platform</a>
@ -111,7 +111,7 @@
<dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.testing_the_boost_configuration">Testing
the boost configuration</a></span></dt>
</dl></div>
<div class="section" lang="en">
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_config.configuring_boost_for_your_platform.using_the_default_boost_configuration"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.using_the_default_boost_configuration" title="Using the default boost configuration">Using
the default boost configuration</a>
@ -135,7 +135,7 @@
and submitting a support request.
</p>
</div>
<div class="section" lang="en">
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_config.configuring_boost_for_your_platform.the__boost_config_hpp__header"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.the__boost_config_hpp__header" title="The &lt;boost/config.hpp&gt; header">The
&lt;boost/config.hpp&gt; header</a>
@ -168,14 +168,14 @@
</div>
<a name="config_config_script"></a><p>
</p>
<div class="section" lang="en">
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_config.configuring_boost_for_your_platform.using_the_configure_script"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.using_the_configure_script" title="Using the configure script">Using
the configure script</a>
</h3></div></div></div>
<div class="important"><table border="0" summary="Important">
<tr>
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../../../doc/html/images/important.png"></td>
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../../../doc/src/images/important.png"></td>
<th align="left">Important</th>
</tr>
<tr><td align="left" valign="top"><p>
@ -190,15 +190,9 @@
you will need to cd into <span class="emphasis"><em>&lt;boost-root&gt;</em></span><code class="computeroutput"><span class="special">/</span><span class="identifier">libs</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span></code>
and type:
</p>
<div class="blockquote"><blockquote class="blockquote">
<p>
</p>
<p>
<div class="blockquote"><blockquote class="blockquote"><p>
<code class="computeroutput"><span class="identifier">sh</span> <span class="special">./</span><span class="identifier">configure</span></code>
</p>
<p>
</p>
</blockquote></div>
</p></blockquote></div>
<p>
you will see a list of the items being checked as the script works its way
through the regression tests. Note that the configure script only really
@ -295,18 +289,18 @@
(located under <span class="emphasis"><em>&lt;boost-root&gt;</em></span><code class="computeroutput"><span class="special">/</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span></code>).
There are two ways you can use this header:
</p>
<div class="itemizedlist"><ul type="disc">
<li>
<span class="bold"><strong>Option 1:</strong></span> copy the header into <span class="emphasis"><em>&lt;boost-root&gt;</em></span><code class="computeroutput"><span class="special">/</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span></code> so that it replaces the default user.hpp
<div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li class="listitem">
<span class="bold"><strong>Option 1:</strong></span> copy the header into <span class="emphasis"><em>&lt;boost-root&gt;</em></span><code class="computeroutput"><span class="special">/</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span></code> so that it replaces the default user.hpp
provided by boost. This option allows only one configure-generated setup;
boost developers should avoid this option, as it incurs the danger of accidentally
committing a configure-modified <a href="../../../../boost/config/user.hpp" target="_top">&lt;boost/config/user.hpp&gt;</a>
boost developers should avoid this option, as it incurs the danger of
accidentally committing a configure-modified <a href="../../../../boost/config/user.hpp" target="_top">&lt;boost/config/user.hpp&gt;</a>
to the cvs repository (something you will not be thanked for!).
</li>
<li>
<span class="bold"><strong>Option 2:</strong></span> give the header a more memorable
<li class="listitem">
<span class="bold"><strong>Option 2:</strong></span> give the header a more memorable
name, and place it somewhere convenient; then, define the macro <code class="computeroutput"><span class="identifier">BOOST_USER_CONFIG</span></code> to point to it. For
example create a new sub-directory <span class="emphasis"><em>&lt;boost-root&gt;</em></span><code class="computeroutput"><span class="special">/</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span></code><code class="computeroutput"><span class="identifier">user</span><span class="special">/</span></code>, and copy the header there; for example
example create a new sub-directory <span class="emphasis"><em>&lt;boost-root&gt;</em></span><code class="computeroutput"><span class="special">/</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span></code> <code class="computeroutput"><span class="identifier">user</span><span class="special">/</span></code>, and copy the header there; for example
as <code class="computeroutput"><span class="identifier">multithread</span><span class="special">-</span><span class="identifier">gcc</span><span class="special">-</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span></code>. Then, when compiling add the command
line option: <code class="computeroutput"><span class="special">-</span><span class="identifier">DBOOST_USER_CONFIG</span><span class="special">=</span><span class="string">"&lt;boost/config/user/multithread-gcc-config.hpp&gt;"</span></code>,
and boost will use the new configuration header. This option allows you
@ -318,7 +312,7 @@
</div>
<a name="config_user_settable"></a><p>
</p>
<div class="section" lang="en">
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_config.configuring_boost_for_your_platform.user_settable_options"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.user_settable_options" title="User settable options">User
settable options</a>
@ -387,10 +381,10 @@
<td>
<p>
When defined, it should point to the name of the standard library
configuration file to use. Defining this cuts out the standard library
selection logic, and eliminates the dependency on the header containing
that logic. For example if you are using STLport, then you could
define <code class="computeroutput"><span class="identifier">BOOST_STDLIB_CONFIG</span></code>
configuration file to use. Defining this cuts out the standard
library selection logic, and eliminates the dependency on the header
containing that logic. For example if you are using STLport, then
you could define <code class="computeroutput"><span class="identifier">BOOST_STDLIB_CONFIG</span></code>
to <a href="../../../../boost/config/stdlib/stlport.hpp" target="_top"><code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">stdlib</span><span class="special">/</span><span class="identifier">stlport</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a>.
</p>
</td>
@ -421,8 +415,8 @@
<td>
<p>
When defined, no compiler configuration file is selected or included,
define when the compiler is fully conformant with the standard, or
where the user header (see <code class="computeroutput"><span class="identifier">BOOST_USER_CONFIG</span></code>),
define when the compiler is fully conformant with the standard,
or where the user header (see <code class="computeroutput"><span class="identifier">BOOST_USER_CONFIG</span></code>),
has had any options necessary added to it, for example by an autoconf
generated configure script.
</p>
@ -438,9 +432,9 @@
<p>
When defined, no standard library configuration file is selected
or included, define when the standard library is fully conformant
with the standard, or where the user header (see <code class="computeroutput"><span class="identifier">BOOST_USER_CONFIG</span></code>),
has had any options necessary added to it, for example by an autoconf
generated configure script.
with the standard, or where the user header (see <code class="computeroutput"><span class="identifier">BOOST_USER_CONFIG</span></code>), has had any
options necessary added to it, for example by an autoconf generated
configure script.
</p>
</td>
</tr>
@ -453,10 +447,11 @@
<td>
<p>
When defined, no platform configuration file is selected or included,
define when the platform is fully conformant with the standard (and
has no useful extra features), or where the user header (see <code class="computeroutput"><span class="identifier">BOOST_USER_CONFIG</span></code>), has had any
options necessary added to it, for example by an autoconf generated
configure script.
define when the platform is fully conformant with the standard
(and has no useful extra features), or where the user header (see
<code class="computeroutput"><span class="identifier">BOOST_USER_CONFIG</span></code>),
has had any options necessary added to it, for example by an autoconf
generated configure script.
</p>
</td>
</tr>
@ -485,10 +480,10 @@
The normal behavior for compiler versions that are newer than the
last known version, is to assume that they have all the same defects
as the last known version. By setting this define, then compiler
versions that are newer than the last known version are assumed to
be fully conforming with the standard. This is probably most useful
for boost developers or testers, and for those who want to use boost
to test beta compiler versions.
versions that are newer than the last known version are assumed
to be fully conforming with the standard. This is probably most
useful for boost developers or testers, and for those who want
to use boost to test beta compiler versions.
</p>
</td>
</tr>
@ -515,8 +510,8 @@
</td>
<td>
<p>
When defined, disables threading support, even if the compiler in
its current translation mode supports multiple threads.
When defined, disables threading support, even if the compiler
in its current translation mode supports multiple threads.
</p>
</td>
</tr>
@ -529,9 +524,10 @@
<td>
<p>
When defined, disables the use of Win32 specific API's, even when
these are available. Also has the effect of setting <code class="computeroutput"><span class="identifier">BOOST_DISABLE_THREADS</span></code> unless <code class="computeroutput"><span class="identifier">BOOST_HAS_PTHREADS</span></code> is set. This
option may be set automatically by the config system when it detects
that the compiler is in "strict mode".
these are available. Also has the effect of setting <code class="computeroutput"><span class="identifier">BOOST_DISABLE_THREADS</span></code> unless
<code class="computeroutput"><span class="identifier">BOOST_HAS_PTHREADS</span></code>
is set. This option may be set automatically by the config system
when it detects that the compiler is in "strict mode".
</p>
</td>
</tr>
@ -571,8 +567,8 @@
<td>
<p>
A suffix header to include in place of whatever boost.config would
normally select, any replacement should undo the effects of the prefix
header.
normally select, any replacement should undo the effects of the
prefix header.
</p>
</td>
</tr>
@ -584,14 +580,14 @@
</td>
<td>
<p>
Forces all libraries that have separate source, to be linked as dll's
rather than static libraries on Microsoft Windows (this macro is
used to turn on <code class="computeroutput"><span class="identifier">__declspec</span><span class="special">(</span><span class="identifier">dllimport</span><span class="special">)</span></code> modifiers, so that the compiler
Forces all libraries that have separate source, to be linked as
dll's rather than static libraries on Microsoft Windows (this macro
is used to turn on <code class="computeroutput"><span class="identifier">__declspec</span><span class="special">(</span><span class="identifier">dllimport</span><span class="special">)</span></code> modifiers, so that the compiler
knows which symbols to look for in a dll rather than in a static
library). Note that there may be some libraries that can only be
statically linked (Boost.Test for example) and others which may only
be dynamically linked (Boost.Threads for example), in these cases
this macro has no effect.
statically linked (Boost.Test for example) and others which may
only be dynamically linked (Boost.Threads for example), in these
cases this macro has no effect.
</p>
</td>
</tr>
@ -611,9 +607,9 @@
etc (this macro is used to turn on <code class="computeroutput"><span class="identifier">__declspec</span><span class="special">(</span><span class="identifier">dllimport</span><span class="special">)</span></code> modifiers, so that the compiler
knows which symbols to look for in a dll rather than in a static
library). Note that there may be some libraries that can only be
statically linked (Boost.Test for example) and others which may only
be dynamically linked (Boost.Threads for example), in these cases
this macro is unsupported.
statically linked (Boost.Test for example) and others which may
only be dynamically linked (Boost.Threads for example), in these
cases this macro is unsupported.
</p>
</td>
</tr>
@ -628,8 +624,8 @@
Tells the config system not to automatically select which libraries
to link against. Normally if a compiler supports #pragma lib, then
the correct library build variant will be automatically selected
and linked against, simply by the act of including one of that library's
headers. This macro turns that feature off.
and linked against, simply by the act of including one of that
library's headers. This macro turns that feature off.
</p>
</td>
</tr>
@ -643,12 +639,12 @@
<p>
Tells the config system not to automatically select which library
to link against for library "whatever", replace <span class="emphasis"><em>WHATEVER</em></span>
in the macro name with the name of the library; for example <code class="computeroutput"><span class="identifier">BOOST_DATE_TIME_NO_LIB</span></code> or <code class="computeroutput"><span class="identifier">BOOST_REGEX_NO_LIB</span></code>. Normally if
a compiler supports <code class="computeroutput"><span class="preprocessor">#pragma</span>
<span class="identifier">lib</span></code>, then the correct library
build variant will be automatically selected and linked against,
simply by the act of including one of that library's headers. This
macro turns that feature off.
in the macro name with the name of the library; for example <code class="computeroutput"><span class="identifier">BOOST_DATE_TIME_NO_LIB</span></code> or <code class="computeroutput"><span class="identifier">BOOST_REGEX_NO_LIB</span></code>. Normally
if a compiler supports <code class="computeroutput"><span class="preprocessor">#pragma</span>
<span class="identifier">lib</span></code>, then the correct
library build variant will be automatically selected and linked
against, simply by the act of including one of that library's headers.
This macro turns that feature off.
</p>
</td>
</tr>
@ -682,7 +678,7 @@
</tbody>
</table></div>
</div>
<div class="section" lang="en">
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_config.configuring_boost_for_your_platform.advanced_configuration_usage"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage" title="Advanced configuration usage">Advanced
configuration usage</a>
@ -726,7 +722,7 @@
<p>
The following usage examples represent just a few of the possibilities:
</p>
<div class="section" lang="en">
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_1__creating_our_own_frozen_configuration"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_1__creating_our_own_frozen_configuration" title="Example 1, creating our own frozen configuration">Example
1, creating our own frozen configuration</a>
@ -758,7 +754,7 @@
yet supported by boost.
</p>
</div>
<div class="section" lang="en">
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_2__skipping_files_that_you_don_t_need"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_2__skipping_files_that_you_don_t_need" title="Example 2: skipping files that you don't need">Example
2: skipping files that you don't need</a>
@ -777,7 +773,7 @@
a dependency on two boost headers.
</p>
</div>
<div class="section" lang="en">
<div class="section">
<div class="titlepage"><div><div><h4 class="title">
<a name="boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_3__using_configure_script_to_freeze_the_boost_configuration"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_3__using_configure_script_to_freeze_the_boost_configuration" title="Example 3: using configure script to freeze the boost configuration">Example
3: using configure script to freeze the boost configuration</a>
@ -790,7 +786,7 @@
</p>
</div>
</div>
<div class="section" lang="en">
<div class="section">
<div class="titlepage"><div><div><h3 class="title">
<a name="boost_config.configuring_boost_for_your_platform.testing_the_boost_configuration"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.testing_the_boost_configuration" title="Testing the boost configuration">Testing
the boost configuration</a>
@ -831,8 +827,8 @@
setup, plus your current boost configuration. The information provided
by this program useful in setting up the boost configuration files.
If you report that boost is incorrectly configured for your compiler/library/platform
then please include the output from this program when reporting the
changes required.
then please include the output from this program when reporting
the changes required.
</p>
</td>
</tr>
@ -844,9 +840,9 @@
</td>
<td>
<p>
A monolithic test program that includes most of the individual test
cases. This provides a quick check to see if boost is correctly configured
for your compiler/library/platform.
A monolithic test program that includes most of the individual
test cases. This provides a quick check to see if boost is correctly
configured for your compiler/library/platform.
</p>
</td>
</tr>
@ -859,9 +855,9 @@
<td>
<p>
Tests your standard library's <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span></code>
implementation (or its boost provided replacement if <code class="computeroutput"><span class="identifier">BOOST_NO_LIMITS</span></code> is defined). This
test file fails with most versions of numeric_limits, mainly due
to the way that some compilers treat NAN's and infinity.
implementation (or its boost provided replacement if <code class="computeroutput"><span class="identifier">BOOST_NO_LIMITS</span></code> is defined).
This test file fails with most versions of numeric_limits, mainly
due to the way that some compilers treat NAN's and infinity.
</p>
</td>
</tr>
@ -887,8 +883,8 @@
</td>
<td>
<p>
Individual compiler defect test files. Each of these should not compile,
if one does then the corresponding <code class="computeroutput"><span class="identifier">BOOST_NO_XXX</span></code>
Individual compiler defect test files. Each of these should not
compile, if one does then the corresponding <code class="computeroutput"><span class="identifier">BOOST_NO_XXX</span></code>
macro is defined when it need not be - see each test file for specific
details.
</p>
@ -902,10 +898,10 @@
</td>
<td>
<p>
Individual feature test files. If one of these does not compile then
the corresponding <code class="computeroutput"><span class="identifier">BOOST_HAS_XXX</span></code>
macro is defined when it should not be - see each test file for specific
details.
Individual feature test files. If one of these does not compile
then the corresponding <code class="computeroutput"><span class="identifier">BOOST_HAS_XXX</span></code>
macro is defined when it should not be - see each test file for
specific details.
</p>
</td>
</tr>
@ -938,16 +934,10 @@
<p>
Alternatively you can run the configure script like this:
</p>
<div class="blockquote"><blockquote class="blockquote">
<p>
</p>
<p>
<div class="blockquote"><blockquote class="blockquote"><p>
<code class="computeroutput"><span class="special">./</span><span class="identifier">configure</span>
<span class="special">--</span><span class="identifier">enable</span><span class="special">-</span><span class="identifier">test</span></code>
</p>
<p>
</p>
</blockquote></div>
</p></blockquote></div>
<p>
in which case the script will test the current configuration rather than
creating a new one from scratch.
@ -960,10 +950,10 @@
</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: June 11, 2010 at 11:20:15 GMT</small></p></td>
<td align="left"><p><small>Last revised: June 30, 2010 at 23:58:03 GMT</small></p></td>
<td align="right"><div class="copyright-footer"></div></td>
</tr></table>
<hr>
<div class="spirit-nav"><a accesskey="n" href="boost_config/boost_macro_reference.html"><img src="../../../../doc/html/images/next.png" alt="Next"></a></div>
<div class="spirit-nav"><a accesskey="n" href="boost_config/boost_macro_reference.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a></div>
</body>
</html>