Merge documentation update.

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

View File

@@ -2,8 +2,8 @@
<head> <head>
<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/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.74.0"> <meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
<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">
@@ -19,9 +19,9 @@
</tr></table> </tr></table>
<hr> <hr>
<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/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a>
</div> </div>
<div class="section" lang="en"> <div class="section">
<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>
@@ -55,7 +55,7 @@
</tr></table> </tr></table>
<hr> <hr>
<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/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a>
</div> </div>
</body> </body>
</html> </html>

View File

@@ -2,8 +2,8 @@
<head> <head>
<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/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.74.0"> <meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
<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">
@@ -20,9 +20,9 @@
</tr></table> </tr></table>
<hr> <hr>
<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/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="guidelines_for_boost_authors.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
</div> </div>
<div class="section" lang="en"> <div class="section">
<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" lang="en"> <div class="section">
<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 for Argument dependent lookup fails if there is a using declaration
the symbol being looked up in the current scope. For example, using for the symbol being looked up in the current scope. For example,
<code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">get_pointer</span></code>; prevents ADL from using <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">get_pointer</span></code>; prevents ADL from
finding overloads of <code class="computeroutput"><span class="identifier">get_pointer</span></code> finding overloads of <code class="computeroutput"><span class="identifier">get_pointer</span></code>
in namespaces nested inside boost (but not elsewhere). Probably Borland in namespaces nested inside boost (but not elsewhere). Probably
specific. Borland 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 is The compiler does not support exception handling (this setting
typically required by many C++ compilers for embedded platforms). is typically required by many C++ compilers for embedded platforms).
Note that there is no requirement for boost libraries to honor this Note that there is no requirement for boost libraries to honor
configuration setting - indeed doing so may be impossible in some this configuration setting - indeed doing so may be impossible
cases. Those libraries that do honor this will typically abort if in some cases. Those libraries that do honor this will typically
a critical error occurs - you have been warned! abort if 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 function The compiler does not perform function template ordering or its
template ordering is incorrect. function 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 template to decide whether it is appropriate to explicitly specialize a
on <code class="computeroutput"><span class="keyword">wchar_t</span></code> if there template on <code class="computeroutput"><span class="keyword">wchar_t</span></code>
is already a specialization for other integer types. if there 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 member The compiler does not support the specialization of individual
functions of template classes. member 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 keyword If the compiler supports member templates, but not the template
when accessing member template classes. keyword 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 of Compiler doesn't allow a nested class to access private members
its containing class. Probably Borland/CodeGear specific. of its containing class. Probably Borland/CodeGear specific.
</p> </p>
</td> </td>
</tr> </tr>
@@ -701,8 +701,7 @@
<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> 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.
for example.
</p> </p>
</td> </td>
</tr> </tr>
@@ -719,8 +718,8 @@
</td> </td>
<td> <td>
<p> <p>
The compiler does not correctly handle partial specializations which The compiler does not correctly handle partial specializations
depend upon default arguments in the primary template. which depend upon default arguments in the primary template.
</p> </p>
</td> </td>
</tr> </tr>
@@ -737,9 +736,9 @@
</td> </td>
<td> <td>
<p> <p>
The compiler does not correctly handle pointers to const member functions, The compiler does not correctly handle pointers to const member
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> functions, preventing use of these in overloaded function templates.
for example. See <a href="../../../../../boost/functional.hpp" target="_top"><code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">functional</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a> for example.
</p> </p>
</td> </td>
</tr> </tr>
@@ -773,8 +772,8 @@
</td> </td>
<td> <td>
<p> <p>
The compiler misreads 8.5.1, treating classes as non-aggregate if The compiler misreads 8.5.1, treating classes as non-aggregate
they contain private or protected member functions. if they contain private or protected member functions.
</p> </p>
</td> </td>
</tr> </tr>
@@ -809,8 +808,8 @@
</td> </td>
<td> <td>
<p> <p>
The compiler does not support the "Substitution Failure Is Not The compiler does not support the "Substitution Failure Is
An Error" meta-programming idiom. Not An Error" meta-programming idiom.
</p> </p>
</td> </td>
</tr> </tr>
@@ -1059,9 +1058,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 into the std C functions by adding using declarations to import them
namespace std, unfortunately they don't necessarily catch all of into namespace std, unfortunately they don't necessarily catch
them... all of them...
</p> </p>
</td> </td>
</tr> </tr>
@@ -1218,9 +1217,9 @@
</td> </td>
<td> <td>
<p> <p>
If a return is unreachable, then no return statement should be required, If a return is unreachable, then no return statement should be
however some compilers insist on it, while other issue a bunch of required, however some compilers insist on it, while other issue
warnings if it is in fact present. a bunch of warnings if it is in fact present.
</p> </p>
</td> </td>
</tr> </tr>
@@ -1237,9 +1236,9 @@
</td> </td>
<td> <td>
<p> <p>
The compiler will not accept a using declaration that brings a function The compiler will not accept a using declaration that brings a
from a typename used as a base class into a derived class if functions function from a typename used as a base class into a derived class
of the same name are present in the derived class. if functions of the same name are present in the derived class.
</p> </p>
</td> </td>
</tr> </tr>
@@ -1256,11 +1255,11 @@
</td> </td>
<td> <td>
<p> <p>
The compiler will not accept a using declaration that imports a template The compiler will not accept a using declaration that imports a
class or function from another namespace. Originally a Borland specific template class or function from another namespace. Originally a
problem with imports to/from the global namespace, extended to MSVC6 Borland specific problem with imports to/from the global namespace,
which has a specific issue with importing template classes (but not extended to MSVC6 which has a specific issue with importing template
functions). classes (but not functions).
</p> </p>
</td> </td>
</tr> </tr>
@@ -1292,7 +1291,7 @@
</div> </div>
<a name="config_features"></a><p> <a name="config_features"></a><p>
</p> </p>
<div class="section" lang="en"> <div class="section">
<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>
@@ -1441,11 +1440,11 @@
</td> </td>
<td> <td>
<p> <p>
The C++ implementation provides the (SGI) hash_set and hash_map classes. The C++ implementation provides the (SGI) hash_set and hash_map
When defined, <code class="computeroutput"><span class="identifier">BOOST_HASH_SET_HEADER</span></code> classes. When defined, <code class="computeroutput"><span class="identifier">BOOST_HASH_SET_HEADER</span></code>
and <code class="computeroutput"><span class="identifier">BOOST_HASH_LIST_HEADER</span></code> and <code class="computeroutput"><span class="identifier">BOOST_HASH_LIST_HEADER</span></code>
will contain the names of the header needed to access hash_set and will contain the names of the header needed to access hash_set
hash_map; <code class="computeroutput"><span class="identifier">BOOST_STD_EXTENSION_NAMESPACE</span></code> and hash_map; <code class="computeroutput"><span class="identifier">BOOST_STD_EXTENSION_NAMESPACE</span></code>
will provide the namespace in which the two class templates reside. will provide the namespace in which the two class templates reside.
</p> </p>
</td> </td>
@@ -2076,9 +2075,9 @@
</td> </td>
<td> <td>
<p> <p>
The standard library lacks a conforming std::use_facet, but has a The standard library lacks a conforming std::use_facet, but has
two argument version that does the job. This is primarily for the a two argument version that does the job. This is primarily for
Rogue Wave std lib. the Rogue Wave std lib.
</p> </p>
</td> </td>
</tr> </tr>
@@ -2173,17 +2172,18 @@
<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>. 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> 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>.
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 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>
flag is supplied (signalling presence; thus the default is not present, can make good use of it, so a flag is supplied (signalling presence;
conforming to the current C++ standard). thus the default is not present, conforming to the current C++
standard).
</p> </p>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table></div> </table></div>
</div> </div>
<div class="section" lang="en"> <div class="section">
<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" lang="en"> <div class="section">
<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>
@@ -2789,7 +2789,8 @@
</td> </td>
<td> <td>
<p> <p>
The standard library does not support &lt;unordered_map&gt; and &lt;unordered_set&gt;. The standard library does not support &lt;unordered_map&gt; and
&lt;unordered_set&gt;.
</p> </p>
</td> </td>
</tr> </tr>
@@ -2835,7 +2836,7 @@
</div> </div>
<a name="config_helpers"></a><p> <a name="config_helpers"></a><p>
</p> </p>
<div class="section" lang="en"> <div class="section">
<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>
@@ -2886,10 +2887,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> is where <code class="computeroutput"><span class="identifier">MACRONAME</span></code>
a macro that usually describes the version number to be tested against, is a macro that usually describes the version number to be tested
and <code class="computeroutput"><span class="identifier">CONDITION</span></code> is against, and <code class="computeroutput"><span class="identifier">CONDITION</span></code>
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> is a comparison operator followed by a value. For example <code class="computeroutput"><span class="identifier">BOOST_WORKAROUND</span><span class="special">(</span><span class="identifier">BOOST_INTEL</span><span class="special">,</span>
<span class="special">&lt;=</span> <span class="number">1010</span><span class="special">)</span></code> would evaluate to <code class="computeroutput"><span class="number">1</span></code> for Intel C++ 10.1 and earlier. <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>
@@ -2898,8 +2899,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> 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>
<span class="emphasis"><em>unless</em></span> the macro <code class="computeroutput"><span class="identifier">BOOST_DETECT_OUTDATED_WORKAROUNDS</span></code> 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>
@@ -2917,15 +2918,15 @@
</td> </td>
<td> <td>
<p> <p>
Some compilers don't support the use of typename for dependent types Some compilers don't support the use of typename for dependent
in deduced contexts. This macro expands to nothing on those compilers, types in deduced contexts. This macro expands to nothing on those
and typename elsewhere. For example, replace: <code class="computeroutput"><span class="keyword">template</span> compilers, and typename elsewhere. For example, replace: <code class="computeroutput"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="keyword">void</span>
<span class="identifier">f</span><span class="special">(</span><span class="identifier">T</span><span class="special">,</span>
<span class="keyword">typename</span> <span class="identifier">T</span><span class="special">::</span><span class="identifier">type</span><span class="special">);</span></code> with: <code class="computeroutput"><span class="keyword">template</span>
<span class="special">&lt;</span><span class="keyword">class</span> <span class="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="keyword">typename</span> <span class="keyword">void</span> <span class="identifier">f</span><span class="special">(</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">BOOST_DEDUCED_TYPENAME</span>
<span class="identifier">T</span><span class="special">::</span><span class="identifier">type</span><span class="special">);</span></code> <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>
@@ -2993,10 +2994,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 we integral constant members, we must use enums as a workaround if
want the constants to be available at compile-time. This macro gives we want the constants to be available at compile-time. This macro
us a convenient way to declare such constants. For example instead gives us a convenient way to declare such constants. For example
of: instead 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>
@@ -3035,8 +3036,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 in instantiations if some of the template parameters don't appear
the function parameter list. For instance: in 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>
@@ -3058,9 +3059,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 the 6. These macros, to be used in the function parameter list, fix
problem without effects on the calling syntax. For instance, in the the problem without effects on the calling syntax. For instance,
case above write: in the 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>
@@ -3081,25 +3082,24 @@
</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 normal version must be used when the macro invocation appears after a
parameter declaration or after the invocation of another macro of normal parameter declaration or after the invocation of another
this same group. macro of 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> <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>
<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 provides available, but they differ from library to library. This macro
a consistent way to access a locale's facets. For example, replace: provides a consistent way to access a locale's facets. For example,
<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> replace: <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">use_facet</span><span class="special">&lt;</span><span class="identifier">Type</span><span class="special">&gt;(</span><span class="identifier">loc</span><span class="special">);</span></code>
with: <code class="computeroutput"><span class="identifier">BOOST_USE_FACET</span><span class="special">(</span><span class="identifier">Type</span><span class="special">,</span> <span class="identifier">loc</span><span class="special">);</span></code> Note do not add a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span></code> 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>
@@ -3108,16 +3108,15 @@
<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> <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>
<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 provides available, but they differ from library to library. This macro
a consistent way to check a locale's facets. For example, replace: provides a consistent way to check a locale's facets. For example,
<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> replace: <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">has_facet</span><span class="special">&lt;</span><span class="identifier">Type</span><span class="special">&gt;(</span><span class="identifier">loc</span><span class="special">);</span></code>
with: <code class="computeroutput"><span class="identifier">BOOST_HAS_FACET</span><span class="special">(</span><span class="identifier">Type</span><span class="special">,</span> <span class="identifier">loc</span><span class="special">);</span></code> Note do not add a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span></code> 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>
@@ -3132,12 +3131,14 @@
<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> <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: can't use the <code class="computeroutput"><span class="identifier">A</span><span class="special">::</span><span class="keyword">template</span>
<code class="computeroutput"><span class="keyword">typedef</span> <span class="keyword">typename</span> <span class="identifier">member</span><span class="special">&lt;</span><span class="identifier">U</span><span class="special">&gt;</span></code>
<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> syntax, as a workaround replace: <code class="computeroutput"><span class="keyword">typedef</span>
<span class="keyword">typename</span> <span class="identifier">A</span><span class="special">::</span><span class="identifier">BOOST_NESTED_TEMPLATE</span> <span class="keyword">typename</span> <span class="identifier">A</span><span class="special">::</span><span class="keyword">template</span>
<span class="identifier">rebind</span><span class="special">&lt;</span><span class="identifier">U</span><span class="special">&gt;</span> <span class="identifier">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>
@@ -3164,9 +3165,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++ standard). when one of the arguments is itself a macro (see 16.3.1 in C++
This is normally used to create a mangled name in combination with standard). This is normally used to create a mangled name in combination
a predefined macro such a __LINE__. with a predefined macro such a __LINE__.
</p> </p>
</td> </td>
</tr> </tr>
@@ -3175,7 +3176,7 @@
</div> </div>
<a name="config_info_macros"></a><p> <a name="config_info_macros"></a><p>
</p> </p>
<div class="section" lang="en"> <div class="section">
<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>
@@ -3221,7 +3222,8 @@
</td> </td>
<td> <td>
<p> <p>
Describes the boost version number in XYYYZZ format such that: <code class="computeroutput"><span class="special">(</span><span class="identifier">BOOST_VERSION</span> Describes the boost version number in XYYYZZ format such that:
<code class="computeroutput"><span class="special">(</span><span class="identifier">BOOST_VERSION</span>
<span class="special">%</span> <span class="number">100</span><span class="special">)</span></code> is the sub-minor version, <code class="computeroutput"><span class="special">((</span><span class="identifier">BOOST_VERSION</span> <span class="special">%</span> <span class="number">100</span><span class="special">)</span></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>
@@ -3262,8 +3264,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> is not usable in integral constant 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>
expressions. is not usable in integral constant expressions.
</p> </p>
</td> </td>
</tr> </tr>
@@ -3281,8 +3283,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 as to one of the many other compilers that also define <code class="computeroutput"><span class="identifier">_MSC_VER</span></code>. Has the same value
_MSC_VER. as _MSC_VER.
</p> </p>
</td> </td>
</tr> </tr>
@@ -3299,10 +3301,10 @@
</td> </td>
<td> <td>
<p> <p>
Defined to a normalised 9 digit version of _MSC_FULL_VER (which sometimes Defined to a normalised 9 digit version of _MSC_FULL_VER (which
only has 8 digits), the macro has the form VVMMPPPPP where VV is sometimes only has 8 digits), the macro has the form VVMMPPPPP
the major version number, MM is the minor version number, and PPPPP where VV is the major version number, MM is the minor version number,
is the compiler build number. and PPPPP is the compiler build number.
</p> </p>
</td> </td>
</tr> </tr>
@@ -3371,9 +3373,9 @@
</td> </td>
<td> <td>
<p> <p>
Defined if the dinkumware standard library is in use, takes the same Defined if the dinkumware standard library is in use, takes the
value as the Dinkumware library version macro <code class="computeroutput"><span class="identifier">_CPPLIB_VER</span></code> same value as the Dinkumware library version macro <code class="computeroutput"><span class="identifier">_CPPLIB_VER</span></code> if defined, otherwise
if defined, otherwise 1. 1.
</p> </p>
</td> </td>
</tr> </tr>
@@ -3444,15 +3446,15 @@
</td> </td>
<td> <td>
<p> <p>
Defined as a string describing the name of the platform. Mainly for Defined as a string describing the name of the platform. Mainly
debugging the configuration. for debugging the configuration.
</p> </p>
</td> </td>
</tr> </tr>
</tbody> </tbody>
</table></div> </table></div>
</div> </div>
<div class="section" lang="en"> <div class="section">
<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>
@@ -3469,14 +3471,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 type="disc"> <div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li> <li class="listitem">
Controlling shared library symbol visibility Controlling shared library symbol visibility
</li> </li>
<li> <li class="listitem">
Fixing the ABI of the compiled library Fixing the ABI of the compiled library
</li> </li>
<li> <li class="listitem">
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>
@@ -3485,7 +3487,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" lang="en"> <div class="section">
<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>
@@ -3534,8 +3536,8 @@
</td> </td>
<td> <td>
<p> <p>
Defines the syntax of a C++ language extension that indicates a Defines the syntax of a C++ language extension that indicates
symbol is to be exported from a shared library. If the compiler a 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>
@@ -3549,8 +3551,8 @@
</td> </td>
<td> <td>
<p> <p>
Defines the syntax of a C++ language extension that indicates a Defines the syntax of a C++ language extension that indicates
symbol is to be imported from a shared library. If the compiler a 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>
@@ -3564,20 +3566,21 @@
</td> </td>
<td> <td>
<p> <p>
Defines the syntax of a C++ language extension that indicates a Defines the syntax of a C++ language extension that indicates
symbol is to be globally visible. If the compiler has no such extension, a symbol is to be globally visible. If the compiler has no such
the macro is defined with no replacement text. Needed for classes extension, the macro is defined with no replacement text. Needed
that are not otherwise exported, but are used by RTTI. Examples for classes that are not otherwise exported, but are used by
include class for objects that will be thrown as exceptions or RTTI. Examples include class for objects that will be thrown
used in dynamic_casts, across shared library boundaries. For example, as exceptions or used in dynamic_casts, across shared library
a header-only exception class might look like this: boundaries. For example, a header-only exception class might
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 my_exception Without BOOST_SYMBOL_VISIBLE, it would be impossible to catch
thrown from a shared library compiled by GCC with the -fvisibility=hidden my_exception thrown from a shared library compiled by GCC with
option. the -fvisibility=hidden option.
</p> </p>
</td> </td>
</tr> </tr>
@@ -3589,10 +3592,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 symbols 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
from shared libraries. <span class="emphasis"><em>Deprecated. This macro is no longer symbols from shared libraries. <span class="emphasis"><em>Deprecated. This macro
necessary since BOOST_SYMBOL_EXPORT and BOOST_SYMBOL_IMPORT are is no longer necessary since BOOST_SYMBOL_EXPORT and BOOST_SYMBOL_IMPORT
now supplied. It is provided to support legacy code.</em></span> are now supplied. It is provided to support legacy code.</em></span>
</p> </p>
</td> </td>
</tr> </tr>
@@ -3639,7 +3642,7 @@
<span class="special">...</span> <span class="special">...</span>
</pre> </pre>
</div> </div>
<div class="section" lang="en"> <div class="section">
<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>
@@ -3697,7 +3700,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" lang="en"> <div class="section">
<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>
@@ -3790,7 +3793,7 @@
</tr></table> </tr></table>
<hr> <hr>
<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/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="guidelines_for_boost_authors.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
</div> </div>
</body> </body>
</html> </html>

View File

@@ -2,8 +2,8 @@
<head> <head>
<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/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.74.0"> <meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
<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">
@@ -20,9 +20,9 @@
</tr></table> </tr></table>
<hr> <hr>
<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/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="rationale.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
</div> </div>
<div class="section" lang="en"> <div class="section">
<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,49 +61,49 @@
<p> <p>
Note that: Note that:
</p> </p>
<div class="itemizedlist"><ul type="disc"> <div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li> <li class="listitem">
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
and are not required in any way to support compilers that do not comply with way to support compilers that do not comply with the C++ Standard (ISO/IEC
the C++ Standard (ISO/IEC 14882). 14882).
</li> </li>
<li> <li class="listitem">
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>" is the preferred way to obtain
is the preferred way to obtain configuration information not available from configuration information not available from the standard headers such
the standard headers such as <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">climits</span><span class="special">&gt;</span></code>, 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> <li class="listitem">
If configuration information can be deduced from standard headers such as If configuration information can be deduced from standard headers such
<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 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
<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>. than <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code>.
</li> </li>
<li> <li class="listitem">
Boost files that use macros defined in <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code> 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> to a new platform is simply to define
to a new platform is simply to define nothing at all specific to that platform. nothing at all specific to that platform. In the rare case where there
In the rare case where there is no sensible default behavior, an #error message is no sensible default behavior, an #error message should describe the
should describe the problem. problem.
</li> </li>
<li> <li class="listitem">
If a Boost library implementer wants something added to <code class="computeroutput"><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span></code>, post 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>,
a request on the Boost mailing list. There is no guarantee such a request post a request on the Boost mailing list. There is no guarantee such a
will be honored; the intent is to limit the complexity of config.hpp. request will be honored; the intent is to limit the complexity of config.hpp.
</li> </li>
<li> <li class="listitem">
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> <li class="listitem">
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
majority of compilers, such as namespaces, exceptions, RTTI, or templates. the majority of compilers, such as namespaces, exceptions, RTTI, or templates.
</li> </li>
</ul></div> </ul></div>
<div class="section" lang="en"> <div class="section">
<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 type="disc"> <div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li> <li class="listitem">
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
another Boost header</em></span></strong></span>, it should only ever be used by another Boost header</em></span></strong></span>, it should only ever be
by a library source file or a test case. used by a library source file or a test case.
</li> </li>
<li> <li class="listitem">
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
include any other header</em></span></strong></span>. you include any other header</em></span></strong></span>.
</li> </li>
<li> <li class="listitem">
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" lang="en"> <div class="section">
<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,25 +233,27 @@
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 type="disc"> <div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li> <li class="listitem">
cd into <code class="computeroutput"><span class="identifier">libs</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">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>
</li> <br>
<li> </li>
<li class="listitem">
cd into <code class="computeroutput"><span class="identifier">libs</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">test</span><span class="special">/</span><span class="identifier">all</span></code> and run <code class="computeroutput"><span class="identifier">bjam</span> 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
<span class="emphasis"><em><code class="computeroutput"><span class="identifier">compiler</span><span class="special">-</span><span class="identifier">list</span></code></em></span> is a space separated <span class="emphasis"><em><code class="computeroutput"><span class="identifier">compiler</span><span class="special">-</span><span class="identifier">list</span></code></em></span> is a space separated
list of compilers to test with.<br><br> The xxx_pass_test and the list of compilers to test with.<br> <br> The xxx_pass_test and the
xxx_fail_test <span class="bold"><strong>should both report <code class="computeroutput"><span class="special">**</span><span class="identifier">passed</span><span class="special">**</span></code></strong></span>.<br><br> If <span class="emphasis"><em>MACRONAME</em></span> is not defined when it should xxx_fail_test <span class="bold"><strong>should both report <code class="computeroutput"><span class="special">**</span><span class="identifier">passed</span><span class="special">**</span></code></strong></span>.<br> <br> If <span class="emphasis"><em>MACRONAME</em></span>
be defined, xxx_pass_test will not report <code class="computeroutput"><span class="special">**</span><span class="identifier">passed</span><span class="special">**</span></code>. is not defined when it should be defined, xxx_pass_test will not report
If <span class="emphasis"><em>MACRONAME</em></span> is defined when it should not be defined, <code class="computeroutput"><span class="special">**</span><span class="identifier">passed</span><span class="special">**</span></code>. If <span class="emphasis"><em>MACRONAME</em></span>
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> is defined when it should not be defined, xxx_fail_test will not report
</li> <code class="computeroutput"><span class="special">**</span><span class="identifier">passed</span><span class="special">**</span></code>.<br> <br>
<li> </li>
<li class="listitem">
cd into <code class="computeroutput"><span class="identifier">libs</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">test</span></code> and run <code class="computeroutput"><span class="identifier">bjam</span> 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 +266,26 @@
<p> <p>
Then you should: Then you should:
</p> </p>
<div class="itemizedlist"><ul type="disc"> <div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li> <li class="listitem">
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> <li class="listitem">
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> <li class="listitem">
Commit everything. Commit everything.
</li> </li>
<li> <li class="listitem">
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
by the addition. caused by the addition.
</li> </li>
<li> <li class="listitem">
Start using the macro. Start using the macro.
</li> </li>
</ul></div> </ul></div>
</div> </div>
<div class="section" lang="en"> <div class="section">
<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 +309,7 @@
<code class="computeroutput"><span class="special">&lt;</span><span class="identifier">unistd</span><span class="special">.</span><span class="identifier">h</span><span class="special">&gt;</span></code>). <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" lang="en"> <div class="section">
<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>
@@ -368,7 +370,7 @@
</tr></table> </tr></table>
<hr> <hr>
<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/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="rationale.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
</div> </div>
</body> </body>
</html> </html>

View File

@@ -2,8 +2,8 @@
<head> <head>
<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/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.74.0"> <meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
<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">
@@ -20,9 +20,9 @@
</tr></table> </tr></table>
<hr> <hr>
<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/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="acknowledgements.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
</div> </div>
<div class="section" lang="en"> <div class="section">
<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" lang="en"> <div class="section">
<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>
@@ -56,16 +56,10 @@
have nothing to do with each other. Essentially, the traditional solution have nothing to do with each other. Essentially, the traditional solution
employed by configuration headers does not conform to the Open-Closed Principle: employed by configuration headers does not conform to the Open-Closed Principle:
</p> </p>
<div class="blockquote"><blockquote class="blockquote"> <div class="blockquote"><blockquote class="blockquote"><p>
<p> <span class="bold"><strong>"A module should be open for extension but closed
</p> for modification."</strong></span>
<p> </p></blockquote></div>
<span class="bold"><strong>"A module should be open for extension but
closed for modification."</strong></span>
</p>
<p>
</p>
</blockquote></div>
<p> <p>
Extending a traditional configuration header implies modifying existing code. Extending a traditional configuration header implies modifying existing code.
</p> </p>
@@ -78,15 +72,9 @@
of the entire library, and more stable elements of Boost would depend on of the entire library, and more stable elements of Boost would depend on
it. This violates the Stable Dependencies Principle: it. This violates the Stable Dependencies Principle:
</p> </p>
<div class="blockquote"><blockquote class="blockquote"> <div class="blockquote"><blockquote class="blockquote"><p>
<p>
</p>
<p>
<span class="bold"><strong>"Depend in the direction of stability."</strong></span> <span class="bold"><strong>"Depend in the direction of stability."</strong></span>
</p> </p></blockquote></div>
<p>
</p>
</blockquote></div>
<p> <p>
After even a minor change to a traditional configuration header on one minor After even a minor change to a traditional configuration header on one minor
platform, almost everything on every platform should be tested if we follow platform, almost everything on every platform should be tested if we follow
@@ -102,7 +90,7 @@
code must be provided. code must be provided.
</p> </p>
</div> </div>
<div class="section" lang="en"> <div class="section">
<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>
@@ -129,7 +117,7 @@
</tr></table> </tr></table>
<hr> <hr>
<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/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="acknowledgements.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
</div> </div>
</body> </body>
</html> </html>

View File

@@ -2,8 +2,8 @@
<head> <head>
<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/src/boostbook.css" type="text/css">
<meta name="generator" content="DocBook XSL Stylesheets V1.74.0"> <meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
<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>
@@ -17,8 +17,8 @@
<td align="center"><a href="../../../../more/index.htm">More</a></td> <td align="center"><a href="../../../../more/index.htm">More</a></td>
</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/src/images/next.png" alt="Next"></a></div>
<div class="article" lang="en"> <div class="article">
<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="id873629"></a><p> <a name="id759700"></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" lang="en"> <div class="section">
<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" lang="en"> <div class="section">
<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" lang="en"> <div class="section">
<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,14 +168,14 @@
</div> </div>
<a name="config_config_script"></a><p> <a name="config_config_script"></a><p>
</p> </p>
<div class="section" lang="en"> <div class="section">
<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>
</h3></div></div></div> </h3></div></div></div>
<div class="important"><table border="0" summary="Important"> <div class="important"><table border="0" summary="Important">
<tr> <tr>
<td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../../../doc/html/images/important.png"></td> <td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../../../doc/src/images/important.png"></td>
<th align="left">Important</th> <th align="left">Important</th>
</tr> </tr>
<tr><td align="left" valign="top"><p> <tr><td align="left" valign="top"><p>
@@ -190,15 +190,9 @@
you will need to cd into <span class="emphasis"><em>&lt;boost-root&gt;</em></span><code class="computeroutput"><span class="special">/</span><span class="identifier">libs</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span></code> you will need to cd into <span class="emphasis"><em>&lt;boost-root&gt;</em></span><code class="computeroutput"><span class="special">/</span><span class="identifier">libs</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span></code>
and type: and type:
</p> </p>
<div class="blockquote"><blockquote class="blockquote"> <div class="blockquote"><blockquote class="blockquote"><p>
<p>
</p>
<p>
<code class="computeroutput"><span class="identifier">sh</span> <span class="special">./</span><span class="identifier">configure</span></code> <code class="computeroutput"><span class="identifier">sh</span> <span class="special">./</span><span class="identifier">configure</span></code>
</p> </p></blockquote></div>
<p>
</p>
</blockquote></div>
<p> <p>
you will see a list of the items being checked as the script works its way you will see a list of the items being checked as the script works its way
through the regression tests. Note that the configure script only really through the regression tests. Note that the configure script only really
@@ -295,18 +289,18 @@
(located under <span class="emphasis"><em>&lt;boost-root&gt;</em></span><code class="computeroutput"><span class="special">/</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span></code>). (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 type="disc"> <div class="itemizedlist"><ul class="itemizedlist" type="disc">
<li> <li class="listitem">
<span class="bold"><strong>Option 1:</strong></span> copy the header into <span class="emphasis"><em>&lt;boost-root&gt;</em></span><code class="computeroutput"><span class="special">/</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span></code> so that it replaces the default user.hpp <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
committing a configure-modified <a href="../../../../boost/config/user.hpp" target="_top">&lt;boost/config/user.hpp&gt;</a> accidentally committing a configure-modified <a href="../../../../boost/config/user.hpp" target="_top">&lt;boost/config/user.hpp&gt;</a>
to the cvs repository (something you will not be thanked for!). to the cvs repository (something you will not be thanked for!).
</li> </li>
<li> <li class="listitem">
<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
as <code class="computeroutput"><span class="identifier">multithread</span><span class="special">-</span><span class="identifier">gcc</span><span class="special">-</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span></code>. Then, when compiling add the command as <code class="computeroutput"><span class="identifier">multithread</span><span class="special">-</span><span class="identifier">gcc</span><span class="special">-</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span></code>. Then, when compiling add the command
line option: <code class="computeroutput"><span class="special">-</span><span class="identifier">DBOOST_USER_CONFIG</span><span class="special">=</span><span class="string">"&lt;boost/config/user/multithread-gcc-config.hpp&gt;"</span></code>, line option: <code class="computeroutput"><span class="special">-</span><span class="identifier">DBOOST_USER_CONFIG</span><span class="special">=</span><span class="string">"&lt;boost/config/user/multithread-gcc-config.hpp&gt;"</span></code>,
and boost will use the new configuration header. This option allows you and boost will use the new configuration header. This option allows you
@@ -318,7 +312,7 @@
</div> </div>
<a name="config_user_settable"></a><p> <a name="config_user_settable"></a><p>
</p> </p>
<div class="section" lang="en"> <div class="section">
<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 +381,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 library configuration file to use. Defining this cuts out the standard
selection logic, and eliminates the dependency on the header containing library selection logic, and eliminates the dependency on the header
that logic. For example if you are using STLport, then you could containing that logic. For example if you are using STLport, then
define <code class="computeroutput"><span class="identifier">BOOST_STDLIB_CONFIG</span></code> you could define <code class="computeroutput"><span class="identifier">BOOST_STDLIB_CONFIG</span></code>
to <a href="../../../../boost/config/stdlib/stlport.hpp" target="_top"><code class="computeroutput"><span class="special">&lt;</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">stdlib</span><span class="special">/</span><span class="identifier">stlport</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">&gt;</span></code></a>. 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 +415,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, or define when the compiler is fully conformant with the standard,
where the user header (see <code class="computeroutput"><span class="identifier">BOOST_USER_CONFIG</span></code>), or where the user header (see <code class="computeroutput"><span class="identifier">BOOST_USER_CONFIG</span></code>),
has had any options necessary added to it, for example by an autoconf has had any options necessary added to it, for example by an autoconf
generated configure script. generated configure script.
</p> </p>
@@ -438,9 +432,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>), with the standard, or where the user header (see <code class="computeroutput"><span class="identifier">BOOST_USER_CONFIG</span></code>), has had any
has had any options necessary added to it, for example by an autoconf options necessary added to it, for example by an autoconf generated
generated configure script. configure script.
</p> </p>
</td> </td>
</tr> </tr>
@@ -453,10 +447,11 @@
<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 (and define when the platform is fully conformant with the standard
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 (and has no useful extra features), or where the user header (see
options necessary added to it, for example by an autoconf generated <code class="computeroutput"><span class="identifier">BOOST_USER_CONFIG</span></code>),
configure script. has had any options necessary added to it, for example by an autoconf
generated configure script.
</p> </p>
</td> </td>
</tr> </tr>
@@ -485,10 +480,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 to versions that are newer than the last known version are assumed
be fully conforming with the standard. This is probably most useful to be fully conforming with the standard. This is probably most
for boost developers or testers, and for those who want to use boost useful for boost developers or testers, and for those who want
to test beta compiler versions. to use boost to test beta compiler versions.
</p> </p>
</td> </td>
</tr> </tr>
@@ -515,8 +510,8 @@
</td> </td>
<td> <td>
<p> <p>
When defined, disables threading support, even if the compiler in When defined, disables threading support, even if the compiler
its current translation mode supports multiple threads. in its current translation mode supports multiple threads.
</p> </p>
</td> </td>
</tr> </tr>
@@ -529,9 +524,10 @@
<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 <code class="computeroutput"><span class="identifier">BOOST_HAS_PTHREADS</span></code> is set. This these are available. Also has the effect of setting <code class="computeroutput"><span class="identifier">BOOST_DISABLE_THREADS</span></code> unless
option may be set automatically by the config system when it detects <code class="computeroutput"><span class="identifier">BOOST_HAS_PTHREADS</span></code>
that the compiler is in "strict mode". is set. This option may be set automatically by the config system
when it detects that the compiler is in "strict mode".
</p> </p>
</td> </td>
</tr> </tr>
@@ -571,8 +567,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 prefix normally select, any replacement should undo the effects of the
header. prefix header.
</p> </p>
</td> </td>
</tr> </tr>
@@ -584,14 +580,14 @@
</td> </td>
<td> <td>
<p> <p>
Forces all libraries that have separate source, to be linked as dll's Forces all libraries that have separate source, to be linked as
rather than static libraries on Microsoft Windows (this macro is dll's rather than static libraries on Microsoft Windows (this macro
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 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 only statically linked (Boost.Test for example) and others which may
be dynamically linked (Boost.Threads for example), in these cases only be dynamically linked (Boost.Threads for example), in these
this macro has no effect. cases this macro has no effect.
</p> </p>
</td> </td>
</tr> </tr>
@@ -611,9 +607,9 @@
etc (this macro is used to turn on <code class="computeroutput"><span class="identifier">__declspec</span><span class="special">(</span><span class="identifier">dllimport</span><span class="special">)</span></code> modifiers, so that the compiler 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 only statically linked (Boost.Test for example) and others which may
be dynamically linked (Boost.Threads for example), in these cases only be dynamically linked (Boost.Threads for example), in these
this macro is unsupported. cases this macro is unsupported.
</p> </p>
</td> </td>
</tr> </tr>
@@ -628,8 +624,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 library's and linked against, simply by the act of including one of that
headers. This macro turns that feature off. library's headers. This macro turns that feature off.
</p> </p>
</td> </td>
</tr> </tr>
@@ -643,12 +639,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 if 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
a compiler supports <code class="computeroutput"><span class="preprocessor">#pragma</span> if a compiler supports <code class="computeroutput"><span class="preprocessor">#pragma</span>
<span class="identifier">lib</span></code>, then the correct library <span class="identifier">lib</span></code>, then the correct
build variant will be automatically selected and linked against, library build variant will be automatically selected and linked
simply by the act of including one of that library's headers. This against, simply by the act of including one of that library's headers.
macro turns that feature off. This macro turns that feature off.
</p> </p>
</td> </td>
</tr> </tr>
@@ -682,7 +678,7 @@
</tbody> </tbody>
</table></div> </table></div>
</div> </div>
<div class="section" lang="en"> <div class="section">
<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>
@@ -726,7 +722,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" lang="en"> <div class="section">
<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>
@@ -758,7 +754,7 @@
yet supported by boost. yet supported by boost.
</p> </p>
</div> </div>
<div class="section" lang="en"> <div class="section">
<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>
@@ -777,7 +773,7 @@
a dependency on two boost headers. a dependency on two boost headers.
</p> </p>
</div> </div>
<div class="section" lang="en"> <div class="section">
<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>
@@ -790,7 +786,7 @@
</p> </p>
</div> </div>
</div> </div>
<div class="section" lang="en"> <div class="section">
<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>
@@ -831,8 +827,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 the then please include the output from this program when reporting
changes required. the changes required.
</p> </p>
</td> </td>
</tr> </tr>
@@ -844,9 +840,9 @@
</td> </td>
<td> <td>
<p> <p>
A monolithic test program that includes most of the individual test A monolithic test program that includes most of the individual
cases. This provides a quick check to see if boost is correctly configured test cases. This provides a quick check to see if boost is correctly
for your compiler/library/platform. configured for your compiler/library/platform.
</p> </p>
</td> </td>
</tr> </tr>
@@ -859,9 +855,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). This implementation (or its boost provided replacement if <code class="computeroutput"><span class="identifier">BOOST_NO_LIMITS</span></code> is defined).
test file fails with most versions of numeric_limits, mainly due This test file fails with most versions of numeric_limits, mainly
to the way that some compilers treat NAN's and infinity. due to the way that some compilers treat NAN's and infinity.
</p> </p>
</td> </td>
</tr> </tr>
@@ -887,8 +883,8 @@
</td> </td>
<td> <td>
<p> <p>
Individual compiler defect test files. Each of these should not compile, Individual compiler defect test files. Each of these should not
if one does then the corresponding <code class="computeroutput"><span class="identifier">BOOST_NO_XXX</span></code> compile, if one does then the corresponding <code class="computeroutput"><span class="identifier">BOOST_NO_XXX</span></code>
macro is defined when it need not be - see each test file for specific macro is defined when it need not be - see each test file for specific
details. details.
</p> </p>
@@ -902,10 +898,10 @@
</td> </td>
<td> <td>
<p> <p>
Individual feature test files. If one of these does not compile then Individual feature test files. If one of these does not compile
the corresponding <code class="computeroutput"><span class="identifier">BOOST_HAS_XXX</span></code> then the corresponding <code class="computeroutput"><span class="identifier">BOOST_HAS_XXX</span></code>
macro is defined when it should not be - see each test file for specific macro is defined when it should not be - see each test file for
details. specific details.
</p> </p>
</td> </td>
</tr> </tr>
@@ -938,16 +934,10 @@
<p> <p>
Alternatively you can run the configure script like this: Alternatively you can run the configure script like this:
</p> </p>
<div class="blockquote"><blockquote class="blockquote"> <div class="blockquote"><blockquote class="blockquote"><p>
<p>
</p>
<p>
<code class="computeroutput"><span class="special">./</span><span class="identifier">configure</span> <code class="computeroutput"><span class="special">./</span><span class="identifier">configure</span>
<span class="special">--</span><span class="identifier">enable</span><span class="special">-</span><span class="identifier">test</span></code> <span class="special">--</span><span class="identifier">enable</span><span class="special">-</span><span class="identifier">test</span></code>
</p> </p></blockquote></div>
<p>
</p>
</blockquote></div>
<p> <p>
in which case the script will test the current configuration rather than in which case the script will test the current configuration rather than
creating a new one from scratch. creating a new one from scratch.
@@ -960,10 +950,10 @@
</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: June 11, 2010 at 11:20:15 GMT</small></p></td> <td align="left"><p><small>Last revised: June 30, 2010 at 23:58:03 GMT</small></p></td>
<td align="right"><div class="copyright-footer"></div></td> <td align="right"><div class="copyright-footer"></div></td>
</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/src/images/next.png" alt="Next"></a></div>
</body> </body>
</html> </html>