Try and make BOOST_NO_EXTERN_TEMPLATES clearer.

[SVN r62257]
This commit is contained in:
John Maddock
2010-05-27 08:49:52 +00:00
parent 5425bedbb4
commit 2b40995d16
6 changed files with 2244 additions and 2249 deletions

View File

@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Acknowledgements</title> <title>Acknowledgements</title>
<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css"> <link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2"> <meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
<link rel="home" href="../index.html" title="Boost.Config"> <link rel="home" href="../index.html" title="Boost.Config">
<link rel="up" href="../index.html" title="Boost.Config"> <link rel="up" href="../index.html" title="Boost.Config">
<link rel="prev" href="rationale.html" title="Rationale"> <link rel="prev" href="rationale.html" title="Rationale">
@@ -21,7 +21,7 @@
<div class="spirit-nav"> <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/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>
</div> </div>
<div class="section"> <div class="section" lang="en">
<div class="titlepage"><div><div><h2 class="title" style="clear: both"> <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> <a name="boost_config.acknowledgements"></a><a class="link" href="acknowledgements.html" title="Acknowledgements">Acknowledgements</a>
</h2></div></div></div> </h2></div></div></div>

View File

@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Boost Macro Reference</title> <title>Boost Macro Reference</title>
<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css"> <link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2"> <meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
<link rel="home" href="../index.html" title="Boost.Config"> <link rel="home" href="../index.html" title="Boost.Config">
<link rel="up" href="../index.html" title="Boost.Config"> <link rel="up" href="../index.html" title="Boost.Config">
<link rel="prev" href="../index.html" title="Boost.Config"> <link rel="prev" href="../index.html" title="Boost.Config">
@@ -22,7 +22,7 @@
<div class="spirit-nav"> <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/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>
</div> </div>
<div class="section"> <div class="section" lang="en">
<div class="titlepage"><div><div><h2 class="title" style="clear: both"> <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> <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> </h2></div></div></div>
@@ -44,7 +44,7 @@
</dl></div> </dl></div>
<a name="config_defects"></a><p> <a name="config_defects"></a><p>
</p> </p>
<div class="section"> <div class="section" lang="en">
<div class="titlepage"><div><div><h3 class="title"> <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 <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> that describe defects</a>
@@ -109,12 +109,12 @@
</td> </td>
<td> <td>
<p> <p>
Argument dependent lookup fails if there is a using declaration Argument dependent lookup fails if there is a using declaration for
for the symbol being looked up in the current scope. For example, the symbol being looked up in the current scope. For example, using
using <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">get_pointer</span></code>; prevents ADL from <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> finding overloads of <code class="computeroutput"><span class="identifier">get_pointer</span></code>
in namespaces nested inside boost (but not elsewhere). Probably in namespaces nested inside boost (but not elsewhere). Probably Borland
Borland specific. specific.
</p> </p>
</td> </td>
</tr> </tr>
@@ -361,12 +361,12 @@
</td> </td>
<td> <td>
<p> <p>
The compiler does not support exception handling (this setting The compiler does not support exception handling (this setting is
is typically required by many C++ compilers for embedded platforms). typically required by many C++ compilers for embedded platforms).
Note that there is no requirement for boost libraries to honor Note that there is no requirement for boost libraries to honor this
this configuration setting - indeed doing so may be impossible configuration setting - indeed doing so may be impossible in some
in some cases. Those libraries that do honor this will typically cases. Those libraries that do honor this will typically abort if
abort if a critical error occurs - you have been warned! a critical error occurs - you have been warned!
</p> </p>
</td> </td>
</tr> </tr>
@@ -401,8 +401,8 @@
</td> </td>
<td> <td>
<p> <p>
The compiler does not perform function template ordering or its The compiler does not perform function template ordering or its function
function template ordering is incorrect. template ordering is incorrect.
</p> </p>
<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="comment">// #1 <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> </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> <p>
The C++ implementation does not provide <code class="computeroutput"><span class="keyword">wchar_t</span></code>, 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 or it is really a synonym for another integral type. Use this symbol
to decide whether it is appropriate to explicitly specialize a to decide whether it is appropriate to explicitly specialize a template
template on <code class="computeroutput"><span class="keyword">wchar_t</span></code> on <code class="computeroutput"><span class="keyword">wchar_t</span></code> if there
if there is already a specialization for other integer types. is already a specialization for other integer types.
</p> </p>
</td> </td>
</tr> </tr>
@@ -586,8 +586,8 @@
</td> </td>
<td> <td>
<p> <p>
The compiler does not support the specialization of individual The compiler does not support the specialization of individual member
member functions of template classes. functions of template classes.
</p> </p>
</td> </td>
</tr> </tr>
@@ -604,8 +604,8 @@
</td> </td>
<td> <td>
<p> <p>
If the compiler supports member templates, but not the template If the compiler supports member templates, but not the template keyword
keyword when accessing member template classes. when accessing member template classes.
</p> </p>
</td> </td>
</tr> </tr>
@@ -681,8 +681,8 @@
</td> </td>
<td> <td>
<p> <p>
Compiler doesn't allow a nested class to access private members Compiler doesn't allow a nested class to access private members of
of its containing class. Probably Borland/CodeGear specific. its containing class. Probably Borland/CodeGear specific.
</p> </p>
</td> </td>
</tr> </tr>
@@ -701,7 +701,8 @@
<p> <p>
Compiler requires inherited operator friend functions to be defined Compiler requires inherited operator friend functions to be defined
at namespace scope, then using'ed to boost. Probably GCC specific. 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> </p>
</td> </td>
</tr> </tr>
@@ -718,8 +719,8 @@
</td> </td>
<td> <td>
<p> <p>
The compiler does not correctly handle partial specializations The compiler does not correctly handle partial specializations which
which depend upon default arguments in the primary template. depend upon default arguments in the primary template.
</p> </p>
</td> </td>
</tr> </tr>
@@ -736,9 +737,9 @@
</td> </td>
<td> <td>
<p> <p>
The compiler does not correctly handle pointers to const member The compiler does not correctly handle pointers to const member functions,
functions, preventing use of these in overloaded function templates. 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>
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. for example.
</p> </p>
</td> </td>
</tr> </tr>
@@ -772,8 +773,8 @@
</td> </td>
<td> <td>
<p> <p>
The compiler misreads 8.5.1, treating classes as non-aggregate The compiler misreads 8.5.1, treating classes as non-aggregate if
if they contain private or protected member functions. they contain private or protected member functions.
</p> </p>
</td> </td>
</tr> </tr>
@@ -808,8 +809,8 @@
</td> </td>
<td> <td>
<p> <p>
The compiler does not support the "Substitution Failure Is The compiler does not support the "Substitution Failure Is Not
Not An Error" meta-programming idiom. An Error" meta-programming idiom.
</p> </p>
</td> </td>
</tr> </tr>
@@ -1058,9 +1059,9 @@
The contents of C++ standard headers for C library functions (the 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 <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" in namespace std. This test is difficult - some libraries "fake"
the std C functions by adding using declarations to import them the std C functions by adding using declarations to import them into
into namespace std, unfortunately they don't necessarily catch namespace std, unfortunately they don't necessarily catch all of
all of them... them...
</p> </p>
</td> </td>
</tr> </tr>
@@ -1217,9 +1218,9 @@
</td> </td>
<td> <td>
<p> <p>
If a return is unreachable, then no return statement should be If a return is unreachable, then no return statement should be required,
required, however some compilers insist on it, while other issue however some compilers insist on it, while other issue a bunch of
a bunch of warnings if it is in fact present. warnings if it is in fact present.
</p> </p>
</td> </td>
</tr> </tr>
@@ -1236,9 +1237,9 @@
</td> </td>
<td> <td>
<p> <p>
The compiler will not accept a using declaration that brings a The compiler will not accept a using declaration that brings a function
function from a typename used as a base class into a derived class from a typename used as a base class into a derived class if functions
if functions of the same name are present in the derived class. of the same name are present in the derived class.
</p> </p>
</td> </td>
</tr> </tr>
@@ -1255,11 +1256,11 @@
</td> </td>
<td> <td>
<p> <p>
The compiler will not accept a using declaration that imports a The compiler will not accept a using declaration that imports a template
template class or function from another namespace. Originally a class or function from another namespace. Originally a Borland specific
Borland specific problem with imports to/from the global namespace, problem with imports to/from the global namespace, extended to MSVC6
extended to MSVC6 which has a specific issue with importing template which has a specific issue with importing template classes (but not
classes (but not functions). functions).
</p> </p>
</td> </td>
</tr> </tr>
@@ -1291,7 +1292,7 @@
</div> </div>
<a name="config_features"></a><p> <a name="config_features"></a><p>
</p> </p>
<div class="section"> <div class="section" lang="en">
<div class="titlepage"><div><div><h3 class="title"> <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 <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> that describe optional features</a>
@@ -1440,11 +1441,11 @@
</td> </td>
<td> <td>
<p> <p>
The C++ implementation provides the (SGI) hash_set and hash_map The C++ implementation provides the (SGI) hash_set and hash_map classes.
classes. When defined, <code class="computeroutput"><span class="identifier">BOOST_HASH_SET_HEADER</span></code> 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> 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 will contain the names of the header needed to access hash_set and
and hash_map; <code class="computeroutput"><span class="identifier">BOOST_STD_EXTENSION_NAMESPACE</span></code> 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. will provide the namespace in which the two class templates reside.
</p> </p>
</td> </td>
@@ -2075,9 +2076,9 @@
</td> </td>
<td> <td>
<p> <p>
The standard library lacks a conforming std::use_facet, but has The standard library lacks a conforming std::use_facet, but has a
a two argument version that does the job. This is primarily for two argument version that does the job. This is primarily for the
the Rogue Wave std lib. Rogue Wave std lib.
</p> </p>
</td> </td>
</tr> </tr>
@@ -2172,18 +2173,17 @@
<p> <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> 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 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>. 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>
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> 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
can make good use of it, so a flag is supplied (signalling presence; flag is supplied (signalling presence; thus the default is not present,
thus the default is not present, conforming to the current C++ conforming to the current C++ standard).
standard).
</p> </p>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table></div> </table></div>
</div> </div>
<div class="section"> <div class="section" lang="en">
<div class="titlepage"><div><div><h3 class="title"> <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 <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> that describe possible C++0x features</a>
@@ -2224,7 +2224,7 @@
</tr></tbody> </tr></tbody>
</table></div> </table></div>
</div> </div>
<div class="section"> <div class="section" lang="en">
<div class="titlepage"><div><div><h3 class="title"> <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 <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> that describe C++0x features not supported</a>
@@ -2654,9 +2654,8 @@
</td> </td>
<td> <td>
<p> <p>
The compiler does not support explicit instantiation declarations The compiler does not support explicit instantiation forward declarations
for templates (<code class="computeroutput"><span class="keyword">explicit</span> for templates (<code class="computeroutput"><span class="keyword">extern</span> <span class="keyword">template</span> <span class="special">...</span></code>).
<span class="keyword">template</span></code>).
</p> </p>
</td> </td>
</tr> </tr>
@@ -2778,8 +2777,7 @@
</td> </td>
<td> <td>
<p> <p>
The standard library does not support &lt;unordered_map&gt; and The standard library does not support &lt;unordered_map&gt; and &lt;unordered_set&gt;.
&lt;unordered_set&gt;.
</p> </p>
</td> </td>
</tr> </tr>
@@ -2825,7 +2823,7 @@
</div> </div>
<a name="config_helpers"></a><p> <a name="config_helpers"></a><p>
</p> </p>
<div class="section"> <div class="section" lang="en">
<div class="titlepage"><div><div><h3 class="title"> <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 <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> Helper Macros</a>
@@ -2876,10 +2874,10 @@
</span><span class="preprocessor">#endif</span> </span><span class="preprocessor">#endif</span>
</pre> </pre>
<p> <p>
where <code class="computeroutput"><span class="identifier">MACRONAME</span></code> where <code class="computeroutput"><span class="identifier">MACRONAME</span></code> is
is a macro that usually describes the version number to be tested a macro that usually describes the version number to be tested against,
against, and <code class="computeroutput"><span class="identifier">CONDITION</span></code> and <code class="computeroutput"><span class="identifier">CONDITION</span></code> is
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> 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. <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>
<p> <p>
@@ -2888,8 +2886,8 @@
is expected to be fixed at some later point. is expected to be fixed at some later point.
</p> </p>
<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> 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>
the macro <code class="computeroutput"><span class="identifier">BOOST_DETECT_OUTDATED_WORKAROUNDS</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> 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>. <span class="number">0x590</span><span class="special">)</span></code>.
</p> </p>
@@ -2907,15 +2905,15 @@
</td> </td>
<td> <td>
<p> <p>
Some compilers don't support the use of typename for dependent Some compilers don't support the use of typename for dependent types
types in deduced contexts. This macro expands to nothing on those in deduced contexts. This macro expands to nothing on those compilers,
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> and typename elsewhere. For example, replace: <code class="computeroutput"><span class="keyword">template</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="special">&lt;</span><span class="keyword">class</span>
<span class="identifier">T</span><span class="special">&gt;</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="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> <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> </p>
</td> </td>
</tr> </tr>
@@ -2983,10 +2981,10 @@
<td> <td>
<p> <p>
On compilers which don't allow in-class initialization of static On compilers which don't allow in-class initialization of static
integral constant members, we must use enums as a workaround if integral constant members, we must use enums as a workaround if we
we want the constants to be available at compile-time. This macro want the constants to be available at compile-time. This macro gives
gives us a convenient way to declare such constants. For example us a convenient way to declare such constants. For example instead
instead of: of:
</p> </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> <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> <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>
@@ -3025,8 +3023,8 @@
<td> <td>
<p> <p>
Some compilers silently "fold" different function template Some compilers silently "fold" different function template
instantiations if some of the template parameters don't appear instantiations if some of the template parameters don't appear in
in the function parameter list. For instance: the function parameter list. For instance:
</p> </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> <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> <span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">ostream</span><span class="special">&gt;</span>
@@ -3048,9 +3046,9 @@
</pre> </pre>
<p> <p>
incorrectly outputs <code class="literal">2 2 double double</code> on VC++ incorrectly outputs <code class="literal">2 2 double double</code> on VC++
6. These macros, to be used in the function parameter list, fix 6. These macros, to be used in the function parameter list, fix the
the problem without effects on the calling syntax. For instance, problem without effects on the calling syntax. For instance, in the
in the case above write: case above write:
</p> </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> <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> <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>
@@ -3071,24 +3069,25 @@
</p> </p>
<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> 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 version must be used when the macro invocation appears after a normal
normal parameter declaration or after the invocation of another parameter declaration or after the invocation of another macro of
macro of this same group. this same group.
</p> </p>
</td> </td>
</tr> </tr>
<tr> <tr>
<td> <td>
<p> <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> </p>
</td> </td>
<td> <td>
<p> <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 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 available, but they differ from library to library. This macro provides
provides a consistent way to access a locale's facets. For example, a consistent way to access a locale's facets. For example, replace:
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> <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> 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>. prefix to the front of <code class="computeroutput"><span class="identifier">BOOST_USE_FACET</span></code>.
</p> </p>
@@ -3097,15 +3096,16 @@
<tr> <tr>
<td> <td>
<p> <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> </p>
</td> </td>
<td> <td>
<p> <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 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 available, but they differ from library to library. This macro provides
provides a consistent way to check a locale's facets. For example, a consistent way to check a locale's facets. For example, replace:
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> <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> 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>. prefix to the front of <code class="computeroutput"><span class="identifier">BOOST_HAS_FACET</span></code>.
</p> </p>
@@ -3120,14 +3120,12 @@
<td> <td>
<p> <p>
Member templates are supported by some compilers even though they 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> 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:
<span class="identifier">member</span><span class="special">&lt;</span><span class="identifier">U</span><span class="special">&gt;</span></code> <code class="computeroutput"><span class="keyword">typedef</span> <span class="keyword">typename</span>
syntax, as a workaround replace: <code class="computeroutput"><span class="keyword">typedef</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="keyword">template</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">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> <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> </p>
</td> </td>
</tr> </tr>
@@ -3154,9 +3152,9 @@
<td> <td>
<p> <p>
This piece of macro magic joins the two arguments together, even 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++ when one of the arguments is itself a macro (see 16.3.1 in C++ standard).
standard). This is normally used to create a mangled name in combination This is normally used to create a mangled name in combination with
with a predefined macro such a __LINE__. a predefined macro such a __LINE__.
</p> </p>
</td> </td>
</tr> </tr>
@@ -3165,7 +3163,7 @@
</div> </div>
<a name="config_info_macros"></a><p> <a name="config_info_macros"></a><p>
</p> </p>
<div class="section"> <div class="section" lang="en">
<div class="titlepage"><div><div><h3 class="title"> <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 <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> Informational Macros</a>
@@ -3211,8 +3209,7 @@
</td> </td>
<td> <td>
<p> <p>
Describes the boost version number in XYYYZZ format such that: Describes the boost version number in XYYYZZ format such that: <code class="computeroutput"><span class="special">(</span><span class="identifier">BOOST_VERSION</span>
<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></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> <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> is the minor version, and <code class="computeroutput"><span class="special">(</span><span class="identifier">BOOST_VERSION</span> <span class="special">/</span>
@@ -3253,8 +3250,8 @@
<td> <td>
<p> <p>
Defined if <code class="computeroutput"><span class="identifier">int64_t</span></code> 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> 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
is not usable in integral constant expressions. expressions.
</p> </p>
</td> </td>
</tr> </tr>
@@ -3272,8 +3269,8 @@
<td> <td>
<p> <p>
Defined if the compiler is really Microsoft Visual C++, as opposed 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 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
as _MSC_VER. _MSC_VER.
</p> </p>
</td> </td>
</tr> </tr>
@@ -3290,10 +3287,10 @@
</td> </td>
<td> <td>
<p> <p>
Defined to a normalised 9 digit version of _MSC_FULL_VER (which Defined to a normalised 9 digit version of _MSC_FULL_VER (which sometimes
sometimes only has 8 digits), the macro has the form VVMMPPPPP only has 8 digits), the macro has the form VVMMPPPPP where VV is
where VV is the major version number, MM is the minor version number, the major version number, MM is the minor version number, and PPPPP
and PPPPP is the compiler build number. is the compiler build number.
</p> </p>
</td> </td>
</tr> </tr>
@@ -3362,9 +3359,9 @@
</td> </td>
<td> <td>
<p> <p>
Defined if the dinkumware standard library is in use, takes the Defined if the dinkumware standard library is in use, takes the same
same value as the Dinkumware library version macro <code class="computeroutput"><span class="identifier">_CPPLIB_VER</span></code> if defined, otherwise value as the Dinkumware library version macro <code class="computeroutput"><span class="identifier">_CPPLIB_VER</span></code>
1. if defined, otherwise 1.
</p> </p>
</td> </td>
</tr> </tr>
@@ -3435,15 +3432,15 @@
</td> </td>
<td> <td>
<p> <p>
Defined as a string describing the name of the platform. Mainly Defined as a string describing the name of the platform. Mainly for
for debugging the configuration. debugging the configuration.
</p> </p>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table></div> </table></div>
</div> </div>
<div class="section"> <div class="section" lang="en">
<div class="titlepage"><div><div><h3 class="title"> <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 <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> for libraries with separate source code</a>
@@ -3460,14 +3457,14 @@
The following macros and helper headers are of use to authors whose libraries The following macros and helper headers are of use to authors whose libraries
include separate source code, and are intended to address several issues: include separate source code, and are intended to address several issues:
</p> </p>
<div class="itemizedlist"><ul class="itemizedlist" type="disc"> <div class="itemizedlist"><ul type="disc">
<li class="listitem"> <li>
Controlling shared library symbol visibility Controlling shared library symbol visibility
</li> </li>
<li class="listitem"> <li>
Fixing the ABI of the compiled library Fixing the ABI of the compiled library
</li> </li>
<li class="listitem"> <li>
Selecting which compiled library to link against based upon the compilers Selecting which compiled library to link against based upon the compilers
settings settings
</li> </li>
@@ -3476,7 +3473,7 @@
See <a href="http://svn.boost.org/trac/boost/wiki/Guidelines/Separate" target="_top">Guidelines See <a href="http://svn.boost.org/trac/boost/wiki/Guidelines/Separate" target="_top">Guidelines
for Authors of Boost Libraries Containing Separate Source</a> for Authors of Boost Libraries Containing Separate Source</a>
</p> </p>
<div class="section"> <div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title"> <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 <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> controlling shared library symbol visibility</a>
@@ -3525,8 +3522,8 @@
</td> </td>
<td> <td>
<p> <p>
Defines the syntax of a C++ language extension that indicates Defines the syntax of a C++ language extension that indicates a
a symbol is to be exported from a shared library. If the compiler symbol is to be exported from a shared library. If the compiler
has no such extension, the macro is defined with no replacement has no such extension, the macro is defined with no replacement
text. text.
</p> </p>
@@ -3540,8 +3537,8 @@
</td> </td>
<td> <td>
<p> <p>
Defines the syntax of a C++ language extension that indicates Defines the syntax of a C++ language extension that indicates a
a symbol is to be imported from a shared library. If the compiler symbol is to be imported from a shared library. If the compiler
has no such extension, the macro is defined with no replacement has no such extension, the macro is defined with no replacement
text. text.
</p> </p>
@@ -3555,21 +3552,20 @@
</td> </td>
<td> <td>
<p> <p>
Defines the syntax of a C++ language extension that indicates Defines the syntax of a C++ language extension that indicates a
a symbol is to be globally visible. If the compiler has no such symbol is to be globally visible. If the compiler has no such extension,
extension, the macro is defined with no replacement text. Needed the macro is defined with no replacement text. Needed for classes
for classes that are not otherwise exported, but are used by that are not otherwise exported, but are used by RTTI. Examples
RTTI. Examples include class for objects that will be thrown include class for objects that will be thrown as exceptions or
as exceptions or used in dynamic_casts, across shared library used in dynamic_casts, across shared library boundaries. For example,
boundaries. For example, a header-only exception class might a header-only exception class might look like this:
look like this:
</p> </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 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> </pre>
<p> <p>
Without BOOST_SYMBOL_VISIBLE, it would be impossible to catch Without BOOST_SYMBOL_VISIBLE, it would be impossible to catch my_exception
my_exception thrown from a shared library compiled by GCC with thrown from a shared library compiled by GCC with the -fvisibility=hidden
the -fvisibility=hidden option. option.
</p> </p>
</td> </td>
</tr> </tr>
@@ -3581,10 +3577,10 @@
</td> </td>
<td> <td>
<p> <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 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
symbols from shared libraries. <span class="emphasis"><em>Deprecated. This macro from shared libraries. <span class="emphasis"><em>Deprecated. This macro is no longer
is no longer necessary since BOOST_SYMBOL_EXPORT and BOOST_SYMBOL_IMPORT necessary since BOOST_SYMBOL_EXPORT and BOOST_SYMBOL_IMPORT are
are now supplied. It is provided to support legacy code.</em></span> now supplied. It is provided to support legacy code.</em></span>
</p> </p>
</td> </td>
</tr> </tr>
@@ -3631,7 +3627,7 @@
<span class="special">...</span> <span class="special">...</span>
</pre> </pre>
</div> </div>
<div class="section"> <div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title"> <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 <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> Fixing</a>
@@ -3689,7 +3685,7 @@
to point to their own prefix/suffix headers if they so wish. to point to their own prefix/suffix headers if they so wish.
</p> </p>
</div> </div>
<div class="section"> <div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title"> <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 <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> library selection</a>

View File

@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Guidelines for Boost Authors</title> <title>Guidelines for Boost Authors</title>
<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css"> <link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2"> <meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
<link rel="home" href="../index.html" title="Boost.Config"> <link rel="home" href="../index.html" title="Boost.Config">
<link rel="up" 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"> <link rel="prev" href="boost_macro_reference.html" title="Boost Macro Reference">
@@ -22,7 +22,7 @@
<div class="spirit-nav"> <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/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>
</div> </div>
<div class="section"> <div class="section" lang="en">
<div class="titlepage"><div><div><h2 class="title" style="clear: both"> <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 <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> Boost Authors</a>
@@ -61,14 +61,14 @@
<p> <p>
Note that: Note that:
</p> </p>
<div class="itemizedlist"><ul class="itemizedlist" type="disc"> <div class="itemizedlist"><ul type="disc">
<li class="listitem"> <li>
Boost library implementers are not required to "<code class="computeroutput"><span class="preprocessor">#include</span> 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>", <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 and are not required in any way to support compilers that do not comply with
the C++ Standard (ISO/IEC 14882). the C++ Standard (ISO/IEC 14882).
</li> </li>
<li class="listitem"> <li>
If a library implementer wishes to support some non-conforming compiler, 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> 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>" <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>"
@@ -76,12 +76,12 @@
the standard headers such as <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">climits</span><span class="special">&gt;</span></code>, 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. etc.
</li> </li>
<li class="listitem"> <li>
If configuration information can be deduced from standard headers such as 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">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>. <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"> <li>
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> 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 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> 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>
@@ -89,21 +89,21 @@
In the rare case where there is no sensible default behavior, an #error message In the rare case where there is no sensible default behavior, an #error message
should describe the problem. should describe the problem.
</li> </li>
<li class="listitem"> <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 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 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. will be honored; the intent is to limit the complexity of config.hpp.
</li> </li>
<li class="listitem"> <li>
The intent is to support only compilers which appear on their way to becoming 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>
<li class="listitem"> <li>
The intent is not to disable mainstream features now well-supported by the The intent is not to disable mainstream features now well-supported by the
majority of compilers, such as namespaces, exceptions, RTTI, or templates. majority of compilers, such as namespaces, exceptions, RTTI, or templates.
</li> </li>
</ul></div> </ul></div>
<div class="section"> <div class="section" lang="en">
<div class="titlepage"><div><div><h3 class="title"> <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"> <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> Disabling Compiler Warnings</a>
@@ -116,17 +116,17 @@
<p> <p>
Note that: Note that:
</p> </p>
<div class="itemizedlist"><ul class="itemizedlist" type="disc"> <div class="itemizedlist"><ul type="disc">
<li class="listitem"> <li>
This header <span class="bold"><strong><span class="emphasis"><em>should never be included by 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 another Boost header</em></span></strong></span>, it should only ever be used
by a library source file or a test case. by a library source file or a test case.
</li> </li>
<li class="listitem"> <li>
The header should be included <span class="bold"><strong><span class="emphasis"><em>before you The header should be included <span class="bold"><strong><span class="emphasis"><em>before you
include any other header</em></span></strong></span>. include any other header</em></span></strong></span>.
</li> </li>
<li class="listitem"> <li>
This header only disables warnings that are hard or impossible to otherwise 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 deal with, and which are typically emitted by one compiler only, or in
one compilers own standard library headers. one compilers own standard library headers.
@@ -182,7 +182,7 @@
</tbody> </tbody>
</table></div> </table></div>
</div> </div>
<div class="section"> <div class="section" lang="en">
<div class="titlepage"><div><div><h3 class="title"> <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 <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> New Defect Macros</a>
@@ -233,14 +233,14 @@
Once the test code is in place in libs/config/test, updating the configuration Once the test code is in place in libs/config/test, updating the configuration
test system proceeds as: test system proceeds as:
</p> </p>
<div class="itemizedlist"><ul class="itemizedlist" type="disc"> <div class="itemizedlist"><ul type="disc">
<li class="listitem"> <li>
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>. 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> 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, 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> <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>
<li class="listitem"> <li>
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> 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>, </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 where <span class="emphasis"><em>MACRONAME</em></span> is the name of the new macro, and
@@ -251,7 +251,7 @@
If <span class="emphasis"><em>MACRONAME</em></span> is defined when it should not be defined, 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> 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>
<li class="listitem"> <li>
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> 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> <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>. </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 +264,26 @@
<p> <p>
Then you should: Then you should:
</p> </p>
<div class="itemizedlist"><ul class="itemizedlist" type="disc"> <div class="itemizedlist"><ul type="disc">
<li class="listitem"> <li>
Define the defect macro in those config headers that require it. Define the defect macro in those config headers that require it.
</li> </li>
<li class="listitem"> <li>
Document the macro in this documentation (please do not forget this step!!) Document the macro in this documentation (please do not forget this step!!)
</li> </li>
<li class="listitem"> <li>
Commit everything. Commit everything.
</li> </li>
<li class="listitem"> <li>
Keep an eye on the regression tests for new failures in Boost.Config caused Keep an eye on the regression tests for new failures in Boost.Config caused
by the addition. by the addition.
</li> </li>
<li class="listitem"> <li>
Start using the macro. Start using the macro.
</li> </li>
</ul></div> </ul></div>
</div> </div>
<div class="section"> <div class="section" lang="en">
<div class="titlepage"><div><div><h3 class="title"> <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 <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> New Feature Test Macros</a>
@@ -307,7 +307,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>). <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> </p>
</div> </div>
<div class="section"> <div class="section" lang="en">
<div class="titlepage"><div><div><h3 class="title"> <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 <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> the Boost Configuration Headers</a>

View File

@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Rationale</title> <title>Rationale</title>
<link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css"> <link rel="stylesheet" href="../../../../../doc/html/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2"> <meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
<link rel="home" href="../index.html" title="Boost.Config"> <link rel="home" href="../index.html" title="Boost.Config">
<link rel="up" 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"> <link rel="prev" href="guidelines_for_boost_authors.html" title="Guidelines for Boost Authors">
@@ -22,7 +22,7 @@
<div class="spirit-nav"> <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/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>
</div> </div>
<div class="section"> <div class="section" lang="en">
<div class="titlepage"><div><div><h2 class="title" style="clear: both"> <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> <a name="boost_config.rationale"></a><a class="link" href="rationale.html" title="Rationale">Rationale</a>
</h2></div></div></div> </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 principles from the <a href="http://www.objectmentor.com/resources/articles/Principles_and_Patterns.pdf" target="_top">following
article</a>. article</a>.
</p> </p>
<div class="section"> <div class="section" lang="en">
<div class="titlepage"><div><div><h3 class="title"> <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> <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> </h3></div></div></div>
@@ -102,7 +102,7 @@
code must be provided. code must be provided.
</p> </p>
</div> </div>
<div class="section"> <div class="section" lang="en">
<div class="titlepage"><div><div><h3 class="title"> <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> <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> </h3></div></div></div>

View File

@@ -3,7 +3,7 @@
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII"> <meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<title>Boost.Config</title> <title>Boost.Config</title>
<link rel="stylesheet" href="../../../../doc/html/boostbook.css" type="text/css"> <link rel="stylesheet" href="../../../../doc/html/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2"> <meta name="generator" content="DocBook XSL Stylesheets V1.74.0">
<link rel="home" href="index.html" title="Boost.Config"> <link rel="home" href="index.html" title="Boost.Config">
<link rel="next" href="boost_config/boost_macro_reference.html" title="Boost Macro Reference"> <link rel="next" href="boost_config/boost_macro_reference.html" title="Boost Macro Reference">
</head> </head>
@@ -18,7 +18,7 @@
</tr></table> </tr></table>
<hr> <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/html/images/next.png" alt="Next"></a></div>
<div class="article"> <div class="article" lang="en">
<div class="titlepage"> <div class="titlepage">
<div> <div>
<div><h2 class="title"> <div><h2 class="title">
@@ -28,7 +28,7 @@
</h3></div></div></div> </h3></div></div></div>
<div><p class="copyright">Copyright &#169; 2001 -2007 Beman Dawes, Vesa Karvonen, John Maddock</p></div> <div><p class="copyright">Copyright &#169; 2001 -2007 Beman Dawes, Vesa Karvonen, John Maddock</p></div>
<div><div class="legalnotice"> <div><div class="legalnotice">
<a name="id3235942"></a><p> <a name="id903664"></a><p>
Distributed under the Boost Software License, Version 1.0. (See accompanying 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>) 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> </p>
@@ -92,7 +92,7 @@
<dt><span class="section"><a href="boost_config/acknowledgements.html">Acknowledgements</a></span></dt> <dt><span class="section"><a href="boost_config/acknowledgements.html">Acknowledgements</a></span></dt>
</dl> </dl>
</div> </div>
<div class="section"> <div class="section" lang="en">
<div class="titlepage"><div><div><h2 class="title" style="clear: both"> <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 <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> 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 <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> the boost configuration</a></span></dt>
</dl></div> </dl></div>
<div class="section"> <div class="section" lang="en">
<div class="titlepage"><div><div><h3 class="title"> <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 <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> the default boost configuration</a>
@@ -135,7 +135,7 @@
and submitting a support request. and submitting a support request.
</p> </p>
</div> </div>
<div class="section"> <div class="section" lang="en">
<div class="titlepage"><div><div><h3 class="title"> <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 <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> &lt;boost/config.hpp&gt; header</a>
@@ -168,7 +168,7 @@
</div> </div>
<a name="config_config_script"></a><p> <a name="config_config_script"></a><p>
</p> </p>
<div class="section"> <div class="section" lang="en">
<div class="titlepage"><div><div><h3 class="title"> <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 <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> the configure script</a>
@@ -295,15 +295,15 @@
(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>). (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: There are two ways you can use this header:
</p> </p>
<div class="itemizedlist"><ul class="itemizedlist" type="disc"> <div class="itemizedlist"><ul type="disc">
<li class="listitem"> <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 <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; provided by boost. This option allows only one configure-generated setup;
boost developers should avoid this option, as it incurs the danger of accidentally 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> 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!). to the cvs repository (something you will not be thanked for!).
</li> </li>
<li class="listitem"> <li>
<span class="bold"><strong>Option 2:</strong></span> give the header a more memorable <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 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
@@ -318,7 +318,7 @@
</div> </div>
<a name="config_user_settable"></a><p> <a name="config_user_settable"></a><p>
</p> </p>
<div class="section"> <div class="section" lang="en">
<div class="titlepage"><div><div><h3 class="title"> <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 <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> settable options</a>
@@ -387,10 +387,10 @@
<td> <td>
<p> <p>
When defined, it should point to the name of the standard library When defined, it should point to the name of the standard library
configuration file to use. Defining this cuts out the standard configuration file to use. Defining this cuts out the standard library
library selection logic, and eliminates the dependency on the header selection logic, and eliminates the dependency on the header containing
containing that logic. For example if you are using STLport, then that logic. For example if you are using STLport, then you could
you could define <code class="computeroutput"><span class="identifier">BOOST_STDLIB_CONFIG</span></code> 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>. 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> </p>
</td> </td>
@@ -421,8 +421,8 @@
<td> <td>
<p> <p>
When defined, no compiler configuration file is selected or included, When defined, no compiler configuration file is selected or included,
define when the compiler is fully conformant with the standard, define when the compiler is fully conformant with the standard, or
or where the user header (see <code class="computeroutput"><span class="identifier">BOOST_USER_CONFIG</span></code>), 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 has had any options necessary added to it, for example by an autoconf
generated configure script. generated configure script.
</p> </p>
@@ -438,9 +438,9 @@
<p> <p>
When defined, no standard library configuration file is selected When defined, no standard library configuration file is selected
or included, define when the standard library is fully conformant 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 with the standard, or where the user header (see <code class="computeroutput"><span class="identifier">BOOST_USER_CONFIG</span></code>),
options necessary added to it, for example by an autoconf generated has had any options necessary added to it, for example by an autoconf
configure script. generated configure script.
</p> </p>
</td> </td>
</tr> </tr>
@@ -453,11 +453,10 @@
<td> <td>
<p> <p>
When defined, no platform configuration file is selected or included, When defined, no platform configuration file is selected or included,
define when the platform is fully conformant with the standard define when the platform is fully conformant with the standard (and
(and has no useful extra features), or where the user header (see 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
<code class="computeroutput"><span class="identifier">BOOST_USER_CONFIG</span></code>), options necessary added to it, for example by an autoconf generated
has had any options necessary added to it, for example by an autoconf configure script.
generated configure script.
</p> </p>
</td> </td>
</tr> </tr>
@@ -486,10 +485,10 @@
The normal behavior for compiler versions that are newer than the The normal behavior for compiler versions that are newer than the
last known version, is to assume that they have all the same defects last known version, is to assume that they have all the same defects
as the last known version. By setting this define, then compiler as the last known version. By setting this define, then compiler
versions that are newer than the last known version are assumed versions that are newer than the last known version are assumed to
to be fully conforming with the standard. This is probably most be fully conforming with the standard. This is probably most useful
useful for boost developers or testers, and for those who want for boost developers or testers, and for those who want to use boost
to use boost to test beta compiler versions. to test beta compiler versions.
</p> </p>
</td> </td>
</tr> </tr>
@@ -516,8 +515,8 @@
</td> </td>
<td> <td>
<p> <p>
When defined, disables threading support, even if the compiler When defined, disables threading support, even if the compiler in
in its current translation mode supports multiple threads. its current translation mode supports multiple threads.
</p> </p>
</td> </td>
</tr> </tr>
@@ -530,10 +529,9 @@
<td> <td>
<p> <p>
When defined, disables the use of Win32 specific API's, even when 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 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
<code class="computeroutput"><span class="identifier">BOOST_HAS_PTHREADS</span></code> option may be set automatically by the config system when it detects
is set. This option may be set automatically by the config system that the compiler is in "strict mode".
when it detects that the compiler is in "strict mode".
</p> </p>
</td> </td>
</tr> </tr>
@@ -573,8 +571,8 @@
<td> <td>
<p> <p>
A suffix header to include in place of whatever boost.config would A suffix header to include in place of whatever boost.config would
normally select, any replacement should undo the effects of the normally select, any replacement should undo the effects of the prefix
prefix header. header.
</p> </p>
</td> </td>
</tr> </tr>
@@ -586,14 +584,14 @@
</td> </td>
<td> <td>
<p> <p>
Forces all libraries that have separate source, to be linked as Forces all libraries that have separate source, to be linked as dll's
dll's rather than static libraries on Microsoft Windows (this macro rather than static libraries on Microsoft Windows (this macro is
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 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 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 library). Note that there may be some libraries that can only be
statically linked (Boost.Test for example) and others which may statically linked (Boost.Test for example) and others which may only
only be dynamically linked (Boost.Threads for example), in these be dynamically linked (Boost.Threads for example), in these cases
cases this macro has no effect. this macro has no effect.
</p> </p>
</td> </td>
</tr> </tr>
@@ -613,9 +611,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 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 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 library). Note that there may be some libraries that can only be
statically linked (Boost.Test for example) and others which may statically linked (Boost.Test for example) and others which may only
only be dynamically linked (Boost.Threads for example), in these be dynamically linked (Boost.Threads for example), in these cases
cases this macro is unsupported. this macro is unsupported.
</p> </p>
</td> </td>
</tr> </tr>
@@ -630,8 +628,8 @@
Tells the config system not to automatically select which libraries Tells the config system not to automatically select which libraries
to link against. Normally if a compiler supports #pragma lib, then to link against. Normally if a compiler supports #pragma lib, then
the correct library build variant will be automatically selected the correct library build variant will be automatically selected
and linked against, simply by the act of including one of that and linked against, simply by the act of including one of that library's
library's headers. This macro turns that feature off. headers. This macro turns that feature off.
</p> </p>
</td> </td>
</tr> </tr>
@@ -645,12 +643,12 @@
<p> <p>
Tells the config system not to automatically select which library Tells the config system not to automatically select which library
to link against for library "whatever", replace <span class="emphasis"><em>WHATEVER</em></span> 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 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
if a compiler supports <code class="computeroutput"><span class="preprocessor">#pragma</span> a compiler supports <code class="computeroutput"><span class="preprocessor">#pragma</span>
<span class="identifier">lib</span></code>, then the correct <span class="identifier">lib</span></code>, then the correct library
library build variant will be automatically selected and linked build variant will be automatically selected and linked against,
against, simply by the act of including one of that library's headers. simply by the act of including one of that library's headers. This
This macro turns that feature off. macro turns that feature off.
</p> </p>
</td> </td>
</tr> </tr>
@@ -684,7 +682,7 @@
</tbody> </tbody>
</table></div> </table></div>
</div> </div>
<div class="section"> <div class="section" lang="en">
<div class="titlepage"><div><div><h3 class="title"> <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 <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> configuration usage</a>
@@ -728,7 +726,7 @@
<p> <p>
The following usage examples represent just a few of the possibilities: The following usage examples represent just a few of the possibilities:
</p> </p>
<div class="section"> <div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title"> <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 <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> 1, creating our own frozen configuration</a>
@@ -760,7 +758,7 @@
yet supported by boost. yet supported by boost.
</p> </p>
</div> </div>
<div class="section"> <div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title"> <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 <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> 2: skipping files that you don't need</a>
@@ -779,7 +777,7 @@
a dependency on two boost headers. a dependency on two boost headers.
</p> </p>
</div> </div>
<div class="section"> <div class="section" lang="en">
<div class="titlepage"><div><div><h4 class="title"> <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 <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> 3: using configure script to freeze the boost configuration</a>
@@ -792,7 +790,7 @@
</p> </p>
</div> </div>
</div> </div>
<div class="section"> <div class="section" lang="en">
<div class="titlepage"><div><div><h3 class="title"> <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 <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> the boost configuration</a>
@@ -833,8 +831,8 @@
setup, plus your current boost configuration. The information provided setup, plus your current boost configuration. The information provided
by this program useful in setting up the boost configuration files. by this program useful in setting up the boost configuration files.
If you report that boost is incorrectly configured for your compiler/library/platform If you report that boost is incorrectly configured for your compiler/library/platform
then please include the output from this program when reporting then please include the output from this program when reporting the
the changes required. changes required.
</p> </p>
</td> </td>
</tr> </tr>
@@ -846,9 +844,9 @@
</td> </td>
<td> <td>
<p> <p>
A monolithic test program that includes most of the individual A monolithic test program that includes most of the individual test
test cases. This provides a quick check to see if boost is correctly cases. This provides a quick check to see if boost is correctly configured
configured for your compiler/library/platform. for your compiler/library/platform.
</p> </p>
</td> </td>
</tr> </tr>
@@ -861,9 +859,9 @@
<td> <td>
<p> <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> 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). implementation (or its boost provided replacement if <code class="computeroutput"><span class="identifier">BOOST_NO_LIMITS</span></code> is defined). This
This test file fails with most versions of numeric_limits, mainly test file fails with most versions of numeric_limits, mainly due
due to the way that some compilers treat NAN's and infinity. to the way that some compilers treat NAN's and infinity.
</p> </p>
</td> </td>
</tr> </tr>
@@ -889,8 +887,8 @@
</td> </td>
<td> <td>
<p> <p>
Individual compiler defect test files. Each of these should not Individual compiler defect test files. Each of these should not compile,
compile, if one does then the corresponding <code class="computeroutput"><span class="identifier">BOOST_NO_XXX</span></code> 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 macro is defined when it need not be - see each test file for specific
details. details.
</p> </p>
@@ -904,10 +902,10 @@
</td> </td>
<td> <td>
<p> <p>
Individual feature test files. If one of these does not compile Individual feature test files. If one of these does not compile then
then the corresponding <code class="computeroutput"><span class="identifier">BOOST_HAS_XXX</span></code> 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 macro is defined when it should not be - see each test file for specific
specific details. details.
</p> </p>
</td> </td>
</tr> </tr>
@@ -962,7 +960,7 @@
</div> </div>
</div> </div>
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr> <table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
<td align="left"><p><small>Last revised: May 22, 2010 at 12:50:36 GMT</small></p></td> <td align="left"><p><small>Last revised: May 27, 2010 at 08:46:14 GMT</small></p></td>
<td align="right"><div class="copyright-footer"></div></td> <td align="right"><div class="copyright-footer"></div></td>
</tr></table> </tr></table>
<hr> <hr>

View File

@@ -582,7 +582,7 @@ deleted (`= delete`) functions.
explicit conversion operators (`explicit operator T()`). explicit conversion operators (`explicit operator T()`).
]] ]]
[[`BOOST_NO_EXTERN_TEMPLATE`][The compiler does not support [[`BOOST_NO_EXTERN_TEMPLATE`][The compiler does not support
explicit instantiation declarations for templates (`explicit template`). explicit instantiation forward declarations for templates (`extern template ...`).
]] ]]
[[`BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS`][The compiler does not support [[`BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS`][The compiler does not support
default template arguments for function templates. default template arguments for function templates.
@@ -1080,3 +1080,4 @@ match that used to create the libraries via bjam 's install rules.
[endsect] [endsect]