$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r81443 - in website/public_html/live/doc/fixes: boost_1_51_0 boost_1_51_0/libs boost_1_51_0/libs/config boost_1_51_0/libs/config/doc boost_1_51_0/libs/config/doc/html boost_1_51_0/libs/config/doc/html/boost_config boost_1_52_0 boost_1_52_0/libs boost_1_52_0/libs/config boost_1_52_0/libs/config/doc boost_1_52_0/libs/config/doc/html boost_1_52_0/libs/config/doc/html/boost_config
From: dnljms_at_[hidden]
Date: 2012-11-20 15:40:11
Author: danieljames
Date: 2012-11-20 15:40:09 EST (Tue, 20 Nov 2012)
New Revision: 81443
URL: http://svn.boost.org/trac/boost/changeset/81443
Log:
Website: Update config docs for 1.51 and 1.52. Refs #7676.
Added:
   website/public_html/live/doc/fixes/boost_1_51_0/
   website/public_html/live/doc/fixes/boost_1_51_0/libs/
   website/public_html/live/doc/fixes/boost_1_51_0/libs/config/
   website/public_html/live/doc/fixes/boost_1_51_0/libs/config/doc/
   website/public_html/live/doc/fixes/boost_1_51_0/libs/config/doc/html/
   website/public_html/live/doc/fixes/boost_1_51_0/libs/config/doc/html/boost_config/
   website/public_html/live/doc/fixes/boost_1_51_0/libs/config/doc/html/boost_config/acknowledgements.html   (contents, props changed)
   website/public_html/live/doc/fixes/boost_1_51_0/libs/config/doc/html/boost_config/boost_macro_reference.html   (contents, props changed)
   website/public_html/live/doc/fixes/boost_1_51_0/libs/config/doc/html/boost_config/guidelines_for_boost_authors.html   (contents, props changed)
   website/public_html/live/doc/fixes/boost_1_51_0/libs/config/doc/html/boost_config/rationale.html   (contents, props changed)
   website/public_html/live/doc/fixes/boost_1_51_0/libs/config/doc/html/index.html   (contents, props changed)
   website/public_html/live/doc/fixes/boost_1_52_0/
   website/public_html/live/doc/fixes/boost_1_52_0/libs/
   website/public_html/live/doc/fixes/boost_1_52_0/libs/config/
   website/public_html/live/doc/fixes/boost_1_52_0/libs/config/doc/
   website/public_html/live/doc/fixes/boost_1_52_0/libs/config/doc/html/
   website/public_html/live/doc/fixes/boost_1_52_0/libs/config/doc/html/boost_config/
   website/public_html/live/doc/fixes/boost_1_52_0/libs/config/doc/html/boost_config/acknowledgements.html   (contents, props changed)
   website/public_html/live/doc/fixes/boost_1_52_0/libs/config/doc/html/boost_config/boost_macro_reference.html   (contents, props changed)
   website/public_html/live/doc/fixes/boost_1_52_0/libs/config/doc/html/boost_config/guidelines_for_boost_authors.html   (contents, props changed)
   website/public_html/live/doc/fixes/boost_1_52_0/libs/config/doc/html/boost_config/rationale.html   (contents, props changed)
   website/public_html/live/doc/fixes/boost_1_52_0/libs/config/doc/html/index.html   (contents, props changed)
Added: website/public_html/live/doc/fixes/boost_1_51_0/libs/config/doc/html/boost_config/acknowledgements.html
==============================================================================
--- (empty file)
+++ website/public_html/live/doc/fixes/boost_1_51_0/libs/config/doc/html/boost_config/acknowledgements.html	2012-11-20 15:40:09 EST (Tue, 20 Nov 2012)
@@ -0,0 +1,62 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Acknowledgements</title>
+<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Boost.Config">
+<link rel="up" href="../index.html" title="Boost.Config">
+<link rel="prev" href="rationale.html" title="Rationale">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="rationale.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="boost_config.acknowledgements"></a><a class="link" href="acknowledgements.html" title="Acknowledgements">Acknowledgements</a>
+</h2></div></div></div>
+<p>
+      Beman Dawes provided the original <code class="computeroutput"><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span></code> and
+      part of this document.
+    </p>
+<p>
+      Vesa Karvonen provided a description of the principles (see <a class="link" href="rationale.html" title="Rationale">rationale</a>)
+      and put together an early version of the current configuration setup.
+    </p>
+<p>
+      John Maddock put together the configuration current code, the test programs,
+      the configuration script and the reference section of this document.
+    </p>
+<p>
+      Matias Capeletto converted the docs to quickbook format.
+    </p>
+<p>
+      Numerous boost members, past and present, have contributed fixes to boost's
+      configuration.
+    </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Beman Dawes, Vesa Karvonen, John
+      Maddock<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="rationale.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a>
+</div>
+</body>
+</html>
Added: website/public_html/live/doc/fixes/boost_1_51_0/libs/config/doc/html/boost_config/boost_macro_reference.html
==============================================================================
--- (empty file)
+++ website/public_html/live/doc/fixes/boost_1_51_0/libs/config/doc/html/boost_config/boost_macro_reference.html	2012-11-20 15:40:09 EST (Tue, 20 Nov 2012)
@@ -0,0 +1,5050 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Boost Macro Reference</title>
+<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Boost.Config">
+<link rel="up" href="../index.html" title="Boost.Config">
+<link rel="prev" href="../index.html" title="Boost.Config">
+<link rel="next" href="guidelines_for_boost_authors.html" title="Guidelines for Boost Authors">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../index.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="guidelines_for_boost_authors.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="boost_config.boost_macro_reference"></a><a class="link" href="boost_macro_reference.html" title="Boost Macro Reference">Boost Macro Reference</a>
+</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_c__03_defects">Macros
+      that describe C++03 defects</a></span></dt>
+<dt><span class="section"><a href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_optional_features">Macros
+      that describe optional features</a></span></dt>
+<dt><span class="section"><a href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_possible_c___future_features">Macros
+      that describe possible C++ future features</a></span></dt>
+<dt><span class="section"><a href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_c__11_features_not_supported">Macros
+      that describe C++11 features not supported</a></span></dt>
+<dt><span class="section"><a href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_allow_use_of_c__11_features_with_c__03_compilers">Macros
+      that allow use of C++11 features with C++03 compilers</a></span></dt>
+<dt><span class="section"><a href="boost_macro_reference.html#boost_config.boost_macro_reference.boost_helper_macros">Boost
+      Helper Macros</a></span></dt>
+<dt><span class="section"><a href="boost_macro_reference.html#boost_config.boost_macro_reference.boost_informational_macros">Boost
+      Informational Macros</a></span></dt>
+<dt><span class="section"><a href="boost_macro_reference.html#boost_config.boost_macro_reference.boost_deprecated_macros">Boost
+      Deprecated Macros</a></span></dt>
+<dt><span class="section"><a href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code">Macros
+      for libraries with separate source code</a></span></dt>
+</dl></div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.boost_macro_reference.macros_that_describe_c__03_defects"></a><a name="config_defects"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_c__03_defects" title="Macros that describe C++03 defects">Macros
+      that describe C++03 defects</a>
+</h3></div></div></div>
+<p>
+        The following macros all describe features that are required by the C++03
+        standard, if one of the following macros is defined, then it represents a
+        defect in the compiler's conformance with the 2003 standard.
+      </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                <p>
+                  Macro
+                </p>
+              </th>
+<th>
+                <p>
+                  Section
+                </p>
+              </th>
+<th>
+                <p>
+                  Description
+                </p>
+              </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_BCB_PARTIAL_SPECIALIZATION_BUG</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler exibits certain partial specialisation bug - probably
+                  Borland C++ Builder specific.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  Argument dependent lookup fails if there is a using declaration
+                  for the symbol being looked up in the current scope. For example,
+                  using <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">get_pointer</span></code>; prevents ADL from
+                  finding overloads of <code class="computeroutput"><span class="identifier">get_pointer</span></code>
+                  in namespaces nested inside boost (but not elsewhere). Probably
+                  Borland specific.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_ADL_BARRIER</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler locates and searches namespaces that it should <span class="emphasis"><em>*not*</em></span>
+                  in fact search when performing argument dependent lookup.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler does not implement argument-dependent lookup (also named
+                  Koenig lookup); see std::3.4.2 [basic.koenig.lookup]
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_AUTO_PTR</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  If the compiler / library supplies non-standard or broken <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">auto_ptr</span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_COMPLETE_VALUE_INITIALIZATION</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler has not completely implemented value-initialization. See
+                  also <a href="../../../../utility/value_init.htm#compiler_issues" target="_top">The
+                  Utility/Value Init docs</a>
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CTYPE_FUNCTIONS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Platform
+                </p>
+              </td>
+<td>
+                <p>
+                  The Platform does not provide functions for the character-classifying
+                  operations <code class="computeroutput"><span class="special"><</span><span class="identifier">ctype</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code> and <code class="computeroutput"><span class="special"><</span><span class="identifier">cctype</span><span class="special">></span></code>,
+                  only macros.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CV_SPECIALIZATIONS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  If template specialisations for cv-qualified types conflict with
+                  a specialisation for a cv-unqualififed type.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CV_VOID_SPECIALIZATIONS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  If template specialisations for cv-void types conflict with a specialisation
+                  for void.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CWCHAR</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Platform
+                </p>
+              </td>
+<td>
+                <p>
+                  The Platform does not provide <code class="computeroutput"><span class="special"><</span><span class="identifier">wchar</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code>
+                  and <code class="computeroutput"><span class="special"><</span><span class="identifier">cwchar</span><span class="special">></span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CWCTYPE</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Platform
+                </p>
+              </td>
+<td>
+                <p>
+                  The Platform does not provide <code class="computeroutput"><span class="special"><</span><span class="identifier">wctype</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code>
+                  and <code class="computeroutput"><span class="special"><</span><span class="identifier">cwctype</span><span class="special">></span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_FENV_H</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Platform, Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The C standard library doesn't provide <code class="computeroutput"><span class="special"><</span><span class="identifier">fenv</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code>.
+                  <boost/detail/fenv.hpp>
+                  should be included instead of <code class="computeroutput"><span class="special"><</span><span class="identifier">fenv</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code>
+                  for maximum portability on platforms which do provide <code class="computeroutput"><span class="special"><</span><span class="identifier">fenv</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_DEPENDENT_NESTED_DERIVATIONS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler fails to compile a nested class that has a dependent
+                  base class:
+</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"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">foo</span> <span class="special">:</span> <span class="special">{</span>
+   <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">U</span><span class="special">></span>
+   <span class="keyword">struct</span> <span class="identifier">bar</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">U</span> <span class="special">{};</span>
+</pre>
+<p>
+                  };
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  Template value parameters cannot have a dependent type, for example:
+</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"><</span><span class="keyword">class</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="identifier">value</span><span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">X</span> <span class="special">{</span> <span class="special">...</span> <span class="special">};</span>
+</pre>
+<p>
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_EXCEPTION_STD_NAMESPACE</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard Library
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library does not put some or all of the contents of
+                  <code class="computeroutput"><span class="special"><</span><span class="identifier">exception</span><span class="special">></span></code> in namespace std.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_EXCEPTIONS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not support exception handling (this setting
+                  is typically required by many C++ compilers for embedded platforms).
+                  Note that there is no requirement for boost libraries to honor
+                  this configuration setting - indeed doing so may be impossible
+                  in some cases. Those libraries that do honor this will typically
+                  abort if a critical error occurs - you have been warned!
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  Can only use deduced template arguments when calling function template
+                  instantiations.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_FUNCTION_TEMPLATE_ORDERING</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not perform function template ordering or its
+                  function template ordering is incorrect.
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="comment">// #1</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></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="comment">// #2</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span><span class="keyword">class</span> <span class="identifier">U</span><span class="special">></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">U</span><span class="special">));</span>
+
+<span class="keyword">void</span> <span class="identifier">bar</span><span class="special">(</span><span class="keyword">int</span><span class="special">);</span>
+
+<span class="identifier">f</span><span class="special">(&</span><span class="identifier">bar</span><span class="special">);</span> <span class="comment">// should choose #2.</span>
+</pre>
+<p>
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_INCLASS_MEMBER_INITIALIZATION</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler violates std::9.4.2/4.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_INTRINSIC_WCHAR_T</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  The C++ implementation does not provide <code class="computeroutput"><span class="keyword">wchar_t</span></code>,
+                  or it is really a synonym for another integral type. Use this symbol
+                  to decide whether it is appropriate to explicitly specialize a
+                  template on <code class="computeroutput"><span class="keyword">wchar_t</span></code>
+                  if there is already a specialization for other integer types.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_IOSFWD</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  std lib
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library lacks <code class="computeroutput"><span class="special"><</span><span class="identifier">iosfwd</span><span class="special">></span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_IOSTREAM</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  std lib
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library lacks <code class="computeroutput"><span class="special"><</span><span class="identifier">iostream</span><span class="special">></span></code>,
+                  <code class="computeroutput"><span class="special"><</span><span class="identifier">istream</span><span class="special">></span></code> or <code class="computeroutput"><span class="special"><</span><span class="identifier">ostream</span><span class="special">></span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_IS_ABSTRACT</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  The C++ compiler does not support SFINAE with abstract types, this
+                  is covered by <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#337" target="_top">Core
+                  Language DR337</a>, but is not part of the current standard.
+                  Fortunately most compilers that support SFINAE also support this
+                  DR.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_LIMITS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The C++ implementation does not provide the <code class="computeroutput"><span class="special"><</span><span class="identifier">limits</span><span class="special">></span></code>
+                  header. Never check for this symbol in library code; always include
+                  <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">limits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>, which guarantees to provide
+                  <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_NUMERIC_LIMITS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  C++11 additions to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span></code>
+                  are not available for use. <code class="computeroutput"><span class="keyword">static</span>
+                  <span class="identifier">function</span> <span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">lowest</span><span class="special">()</span></code> the lowest finite value representable
+                  by the numeric type. <code class="computeroutput"><span class="keyword">static</span>
+                  <span class="keyword">int</span> <span class="keyword">const</span>
+                  <span class="identifier">max_digits10</span></code> the number
+                  of decimal digits that are required to make sure that two distinct
+                  values of the type have distinct decimal representations. <code class="computeroutput"><span class="keyword">template</span><span class="special"><></span>
+                  <span class="keyword">class</span> <span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">char16_t</span><span class="special">>;</span></code>, see also <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_CHAR16_T</span></code>,
+                  <code class="computeroutput"><span class="keyword">template</span><span class="special"><></span>
+                  <span class="keyword">class</span> <span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">char32_t</span><span class="special">>;</span></code> see also <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_CHAR32_T</span></code>.
+                  Replaces BOOST_NO_NUMERIC_LIMITS_LOWEST.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  Constants such as <code class="computeroutput"><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">is_signed</span></code>
+                  are not available for use at compile-time.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_LONG_LONG_NUMERIC_LIMITS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  There is no specialization for <code class="computeroutput"><span class="identifier">numeric_limits</span><span class="special"><</span><span class="keyword">long</span>
+                  <span class="keyword">long</span><span class="special">></span></code>
+                  and <code class="computeroutput"><span class="identifier">numeric_limits</span><span class="special"><</span><span class="keyword">unsigned</span>
+                  <span class="keyword">long</span> <span class="keyword">long</span><span class="special">></span></code>. <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">limits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>
+                  will then add these specializations as a standard library "fix"
+                  only if the compiler supports the <code class="computeroutput"><span class="keyword">long</span>
+                  <span class="keyword">long</span></code> datatype.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not support the specialization of individual
+                  member functions of template classes.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_MEMBER_TEMPLATE_KEYWORD</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  If the compiler supports member templates, but not the template
+                  keyword when accessing member template classes.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_MEMBER_TEMPLATE_FRIENDS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  Member template friend syntax (<code class="computeroutput"><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span>
+                  <span class="identifier">P</span><span class="special">></span>
+                  <span class="keyword">friend</span> <span class="keyword">class</span>
+                  <span class="identifier">frd</span><span class="special">;</span></code>)
+                  described in the C++ Standard, 14.5.3, not supported.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_MEMBER_TEMPLATES</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  Member template functions not fully supported.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_MS_INT64_NUMERIC_LIMITS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  There is no specialization for <code class="computeroutput"><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">__int64</span><span class="special">></span></code> and <code class="computeroutput"><span class="identifier">numeric_limits</span><span class="special"><</span><span class="keyword">unsigned</span>
+                  <span class="identifier">__int64</span><span class="special">></span></code>.
+                  <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">limits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code> will then add these specializations
+                  as a standard library "fix", only if the compiler supports
+                  the <code class="computeroutput"><span class="identifier">__int64</span></code> datatype.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_NESTED_FRIENDSHIP</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler doesn't allow a nested class to access private members
+                  of its containing class. Probably Borland/CodeGear specific.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_OPERATORS_IN_NAMESPACE</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler requires inherited operator friend functions to be defined
+                  at namespace scope, then using'ed to boost. Probably GCC specific.
+                  See <boost/operators.hpp> for example.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not correctly handle partial specializations
+                  which depend upon default arguments in the primary template.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_POINTER_TO_MEMBER_CONST</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not correctly handle pointers to const member
+                  functions, preventing use of these in overloaded function templates.
+                  See <boost/functional.hpp> for example.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  Pointers to members don't work when used as template parameters.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_PRIVATE_IN_AGGREGATE</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler misreads 8.5.1, treating classes as non-aggregate
+                  if they contain private or protected member functions.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_RTTI</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler may (or may not) have the typeid operator, but RTTI
+                  on the dynamic type of an object is not supported.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_SFINAE</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not support the "Substitution Failure Is
+                  Not An Error" meta-programming idiom.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_SFINAE_EXPR</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not support usage of SFINAE with arbitrary expressions.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_STD_ALLOCATOR</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The C++ standard library does not provide a standards conforming
+                  <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">allocator</span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_STD_DISTANCE</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The platform does not have a conforming version of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">distance</span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_STD_ITERATOR</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The C++ implementation fails to provide the <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">iterator</span></code>
+                  class.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_STD_ITERATOR_TRAITS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not provide a standard compliant implementation
+                  of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">iterator_traits</span></code>. Note that the
+                  compiler may still have a non-standard implementation.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_STD_LOCALE</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library lacks <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">locale</span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_STD_MESSAGES</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library lacks a conforming <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">messages</span></code>
+                  facet.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_STD_MIN_MAX</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The C++ standard library does not provide the <code class="computeroutput"><span class="identifier">min</span><span class="special">()</span></code> and <code class="computeroutput"><span class="identifier">max</span><span class="special">()</span></code> template functions that should
+                  be in <code class="computeroutput"><span class="special"><</span><span class="identifier">algorithm</span><span class="special">></span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  Defined if the standard library's output iterators are not assignable.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_STD_TYPEINFO</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The <typeinfo> header declares <code class="computeroutput"><span class="identifier">type_info</span></code>
+                  in the global namespace instead of namespace std.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_STD_USE_FACET</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library lacks a conforming <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">use_facet</span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_STD_WSTREAMBUF</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library's implementation of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_streambuf</span><span class="special"><</span><span class="keyword">wchar_t</span><span class="special">></span></code> is either missing, incomplete,
+                  or buggy.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_STD_WSTRING</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library lacks <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">wstring</span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_STDC_NAMESPACE</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler, Platform
+                </p>
+              </td>
+<td>
+                <p>
+                  The contents of C++ standard headers for C library functions (the
+                  <code class="computeroutput"><span class="special"><</span><span class="identifier">c</span><span class="special">...></span></code> headers) have not been placed
+                  in namespace std. This test is difficult - some libraries "fake"
+                  the std C functions by adding using declarations to import them
+                  into namespace std, unfortunately they don't necessarily catch
+                  all of them...
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_STRINGSTREAM</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The C++ implementation does not provide the <code class="computeroutput"><span class="special"><</span><span class="identifier">sstream</span><span class="special">></span></code>
+                  header.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_SWPRINTF</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Platform
+                </p>
+              </td>
+<td>
+                <p>
+                  The platform does not have a conforming version of <code class="computeroutput"><span class="identifier">swprintf</span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  Class template partial specialization (14.5.4 [temp.class.spec])
+                  not supported.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_TEMPLATED_IOSTREAMS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library does not provide templated iostream classes.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library does not provide templated iterator constructors
+                  for its containers.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_TEMPLATE_TEMPLATES</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not support template template parameters.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_TYPEID</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not support the typeid operator at all.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_TYPENAME_WITH_CTOR</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  The typename keyword cannot be used when creating a temporary of
+                  a Dependent type.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_UNREACHABLE_RETURN_DETECTION</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  If a return is unreachable, then no return statement should be
+                  required, however some compilers insist on it, while other issue
+                  a bunch of warnings if it is in fact present.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler will not accept a using declaration that brings a
+                  function from a typename used as a base class into a derived class
+                  if functions of the same name are present in the derived class.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_USING_TEMPLATE</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler will not accept a using declaration that imports a
+                  template class or function from another namespace. Originally a
+                  Borland specific problem with imports to/from the global namespace,
+                  extended to MSVC6 which has a specific issue with importing template
+                  classes (but not functions).
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_VOID_RETURNS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not allow a void function to return the result
+                  of calling another void function.
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">void</span> <span class="identifier">f</span><span class="special">()</span> <span class="special">{}</span>
+<span class="keyword">void</span> <span class="identifier">g</span><span class="special">()</span> <span class="special">{</span> <span class="keyword">return</span> <span class="identifier">f</span><span class="special">();</span> <span class="special">}</span>
+</pre>
+<p>
+                </p>
+              </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.boost_macro_reference.macros_that_describe_optional_features"></a><a name="config_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>
+</h3></div></div></div>
+<p>
+        The following macros describe features that are not required by the C++ standard.
+        The macro is only defined if the feature is present.
+      </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                <p>
+                  Macro
+                </p>
+              </th>
+<th>
+                <p>
+                  Section
+                </p>
+              </th>
+<th>
+                <p>
+                  Description
+                </p>
+              </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_BETHREADS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Platform
+                </p>
+              </td>
+<td>
+                <p>
+                  The platform supports BeOS style threads.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_CLOCK_GETTIME</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Platform
+                </p>
+              </td>
+<td>
+                <p>
+                  The platform has the POSIX API <code class="computeroutput"><span class="identifier">clock_gettime</span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_DIRENT_H</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Platform
+                </p>
+              </td>
+<td>
+                <p>
+                  The platform has the POSIX header <code class="computeroutput"><span class="special"><</span><span class="identifier">dirent</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_EXPM1</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Platform
+                </p>
+              </td>
+<td>
+                <p>
+                  The platform has the functions <code class="computeroutput"><span class="identifier">expm1</span></code>,
+                  <code class="computeroutput"><span class="identifier">expm1f</span></code> and <code class="computeroutput"><span class="identifier">expm1l</span></code> in <code class="computeroutput"><span class="special"><</span><span class="identifier">math</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code>
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_FTIME</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Platform
+                </p>
+              </td>
+<td>
+                <p>
+                  The platform has the Win32 API type FTIME.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_GETSYSTEMTIMEASFILETIME</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Platform
+                </p>
+              </td>
+<td>
+                <p>
+                  The platform has the Win32 API GetSystemTimeAsFileTime.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_GETTIMEOFDAY</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Platform
+                </p>
+              </td>
+<td>
+                <p>
+                  The platform has the POSIX API <code class="computeroutput"><span class="identifier">gettimeofday</span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_HASH</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The C++ implementation provides the (SGI) hash_set and hash_map
+                  classes. When defined, <code class="computeroutput"><span class="identifier">BOOST_HASH_SET_HEADER</span></code>
+                  and <code class="computeroutput"><span class="identifier">BOOST_HASH_LIST_HEADER</span></code>
+                  will contain the names of the header needed to access hash_set
+                  and hash_map; <code class="computeroutput"><span class="identifier">BOOST_STD_EXTENSION_NAMESPACE</span></code>
+                  will provide the namespace in which the two class templates reside.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_LOG1P</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Platform
+                </p>
+              </td>
+<td>
+                <p>
+                  The platform has the functions <code class="computeroutput"><span class="identifier">log1p</span></code>,
+                  <code class="computeroutput"><span class="identifier">log1pf</span></code> and <code class="computeroutput"><span class="identifier">log1pl</span></code> in <code class="computeroutput"><span class="special"><</span><span class="identifier">math</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_MACRO_USE_FACET</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library lacks a conforming <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">use_facet</span></code>,
+                  but has a macro <code class="computeroutput"><span class="identifier">_USE</span><span class="special">(</span><span class="identifier">loc</span><span class="special">,</span> <span class="identifier">Type</span><span class="special">)</span></code> that does the job. This is primarily
+                  for the Dinkumware std lib.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_MS_INT64</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler supports the <code class="computeroutput"><span class="identifier">__int64</span></code>
+                  data type.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_NANOSLEEP</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Platform
+                </p>
+              </td>
+<td>
+                <p>
+                  The platform has the POSIX API nanosleep.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_NL_TYPES_H</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Platform
+                </p>
+              </td>
+<td>
+                <p>
+                  The platform has an <code class="computeroutput"><span class="special"><</span><span class="identifier">nl_types</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_NRVO</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  Indicated that the compiler supports the named return value optimization
+                  (NRVO). Used to select the most efficient implementation for some
+                  function. See <boost/operators.hpp> for example.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_PARTIAL_STD_ALLOCATOR</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard Library
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library has a partially conforming <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">allocator</span></code>
+                  class, but without any of the member templates.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_PTHREAD_DELAY_NP</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Platform
+                </p>
+              </td>
+<td>
+                <p>
+                  The platform has the POSIX API <code class="computeroutput"><span class="identifier">pthread_delay_np</span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Platform
+                </p>
+              </td>
+<td>
+                <p>
+                  The platform has the POSIX API <code class="computeroutput"><span class="identifier">pthread_mutexattr_settype</span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_PTHREAD_YIELD</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Platform
+                </p>
+              </td>
+<td>
+                <p>
+                  The platform has the POSIX API <code class="computeroutput"><span class="identifier">pthread_yield</span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_PTHREADS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Platform
+                </p>
+              </td>
+<td>
+                <p>
+                  The platform support POSIX style threads.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_SCHED_YIELD</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Platform
+                </p>
+              </td>
+<td>
+                <p>
+                  The platform has the POSIX API <code class="computeroutput"><span class="identifier">sched_yield</span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_SGI_TYPE_TRAITS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler, Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler has native support for SGI style type traits.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_STDINT_H</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Platform
+                </p>
+              </td>
+<td>
+                <p>
+                  The platform has a <code class="computeroutput"><span class="special"><</span><span class="identifier">stdint</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code>
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_SLIST</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The C++ implementation provides the (SGI) slist class. When defined,
+                  <code class="computeroutput"><span class="identifier">BOOST_SLIST_HEADER</span></code>
+                  will contain the name of the header needed to access <code class="computeroutput"><span class="identifier">slist</span></code> and <code class="computeroutput"><span class="identifier">BOOST_STD_EXTENSION_NAMESPACE</span></code>
+                  will provide the namespace in which <code class="computeroutput"><span class="identifier">slist</span></code>
+                  resides.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_STLP_USE_FACET</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library lacks a conforming <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">use_facet</span></code>,
+                  but has a workaround class-version that does the job. This is primarily
+                  for the STLport std lib.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_ARRAY</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The library has a TR1 conforming version of <code class="computeroutput"><span class="special"><</span><span class="identifier">array</span><span class="special">></span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_COMPLEX_OVERLOADS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The library has a version of <code class="computeroutput"><span class="special"><</span><span class="identifier">complex</span><span class="special">></span></code>
+                  that supports passing scalars to the complex number algorithms.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The library has a version of <code class="computeroutput"><span class="special"><</span><span class="identifier">complex</span><span class="special">></span></code>
+                  that includes the new inverse trig functions from TR1.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_REFERENCE_WRAPPER</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The library has TR1 conforming reference wrappers in <code class="computeroutput"><span class="special"><</span><span class="identifier">functional</span><span class="special">></span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_RESULT_OF</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The library has a TR1 conforming result_of template in <code class="computeroutput"><span class="special"><</span><span class="identifier">functional</span><span class="special">></span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_MEM_FN</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The library has a TR1 conforming mem_fn function template in <code class="computeroutput"><span class="special"><</span><span class="identifier">functional</span><span class="special">></span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_BIND</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The library has a TR1 conforming bind function template in <code class="computeroutput"><span class="special"><</span><span class="identifier">functional</span><span class="special">></span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_FUNCTION</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The library has a TR1 conforming function class template in <code class="computeroutput"><span class="special"><</span><span class="identifier">functional</span><span class="special">></span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_HASH</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The library has a TR1 conforming hash function template in <code class="computeroutput"><span class="special"><</span><span class="identifier">functional</span><span class="special">></span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_SHARED_PTR</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The library has a TR1 conforming <code class="computeroutput"><span class="identifier">shared_ptr</span></code>
+                  class template in <code class="computeroutput"><span class="special"><</span><span class="identifier">memory</span><span class="special">></span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_RANDOM</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The library has a TR1 conforming version of <code class="computeroutput"><span class="special"><</span><span class="identifier">random</span><span class="special">></span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_REGEX</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The library has a TR1 conforming version of <code class="computeroutput"><span class="special"><</span><span class="identifier">regex</span><span class="special">></span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_TUPLE</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The library has a TR1 conforming version of <code class="computeroutput"><span class="special"><</span><span class="identifier">tuple</span><span class="special">></span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_TYPE_TRAITS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The library has a TR1 conforming version of <code class="computeroutput"><span class="special"><</span><span class="identifier">type_traits</span><span class="special">></span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_UTILITY</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The library has the TR1 additions to <code class="computeroutput"><span class="special"><</span><span class="identifier">utility</span><span class="special">></span></code>
+                  (tuple interface to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span></code>).
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_UNORDERED_MAP</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The library has a TR1 conforming version of <code class="computeroutput"><span class="special"><</span><span class="identifier">unordered_map</span><span class="special">></span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_UNORDERED_SET</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The library has a TR1 conforming version of <code class="computeroutput"><span class="special"><</span><span class="identifier">unordered_set</span><span class="special">></span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  Implies all the other <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_</span><span class="special">*</span></code> macros should be set.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_THREADS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Platform, Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  Defined if the compiler, in its current translation mode, supports
+                  multiple threads of execution.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_TWO_ARG_USE_FACET</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library lacks a conforming std::use_facet, but has
+                  a two argument version that does the job. This is primarily for
+                  the Rogue Wave std lib.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_UNISTD_H</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Platform
+                </p>
+              </td>
+<td>
+                <p>
+                  The Platform provides <code class="computeroutput"><span class="special"><</span><span class="identifier">unistd</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_WINTHREADS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Platform
+                </p>
+              </td>
+<td>
+                <p>
+                  The platform supports MS Windows style threads.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_MSVC_STD_ITERATOR</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  Microsoft's broken version of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">iterator</span></code>
+                  is being used. This implies that <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">iterator</span></code>
+                  takes no more than two template parameters.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_MSVC6_MEMBER_TEMPLATES</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  Microsoft Visual C++ 6.0 has enough member template idiosyncrasies
+                  (being polite) that <code class="computeroutput"><span class="identifier">BOOST_NO_MEMBER_TEMPLATES</span></code>
+                  is defined for this compiler. <code class="computeroutput"><span class="identifier">BOOST_MSVC6_MEMBER_TEMPLATES</span></code>
+                  is defined to allow compiler specific workarounds. This macro gets
+                  defined automatically if <code class="computeroutput"><span class="identifier">BOOST_NO_MEMBER_TEMPLATES</span></code>
+                  is not defined - in other words this is treated as a strict subset
+                  of the features required by the standard.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_STDINT_H</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Platform
+                </p>
+              </td>
+<td>
+                <p>
+                  There are no 1998 C++ Standard headers <code class="computeroutput"><span class="special"><</span><span class="identifier">stdint</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code>
+                  or <code class="computeroutput"><span class="special"><</span><span class="identifier">cstdint</span><span class="special">></span></code>, although the 1999 C Standard
+                  does include <code class="computeroutput"><span class="special"><</span><span class="identifier">stdint</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code>.
+                  If <code class="computeroutput"><span class="special"><</span><span class="identifier">stdint</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code> is present, <code class="computeroutput"><span class="special"><</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">></span></code>
+                  can make good use of it, so a flag is supplied (signalling presence;
+                  thus the default is not present, conforming to the current C++
+                  standard).
+                </p>
+              </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.boost_macro_reference.macros_that_describe_possible_c___future_features"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_possible_c___future_features" title="Macros that describe possible C++ future features">Macros
+      that describe possible C++ future features</a>
+</h3></div></div></div>
+<p>
+        The following macros describe features that may be included in some future
+        ISO C++ standard, but have not yet been approved for inclusion in the language.
+      </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                <p>
+                  Macro
+                </p>
+              </th>
+<th>
+                <p>
+                  Description
+                </p>
+              </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_CONCEPTS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler supports concepts.
+                </p>
+              </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.boost_macro_reference.macros_that_describe_c__11_features_not_supported"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_c__11_features_not_supported" title="Macros that describe C++11 features not supported">Macros
+      that describe C++11 features not supported</a>
+</h3></div></div></div>
+<p>
+        The following macros describe features in the 2011 ISO C++ standard, formerly
+        known as C++0x, that are not yet supported by a particular compiler or library.
+      </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                <p>
+                  Macro
+                </p>
+              </th>
+<th>
+                <p>
+                  Description
+                </p>
+              </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_ALLOCATOR</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library does not provide a C++11 version of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">allocator</span></code> in <memory>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_ATOMIC_SP</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library <memory> does not support atomic smart
+                  pointer operations.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_ARRAY</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library does not provide header <array>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_CHRONO</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library does not provide header <chrono>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_CODECVT</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library does not provide header <codecvt>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_CONDITION_VARIABLE</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library does not provide header <condition_variable>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_FORWARD_LIST</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library does not provide header <forward_list>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_FUNCTIONAL</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library does not provide a C++11 compatible version
+                  of <functional>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_FUTURE</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library does not provide header <future>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_INITIALIZER_LIST</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library does not provide header <initializer_list>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_MUTEX</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library does not provide header <mutex>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_RANDOM</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library does not provide header <random>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_RATIO</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library does not provide header <ratio>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_REGEX</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library does not provide header <regex>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_SYSTEM_ERROR</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library does not provide header <system_error>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_THREAD</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library does not provide header <thread>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_TUPLE</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library does not provide header <tuple>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_TYPEINDEX</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library does not provide header <typeindex>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_TYPE_TRAITS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library does not provide header <type_traits>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_UNORDERED_MAP</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library does not provide header <unordered_map>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_UNORDERED_SET</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library does not provide header <unordered_set>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_SMART_PTR</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library header <memory> has no shared_ptr and
+                  unique_ptr.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_AUTO_DECLARATIONS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not support type deduction for variables declared
+                  with the <code class="computeroutput"><span class="keyword">auto</span></code> keyword
+                  (<code class="computeroutput"><span class="keyword">auto</span> <span class="identifier">var</span>
+                  <span class="special">=</span> <span class="special">...;</span></code>).
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not support type deduction for multiple variables
+                  declared with the <code class="computeroutput"><span class="keyword">auto</span></code>
+                  keyword (<code class="computeroutput"><span class="keyword">auto</span> <span class="identifier">var</span>
+                  <span class="special">=</span> <span class="special">...,</span>
+                  <span class="special">*</span><span class="identifier">ptr</span>
+                  <span class="special">=</span> <span class="special">...;</span></code>).
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_CHAR16_T</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not support type <code class="computeroutput"><span class="identifier">char16_t</span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_CHAR32_T</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not support type <code class="computeroutput"><span class="identifier">char32_t</span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_TEMPLATE_ALIASES</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not support template aliases.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_CONSTEXPR</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not support <code class="computeroutput"><span class="identifier">constexpr</span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_DECLTYPE</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not support <code class="computeroutput"><span class="identifier">decltype</span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_DECLTYPE_N3276</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not support the extension to <code class="computeroutput"><span class="identifier">decltype</span></code>
+                  described in N3276,
+                  accepted in Madrid, March 2011.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_DEFAULTED_FUNCTIONS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not support defaulted (<code class="computeroutput"><span class="special">=</span>
+                  <span class="keyword">default</span></code>) functions.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_DELETED_FUNCTIONS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not support deleted (<code class="computeroutput"><span class="special">=</span>
+                  <span class="keyword">delete</span></code>) functions.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not support explicit conversion operators (<code class="computeroutput"><span class="keyword">explicit</span> <span class="keyword">operator</span>
+                  <span class="identifier">T</span><span class="special">()</span></code>).
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_EXTERN_TEMPLATE</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not support explicit instantiation forward declarations
+                  for templates (<code class="computeroutput"><span class="keyword">extern</span> <span class="keyword">template</span> <span class="special">...</span></code>).
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not support default template arguments for function
+                  templates.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_LAMBDAS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not support Lambdas.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not allow to pass local classes as template parameters
+                  (this macro intentionally does not control passing of unnamed types
+                  as template parameters, see also N2657).
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_LONG_LONG</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not support <code class="computeroutput"><span class="keyword">long</span>
+                  <span class="keyword">long</span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_NOEXCEPT</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not support <code class="computeroutput"><span class="identifier">noexcept</span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_NULLPTR</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not support <code class="computeroutput"><span class="identifier">nullptr</span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_RANGE_BASED_FOR</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not support range-based for statements.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_RAW_LITERALS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not support raw string literals.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_RVALUE_REFERENCES</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not support r-value references.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_SCOPED_ENUMS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not support scoped enumerations (<code class="computeroutput"><span class="keyword">enum</span> <span class="keyword">class</span></code>).
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_STATIC_ASSERT</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not support <code class="computeroutput"><span class="identifier">static_assert</span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_STD_UNORDERD</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library does not support <unordered_map> and
+                  <unordered_set>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_UNICODE_LITERALS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not support Unicode (<code class="computeroutput"><span class="identifier">u8</span></code>,
+                  <code class="computeroutput"><span class="identifier">u</span></code>, <code class="computeroutput"><span class="identifier">U</span></code>) literals.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not support the <a href="http://en.wikipedia.org/wiki/C%2B%2B0x#Uniform_initialization" target="_top">C++11
+                  Unified Initialization Syntax</a>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_VARIADIC_TEMPLATES</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not support variadic templates.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_VARIADIC_MACROS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not support variadic macros.
+                </p>
+              </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.boost_macro_reference.macros_that_allow_use_of_c__11_features_with_c__03_compilers"></a><a name="config_11_for_03"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_allow_use_of_c__11_features_with_c__03_compilers" title="Macros that allow use of C++11 features with C++03 compilers">Macros
+      that allow use of C++11 features with C++03 compilers</a>
+</h3></div></div></div>
+<p>
+        The following macros allow use of C++11 features even with compilers that
+        do not yet provide compliant C++11 support.
+      </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                <p>
+                  Macro
+                </p>
+              </th>
+<th>
+                <p>
+                  Description
+                </p>
+              </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_CONSTEXPR</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Some compilers don't support the use of <code class="computeroutput"><span class="identifier">constexpr</span></code>.
+                  This macro expands to nothing on those compilers, and <code class="computeroutput"><span class="identifier">constexpr</span></code> elsewhere. For example,
+                  when defining a constexpr function or constructor replace:
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">constexpr</span> <span class="identifier">tuple</span><span class="special">();</span>
+</pre>
+<p>
+                  with:
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">BOOST_CONSTEXPR</span> <span class="identifier">tuple</span><span class="special">();</span>
+</pre>
+<p>
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_CONSTEXPR_OR_CONST</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Some compilers don't support the use of <code class="computeroutput"><span class="identifier">constexpr</span></code>.
+                  This macro expands to <code class="computeroutput"><span class="keyword">const</span></code>
+                  on those compilers, and <code class="computeroutput"><span class="identifier">constexpr</span></code>
+                  elsewhere. For example, when defining const expr variables replace:
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">static</span> <span class="identifier">constexpr</span> <span class="identifier">UIntType</span> <span class="identifier">xor_mask</span> <span class="special">=</span> <span class="identifier">a</span><span class="special">;</span>
+</pre>
+<p>
+                  with:
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">static</span> <span class="identifier">BOOST_CONSTEXPR_OR_CONST</span> <span class="identifier">UIntType</span> <span class="identifier">xor_mask</span> <span class="special">=</span> <span class="identifier">a</span><span class="special">;</span>
+</pre>
+<p>
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_STATIC_CONSTEXPR</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  This is a shortcut for <code class="computeroutput"><span class="keyword">static</span>
+                  <span class="identifier">BOOST_CONSTEXPR_OR_CONST</span></code>.
+                  For example, when defining const expr variables replace:
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">static</span> <span class="identifier">constexpr</span> <span class="identifier">UIntType</span> <span class="identifier">xor_mask</span> <span class="special">=</span> <span class="identifier">a</span><span class="special">;</span>
+</pre>
+<p>
+                  with:
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">BOOST_STATIC_CONSTEXPR</span> <span class="identifier">UIntType</span> <span class="identifier">xor_mask</span> <span class="special">=</span> <span class="identifier">a</span><span class="special">;</span>
+</pre>
+<p>
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">BOOST_NOEXCEPT</span>
+<span class="identifier">BOOST_NOEXCEPT_IF</span><span class="special">(</span><span class="identifier">Predicate</span><span class="special">)</span>
+<span class="identifier">BOOST_NOEXCEPT_EXPR</span><span class="special">(</span><span class="identifier">Expression</span><span class="special">)</span>
+</pre>
+<p>
+                </p>
+              </td>
+<td>
+                <p>
+                  If <code class="computeroutput"><span class="identifier">BOOST_NO_NOEXCEPT</span></code>
+                  is defined (i.e. C++03 compliant compilers) these macros are defined
+                  as:
+                </p>
+                <div class="blockquote"><blockquote class="blockquote">
+<p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_NOEXCEPT</span>
+<span class="preprocessor">#define</span> <span class="identifier">BOOST_NOEXCEPT_IF</span><span class="special">(</span><span class="identifier">Predicate</span><span class="special">)</span>
+<span class="preprocessor">#define</span> <span class="identifier">BOOST_NOEXCEPT_EXPR</span><span class="special">(</span><span class="identifier">Expression</span><span class="special">)</span> <span class="keyword">false</span>
+</pre>
+<p>
+                  </p>
+</blockquote></div>
+                <p>
+                  If <code class="computeroutput"><span class="identifier">BOOST_NO_NOEXCEPT</span></code>
+                  is not defined (i.e. C++11 compliant compilers) they are defined
+                  as:
+                </p>
+                <div class="blockquote"><blockquote class="blockquote">
+<p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_NOEXCEPT</span> <span class="identifier">noexcept</span>
+<span class="preprocessor">#define</span> <span class="identifier">BOOST_NOEXCEPT_IF</span><span class="special">(</span><span class="identifier">Predicate</span><span class="special">)</span> <span class="identifier">noexcept</span><span class="special">((</span><span class="identifier">Predicate</span><span class="special">))</span>
+<span class="preprocessor">#define</span> <span class="identifier">BOOST_NOEXCEPT_EXPR</span><span class="special">(</span><span class="identifier">Expression</span><span class="special">)</span> <span class="identifier">noexcept</span><span class="special">((</span><span class="identifier">Expression</span><span class="special">))</span>
+</pre>
+<p>
+                  </p>
+</blockquote></div>
+              </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.boost_macro_reference.boost_helper_macros"></a><a name="config_helpers"></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>
+</h3></div></div></div>
+<p>
+        The following macros are either simple helpers, or macros that provide workarounds
+        for compiler/standard library defects.
+      </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                <p>
+                  Macro
+                </p>
+              </th>
+<th>
+                <p>
+                  Description
+                </p>
+              </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_WORKAROUND</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  This macro is used where a compiler specific workaround is required
+                  that is not otherwise described by one of the other Boost.Config
+                  macros. To use the macro you must first
+</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"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">detail</span><span class="special">/</span><span class="identifier">workaround</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+                  usage is then:
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="preprocessor">#if</span> <span class="identifier">BOOST_WORKAROUND</span><span class="special">(</span><span class="identifier">MACRONAME</span><span class="special">,</span> <span class="identifier">CONDITION</span><span class="special">)</span>
+   <span class="comment">// workaround code goes here...</span>
+<span class="preprocessor">#else</span>
+   <span class="comment">// Standard conforming code goes here...</span>
+<span class="preprocessor">#endif</span>
+</pre>
+<p>
+                  where <code class="computeroutput"><span class="identifier">MACRONAME</span></code>
+                  is a macro that usually describes the version number to be tested
+                  against, and <code class="computeroutput"><span class="identifier">CONDITION</span></code>
+                  is a comparison operator followed by a value. For example <code class="computeroutput"><span class="identifier">BOOST_WORKAROUND</span><span class="special">(</span><span class="identifier">BOOST_INTEL</span><span class="special">,</span>
+                  <span class="special"><=</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>
+                  The macro can also be used with <code class="computeroutput"><span class="identifier">BOOST_TESTED_AT</span></code>
+                  if all current compiler versions exhibit the issue, but the issue
+                  is expected to be fixed at some later point.
+                </p>
+                <p>
+                  For example <code class="computeroutput"><span class="identifier">BOOST_WORKAROUND</span><span class="special">(</span><span class="identifier">__BORLANDC__</span><span class="special">,</span> <span class="identifier">BOOST_TESTED_AT</span><span class="special">(</span><span class="number">0x590</span><span class="special">))</span></code> would normally evaluate to <code class="computeroutput"><span class="number">1</span></code> for all values of <code class="computeroutput"><span class="identifier">__BORLANDC__</span></code> <span class="emphasis"><em>unless</em></span>
+                  the macro <code class="computeroutput"><span class="identifier">BOOST_DETECT_OUTDATED_WORKAROUNDS</span></code>
+                  is defined, in which case evaluates to <code class="computeroutput"><span class="special">(</span><span class="identifier">__BORLANDC__</span> <span class="special"><=</span>
+                  <span class="number">0x590</span><span class="special">)</span></code>.
+                </p>
+                <p>
+                  <span class="bold"><strong>Note</strong></span>: the ultimate source of documentation
+                  for this macro is in boost/detail/workaround.hpp.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_PREVENT_MACRO_SUBSTITUTION</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Sometimes you have a function name with the same name as a C macro,
+                  for example "min" and "max" member functions,
+                  in which case one can prevent the function being expanded as a
+                  macro using:
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">someclass</span><span class="special">.</span><span class="identifier">min</span> <span class="identifier">BOOST_PREVENT_MACRO_SUBSTITUTION</span><span class="special">(</span><span class="identifier">arg1</span><span class="special">,</span> <span class="identifier">arg2</span><span class="special">);</span>
+</pre>
+<p>
+                  The following also works in most, but not all, contexts:
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="special">(</span><span class="identifier">someclass</span><span class="special">.</span><span class="identifier">max</span><span class="special">)(</span><span class="identifier">arg1</span><span class="special">,</span> <span class="identifier">arg2</span><span class="special">);</span>
+</pre>
+<p>
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_DEDUCED_TYPENAME</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Some compilers don't support the use of typename for dependent
+                  types in deduced contexts. This macro expands to nothing on those
+                  compilers, and typename elsewhere. For example, replace: <code class="computeroutput"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">void</span>
+                  <span class="identifier">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"><</span><span class="keyword">class</span>
+                  <span class="identifier">T</span><span class="special">></span>
+                  <span class="keyword">void</span> <span class="identifier">f</span><span class="special">(</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">BOOST_DEDUCED_TYPENAME</span>
+                  <span class="identifier">T</span><span class="special">::</span><span class="identifier">type</span><span class="special">);</span></code>
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HASH_MAP_HEADER</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The header to include to get the SGI <code class="computeroutput"><span class="identifier">hash_map</span></code>
+                  class. This macro is only available if <code class="computeroutput"><span class="identifier">BOOST_HAS_HASH</span></code>
+                  is defined.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HASH_SET_HEADER</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The header to include to get the SGI <code class="computeroutput"><span class="identifier">hash_set</span></code>
+                  class. This macro is only available if <code class="computeroutput"><span class="identifier">BOOST_HAS_HASH</span></code>
+                  is defined.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_SLIST_HEADER</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The header to include to get the SGI <code class="computeroutput"><span class="identifier">slist</span></code>
+                  class. This macro is only available if <code class="computeroutput"><span class="identifier">BOOST_HAS_SLIST</span></code>
+                  is defined.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_STD_EXTENSION_NAMESPACE</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The namespace used for std library extensions (hashtable classes
+                  etc).
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_STATIC_CONSTANT</span><span class="special">(</span><span class="identifier">Type</span><span class="special">,</span> <span class="identifier">assignment</span><span class="special">)</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  On compilers which don't allow in-class initialization of static
+                  integral constant members, we must use enums as a workaround if
+                  we want the constants to be available at compile-time. This macro
+                  gives us a convenient way to declare such constants. For example
+                  instead of:
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">struct</span> <span class="identifier">foo</span><span class="special">{</span>
+   <span class="keyword">static</span> <span class="keyword">const</span> <span class="keyword">int</span> <span class="identifier">value</span> <span class="special">=</span> <span class="number">2</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+                  use:
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">struct</span> <span class="identifier">foo</span><span class="special">{</span>
+   <span class="identifier">BOOST_STATIC_CONSTANT</span><span class="special">(</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">value</span> <span class="special">=</span> <span class="number">2</span><span class="special">);</span>
+<span class="special">};</span>
+</pre>
+<p>
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_UNREACHABLE_RETURN</span><span class="special">(</span><span class="identifier">result</span><span class="special">)</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Normally evaluates to nothing, but evaluates to return x; if the
+                  compiler requires a return, even when it can never be reached.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_EXPLICIT_TEMPLATE_TYPE</span><span class="special">(</span><span class="identifier">t</span><span class="special">)</span></code> <code class="computeroutput"><span class="identifier">BOOST_EXPLICIT_TEMPLATE_NON_TYPE</span><span class="special">(</span><span class="identifier">t</span><span class="special">,</span><span class="identifier">v</span><span class="special">)</span></code> <code class="computeroutput"><span class="identifier">BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE</span><span class="special">(</span><span class="identifier">t</span><span class="special">)</span></code> <code class="computeroutput"><span class="identifier">BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE</span><span class="special">(</span><span class="identifier">t</span><span class="special">,</span><span class="identifier">v</span><span class="special">)</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Some compilers silently "fold" different function template
+                  instantiations if some of the template parameters don't appear
+                  in the function parameter list. For instance:
+</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"><</span><span class="identifier">iostream</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">ostream</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">typeinfo</span><span class="special">></span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">int</span> <span class="identifier">n</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">f</span><span class="special">()</span> <span class="special">{</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">n</span> <span class="special"><<</span> <span class="char">' '</span><span class="special">;</span> <span class="special">}</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">g</span><span class="special">()</span> <span class="special">{</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="keyword">typeid</span><span class="special">(</span><span class="identifier">T</span><span class="special">).</span><span class="identifier">name</span><span class="special">()</span> <span class="special"><<</span> <span class="char">' '</span><span class="special">;</span> <span class="special">}</span>
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span> <span class="special">{</span>
+  <span class="identifier">f</span><span class="special"><</span><span class="number">1</span><span class="special">>();</span>
+  <span class="identifier">f</span><span class="special"><</span><span class="number">2</span><span class="special">>();</span>
+
+  <span class="identifier">g</span><span class="special"><</span><span class="keyword">int</span><span class="special">>();</span>
+  <span class="identifier">g</span><span class="special"><</span><span class="keyword">double</span><span class="special">>();</span>
+<span class="special">}</span>
+</pre>
+<p>
+                  incorrectly outputs <code class="literal">2 2 double double</code> on VC++
+                  6. These macros, to be used in the function parameter list, fix
+                  the problem without effects on the calling syntax. For instance,
+                  in the case above write:
+</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"><</span><span class="keyword">int</span> <span class="identifier">n</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>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">g</span><span class="special">(</span><span class="identifier">BOOST_EXPLICIT_TEMPLATE_TYPE</span><span class="special">(</span><span class="identifier">T</span><span class="special">))</span> <span class="special">{</span> <span class="special">...</span> <span class="special">}</span>
+</pre>
+<p>
+                  Beware that they can declare (for affected compilers) a dummy defaulted
+                  parameter, so they
+                </p>
+                <p>
+                  <span class="bold"><strong>a)</strong></span> should be always invoked <span class="bold"><strong>at the end</strong></span> of the parameter list
+                </p>
+                <p>
+                  <span class="bold"><strong>b)</strong></span> can't be used if your function
+                  template is multiply declared.
+                </p>
+                <p>
+                  Furthermore, in order to add any needed comma separator, an <code class="computeroutput"><span class="identifier">APPEND_</span><span class="special">*</span></code>
+                  version must be used when the macro invocation appears after a
+                  normal parameter declaration or after the invocation of another
+                  macro of this same group.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_USE_FACET</span><span class="special">(</span><span class="identifier">Type</span><span class="special">,</span> <span class="identifier">loc</span><span class="special">)</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  When the standard library does not have a conforming <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">use_facet</span></code> there are various workarounds
+                  available, but they differ from library to library. This macro
+                  provides a consistent way to access a locale's facets. For example,
+                  replace: <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">use_facet</span><span class="special"><</span><span class="identifier">Type</span><span class="special">>(</span><span class="identifier">loc</span><span class="special">);</span></code>
+                  with: <code class="computeroutput"><span class="identifier">BOOST_USE_FACET</span><span class="special">(</span><span class="identifier">Type</span><span class="special">,</span> <span class="identifier">loc</span><span class="special">);</span></code> Note do not add a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span></code>
+                  prefix to the front of <code class="computeroutput"><span class="identifier">BOOST_USE_FACET</span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_FACET</span><span class="special">(</span><span class="identifier">Type</span><span class="special">,</span> <span class="identifier">loc</span><span class="special">)</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  When the standard library does not have a comforming <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">has_facet</span></code> there are various workarounds
+                  available, but they differ from library to library. This macro
+                  provides a consistent way to check a locale's facets. For example,
+                  replace: <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">has_facet</span><span class="special"><</span><span class="identifier">Type</span><span class="special">>(</span><span class="identifier">loc</span><span class="special">);</span></code>
+                  with: <code class="computeroutput"><span class="identifier">BOOST_HAS_FACET</span><span class="special">(</span><span class="identifier">Type</span><span class="special">,</span> <span class="identifier">loc</span><span class="special">);</span></code> Note do not add a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span></code>
+                  prefix to the front of <code class="computeroutput"><span class="identifier">BOOST_HAS_FACET</span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NESTED_TEMPLATE</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Member templates are supported by some compilers even though they
+                  can't use the <code class="computeroutput"><span class="identifier">A</span><span class="special">::</span><span class="keyword">template</span>
+                  <span class="identifier">member</span><span class="special"><</span><span class="identifier">U</span><span class="special">></span></code>
+                  syntax, as a workaround replace: <code class="computeroutput"><span class="keyword">typedef</span>
+                  <span class="keyword">typename</span> <span class="identifier">A</span><span class="special">::</span><span class="keyword">template</span>
+                  <span class="identifier">rebind</span><span class="special"><</span><span class="identifier">U</span><span class="special">></span>
+                  <span class="identifier">binder</span><span class="special">;</span></code>
+                  with: <code class="computeroutput"><span class="keyword">typedef</span> <span class="keyword">typename</span>
+                  <span class="identifier">A</span><span class="special">::</span><span class="identifier">BOOST_NESTED_TEMPLATE</span> <span class="identifier">rebind</span><span class="special"><</span><span class="identifier">U</span><span class="special">></span> <span class="identifier">binder</span><span class="special">;</span></code>
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_STRINGIZE</span><span class="special">(</span><span class="identifier">X</span><span class="special">)</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Converts the parameter <code class="computeroutput"><span class="identifier">X</span></code>
+                  to a string after macro replacement on <code class="computeroutput"><span class="identifier">X</span></code>
+                  has been performed.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_JOIN</span><span class="special">(</span><span class="identifier">X</span><span class="special">,</span><span class="identifier">Y</span><span class="special">)</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  This piece of macro magic joins the two arguments together, even
+                  when one of the arguments is itself a macro (see 16.3.1 in C++
+                  standard). This is normally used to create a mangled name in combination
+                  with a predefined macro such a __LINE__.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_FORCEINLINE</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  This macro can be used in place of the <code class="computeroutput"><span class="keyword">inline</span></code>
+                  keyword to instruct the compiler that a function should always
+                  be inlined. Overuse of this macro can lead to significant bloat,
+                  while good use can increase performance in certain cases, such
+                  as computation-intensive code built through generative programming
+                  techniques.
+                </p>
+                <p>
+                  Usage example:
+</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"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">BOOST_FORCEINLINE</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">f</span><span class="special">(</span><span class="identifier">T</span><span class="special">&</span> <span class="identifier">t</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="keyword">return</span> <span class="identifier">t</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+                </p>
+                <p>
+                  Note that use of this macro can lead to cryptic error messages
+                  with some compilers. Consider defining it to <code class="computeroutput"><span class="keyword">inline</span></code>
+                  before including the Boost.Config header in order to be able to
+                  debug errors more easily.
+                </p>
+              </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.boost_macro_reference.boost_informational_macros"></a><a name="config_info_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>
+</h3></div></div></div>
+<p>
+        The following macros describe boost features; these are, generally speaking
+        the only boost macros that should be tested in user code.
+      </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                <p>
+                  Macro
+                </p>
+              </th>
+<th>
+                <p>
+                  Header
+                </p>
+              </th>
+<th>
+                <p>
+                  Description
+                </p>
+              </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_VERSION</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">version</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Describes the boost version number in XYYYZZ format such that:
+                  <code class="computeroutput"><span class="special">(</span><span class="identifier">BOOST_VERSION</span>
+                  <span class="special">%</span> <span class="number">100</span><span class="special">)</span></code> is the sub-minor version, <code class="computeroutput"><span class="special">((</span><span class="identifier">BOOST_VERSION</span>
+                  <span class="special">/</span> <span class="number">100</span><span class="special">)</span> <span class="special">%</span> <span class="number">1000</span><span class="special">)</span></code>
+                  is the minor version, and <code class="computeroutput"><span class="special">(</span><span class="identifier">BOOST_VERSION</span> <span class="special">/</span>
+                  <span class="number">100000</span><span class="special">)</span></code>
+                  is the major version.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_INT64_T</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="special"><</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">></span></code> <code class="computeroutput"><span class="special"><</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">></span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Defined if there are no 64-bit integral types: <code class="computeroutput"><span class="identifier">int64_t</span></code>,
+                  <code class="computeroutput"><span class="identifier">uint64_t</span></code> etc.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_INTEGRAL_INT64_T</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="special"><</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">></span></code> <code class="computeroutput"><span class="special"><</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">></span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Defined if <code class="computeroutput"><span class="identifier">int64_t</span></code>
+                  as defined by <code class="computeroutput"><span class="special"><</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">></span></code>
+                  is not usable in integral constant expressions.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_MSVC</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <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><span class="identifier">hpp</span><span class="special">></span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Defined if the compiler is really Microsoft Visual C++, as opposed
+                  to one of the many other compilers that also define <code class="computeroutput"><span class="identifier">_MSC_VER</span></code>. Has the same value
+                  as _MSC_VER.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_MSVC_FULL_VER</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <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><span class="identifier">hpp</span><span class="special">></span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Defined to a normalised 9 digit version of _MSC_FULL_VER (which
+                  sometimes only has 8 digits), the macro has the form VVMMPPPPP
+                  where VV is the major version number, MM is the minor version number,
+                  and PPPPP is the compiler build number.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_INTEL</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <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><span class="identifier">hpp</span><span class="special">></span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Defined if the compiler is an Intel compiler, takes the same value
+                  as the compiler version macro.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_CLANG</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <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><span class="identifier">hpp</span><span class="special">></span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Defined to 1 if the compiler is the Clang compiler.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_WINDOWS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <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><span class="identifier">hpp</span><span class="special">></span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Defined if the Windows platform API is available.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_DINKUMWARE_STDLIB</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <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><span class="identifier">hpp</span><span class="special">></span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Defined if the dinkumware standard library is in use, takes the
+                  same value as the Dinkumware library version macro <code class="computeroutput"><span class="identifier">_CPPLIB_VER</span></code> if defined, otherwise
+                  1.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_WREGEX</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">regex</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Defined if the regex library does not support wide character regular
+                  expressions.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_COMPILER</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <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><span class="identifier">hpp</span><span class="special">></span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Defined as a string describing the name and version number of the
+                  compiler in use. Mainly for debugging the configuration.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_STDLIB</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <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><span class="identifier">hpp</span><span class="special">></span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Defined as a string describing the name and version number of the
+                  standard library in use. Mainly for debugging the configuration.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_PLATFORM</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <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><span class="identifier">hpp</span><span class="special">></span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Defined as a string describing the name of the platform. Mainly
+                  for debugging the configuration.
+                </p>
+              </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.boost_macro_reference.boost_deprecated_macros"></a><a name="deprecated_macros"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.boost_deprecated_macros" title="Boost Deprecated Macros">Boost
+      Deprecated Macros</a>
+</h3></div></div></div>
+<p>
+        The following have been deprecated; please use the replacements instead.
+        They will be removed in a future version of boost.
+      </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                <p>
+                  Deprecated Macro
+                </p>
+              </th>
+<th>
+                <p>
+                  Replacement
+                </p>
+              </th>
+<th>
+                <p>
+                  When deprecated
+                </p>
+              </th>
+<th>
+                <p>
+                  When removed
+                </p>
+              </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_ARRAY</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_ARRAY</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.50
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_CHRONO</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_CHRONO</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.50
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_CODECVT</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_CODECVT</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.50
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_CONDITION_VARIABLE</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_CONDITION_VARIABLE</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.50
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_FORWARD_LIST</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_FORWARD_LIST</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.50
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_FUTURE</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_FUTURE</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.50
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_INITIALIZER_LIST</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_INITIALIZER_LIST</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.50
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_INITIALIZER_LISTS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_INITIALIZER_LIST</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.50
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_MUTEX</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_MUTEX</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.50
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_RANDOM</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_RANDOM</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.50
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_RATIO</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_RATIO</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.50
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_REGEX</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_REGEX</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.50
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_SYSTEM_ERROR</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_SYSTEM_ERROR</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.50
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_THREAD</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_THREAD</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.50
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_TUPLE</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_TUPLE</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.50
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_TYPE_TRAITS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_TYPE_TRAITS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.50
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_TYPEINDEX</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_TYPEINDEX</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.50
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_UNORDERED_SET</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_UNORDERED_SET</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.50
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_UNORDERED_MAP</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_UNORDERED_MAP</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.50
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_STD_UNORDERED</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_UNORDERED_SET</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.50
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+              </td>
+<td>
+              </td>
+<td>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_AUTO_DECLARATIONS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_AUTO_DECLARATIONS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.51
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_AUTO_MULTIDECLARATIONS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.51
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CHAR16_T</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_CHAR16_T</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.51
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CHAR32_T</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_CHAR32_T</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.51
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_TEMPLATE_ALIASES</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_TEMPLATE_ALIASES</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.51
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CONSTEXPR</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_CONSTEXPR</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.51
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_DECLTYPE</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_DECLTYPE</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.51
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_DECLTYPE_N3276</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_DECLTYPE_N3276</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.51
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_DEFAULTED_FUNCTIONS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_DEFAULTED_FUNCTIONS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.51
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_DELETED_FUNCTIONS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_DELETED_FUNCTIONS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.51
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_EXPLICIT_CONVERSION_OPERATORS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.51
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_EXTERN_TEMPLATE</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_EXTERN_TEMPLATE</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.51
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.51
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_LAMBDAS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_LAMBDAS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.51
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_LOCAL_CLASS_TEMPLATE_PARAMETERS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.51
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_NOEXCEPT</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_NOEXCEPT</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.51
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_NULLPTR</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_NULLPTR</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.51
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_RAW_LITERALS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_RAW_LITERALS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.51
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_RVALUE_REFERENCES</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_RVALUE_REFERENCES</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.51
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_SCOPED_ENUMS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_SCOPED_ENUMS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.51
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_STATIC_ASSERT</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_STATIC_ASSERT</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.51
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_STD_UNORDERD</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_STD_UNORDERD</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.51
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_UNICODE_LITERALS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_UNICODE_LITERALS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.51
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_UNIFIED_INITIALIZATION_SYNTAX</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.51
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_VARIADIC_TEMPLATES</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_VARIADIC_TEMPLATES</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.51
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_VARIADIC_MACROS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_VARIADIC_MACROS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.51
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_NUMERIC_LIMITS_LOWEST</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_NUMERIC_LIMITS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.51
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code" title="Macros for libraries with separate source code">Macros
+      for libraries with separate source code</a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code.macros_controlling_shared_library_symbol_visibility">Macros
+        controlling shared library symbol visibility</a></span></dt>
+<dt><span class="section"><a href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code.abi_fixing">ABI
+        Fixing</a></span></dt>
+<dt><span class="section"><a href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code.automatic_library_selection">Automatic
+        library selection</a></span></dt>
+</dl></div>
+<p>
+        The following macros and helper headers are of use to authors whose libraries
+        include separate source code, and are intended to address several issues:
+      </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+            Controlling shared library symbol visibility
+          </li>
+<li class="listitem">
+            Fixing the ABI of the compiled library
+          </li>
+<li class="listitem">
+            Selecting which compiled library to link against based upon the compilers
+            settings
+          </li>
+</ul></div>
+<p>
+        See <a href="http://svn.boost.org/trac/boost/wiki/Guidelines/Separate" target="_top">Guidelines
+        for Authors of Boost Libraries Containing Separate Source</a>
+      </p>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code.macros_controlling_shared_library_symbol_visibility"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code.macros_controlling_shared_library_symbol_visibility" title="Macros controlling shared library symbol visibility">Macros
+        controlling shared library symbol visibility</a>
+</h4></div></div></div>
+<p>
+          Some compilers support C++ extensions that control which symbols will be
+          exported from shared libraries such as dynamic shared objects (DSO's) on
+          Unix-like systems or dynamic-link libraries (DLL's) on Windows.
+        </p>
+<p>
+          The Microsoft VC++ compiler has long supplied <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> extensions for this purpose, as do virtually
+          all other compilers targeting the Windows platform.
+        </p>
+<p>
+          Modern versions of the GNU GCC compiler provide the <code class="computeroutput"><span class="identifier">__attribute__</span><span class="special">((</span><span class="identifier">visibility</span><span class="special">(</span><span class="string">"default"</span><span class="special">)))</span></code> extension to indicate that a symbol
+          should be exported. All other symbols may be hidden by using the <code class="computeroutput"><span class="special">-</span><span class="identifier">fvisibility</span><span class="special">-</span><span class="identifier">hidden</span></code>
+          or <code class="computeroutput"><span class="special">-</span><span class="identifier">fvisibility</span><span class="special">-</span><span class="identifier">ms</span><span class="special">-</span><span class="identifier">compat</span></code> compiler switches.
+        </p>
+<p>
+          Boost supplies several macros to make it easier to manage symbol visibility
+          in a way that is portable between compilers and operating systems.
+        </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Macro
+                  </p>
+                </th>
+<th>
+                  <p>
+                    Description
+                  </p>
+                </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">BOOST_SYMBOL_EXPORT</span></code>
+                  </p>
+                </td>
+<td>
+                  <p>
+                    Defines the syntax of a C++ language extension that indicates
+                    a symbol is to be exported from a shared library. If the compiler
+                    has no such extension, the macro is defined with no replacement
+                    text.
+                  </p>
+                </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">BOOST_SYMBOL_IMPORT</span></code>
+                  </p>
+                </td>
+<td>
+                  <p>
+                    Defines the syntax of a C++ language extension that indicates
+                    a symbol is to be imported from a shared library. If the compiler
+                    has no such extension, the macro is defined with no replacement
+                    text.
+                  </p>
+                </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">BOOST_SYMBOL_VISIBLE</span></code>
+                  </p>
+                </td>
+<td>
+                  <p>
+                    Defines the syntax of a C++ language extension that indicates
+                    a symbol is to be globally visible. If the compiler has no such
+                    extension, the macro is defined with no replacement text. Needed
+                    for classes that are not otherwise exported, but are used by
+                    RTTI. Examples include class for objects that will be thrown
+                    as exceptions or used in dynamic_casts, across shared library
+                    boundaries. For example, a header-only exception class might
+                    look like this:
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">class</span> <span class="identifier">BOOST_SYMBOL_VISIBLE</span> <span class="identifier">my_exception</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">runtime_error</span> <span class="special">{</span> <span class="special">...</span> <span class="special">};</span>
+</pre>
+<p>
+                    Without BOOST_SYMBOL_VISIBLE, it would be impossible to catch
+                    my_exception thrown from a shared library compiled by GCC with
+                    the -fvisibility=hidden option.
+                  </p>
+                </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">BOOST_HAS_DECLSPEC</span></code>
+                  </p>
+                </td>
+<td>
+                  <p>
+                    The compiler has C++ extensions <code class="computeroutput"><span class="identifier">__declspec</span><span class="special">(</span><span class="identifier">dllexport</span><span class="special">)</span></code> and <code class="computeroutput"><span class="identifier">__declspec</span><span class="special">(</span><span class="identifier">dllimport</span><span class="special">)</span></code> to control export/import of
+                    symbols from shared libraries. <span class="emphasis"><em>Deprecated. This macro
+                    is no longer necessary since BOOST_SYMBOL_EXPORT and BOOST_SYMBOL_IMPORT
+                    are now supplied. It is provided to support legacy code.</em></span>
+                  </p>
+                </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+          Typical usage:
+        </p>
+<p>
+          <span class="bold"><strong>boost/foo/config.hpp</strong></span>
+        </p>
+<pre class="programlisting"><span class="special">...</span>
+<span class="preprocessor">#if</span> <span class="identifier">defined</span><span class="special">(</span><span class="identifier">BOOST_ALL_DYN_LINK</span><span class="special">)</span> <span class="special">||</span> <span class="identifier">defined</span><span class="special">(</span><span class="identifier">BOOST_FOO_DYN_LINK</span><span class="special">)</span>
+<span class="preprocessor"># if</span> <span class="identifier">defined</span><span class="special">(</span><span class="identifier">BOOST_FOO_SOURCE</span><span class="special">)</span>
+<span class="preprocessor">#   define</span> <span class="identifier">BOOST_FOO_DECL</span> <span class="identifier">BOOST_SYMBOL_EXPORT</span>
+<span class="preprocessor"># else</span>
+<span class="preprocessor">#   define</span> <span class="identifier">BOOST_FOO_DECL</span> <span class="identifier">BOOST_SYMBOL_IMPORT</span>
+<span class="preprocessor"># endif</span>
+<span class="preprocessor">#else</span>
+<span class="preprocessor"># define</span> <span class="identifier">BOOST_FOO_DECL</span>
+<span class="preprocessor">#endif</span>
+<span class="special">...</span>
+</pre>
+<p>
+          <span class="bold"><strong>boost/foo/foo.hpp</strong></span>
+        </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">foo</span><span class="special">/</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="special">...</span>
+<span class="keyword">class</span> <span class="identifier">BOOST_FOO_DECL</span> <span class="identifier">bar</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">BOOST_FOO_DECL</span> <span class="identifier">f</span><span class="special">();</span>
+<span class="special">...</span>
+</pre>
+<p>
+          <span class="bold"><strong>boost/libs/foo/src/foo.cpp</strong></span>
+        </p>
+<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_FOO_SOURCE</span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">foo</span><span class="special">/</span><span class="identifier">foo</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="special">...</span>
+<span class="keyword">void</span> <span class="identifier">BOOST_FOO_DECL</span> <span class="identifier">f</span><span class="special">()</span>
+<span class="special">{</span>
+  <span class="special">...</span>
+<span class="special">}</span>
+<span class="special">...</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code.abi_fixing"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code.abi_fixing" title="ABI Fixing">ABI
+        Fixing</a>
+</h4></div></div></div>
+<p>
+          When linking against a pre-compiled library it vital that the ABI used
+          by the compiler when building the library <span class="emphasis"><em>matches exactly</em></span>
+          the ABI used by the code using the library. In this case ABI means things
+          like the struct packing arrangement used, the name mangling scheme used,
+          or the size of some types (enum types for example). This is separate from
+          things like threading support, or runtime library variations, which have
+          to be dealt with by build variants. To put this in perspective there is
+          one compiler (Borland's) that has so many compiler options that make subtle
+          changes to the ABI, that at least in theory there 3200 combinations, and
+          that's without considering runtime library variations. Fortunately these
+          variations can be managed by <code class="computeroutput"><span class="preprocessor">#pragma</span></code>'s
+          that tell the compiler what ABI to use for the types declared in your library.
+          In order to avoid sprinkling <code class="computeroutput"><span class="preprocessor">#pragma</span></code>'s
+          all over the boost headers, there are some prefix and suffix headers that
+          do the job. Typical usage is:
+        </p>
+<p>
+          <span class="bold"><strong>my_library.hpp</strong></span>
+        </p>
+<pre class="programlisting"><span class="preprocessor">#ifndef</span> <span class="identifier">MY_INCLUDE_GUARD</span>
+<span class="preprocessor">#define</span> <span class="identifier">MY_INCLUDE_GUARD</span>
+
+<span class="comment">// all includes go here:</span>
+<code class="literal"><span class="bold"><strong>#include <boost/config.hpp></strong></span></code>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">whatever</span><span class="special">></span>
+
+<code class="literal"><span class="bold"><strong>#include <boost/config/abi_prefix.hpp></strong></span></code> <span class="comment">// must be the last #include</span>
+
+<span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
+
+<span class="comment">// your code goes here</span>
+
+<span class="special">}</span>
+
+<code class="literal"><span class="bold"><strong>#include <boost/config/abi_suffix.hpp></strong></span></code> <span class="comment">// pops abi_prefix.hpp pragmas</span>
+
+<span class="preprocessor">#endif</span> <span class="comment">// include guard</span>
+</pre>
+<p>
+          <span class="bold"><strong>my_library.cpp</strong></span>
+        </p>
+<pre class="programlisting"><span class="special">...</span>
+<span class="comment">// nothing special need be done in the implementation file</span>
+<span class="special">...</span>
+</pre>
+<p>
+          The user can disable this mechanism by defining <code class="computeroutput"><span class="identifier">BOOST_DISABLE_ABI_HEADERS</span></code>,
+          or they can define <code class="computeroutput"><span class="identifier">BOOST_ABI_PREFIX</span></code>
+          and/or <code class="computeroutput"><span class="identifier">BOOST_ABI_SUFFIX</span></code>
+          to point to their own prefix/suffix headers if they so wish.
+        </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code.automatic_library_selection"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code.automatic_library_selection" title="Automatic library selection">Automatic
+        library selection</a>
+</h4></div></div></div>
+<p>
+          It is essential that users link to a build of a library which was built
+          against the same runtime library that their application will be built against
+          -if this does not happen then the library will not be binary compatible
+          with their own code- and there is a high likelihood that their application
+          will experience runtime crashes. These kinds of problems can be extremely
+          time consuming and difficult to debug, and often lead to frustrated users
+          and authors alike (simply selecting the right library to link against is
+          not as easy as it seems when their are 6-8 of them to chose from, and some
+          users seem to be blissfully unaware that there even are different runtimes
+          available to them).
+        </p>
+<p>
+          To solve this issue, some compilers allow source code to contain <code class="computeroutput"><span class="preprocessor">#pragma</span></code>'s that instruct the linker
+          which library to link against, all the user need do is include the headers
+          they need, place the compiled libraries in their library search path, and
+          the compiler and linker do the rest. Boost.config supports this via the
+          header <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><span class="identifier">auto_link</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>, before including this header one or
+          more of the following macros need to be defined:
+        </p>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">BOOST_LIB_NAME</span></code></span></dt>
+<dd><p>
+                Required: An identifier containing the basename of the library, for
+                example 'boost_regex'.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">BOOST_DYN_LINK</span></code></span></dt>
+<dd><p>
+                Optional: when set link to dll rather than static library.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">BOOST_LIB_DIAGNOSTIC</span></code></span></dt>
+<dd><p>
+                Optional: when set the header will print out the name of the library
+                selected (useful for debugging).
+              </p></dd>
+</dl>
+</div>
+<p>
+          If the compiler supports this mechanism, then it will be told to link against
+          the appropriately named library, the actual algorithm used to mangle the
+          name of the library is documented inside <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><span class="identifier">auto_link</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>
+          and has to match that used to create the libraries via bjam 's install
+          rules.
+        </p>
+<p>
+          <span class="bold"><strong>my_library.hpp</strong></span>
+        </p>
+<pre class="programlisting"><span class="special">...</span>
+<span class="comment">//</span>
+<span class="comment">// Don't include auto-linking code if the user has disabled it by</span>
+<span class="comment">// defining BOOST_ALL_NO_LIB, or BOOST_MY_LIBRARY_NO_LIB, or if this </span>
+<span class="comment">// is one of our own source files (signified by BOOST_MY_LIBRARY_SOURCE):</span>
+<span class="comment">//</span>
+<span class="preprocessor">#if</span> <span class="special">!</span><span class="identifier">defined</span><span class="special">(</span><span class="identifier">BOOST_ALL_NO_LIB</span><span class="special">)</span> <span class="special">&&</span> <span class="special">!</span><span class="identifier">defined</span><span class="special">(</span><span class="identifier">BOOST_MY_LIBRARY_NO_LIB</span><span class="special">)</span> <span class="special">&&</span> <span class="special">!</span><span class="identifier">defined</span><span class="special">(</span><span class="identifier">BOOST_MY_LIBRARY_SOURCE</span><span class="special">)</span>
+<span class="preprocessor">#  define</span> <span class="identifier">BOOST_LIB_NAME</span> <span class="identifier">boost_my_library</span>
+<span class="preprocessor">#  ifdef</span> <span class="identifier">BOOST_MY_LIBRARY_DYN_LINK</span>
+<span class="preprocessor">#     define</span> <span class="identifier">BOOST_DYN_LINK</span>
+<span class="preprocessor">#  endif</span>
+<span class="preprocessor">#  include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">auto_link</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#endif</span>
+<span class="special">...</span>
+</pre>
+<p>
+          <span class="bold"><strong>my_library.cpp</strong></span>
+        </p>
+<pre class="programlisting"><span class="comment">// define BOOST_MY_LIBRARY_SOURCE so that the header knows that the</span>
+<span class="comment">// library is being built (possibly exporting rather than importing code)</span>
+<span class="comment">//</span>
+<span class="preprocessor">#define</span> <span class="identifier">BOOST_MY_LIBRARY_SOURCE</span>
+
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">my_library</span><span class="special">/</span><span class="identifier">my_library</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="special">...</span>
+</pre>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Beman Dawes, Vesa Karvonen, John
+      Maddock<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../index.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="guidelines_for_boost_authors.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: website/public_html/live/doc/fixes/boost_1_51_0/libs/config/doc/html/boost_config/guidelines_for_boost_authors.html
==============================================================================
--- (empty file)
+++ website/public_html/live/doc/fixes/boost_1_51_0/libs/config/doc/html/boost_config/guidelines_for_boost_authors.html	2012-11-20 15:40:09 EST (Tue, 20 Nov 2012)
@@ -0,0 +1,377 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Guidelines for Boost Authors</title>
+<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Boost.Config">
+<link rel="up" href="../index.html" title="Boost.Config">
+<link rel="prev" href="boost_macro_reference.html" title="Boost Macro Reference">
+<link rel="next" href="rationale.html" title="Rationale">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="boost_macro_reference.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="rationale.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="boost_config.guidelines_for_boost_authors"></a><a class="link" href="guidelines_for_boost_authors.html" title="Guidelines for Boost Authors">Guidelines for
+    Boost Authors</a>
+</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.warnings">Disabling
+      Compiler Warnings</a></span></dt>
+<dt><span class="section"><a href="guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.adding_new_defect_macros">Adding
+      New Defect Macros</a></span></dt>
+<dt><span class="section"><a href="guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.adding_new_feature_test_macros">Adding
+      New Feature Test Macros</a></span></dt>
+<dt><span class="section"><a href="guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.modifying_the_boost_configuration_headers">Modifying
+      the Boost Configuration Headers</a></span></dt>
+</dl></div>
+<p>
+      The <boost/config.hpp>
+      header is used to pass configuration information to other boost files, allowing
+      them to cope with platform dependencies such as arithmetic byte ordering, compiler
+      pragmas, or compiler shortcomings. Without such configuration information,
+      many current compilers would not work with the Boost libraries.
+    </p>
+<p>
+      Centralizing configuration information in this header reduces the number of
+      files that must be modified when porting libraries to new platforms, or when
+      compilers are updated. Ideally, no other files would have to be modified when
+      porting to a new platform.
+    </p>
+<p>
+      Configuration headers are controversial because some view them as condoning
+      broken compilers and encouraging non-standard subsets. Adding settings for
+      additional platforms and maintaining existing settings can also be a problem.
+      In other words, configuration headers are a necessary evil rather than a desirable
+      feature. The boost config.hpp policy is designed to minimize the problems and
+      maximize the benefits of a configuration header.
+    </p>
+<p>
+      Note that:
+    </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+          Boost library implementers are not required to "<code class="computeroutput"><span class="preprocessor">#include</span>
+          <span class="special"><</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">></span></code>", and are not required in any
+          way to support compilers that do not comply with the C++ Standard (ISO/IEC
+          14882).
+        </li>
+<li class="listitem">
+          If a library implementer wishes to support some non-conforming compiler,
+          or to support some platform specific feature, "<code class="computeroutput"><span class="preprocessor">#include</span>
+          <span class="special"><</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">></span></code>" is the preferred way to obtain
+          configuration information not available from the standard headers such
+          as <code class="computeroutput"><span class="special"><</span><span class="identifier">climits</span><span class="special">></span></code>, etc.
+        </li>
+<li class="listitem">
+          If configuration information can be deduced from standard headers such
+          as <code class="computeroutput"><span class="special"><</span><span class="identifier">climits</span><span class="special">></span></code>, use those standard headers rather
+          than <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><span class="identifier">hpp</span><span class="special">></span></code>.
+        </li>
+<li class="listitem">
+          Boost files that use macros defined in <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><span class="identifier">hpp</span><span class="special">></span></code>
+          should have sensible, standard conforming, default behavior if the macro
+          is not defined. This means that the starting point for porting <code class="computeroutput"><span class="special"><</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">></span></code> to a new platform is simply to define
+          nothing at all specific to that platform. In the rare case where there
+          is no sensible default behavior, an #error message should describe the
+          problem.
+        </li>
+<li class="listitem">
+          If a Boost library implementer wants something added to <code class="computeroutput"><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span></code>,
+          post a request on the Boost mailing list. There is no guarantee such a
+          request will be honored; the intent is to limit the complexity of config.hpp.
+        </li>
+<li class="listitem">
+          The intent is to support only compilers which appear on their way to becoming
+          C++ Standard compliant, and only recent releases of those compilers at
+          that.
+        </li>
+<li class="listitem">
+          The intent is not to disable mainstream features now well-supported by
+          the majority of compilers, such as namespaces, exceptions, RTTI, or templates.
+        </li>
+</ul></div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.guidelines_for_boost_authors.warnings"></a><a class="link" href="guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.warnings" title="Disabling Compiler Warnings">Disabling
+      Compiler Warnings</a>
+</h3></div></div></div>
+<p>
+        The header <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><span class="identifier">warning_disable</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>
+        can be used to disable certain compiler warnings that are hard or impossible
+        to otherwise remove.
+      </p>
+<p>
+        Note that:
+      </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+            This header <span class="bold"><strong><span class="emphasis"><em>should never be included
+            by another Boost header</em></span></strong></span>, it should only ever be
+            used by a library source file or a test case.
+          </li>
+<li class="listitem">
+            The header should be included <span class="bold"><strong><span class="emphasis"><em>before
+            you include any other header</em></span></strong></span>.
+          </li>
+<li class="listitem">
+            This header only disables warnings that are hard or impossible to otherwise
+            deal with, and which are typically emitted by one compiler only, or in
+            one compilers own standard library headers.
+          </li>
+</ul></div>
+<p>
+        Currently it disables the following warnings:
+      </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                <p>
+                  Compiler
+                </p>
+              </th>
+<th>
+                <p>
+                  Warning
+                </p>
+              </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                <p>
+                  Visual C++ 8 and later
+                </p>
+              </td>
+<td>
+                <p>
+                  C4996:
+                  Error 'function': was declared deprecated
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  Intel C++
+                </p>
+              </td>
+<td>
+                <p>
+                  Warning 1786: relates to the use of "deprecated" standard
+                  library functions rather like C4996 in Visual C++.
+                </p>
+              </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.guidelines_for_boost_authors.adding_new_defect_macros"></a><a class="link" href="guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.adding_new_defect_macros" title="Adding New Defect Macros">Adding
+      New Defect Macros</a>
+</h3></div></div></div>
+<p>
+        When you need to add a new defect macro - either to fix a problem with an
+        existing library, or when adding a new library - distil the issue down to
+        a simple test case; often, at this point other (possibly better) workarounds
+        may become apparent. Secondly always post the test case code to the boost
+        mailing list and invite comments; remember that C++ is complex and that sometimes
+        what may appear a defect, may in fact turn out to be a problem with the authors
+        understanding of the standard.
+      </p>
+<p>
+        When you name the macro, follow the <code class="computeroutput"><span class="identifier">BOOST_NO_</span></code><span class="emphasis"><em>SOMETHING</em></span>
+        naming convention, so that it's obvious that this is a macro reporting a
+        defect.
+      </p>
+<p>
+        Finally, add the test program to the regression tests. You will need to place
+        the test case in a <code class="computeroutput"><span class="special">.</span><span class="identifier">ipp</span></code>
+        file with the following comments near the top:
+      </p>
+<pre class="programlisting"><span class="comment">//  MACRO:         BOOST_NO_FOO</span>
+<span class="comment">//  TITLE:         foo</span>
+<span class="comment">//  DESCRIPTION:   If the compiler fails to support foo</span>
+</pre>
+<p>
+        These comments are processed by the autoconf script, so make sure the format
+        follows the one given. The file should be named "<code class="computeroutput"><span class="identifier">boost_no_foo</span><span class="special">.</span><span class="identifier">ipp</span></code>",
+        where foo is the defect description - try and keep the file name under the
+        Mac 30 character filename limit though. You will also need to provide a function
+        prototype "<code class="computeroutput"><span class="keyword">int</span> <span class="identifier">test</span><span class="special">()</span></code>" that is declared in a namespace with
+        the same name as the macro, but in all lower case, and which returns zero
+        on success:
+      </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost_no_foo</span> <span class="special">{</span>
+<span class="keyword">int</span> <span class="identifier">test</span><span class="special">()</span>
+<span class="special">{</span>
+    <span class="comment">// test code goes here:</span>
+    <span class="comment">//</span>
+    <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+
+<span class="special">}</span>
+</pre>
+<p>
+        Once the test code is in place in libs/config/test, updating the configuration
+        test system proceeds as:
+      </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+            cd into <code class="computeroutput"><span class="identifier">libs</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">tools</span></code> and run <code class="computeroutput"><span class="identifier">bjam</span></code>.
+            This generates the <code class="computeroutput"><span class="special">.</span><span class="identifier">cpp</span></code>
+            file test cases from the <code class="computeroutput"><span class="special">.</span><span class="identifier">ipp</span></code> file, updates the libs/config/test/all/Jamfile.v2,
+            <code class="computeroutput"><span class="identifier">config_test</span><span class="special">.</span><span class="identifier">cpp</span></code> and <code class="computeroutput"><span class="identifier">config_info</span><span class="special">.</span><span class="identifier">cpp</span></code>.<br>
+            <br>
+          </li>
+<li class="listitem">
+            cd into <code class="computeroutput"><span class="identifier">libs</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">test</span><span class="special">/</span><span class="identifier">all</span></code> and run <code class="computeroutput"><span class="identifier">bjam</span>
+            </code><span class="emphasis"><em>MACRONAME<code class="computeroutput"> <span class="identifier">compiler</span><span class="special">-</span><span class="identifier">list</span></code></em></span>,
+            where <span class="emphasis"><em>MACRONAME</em></span> is the name of the new macro, and
+            <span class="emphasis"><em><code class="computeroutput"><span class="identifier">compiler</span><span class="special">-</span><span class="identifier">list</span></code></em></span> is a space separated
+            list of compilers to test with.<br> <br> The xxx_pass_test and the
+            xxx_fail_test <span class="bold"><strong>should both report <code class="computeroutput"><span class="special">**</span><span class="identifier">passed</span><span class="special">**</span></code></strong></span>.<br> <br> If <span class="emphasis"><em>MACRONAME</em></span>
+            is not defined when it should be defined, xxx_pass_test will not report
+            <code class="computeroutput"><span class="special">**</span><span class="identifier">passed</span><span class="special">**</span></code>. If <span class="emphasis"><em>MACRONAME</em></span>
+            is defined when it should not be defined, xxx_fail_test will not report
+            <code class="computeroutput"><span class="special">**</span><span class="identifier">passed</span><span class="special">**</span></code>.<br> <br>
+          </li>
+<li class="listitem">
+            cd into <code class="computeroutput"><span class="identifier">libs</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">test</span></code> and run <code class="computeroutput"><span class="identifier">bjam</span>
+            <span class="identifier">config_info</span> <span class="identifier">config_test</span>
+            </code><span class="emphasis"><em><code class="computeroutput"><span class="identifier">compiler</span><span class="special">-</span><span class="identifier">list</span></code></em></span>.
+            <code class="computeroutput"><span class="identifier">config_info</span></code> should build
+            and run cleanly for all the compilers in <span class="emphasis"><em><code class="computeroutput"><span class="identifier">compiler</span><span class="special">-</span><span class="identifier">list</span></code></em></span>
+            while <code class="computeroutput"><span class="identifier">config_test</span></code> should
+            fail for those that have the defect, and pass for those that do not.
+          </li>
+</ul></div>
+<p>
+        Then you should:
+      </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+            Define the defect macro in those config headers that require it.
+          </li>
+<li class="listitem">
+            Document the macro in this documentation (please do not forget this step!!)
+          </li>
+<li class="listitem">
+            Commit everything.
+          </li>
+<li class="listitem">
+            Keep an eye on the regression tests for new failures in Boost.Config
+            caused by the addition.
+          </li>
+<li class="listitem">
+            Start using the macro.
+          </li>
+</ul></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.guidelines_for_boost_authors.adding_new_feature_test_macros"></a><a class="link" href="guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.adding_new_feature_test_macros" title="Adding New Feature Test Macros">Adding
+      New Feature Test Macros</a>
+</h3></div></div></div>
+<p>
+        When you need to add a macro that describes a feature that the standard does
+        not require, follow the convention for adding a new defect macro (above),
+        but call the macro <code class="computeroutput"><span class="identifier">BOOST_HAS_FOO</span></code>,
+        and name the test file "<code class="computeroutput"><span class="identifier">boost_has_foo</span><span class="special">.</span><span class="identifier">ipp</span></code>".
+        Try not to add feature test macros unnecessarily, if there is a platform
+        specific macro that can already be used (for example <code class="computeroutput"><span class="identifier">_WIN32</span></code>,
+        <code class="computeroutput"><span class="identifier">__BEOS__</span></code>, or <code class="computeroutput"><span class="identifier">__linux</span></code>) to identify the feature then use
+        that. Try to keep the macro to a feature group, or header name, rather than
+        one specific API (for example <code class="computeroutput"><span class="identifier">BOOST_HAS_NL_TYPES_H</span></code>
+        rather than <code class="computeroutput"><span class="identifier">BOOST_HAS_CATOPEN</span></code>).
+        If the macro describes a POSIX feature group, then add boilerplate code to
+        <boost/config/suffix.hpp>
+        to auto-detect the feature where possible (if you are wondering why we can't
+        use POSIX feature test macro directly, remember that many of these features
+        can be added by third party libraries, and are not therefore identified inside
+        <code class="computeroutput"><span class="special"><</span><span class="identifier">unistd</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code>).
+      </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.guidelines_for_boost_authors.modifying_the_boost_configuration_headers"></a><a class="link" href="guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.modifying_the_boost_configuration_headers" title="Modifying the Boost Configuration Headers">Modifying
+      the Boost Configuration Headers</a>
+</h3></div></div></div>
+<p>
+        The aim of boost's configuration setup is that the configuration headers
+        should be relatively stable - a boost user should not have to recompile their
+        code just because the configuration for some compiler that they're not interested
+        in has changed. Separating the configuration into separate compiler/standard
+        library/platform sections provides for part of this stability, but boost
+        authors require some amount of restraint as well, in particular:
+      </p>
+<p>
+        <boost/config.hpp>
+        should never change, don't alter this file.
+      </p>
+<p>
+        <boost/config/user.hpp>
+        is included by default, don't add extra code to this file unless you have
+        to. If you do, please remember to update libs/config/tools/configure.in
+        as well.
+      </p>
+<p>
+        <boost/config/suffix.hpp>
+        is always included so be careful about modifying this file as it breaks dependencies
+        for everyone. This file should include only "boilerplate" configuration
+        code, and generally should change only when new macros are added.
+      </p>
+<p>
+        <boost/config/select_compiler_config.hpp>,
+        <boost/config/select_platform_config.hpp>
+        and <boost/config/select_stdlib_config.hpp>
+        are included by default and should change only if support for a new compiler/standard
+        library/platform is added.
+      </p>
+<p>
+        The compiler/platform/standard library selection code is set up so that unknown
+        platforms are ignored and assumed to be fully standards compliant - this
+        gives unknown platforms a "sporting chance" of working "as
+        is" even without running the configure script.
+      </p>
+<p>
+        When adding or modifying the individual mini-configs, assume that future,
+        as yet unreleased versions of compilers, have all the defects of the current
+        version. Although this is perhaps unnecessarily pessimistic, it cuts down
+        on the maintenance of these files, and experience suggests that pessimism
+        is better placed than optimism here!
+      </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Beman Dawes, Vesa Karvonen, John
+      Maddock<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="boost_macro_reference.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="rationale.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: website/public_html/live/doc/fixes/boost_1_51_0/libs/config/doc/html/boost_config/rationale.html
==============================================================================
--- (empty file)
+++ website/public_html/live/doc/fixes/boost_1_51_0/libs/config/doc/html/boost_config/rationale.html	2012-11-20 15:40:09 EST (Tue, 20 Nov 2012)
@@ -0,0 +1,124 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Rationale</title>
+<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Boost.Config">
+<link rel="up" href="../index.html" title="Boost.Config">
+<link rel="prev" href="guidelines_for_boost_authors.html" title="Guidelines for Boost Authors">
+<link rel="next" href="acknowledgements.html" title="Acknowledgements">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="guidelines_for_boost_authors.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="acknowledgements.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="boost_config.rationale"></a><a class="link" href="rationale.html" title="Rationale">Rationale</a>
+</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section">The problem</span></dt>
+<dt><span class="section">The solution</span></dt>
+</dl></div>
+<p>
+      The problem with many traditional "textbook" implementations of configuration
+      headers (where all the configuration options are in a single "monolithic"
+      header) is that they violate certain fundamental software engineering principles
+      which would have the effect of making boost more fragile, more difficult to
+      maintain and more difficult to use safely. You can find a description of the
+      principles from the <a href="http://www.objectmentor.com/resources/articles/Principles_and_Patterns.pdf" target="_top">following
+      article</a>.
+    </p>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.rationale.the_problem"></a><a class="link" href="rationale.html#boost_config.rationale.the_problem" title="The problem">The problem</a>
+</h3></div></div></div>
+<p>
+        Consider a situation in which you are concurrently developing on multiple
+        platforms. Then consider adding a new platform or changing the platform definitions
+        of an existing platform. What happens? Everything, and this does literally
+        mean everything, recompiles. Isn't it quite absurd that adding a new platform,
+        which has absolutely nothing to do with previously existing platforms, means
+        that all code on all existing platforms needs to be recompiled?
+      </p>
+<p>
+        Effectively, there is an imposed physical dependency between platforms that
+        have nothing to do with each other. Essentially, the traditional solution
+        employed by configuration headers does not conform to the Open-Closed Principle:
+      </p>
+<div class="blockquote"><blockquote class="blockquote"><p>
+          <span class="bold"><strong>"A module should be open for extension but closed
+          for modification."</strong></span>
+        </p></blockquote></div>
+<p>
+        Extending a traditional configuration header implies modifying existing code.
+      </p>
+<p>
+        Furthermore, consider the complexity and fragility of the platform detection
+        code. What if a simple change breaks the detection on some minor platform?
+        What if someone accidentally or on purpose (as a workaround for some other
+        problem) defines some platform dependent macros that are used by the detection
+        code? A traditional configuration header is one of the most volatile headers
+        of the entire library, and more stable elements of Boost would depend on
+        it. This violates the Stable Dependencies Principle:
+      </p>
+<div class="blockquote"><blockquote class="blockquote"><p>
+          <span class="bold"><strong>"Depend in the direction of stability."</strong></span>
+        </p></blockquote></div>
+<p>
+        After even a minor change to a traditional configuration header on one minor
+        platform, almost everything on every platform should be tested if we follow
+        sound software engineering practice.
+      </p>
+<p>
+        Another important issue is that it is not always possible to submit changes
+        to <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><span class="identifier">hpp</span><span class="special">></span></code>.
+        Some boost users are currently working on platforms using tools and libraries
+        that are under strict Non-Disclosure Agreements. In this situation it is
+        impossible to submit changes to a traditional monolithic configuration header,
+        instead some method by which the user can insert their own configuration
+        code must be provided.
+      </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.rationale.the_solution"></a><a class="link" href="rationale.html#boost_config.rationale.the_solution" title="The solution">The solution</a>
+</h3></div></div></div>
+<p>
+        The approach taken by boost's configuration headers is to separate configuration
+        into three orthogonal parts: the compiler, the standard library and the platform.
+        Each compiler/standard library/platform gets its own mini-configuration header,
+        so that changes to one compiler's configuration (for example) does not affect
+        other compilers. In addition there are measures that can be taken both to
+        omit the compiler/standard library/platform detection code (so that adding
+        support to a new platform does not break dependencies), or to freeze the
+        configuration completely; providing almost complete protection against dependency
+        changes.
+      </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Beman Dawes, Vesa Karvonen, John
+      Maddock<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="guidelines_for_boost_authors.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="acknowledgements.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: website/public_html/live/doc/fixes/boost_1_51_0/libs/config/doc/html/index.html
==============================================================================
--- (empty file)
+++ website/public_html/live/doc/fixes/boost_1_51_0/libs/config/doc/html/index.html	2012-11-20 15:40:09 EST (Tue, 20 Nov 2012)
@@ -0,0 +1,960 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Boost.Config</title>
+<link rel="stylesheet" href="../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Boost.Config">
+<link rel="next" href="boost_config/boost_macro_reference.html" title="Boost Macro Reference">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav"><a accesskey="n" href="boost_config/boost_macro_reference.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a></div>
+<div class="article">
+<div class="titlepage">
+<div>
+<div><h2 class="title">
+<a name="config"></a>Boost.Config</h2></div>
+<div><div class="authorgroup"><div class="author"><h3 class="author">
+<span class="firstname">Vesa Karvonen, John Maddock</span> <span class="surname">Beman Dawes</span>
+</h3></div></div></div>
+<div><p class="copyright">Copyright © 2001-2007 Beman Dawes, Vesa Karvonen, John
+      Maddock</p></div>
+<div><div class="legalnotice">
+<a name="config.legal"></a><p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+      </p>
+</div></div>
+</div>
+<hr>
+</div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform">Configuring
+    Boost for Your Platform</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.using_the_default_boost_configuration">Using
+      the default boost configuration</a></span></dt>
+<dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.the__boost_config_hpp__header">The
+      <boost/config.hpp> header</a></span></dt>
+<dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.using_the_configure_script">Using
+      the configure script</a></span></dt>
+<dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.user_settable_options">User
+      settable options</a></span></dt>
+<dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage">Advanced
+      configuration usage</a></span></dt>
+<dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.testing_the_boost_configuration">Testing
+      the boost configuration</a></span></dt>
+</dl></dd>
+<dt><span class="section">Boost Macro Reference</span></dt>
+<dd><dl>
+<dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_c__03_defects">Macros
+      that describe C++03 defects</a></span></dt>
+<dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_optional_features">Macros
+      that describe optional features</a></span></dt>
+<dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_possible_c___future_features">Macros
+      that describe possible C++ future features</a></span></dt>
+<dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_c__11_features_not_supported">Macros
+      that describe C++11 features not supported</a></span></dt>
+<dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_allow_use_of_c__11_features_with_c__03_compilers">Macros
+      that allow use of C++11 features with C++03 compilers</a></span></dt>
+<dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.boost_helper_macros">Boost
+      Helper Macros</a></span></dt>
+<dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.boost_informational_macros">Boost
+      Informational Macros</a></span></dt>
+<dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.boost_deprecated_macros">Boost
+      Deprecated Macros</a></span></dt>
+<dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code">Macros
+      for libraries with separate source code</a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="boost_config/guidelines_for_boost_authors.html">Guidelines for
+    Boost Authors</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="boost_config/guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.warnings">Disabling
+      Compiler Warnings</a></span></dt>
+<dt><span class="section"><a href="boost_config/guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.adding_new_defect_macros">Adding
+      New Defect Macros</a></span></dt>
+<dt><span class="section"><a href="boost_config/guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.adding_new_feature_test_macros">Adding
+      New Feature Test Macros</a></span></dt>
+<dt><span class="section"><a href="boost_config/guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.modifying_the_boost_configuration_headers">Modifying
+      the Boost Configuration Headers</a></span></dt>
+</dl></dd>
+<dt><span class="section">Rationale</span></dt>
+<dd><dl>
+<dt><span class="section">The problem</span></dt>
+<dt><span class="section">The solution</span></dt>
+</dl></dd>
+<dt><span class="section">Acknowledgements</span></dt>
+</dl>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="boost_config.configuring_boost_for_your_platform"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform" title="Configuring Boost for Your Platform">Configuring
+    Boost for Your Platform</a>
+</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.using_the_default_boost_configuration">Using
+      the default boost configuration</a></span></dt>
+<dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.the__boost_config_hpp__header">The
+      <boost/config.hpp> header</a></span></dt>
+<dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.using_the_configure_script">Using
+      the configure script</a></span></dt>
+<dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.user_settable_options">User
+      settable options</a></span></dt>
+<dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage">Advanced
+      configuration usage</a></span></dt>
+<dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.testing_the_boost_configuration">Testing
+      the boost configuration</a></span></dt>
+</dl></div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.configuring_boost_for_your_platform.using_the_default_boost_configuration"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.using_the_default_boost_configuration" title="Using the default boost configuration">Using
+      the default boost configuration</a>
+</h3></div></div></div>
+<p>
+        Boost comes already configured for most common compilers and platforms; you
+        should be able to use boost "as is". Since the compiler is configured
+        separately from the standard library, the default configuration should work
+        even if you replace the compiler's standard library with a third-party standard
+        library (like STLport).
+      </p>
+<p>
+        Using boost "as is" without trying to reconfigure is the recommended
+        method for using boost. You can, however, run the configure script if you
+        want to, and there are regression tests provided that allow you to test the
+        current boost configuration with your particular compiler setup.
+      </p>
+<p>
+        Boost library users can request support for additional compilers or platforms
+        by visiting our Trac
+        and submitting a support request.
+      </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.configuring_boost_for_your_platform.the__boost_config_hpp__header"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.the__boost_config_hpp__header" title="The <boost/config.hpp> header">The
+      <boost/config.hpp> header</a>
+</h3></div></div></div>
+<p>
+        Boost library implementations access configuration macros via
+      </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <boost/config.hpp>
+</pre>
+<p>
+        While Boost library users are not required to include that file directly,
+        or use those configuration macros, such use is acceptable. The configuration
+        macros are documented as to their purpose, usage, and limitations which makes
+        them usable by both Boost library and user code.
+      </p>
+<p>
+        Boost <a class="link" href="boost_config/boost_macro_reference.html#config_info_macros">informational</a> or <a class="link" href="boost_config/boost_macro_reference.html#config_helpers">helper</a>
+        macros are designed for use by Boost users as well as for our own internal
+        use. Note however, that the <a class="link" href="boost_config/boost_macro_reference.html#config_features">feature test</a>
+        and <a class="link" href="boost_config/boost_macro_reference.html#config_defects">defect test</a> macros were designed
+        for internal use by Boost libraries, not user code, so they can change at
+        any time (though no gratuitous changes are made to them). Boost library problems
+        resulting from changes to the configuration macros are caught by the Boost
+        regression tests, so the Boost libraries are updated to account for those
+        changes. By contrast, Boost library user code can be adversely affected by
+        changes to the macros without warning. The best way to keep abreast of changes
+        to the macros used in user code is to monitor the discussions on the Boost
+        developers list.
+      </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.configuring_boost_for_your_platform.using_the_configure_script"></a><a name="config_config_script"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.using_the_configure_script" title="Using the configure script">Using
+      the configure script</a>
+</h3></div></div></div>
+<div class="important"><table border="0" summary="Important">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../../../doc/src/images/important.png"></td>
+<th align="left">Important</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+          This configure script only sets up the Boost headers for use with a particular
+          compiler. It has no effect on Boost.Build, or how the libraries are built.
+        </p></td></tr>
+</table></div>
+<p>
+        If you know that boost is incorrectly configured for your particular setup,
+        and you are on a UNIX like platform, then you may want to try and improve
+        things by running the boost configure script. From a shell command prompt
+        you will need to cd into <span class="emphasis"><em><boost-root></em></span><code class="computeroutput"><span class="special">/</span><span class="identifier">libs</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span></code>
+        and type:
+      </p>
+<div class="blockquote"><blockquote class="blockquote"><p>
+          <code class="computeroutput"><span class="identifier">sh</span> <span class="special">./</span><span class="identifier">configure</span></code>
+        </p></blockquote></div>
+<p>
+        you will see a list of the items being checked as the script works its way
+        through the regression tests. Note that the configure script only really
+        auto-detects your compiler if it's called g++, c++ or CC. If you are using
+        some other compiler you will need to set one or more of the following environment
+        variables:
+      </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                <p>
+                  Variable
+                </p>
+              </th>
+<th>
+                <p>
+                  Description
+                </p>
+              </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                <p>
+                  CXX
+                </p>
+              </td>
+<td>
+                <p>
+                  The name of the compiler, for example <code class="computeroutput"><span class="identifier">c</span><span class="special">++</span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  CXXFLAGS
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler flags to use, for example <code class="computeroutput"><span class="special">-</span><span class="identifier">O2</span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  LDFLAGS
+                </p>
+              </td>
+<td>
+                <p>
+                  The linker flags to use, for example <code class="computeroutput"><span class="special">-</span><span class="identifier">L</span><span class="special">/</span><span class="identifier">mypath</span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  LIBS
+                </p>
+              </td>
+<td>
+                <p>
+                  Any libraries to link in, for example <code class="computeroutput"><span class="special">-</span><span class="identifier">lpthread</span></code>.
+                </p>
+              </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+        For example to run the configure script with HP aCC, you might use something
+        like:
+      </p>
+<pre class="programlisting"><span class="keyword">export</span> <span class="identifier">CXX</span><span class="special">=</span><span class="string">"aCC"</span>
+<span class="keyword">export</span> <span class="identifier">CXXFLAGS</span><span class="special">=</span><span class="string">"-Aa -DAportable -D__HPACC_THREAD_SAFE_RB_TREE \
+   -DRWSTD_MULTI_THREAD -DRW_MULTI_THREAD -D_REENTRANT -D_THREAD_SAFE"</span>
+<span class="keyword">export</span> <span class="identifier">LDFLAGS</span><span class="special">=</span><span class="string">"-DAportable"</span>
+<span class="keyword">export</span> <span class="identifier">LIBS</span><span class="special">=</span><span class="string">"-lpthread"</span>
+<span class="identifier">sh</span> <span class="special">./</span><span class="identifier">configure</span>
+</pre>
+<p>
+        However you run the configure script, when it finishes you will find a new
+        header -<code class="computeroutput"><span class="identifier">user</span><span class="special">.</span><span class="identifier">hpp</span></code>- located in the <span class="emphasis"><em><boost-root></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>
+        directory. <span class="bold"><strong>Note that configure does not install this
+        header into your boost include path by default</strong></span>. This header contains
+        all the options generated by the configure script, plus a header-section
+        that contains the user settable options from the default version of <boost/config/user.hpp>
+        (located under <span class="emphasis"><em><boost-root></em></span><code class="computeroutput"><span class="special">/</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span></code>).
+        There are two ways you can use this header:
+      </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+            <span class="bold"><strong>Option 1:</strong></span> copy the header into <span class="emphasis"><em><boost-root></em></span><code class="computeroutput"><span class="special">/</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span></code> so that it replaces the default user.hpp
+            provided by boost. This option allows only one configure-generated setup;
+            boost developers should avoid this option, as it incurs the danger of
+            accidentally committing a configure-modified <boost/config/user.hpp>
+            to the svn repository (something you will not be thanked for!).
+          </li>
+<li class="listitem">
+            <span class="bold"><strong>Option 2:</strong></span> give the header a more memorable
+            name, and place it somewhere convenient; then, define the macro <code class="computeroutput"><span class="identifier">BOOST_USER_CONFIG</span></code> to point to it. For
+            example create a new sub-directory <span class="emphasis"><em><boost-root></em></span><code class="computeroutput"><span class="special">/</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span></code> <code class="computeroutput"><span class="identifier">user</span><span class="special">/</span></code>, and copy the header there; for example
+            as <code class="computeroutput"><span class="identifier">multithread</span><span class="special">-</span><span class="identifier">gcc</span><span class="special">-</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span></code>. Then, when compiling add the command
+            line option: <code class="computeroutput"><span class="special">-</span><span class="identifier">DBOOST_USER_CONFIG</span><span class="special">=</span><span class="string">"<boost/config/user/multithread-gcc-config.hpp>"</span></code>,
+            and boost will use the new configuration header. This option allows you
+            to generate more than one configuration header, and to keep them separate
+            from the boost source - so that updates to the source do not interfere
+            with your configuration.
+          </li>
+</ul></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.configuring_boost_for_your_platform.user_settable_options"></a><a name="config_user_settable"></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>
+</h3></div></div></div>
+<p>
+        There are some configuration-options that represent user choices, rather
+        than compiler defects or platform specific options. These are listed in
+        <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><span class="identifier">user</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>
+        and at the start of a configure-generated <code class="computeroutput"><span class="identifier">user</span><span class="special">.</span><span class="identifier">hpp</span></code> header.
+        You can define these on the command line, or by editing <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><span class="identifier">user</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>, they are listed in the following table:
+      </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                <p>
+                  Macro
+                </p>
+              </th>
+<th>
+                <p>
+                  Description
+                </p>
+              </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_USER_CONFIG</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  When defined, it should point to the name of the user configuration
+                  file to include prior to any boost configuration files. When not
+                  defined, defaults to <boost/config/user.hpp>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_COMPILER_CONFIG</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  When defined, it should point to the name of the compiler configuration
+                  file to use. Defining this cuts out the compiler selection logic,
+                  and eliminates the dependency on the header containing that logic.
+                  For example if you are using gcc, then you could define BOOST_COMPILER_CONFIG
+                  to <boost/config/compiler/gcc.hpp>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_STDLIB_CONFIG</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  When defined, it should point to the name of the standard library
+                  configuration file to use. Defining this cuts out the standard
+                  library selection logic, and eliminates the dependency on the header
+                  containing that logic. For example if you are using STLport, then
+                  you could define <code class="computeroutput"><span class="identifier">BOOST_STDLIB_CONFIG</span></code>
+                  to <boost/config/stdlib/stlport.hpp>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_PLATFORM_CONFIG</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  When defined, it should point to the name of the platform configuration
+                  file to use. Defining this cuts out the platform selection logic,
+                  and eliminates the dependency on the header containing that logic.
+                  For example if you are compiling on linux, then you could define
+                  <code class="computeroutput"><span class="identifier">BOOST_PLATFORM_CONFIG</span></code>
+                  to <boost/config/platform/linux.hpp>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_COMPILER_CONFIG</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  When defined, no compiler configuration file is selected or included,
+                  define when the compiler is fully conformant with the standard,
+                  or where the user header (see <code class="computeroutput"><span class="identifier">BOOST_USER_CONFIG</span></code>),
+                  has had any options necessary added to it, for example by an autoconf
+                  generated configure script.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_STDLIB_CONFIG</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  When defined, no standard library configuration file is selected
+                  or included, define when the standard library is fully conformant
+                  with the standard, or where the user header (see <code class="computeroutput"><span class="identifier">BOOST_USER_CONFIG</span></code>), has had any
+                  options necessary added to it, for example by an autoconf generated
+                  configure script.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_PLATFORM_CONFIG</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  When defined, no platform configuration file is selected or included,
+                  define when the platform is fully conformant with the standard
+                  (and has no useful extra features), or where the user header (see
+                  <code class="computeroutput"><span class="identifier">BOOST_USER_CONFIG</span></code>),
+                  has had any options necessary added to it, for example by an autoconf
+                  generated configure script.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CONFIG</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Equivalent to defining all of <code class="computeroutput"><span class="identifier">BOOST_NO_COMPILER_CONFIG</span></code>,
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_STDLIB_CONFIG</span></code>
+                  and <code class="computeroutput"><span class="identifier">BOOST_NO_PLATFORM_CONFIG</span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_STRICT_CONFIG</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The normal behavior for compiler versions that are newer than the
+                  last known version, is to assume that they have all the same defects
+                  as the last known version. By setting this define, then compiler
+                  versions that are newer than the last known version are assumed
+                  to be fully conforming with the standard. This is probably most
+                  useful for boost developers or testers, and for those who want
+                  to use boost to test beta compiler versions.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_ASSERT_CONFIG</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  When this flag is set, if the config finds anything unknown, then
+                  it will stop with a #error rather than continue. Boost regression
+                  testers should set this define, as should anyone who wants to quickly
+                  check whether boost is supported on their platform.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_DISABLE_THREADS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  When defined, disables threading support, even if the compiler
+                  in its current translation mode supports multiple threads.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_DISABLE_WIN32</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  When defined, disables the use of Win32 specific API's, even when
+                  these are available. Also has the effect of setting <code class="computeroutput"><span class="identifier">BOOST_DISABLE_THREADS</span></code> unless
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_PTHREADS</span></code>
+                  is set. This option may be set automatically by the config system
+                  when it detects that the compiler is in "strict mode".
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_DISABLE_ABI_HEADERS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Stops boost headers from including any prefix/suffix headers that
+                  normally control things like struct packing and alignment.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_ABI_PREFIX</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  A prefix header to include in place of whatever boost.config would
+                  normally select, any replacement should set up struct packing and
+                  alignment options as required.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_ABI_SUFFIX</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  A suffix header to include in place of whatever boost.config would
+                  normally select, any replacement should undo the effects of the
+                  prefix header.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_ALL_DYN_LINK</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Forces all libraries that have separate source, to be linked as
+                  dll's rather than static libraries on Microsoft Windows (this macro
+                  is used to turn on <code class="computeroutput"><span class="identifier">__declspec</span><span class="special">(</span><span class="identifier">dllimport</span><span class="special">)</span></code> modifiers, so that the compiler
+                  knows which symbols to look for in a dll rather than in a static
+                  library). Note that there may be some libraries that can only be
+                  statically linked (Boost.Test for example) and others which may
+                  only be dynamically linked (Boost.Thread for example), in these
+                  cases this macro has no effect.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_</span></code><span class="emphasis"><em>WHATEVER</em></span><code class="computeroutput"><span class="identifier">_DYN_LINK</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Forces library "whatever" to be linked as a dll rather
+                  than a static library on Microsoft Windows: replace the <span class="emphasis"><em>WHATEVER</em></span>
+                  part of the macro name with the name of the library that you want
+                  to dynamically link to, for example use <code class="computeroutput"><span class="identifier">BOOST_DATE_TIME_DYN_LINK</span></code>
+                  or <code class="computeroutput"><span class="identifier">BOOST_REGEX_DYN_LINK</span></code>
+                  etc (this macro is used to turn on <code class="computeroutput"><span class="identifier">__declspec</span><span class="special">(</span><span class="identifier">dllimport</span><span class="special">)</span></code> modifiers, so that the compiler
+                  knows which symbols to look for in a dll rather than in a static
+                  library). Note that there may be some libraries that can only be
+                  statically linked (Boost.Test for example) and others which may
+                  only be dynamically linked (Boost.Thread for example), in these
+                  cases this macro is unsupported.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_ALL_NO_LIB</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Tells the config system not to automatically select which libraries
+                  to link against. Normally if a compiler supports #pragma lib, then
+                  the correct library build variant will be automatically selected
+                  and linked against, simply by the act of including one of that
+                  library's headers. This macro turns that feature off.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_</span></code><span class="emphasis"><em>WHATEVER</em></span><code class="computeroutput"><span class="identifier">_NO_LIB</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Tells the config system not to automatically select which library
+                  to link against for library "whatever", replace <span class="emphasis"><em>WHATEVER</em></span>
+                  in the macro name with the name of the library; for example <code class="computeroutput"><span class="identifier">BOOST_DATE_TIME_NO_LIB</span></code> or <code class="computeroutput"><span class="identifier">BOOST_REGEX_NO_LIB</span></code>. Normally
+                  if a compiler supports <code class="computeroutput"><span class="preprocessor">#pragma</span>
+                  <span class="identifier">lib</span></code>, then the correct
+                  library build variant will be automatically selected and linked
+                  against, simply by the act of including one of that library's headers.
+                  This macro turns that feature off.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_LIB_DIAGNOSTIC</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Causes the auto-linking code to output diagnostic messages indicating
+                  the name of the library that is selected for linking.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_LIB_TOOLSET</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Overrides the name of the toolset part of the name of library being
+                  linked to; note if defined this must be defined to a quoted string
+                  literal, for example "abc".
+                </p>
+              </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.configuring_boost_for_your_platform.advanced_configuration_usage"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage" title="Advanced configuration usage">Advanced
+      configuration usage</a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_1__creating_our_own_frozen_configuration">Example
+        1: creating our own frozen configuration</a></span></dt>
+<dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_2__skipping_files_that_you_don_t_need">Example
+        2: skipping files that you don't need</a></span></dt>
+<dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_3__using_configure_script_to_freeze_the_boost_configuration">Example
+        3: using configure script to freeze the boost configuration</a></span></dt>
+</dl></div>
+<p>
+        By setting various macros on the compiler command line or by editing <boost/config/user.hpp>,
+        the boost configuration setup can be optimised in a variety of ways.
+      </p>
+<p>
+        Boost's configuration is structured so that the user-configuration is included
+        first (defaulting to <boost/config/user.hpp>
+        if <code class="computeroutput"><span class="identifier">BOOST_USER_CONFIG</span></code> is not
+        defined). This sets up any user-defined policies, and gives the user-configuration
+        a chance to influence what happens next.
+      </p>
+<p>
+        Next the compiler, standard library, and platform configuration files are
+        included. These are included via macros (<code class="computeroutput"><span class="identifier">BOOST_COMPILER_CONFIG</span></code>
+        etc, <a class="link" href="index.html#config_user_settable">see user settable macros</a>),
+        and if the corresponding macro is undefined then a separate header that detects
+        which compiler/standard library/platform is in use is included in order to
+        set these. The config can be told to ignore these headers altogether if the
+        corresponding <code class="computeroutput"><span class="identifier">BOOST_NO_XXX</span></code>
+        macro is set (for example <code class="computeroutput"><span class="identifier">BOOST_NO_COMPILER_CONFIG</span></code>
+        to disable including any compiler configuration file - <a class="link" href="index.html#config_user_settable">see
+        user settable macros</a>).
+      </p>
+<p>
+        Finally the boost configuration header, includes <boost/config/suffix.hpp>;
+        this header contains any boiler plate configuration code - for example where
+        one boost macro being set implies that another must be set also.
+      </p>
+<p>
+        The following usage examples represent just a few of the possibilities:
+      </p>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_1__creating_our_own_frozen_configuration"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_1__creating_our_own_frozen_configuration" title="Example 1: creating our own frozen configuration">Example
+        1: creating our own frozen configuration</a>
+</h4></div></div></div>
+<p>
+          Lets suppose that we're building boost with Visual C++ 6, and STLport 4.0.
+          Lets suppose also that we don't intend to update our compiler or standard
+          library any time soon. In order to avoid breaking dependencies when we
+          update boost, we may want to "freeze" our configuration headers,
+          so that we only have to rebuild our project if the boost code itself has
+          changed, and not because the boost config has been updated for more recent
+          versions of Visual C++ or STLport. We'll start by realising that the configuration
+          files in use are: <boost/config/compiler/visualc.hpp> for the compiler, <boost/config/stdlib/stlport.hpp> for the 
standard library, and
+          <boost/config/platform/win32.hpp> for the platform. Next we'll
+          create our own private configuration directory: <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">mysetup</span><span class="special">/</span></code>, and copy the configuration files into
+          there. Finally, open up <boost/config/user.hpp>
+          and edit the following defines:
+        </p>
+<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_COMPILER_CONFIG</span> <span class="string">"boost/config/mysetup/visualc.hpp"</span>
+<span class="preprocessor">#define</span> <span class="identifier">BOOST_STDLIB_CONFIG</span> <span class="string">"boost/config/mysetup/stlport.hpp"</span>
+<span class="preprocessor">#define</span> <span class="identifier">BOOST_USER_CONFIG</span> <span class="string">"boost/config/mysetup/win32.hpp"</span>
+</pre>
+<p>
+          Now when you use boost, its configuration header will go straight to our
+          "frozen" versions, and ignore the default versions, you will
+          now be insulated from any configuration changes when you update boost.
+          This technique is also useful if you want to modify some of the boost configuration
+          files; for example if you are working with a beta compiler release not
+          yet supported by boost.
+        </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_2__skipping_files_that_you_don_t_need"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_2__skipping_files_that_you_don_t_need" title="Example 2: skipping files that you don't need">Example
+        2: skipping files that you don't need</a>
+</h4></div></div></div>
+<p>
+          Lets suppose that you're using boost with a compiler that is fully conformant
+          with the standard; you're not interested in the fact that older versions
+          of your compiler may have had bugs, because you know that your current
+          version does not need any configuration macros setting. In a case like
+          this, you can define <code class="computeroutput"><span class="identifier">BOOST_NO_COMPILER_CONFIG</span></code>
+          either on the command line, or in <boost/config/user.hpp>,
+          and miss out the compiler configuration header altogether (actually you
+          miss out two headers, one which works out what the compiler is, and one
+          that configures boost for it). This has two consequences: the first is
+          that less code has to be compiled, and the second that you have removed
+          a dependency on two boost headers.
+        </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_3__using_configure_script_to_freeze_the_boost_configuration"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_3__using_configure_script_to_freeze_the_boost_configuration" title="Example 3: using configure script to freeze the boost configuration">Example
+        3: using configure script to freeze the boost configuration</a>
+</h4></div></div></div>
+<p>
+          If you are working on a unix-like platform then you can use the configure
+          script to generate a "frozen" configuration based on your current
+          compiler setup - <a class="link" href="index.html#config_config_script">see using the configure
+          script for more details</a>.
+        </p>
+</div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.configuring_boost_for_your_platform.testing_the_boost_configuration"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.testing_the_boost_configuration" title="Testing the boost configuration">Testing
+      the boost configuration</a>
+</h3></div></div></div>
+<p>
+        The boost configuration library provides a full set of regression test programs
+        under the <span class="emphasis"><em><boost-root></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">test</span><span class="special">/</span></code>
+        sub-directory:
+      </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                <p>
+                  File
+                </p>
+              </th>
+<th>
+                <p>
+                  Description
+                </p>
+              </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">config_info</span><span class="special">.</span><span class="identifier">cpp</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Prints out a detailed description of your compiler/standard library/platform
+                  setup, plus your current boost configuration. The information provided
+                  by this program useful in setting up the boost configuration files.
+                  If you report that boost is incorrectly configured for your compiler/library/platform
+                  then please include the output from this program when reporting
+                  the changes required.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">config_test</span><span class="special">.</span><span class="identifier">cpp</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  A monolithic test program that includes most of the individual
+                  test cases. This provides a quick check to see if boost is correctly
+                  configured for your compiler/library/platform.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">limits_test</span><span class="special">.</span><span class="identifier">cpp</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Tests your standard library's <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span></code>
+                  implementation (or its boost provided replacement if <code class="computeroutput"><span class="identifier">BOOST_NO_LIMITS</span></code> is defined).
+                  This test file fails with most versions of numeric_limits, mainly
+                  due to the way that some compilers treat NAN's and infinity.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">no_</span><span class="special">*</span><span class="identifier">pass</span><span class="special">.</span><span class="identifier">cpp</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Individual compiler defect test files. Each of these should compile,
+                  if one does not then the corresponding <code class="computeroutput"><span class="identifier">BOOST_NO_XXX</span></code>
+                  macro needs to be defined - see each test file for specific details.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">no_</span><span class="special">*</span><span class="identifier">fail</span><span class="special">.</span><span class="identifier">cpp</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Individual compiler defect test files. Each of these should not
+                  compile, if one does then the corresponding <code class="computeroutput"><span class="identifier">BOOST_NO_XXX</span></code>
+                  macro is defined when it need not be - see each test file for specific
+                  details.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">has_</span><span class="special">*</span><span class="identifier">pass</span><span class="special">.</span><span class="identifier">cpp</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Individual feature test files. If one of these does not compile
+                  then the corresponding <code class="computeroutput"><span class="identifier">BOOST_HAS_XXX</span></code>
+                  macro is defined when it should not be - see each test file for
+                  specific details.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">has_</span><span class="special">*</span><span class="identifier">fail</span><span class="special">.</span><span class="identifier">cpp</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Individual feature test files. If one of these does compile then
+                  the corresponding <code class="computeroutput"><span class="identifier">BOOST_HAS_XXX</span></code>
+                  macro can be safely defined - see each test file for specific details.
+                </p>
+              </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+        Although you can run the configuration regression tests as individual test
+        files, there are rather a lot of them, so there are a couple of shortcuts
+        to help you out:
+      </p>
+<p>
+        If you have built the <a href="../../../../tools/regression/doc/index.html" target="_top">boost
+        regression test driver</a>, then you can use this to produce a nice html
+        formatted report of the results using the supplied test file.
+      </p>
+<p>
+        Alternatively you can run the configure script like this:
+      </p>
+<div class="blockquote"><blockquote class="blockquote"><p>
+          <code class="computeroutput"><span class="special">./</span><span class="identifier">configure</span>
+          <span class="special">--</span><span class="identifier">enable</span><span class="special">-</span><span class="identifier">test</span></code>
+        </p></blockquote></div>
+<p>
+        in which case the script will test the current configuration rather than
+        creating a new one from scratch.
+      </p>
+<p>
+        If you are reporting the results of these tests for a new platform/library/compiler
+        then please include a log of the full compiler output, the output from <code class="computeroutput"><span class="identifier">config_info</span><span class="special">.</span><span class="identifier">cpp</span></code>, and the pass/fail test results.
+      </p>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"><p><small>Last revised: November 20, 2012 at 20:32:39 GMT</small></p></td>
+<td align="right"><div class="copyright-footer"></div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav"><a accesskey="n" href="boost_config/boost_macro_reference.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a></div>
+</body>
+</html>
Added: website/public_html/live/doc/fixes/boost_1_52_0/libs/config/doc/html/boost_config/acknowledgements.html
==============================================================================
--- (empty file)
+++ website/public_html/live/doc/fixes/boost_1_52_0/libs/config/doc/html/boost_config/acknowledgements.html	2012-11-20 15:40:09 EST (Tue, 20 Nov 2012)
@@ -0,0 +1,62 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Acknowledgements</title>
+<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Boost.Config">
+<link rel="up" href="../index.html" title="Boost.Config">
+<link rel="prev" href="rationale.html" title="Rationale">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="rationale.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="boost_config.acknowledgements"></a><a class="link" href="acknowledgements.html" title="Acknowledgements">Acknowledgements</a>
+</h2></div></div></div>
+<p>
+      Beman Dawes provided the original <code class="computeroutput"><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span></code> and
+      part of this document.
+    </p>
+<p>
+      Vesa Karvonen provided a description of the principles (see <a class="link" href="rationale.html" title="Rationale">rationale</a>)
+      and put together an early version of the current configuration setup.
+    </p>
+<p>
+      John Maddock put together the configuration current code, the test programs,
+      the configuration script and the reference section of this document.
+    </p>
+<p>
+      Matias Capeletto converted the docs to quickbook format.
+    </p>
+<p>
+      Numerous boost members, past and present, have contributed fixes to boost's
+      configuration.
+    </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Beman Dawes, Vesa Karvonen, John
+      Maddock<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="rationale.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a>
+</div>
+</body>
+</html>
Added: website/public_html/live/doc/fixes/boost_1_52_0/libs/config/doc/html/boost_config/boost_macro_reference.html
==============================================================================
--- (empty file)
+++ website/public_html/live/doc/fixes/boost_1_52_0/libs/config/doc/html/boost_config/boost_macro_reference.html	2012-11-20 15:40:09 EST (Tue, 20 Nov 2012)
@@ -0,0 +1,5050 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Boost Macro Reference</title>
+<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Boost.Config">
+<link rel="up" href="../index.html" title="Boost.Config">
+<link rel="prev" href="../index.html" title="Boost.Config">
+<link rel="next" href="guidelines_for_boost_authors.html" title="Guidelines for Boost Authors">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../index.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="guidelines_for_boost_authors.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="boost_config.boost_macro_reference"></a><a class="link" href="boost_macro_reference.html" title="Boost Macro Reference">Boost Macro Reference</a>
+</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_c__03_defects">Macros
+      that describe C++03 defects</a></span></dt>
+<dt><span class="section"><a href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_optional_features">Macros
+      that describe optional features</a></span></dt>
+<dt><span class="section"><a href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_possible_c___future_features">Macros
+      that describe possible C++ future features</a></span></dt>
+<dt><span class="section"><a href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_c__11_features_not_supported">Macros
+      that describe C++11 features not supported</a></span></dt>
+<dt><span class="section"><a href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_allow_use_of_c__11_features_with_c__03_compilers">Macros
+      that allow use of C++11 features with C++03 compilers</a></span></dt>
+<dt><span class="section"><a href="boost_macro_reference.html#boost_config.boost_macro_reference.boost_helper_macros">Boost
+      Helper Macros</a></span></dt>
+<dt><span class="section"><a href="boost_macro_reference.html#boost_config.boost_macro_reference.boost_informational_macros">Boost
+      Informational Macros</a></span></dt>
+<dt><span class="section"><a href="boost_macro_reference.html#boost_config.boost_macro_reference.boost_deprecated_macros">Boost
+      Deprecated Macros</a></span></dt>
+<dt><span class="section"><a href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code">Macros
+      for libraries with separate source code</a></span></dt>
+</dl></div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.boost_macro_reference.macros_that_describe_c__03_defects"></a><a name="config_defects"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_c__03_defects" title="Macros that describe C++03 defects">Macros
+      that describe C++03 defects</a>
+</h3></div></div></div>
+<p>
+        The following macros all describe features that are required by the C++03
+        standard, if one of the following macros is defined, then it represents a
+        defect in the compiler's conformance with the 2003 standard.
+      </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                <p>
+                  Macro
+                </p>
+              </th>
+<th>
+                <p>
+                  Section
+                </p>
+              </th>
+<th>
+                <p>
+                  Description
+                </p>
+              </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_BCB_PARTIAL_SPECIALIZATION_BUG</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler exibits certain partial specialisation bug - probably
+                  Borland C++ Builder specific.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  Argument dependent lookup fails if there is a using declaration
+                  for the symbol being looked up in the current scope. For example,
+                  using <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">get_pointer</span></code>; prevents ADL from
+                  finding overloads of <code class="computeroutput"><span class="identifier">get_pointer</span></code>
+                  in namespaces nested inside boost (but not elsewhere). Probably
+                  Borland specific.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_ADL_BARRIER</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler locates and searches namespaces that it should <span class="emphasis"><em>*not*</em></span>
+                  in fact search when performing argument dependent lookup.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler does not implement argument-dependent lookup (also named
+                  Koenig lookup); see std::3.4.2 [basic.koenig.lookup]
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_AUTO_PTR</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  If the compiler / library supplies non-standard or broken <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">auto_ptr</span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_COMPLETE_VALUE_INITIALIZATION</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler has not completely implemented value-initialization. See
+                  also <a href="../../../../utility/value_init.htm#compiler_issues" target="_top">The
+                  Utility/Value Init docs</a>
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CTYPE_FUNCTIONS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Platform
+                </p>
+              </td>
+<td>
+                <p>
+                  The Platform does not provide functions for the character-classifying
+                  operations <code class="computeroutput"><span class="special"><</span><span class="identifier">ctype</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code> and <code class="computeroutput"><span class="special"><</span><span class="identifier">cctype</span><span class="special">></span></code>,
+                  only macros.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CV_SPECIALIZATIONS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  If template specialisations for cv-qualified types conflict with
+                  a specialisation for a cv-unqualififed type.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CV_VOID_SPECIALIZATIONS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  If template specialisations for cv-void types conflict with a specialisation
+                  for void.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CWCHAR</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Platform
+                </p>
+              </td>
+<td>
+                <p>
+                  The Platform does not provide <code class="computeroutput"><span class="special"><</span><span class="identifier">wchar</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code>
+                  and <code class="computeroutput"><span class="special"><</span><span class="identifier">cwchar</span><span class="special">></span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CWCTYPE</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Platform
+                </p>
+              </td>
+<td>
+                <p>
+                  The Platform does not provide <code class="computeroutput"><span class="special"><</span><span class="identifier">wctype</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code>
+                  and <code class="computeroutput"><span class="special"><</span><span class="identifier">cwctype</span><span class="special">></span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_FENV_H</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Platform, Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The C standard library doesn't provide <code class="computeroutput"><span class="special"><</span><span class="identifier">fenv</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code>.
+                  <boost/detail/fenv.hpp>
+                  should be included instead of <code class="computeroutput"><span class="special"><</span><span class="identifier">fenv</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code>
+                  for maximum portability on platforms which do provide <code class="computeroutput"><span class="special"><</span><span class="identifier">fenv</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_DEPENDENT_NESTED_DERIVATIONS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler fails to compile a nested class that has a dependent
+                  base class:
+</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"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">foo</span> <span class="special">:</span> <span class="special">{</span>
+   <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">U</span><span class="special">></span>
+   <span class="keyword">struct</span> <span class="identifier">bar</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">U</span> <span class="special">{};</span>
+</pre>
+<p>
+                  };
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  Template value parameters cannot have a dependent type, for example:
+</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"><</span><span class="keyword">class</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="identifier">value</span><span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">X</span> <span class="special">{</span> <span class="special">...</span> <span class="special">};</span>
+</pre>
+<p>
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_EXCEPTION_STD_NAMESPACE</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard Library
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library does not put some or all of the contents of
+                  <code class="computeroutput"><span class="special"><</span><span class="identifier">exception</span><span class="special">></span></code> in namespace std.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_EXCEPTIONS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not support exception handling (this setting
+                  is typically required by many C++ compilers for embedded platforms).
+                  Note that there is no requirement for boost libraries to honor
+                  this configuration setting - indeed doing so may be impossible
+                  in some cases. Those libraries that do honor this will typically
+                  abort if a critical error occurs - you have been warned!
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  Can only use deduced template arguments when calling function template
+                  instantiations.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_FUNCTION_TEMPLATE_ORDERING</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not perform function template ordering or its
+                  function template ordering is incorrect.
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="comment">// #1</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></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="comment">// #2</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span><span class="keyword">class</span> <span class="identifier">U</span><span class="special">></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">U</span><span class="special">));</span>
+
+<span class="keyword">void</span> <span class="identifier">bar</span><span class="special">(</span><span class="keyword">int</span><span class="special">);</span>
+
+<span class="identifier">f</span><span class="special">(&</span><span class="identifier">bar</span><span class="special">);</span> <span class="comment">// should choose #2.</span>
+</pre>
+<p>
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_INCLASS_MEMBER_INITIALIZATION</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler violates std::9.4.2/4.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_INTRINSIC_WCHAR_T</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  The C++ implementation does not provide <code class="computeroutput"><span class="keyword">wchar_t</span></code>,
+                  or it is really a synonym for another integral type. Use this symbol
+                  to decide whether it is appropriate to explicitly specialize a
+                  template on <code class="computeroutput"><span class="keyword">wchar_t</span></code>
+                  if there is already a specialization for other integer types.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_IOSFWD</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  std lib
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library lacks <code class="computeroutput"><span class="special"><</span><span class="identifier">iosfwd</span><span class="special">></span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_IOSTREAM</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  std lib
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library lacks <code class="computeroutput"><span class="special"><</span><span class="identifier">iostream</span><span class="special">></span></code>,
+                  <code class="computeroutput"><span class="special"><</span><span class="identifier">istream</span><span class="special">></span></code> or <code class="computeroutput"><span class="special"><</span><span class="identifier">ostream</span><span class="special">></span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_IS_ABSTRACT</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  The C++ compiler does not support SFINAE with abstract types, this
+                  is covered by <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#337" target="_top">Core
+                  Language DR337</a>, but is not part of the current standard.
+                  Fortunately most compilers that support SFINAE also support this
+                  DR.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_LIMITS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The C++ implementation does not provide the <code class="computeroutput"><span class="special"><</span><span class="identifier">limits</span><span class="special">></span></code>
+                  header. Never check for this symbol in library code; always include
+                  <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">limits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>, which guarantees to provide
+                  <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_NUMERIC_LIMITS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  C++11 additions to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span></code>
+                  are not available for use. <code class="computeroutput"><span class="keyword">static</span>
+                  <span class="identifier">function</span> <span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">lowest</span><span class="special">()</span></code> the lowest finite value representable
+                  by the numeric type. <code class="computeroutput"><span class="keyword">static</span>
+                  <span class="keyword">int</span> <span class="keyword">const</span>
+                  <span class="identifier">max_digits10</span></code> the number
+                  of decimal digits that are required to make sure that two distinct
+                  values of the type have distinct decimal representations. <code class="computeroutput"><span class="keyword">template</span><span class="special"><></span>
+                  <span class="keyword">class</span> <span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">char16_t</span><span class="special">>;</span></code>, see also <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_CHAR16_T</span></code>,
+                  <code class="computeroutput"><span class="keyword">template</span><span class="special"><></span>
+                  <span class="keyword">class</span> <span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">char32_t</span><span class="special">>;</span></code> see also <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_CHAR32_T</span></code>.
+                  Replaces BOOST_NO_NUMERIC_LIMITS_LOWEST.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  Constants such as <code class="computeroutput"><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">is_signed</span></code>
+                  are not available for use at compile-time.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_LONG_LONG_NUMERIC_LIMITS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  There is no specialization for <code class="computeroutput"><span class="identifier">numeric_limits</span><span class="special"><</span><span class="keyword">long</span>
+                  <span class="keyword">long</span><span class="special">></span></code>
+                  and <code class="computeroutput"><span class="identifier">numeric_limits</span><span class="special"><</span><span class="keyword">unsigned</span>
+                  <span class="keyword">long</span> <span class="keyword">long</span><span class="special">></span></code>. <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">limits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>
+                  will then add these specializations as a standard library "fix"
+                  only if the compiler supports the <code class="computeroutput"><span class="keyword">long</span>
+                  <span class="keyword">long</span></code> datatype.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not support the specialization of individual
+                  member functions of template classes.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_MEMBER_TEMPLATE_KEYWORD</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  If the compiler supports member templates, but not the template
+                  keyword when accessing member template classes.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_MEMBER_TEMPLATE_FRIENDS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  Member template friend syntax (<code class="computeroutput"><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span>
+                  <span class="identifier">P</span><span class="special">></span>
+                  <span class="keyword">friend</span> <span class="keyword">class</span>
+                  <span class="identifier">frd</span><span class="special">;</span></code>)
+                  described in the C++ Standard, 14.5.3, not supported.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_MEMBER_TEMPLATES</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  Member template functions not fully supported.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_MS_INT64_NUMERIC_LIMITS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  There is no specialization for <code class="computeroutput"><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">__int64</span><span class="special">></span></code> and <code class="computeroutput"><span class="identifier">numeric_limits</span><span class="special"><</span><span class="keyword">unsigned</span>
+                  <span class="identifier">__int64</span><span class="special">></span></code>.
+                  <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">limits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code> will then add these specializations
+                  as a standard library "fix", only if the compiler supports
+                  the <code class="computeroutput"><span class="identifier">__int64</span></code> datatype.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_NESTED_FRIENDSHIP</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler doesn't allow a nested class to access private members
+                  of its containing class. Probably Borland/CodeGear specific.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_OPERATORS_IN_NAMESPACE</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler requires inherited operator friend functions to be defined
+                  at namespace scope, then using'ed to boost. Probably GCC specific.
+                  See <boost/operators.hpp> for example.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not correctly handle partial specializations
+                  which depend upon default arguments in the primary template.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_POINTER_TO_MEMBER_CONST</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not correctly handle pointers to const member
+                  functions, preventing use of these in overloaded function templates.
+                  See <boost/functional.hpp> for example.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  Pointers to members don't work when used as template parameters.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_PRIVATE_IN_AGGREGATE</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler misreads 8.5.1, treating classes as non-aggregate
+                  if they contain private or protected member functions.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_RTTI</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler may (or may not) have the typeid operator, but RTTI
+                  on the dynamic type of an object is not supported.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_SFINAE</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not support the "Substitution Failure Is
+                  Not An Error" meta-programming idiom.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_SFINAE_EXPR</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not support usage of SFINAE with arbitrary expressions.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_STD_ALLOCATOR</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The C++ standard library does not provide a standards conforming
+                  <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">allocator</span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_STD_DISTANCE</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The platform does not have a conforming version of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">distance</span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_STD_ITERATOR</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The C++ implementation fails to provide the <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">iterator</span></code>
+                  class.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_STD_ITERATOR_TRAITS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not provide a standard compliant implementation
+                  of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">iterator_traits</span></code>. Note that the
+                  compiler may still have a non-standard implementation.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_STD_LOCALE</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library lacks <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">locale</span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_STD_MESSAGES</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library lacks a conforming <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">messages</span></code>
+                  facet.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_STD_MIN_MAX</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The C++ standard library does not provide the <code class="computeroutput"><span class="identifier">min</span><span class="special">()</span></code> and <code class="computeroutput"><span class="identifier">max</span><span class="special">()</span></code> template functions that should
+                  be in <code class="computeroutput"><span class="special"><</span><span class="identifier">algorithm</span><span class="special">></span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  Defined if the standard library's output iterators are not assignable.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_STD_TYPEINFO</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The <typeinfo> header declares <code class="computeroutput"><span class="identifier">type_info</span></code>
+                  in the global namespace instead of namespace std.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_STD_USE_FACET</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library lacks a conforming <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">use_facet</span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_STD_WSTREAMBUF</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library's implementation of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_streambuf</span><span class="special"><</span><span class="keyword">wchar_t</span><span class="special">></span></code> is either missing, incomplete,
+                  or buggy.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_STD_WSTRING</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library lacks <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">wstring</span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_STDC_NAMESPACE</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler, Platform
+                </p>
+              </td>
+<td>
+                <p>
+                  The contents of C++ standard headers for C library functions (the
+                  <code class="computeroutput"><span class="special"><</span><span class="identifier">c</span><span class="special">...></span></code> headers) have not been placed
+                  in namespace std. This test is difficult - some libraries "fake"
+                  the std C functions by adding using declarations to import them
+                  into namespace std, unfortunately they don't necessarily catch
+                  all of them...
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_STRINGSTREAM</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The C++ implementation does not provide the <code class="computeroutput"><span class="special"><</span><span class="identifier">sstream</span><span class="special">></span></code>
+                  header.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_SWPRINTF</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Platform
+                </p>
+              </td>
+<td>
+                <p>
+                  The platform does not have a conforming version of <code class="computeroutput"><span class="identifier">swprintf</span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  Class template partial specialization (14.5.4 [temp.class.spec])
+                  not supported.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_TEMPLATED_IOSTREAMS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library does not provide templated iostream classes.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library does not provide templated iterator constructors
+                  for its containers.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_TEMPLATE_TEMPLATES</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not support template template parameters.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_TYPEID</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not support the typeid operator at all.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_TYPENAME_WITH_CTOR</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  The typename keyword cannot be used when creating a temporary of
+                  a Dependent type.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_UNREACHABLE_RETURN_DETECTION</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  If a return is unreachable, then no return statement should be
+                  required, however some compilers insist on it, while other issue
+                  a bunch of warnings if it is in fact present.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler will not accept a using declaration that brings a
+                  function from a typename used as a base class into a derived class
+                  if functions of the same name are present in the derived class.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_USING_TEMPLATE</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler will not accept a using declaration that imports a
+                  template class or function from another namespace. Originally a
+                  Borland specific problem with imports to/from the global namespace,
+                  extended to MSVC6 which has a specific issue with importing template
+                  classes (but not functions).
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_VOID_RETURNS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not allow a void function to return the result
+                  of calling another void function.
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">void</span> <span class="identifier">f</span><span class="special">()</span> <span class="special">{}</span>
+<span class="keyword">void</span> <span class="identifier">g</span><span class="special">()</span> <span class="special">{</span> <span class="keyword">return</span> <span class="identifier">f</span><span class="special">();</span> <span class="special">}</span>
+</pre>
+<p>
+                </p>
+              </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.boost_macro_reference.macros_that_describe_optional_features"></a><a name="config_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>
+</h3></div></div></div>
+<p>
+        The following macros describe features that are not required by the C++ standard.
+        The macro is only defined if the feature is present.
+      </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                <p>
+                  Macro
+                </p>
+              </th>
+<th>
+                <p>
+                  Section
+                </p>
+              </th>
+<th>
+                <p>
+                  Description
+                </p>
+              </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_BETHREADS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Platform
+                </p>
+              </td>
+<td>
+                <p>
+                  The platform supports BeOS style threads.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_CLOCK_GETTIME</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Platform
+                </p>
+              </td>
+<td>
+                <p>
+                  The platform has the POSIX API <code class="computeroutput"><span class="identifier">clock_gettime</span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_DIRENT_H</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Platform
+                </p>
+              </td>
+<td>
+                <p>
+                  The platform has the POSIX header <code class="computeroutput"><span class="special"><</span><span class="identifier">dirent</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_EXPM1</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Platform
+                </p>
+              </td>
+<td>
+                <p>
+                  The platform has the functions <code class="computeroutput"><span class="identifier">expm1</span></code>,
+                  <code class="computeroutput"><span class="identifier">expm1f</span></code> and <code class="computeroutput"><span class="identifier">expm1l</span></code> in <code class="computeroutput"><span class="special"><</span><span class="identifier">math</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code>
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_FTIME</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Platform
+                </p>
+              </td>
+<td>
+                <p>
+                  The platform has the Win32 API type FTIME.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_GETSYSTEMTIMEASFILETIME</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Platform
+                </p>
+              </td>
+<td>
+                <p>
+                  The platform has the Win32 API GetSystemTimeAsFileTime.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_GETTIMEOFDAY</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Platform
+                </p>
+              </td>
+<td>
+                <p>
+                  The platform has the POSIX API <code class="computeroutput"><span class="identifier">gettimeofday</span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_HASH</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The C++ implementation provides the (SGI) hash_set and hash_map
+                  classes. When defined, <code class="computeroutput"><span class="identifier">BOOST_HASH_SET_HEADER</span></code>
+                  and <code class="computeroutput"><span class="identifier">BOOST_HASH_LIST_HEADER</span></code>
+                  will contain the names of the header needed to access hash_set
+                  and hash_map; <code class="computeroutput"><span class="identifier">BOOST_STD_EXTENSION_NAMESPACE</span></code>
+                  will provide the namespace in which the two class templates reside.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_LOG1P</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Platform
+                </p>
+              </td>
+<td>
+                <p>
+                  The platform has the functions <code class="computeroutput"><span class="identifier">log1p</span></code>,
+                  <code class="computeroutput"><span class="identifier">log1pf</span></code> and <code class="computeroutput"><span class="identifier">log1pl</span></code> in <code class="computeroutput"><span class="special"><</span><span class="identifier">math</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_MACRO_USE_FACET</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library lacks a conforming <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">use_facet</span></code>,
+                  but has a macro <code class="computeroutput"><span class="identifier">_USE</span><span class="special">(</span><span class="identifier">loc</span><span class="special">,</span> <span class="identifier">Type</span><span class="special">)</span></code> that does the job. This is primarily
+                  for the Dinkumware std lib.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_MS_INT64</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler supports the <code class="computeroutput"><span class="identifier">__int64</span></code>
+                  data type.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_NANOSLEEP</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Platform
+                </p>
+              </td>
+<td>
+                <p>
+                  The platform has the POSIX API nanosleep.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_NL_TYPES_H</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Platform
+                </p>
+              </td>
+<td>
+                <p>
+                  The platform has an <code class="computeroutput"><span class="special"><</span><span class="identifier">nl_types</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_NRVO</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  Indicated that the compiler supports the named return value optimization
+                  (NRVO). Used to select the most efficient implementation for some
+                  function. See <boost/operators.hpp> for example.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_PARTIAL_STD_ALLOCATOR</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard Library
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library has a partially conforming <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">allocator</span></code>
+                  class, but without any of the member templates.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_PTHREAD_DELAY_NP</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Platform
+                </p>
+              </td>
+<td>
+                <p>
+                  The platform has the POSIX API <code class="computeroutput"><span class="identifier">pthread_delay_np</span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Platform
+                </p>
+              </td>
+<td>
+                <p>
+                  The platform has the POSIX API <code class="computeroutput"><span class="identifier">pthread_mutexattr_settype</span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_PTHREAD_YIELD</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Platform
+                </p>
+              </td>
+<td>
+                <p>
+                  The platform has the POSIX API <code class="computeroutput"><span class="identifier">pthread_yield</span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_PTHREADS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Platform
+                </p>
+              </td>
+<td>
+                <p>
+                  The platform support POSIX style threads.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_SCHED_YIELD</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Platform
+                </p>
+              </td>
+<td>
+                <p>
+                  The platform has the POSIX API <code class="computeroutput"><span class="identifier">sched_yield</span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_SGI_TYPE_TRAITS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler, Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler has native support for SGI style type traits.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_STDINT_H</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Platform
+                </p>
+              </td>
+<td>
+                <p>
+                  The platform has a <code class="computeroutput"><span class="special"><</span><span class="identifier">stdint</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code>
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_SLIST</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The C++ implementation provides the (SGI) slist class. When defined,
+                  <code class="computeroutput"><span class="identifier">BOOST_SLIST_HEADER</span></code>
+                  will contain the name of the header needed to access <code class="computeroutput"><span class="identifier">slist</span></code> and <code class="computeroutput"><span class="identifier">BOOST_STD_EXTENSION_NAMESPACE</span></code>
+                  will provide the namespace in which <code class="computeroutput"><span class="identifier">slist</span></code>
+                  resides.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_STLP_USE_FACET</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library lacks a conforming <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">use_facet</span></code>,
+                  but has a workaround class-version that does the job. This is primarily
+                  for the STLport std lib.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_ARRAY</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The library has a TR1 conforming version of <code class="computeroutput"><span class="special"><</span><span class="identifier">array</span><span class="special">></span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_COMPLEX_OVERLOADS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The library has a version of <code class="computeroutput"><span class="special"><</span><span class="identifier">complex</span><span class="special">></span></code>
+                  that supports passing scalars to the complex number algorithms.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The library has a version of <code class="computeroutput"><span class="special"><</span><span class="identifier">complex</span><span class="special">></span></code>
+                  that includes the new inverse trig functions from TR1.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_REFERENCE_WRAPPER</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The library has TR1 conforming reference wrappers in <code class="computeroutput"><span class="special"><</span><span class="identifier">functional</span><span class="special">></span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_RESULT_OF</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The library has a TR1 conforming result_of template in <code class="computeroutput"><span class="special"><</span><span class="identifier">functional</span><span class="special">></span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_MEM_FN</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The library has a TR1 conforming mem_fn function template in <code class="computeroutput"><span class="special"><</span><span class="identifier">functional</span><span class="special">></span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_BIND</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The library has a TR1 conforming bind function template in <code class="computeroutput"><span class="special"><</span><span class="identifier">functional</span><span class="special">></span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_FUNCTION</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The library has a TR1 conforming function class template in <code class="computeroutput"><span class="special"><</span><span class="identifier">functional</span><span class="special">></span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_HASH</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The library has a TR1 conforming hash function template in <code class="computeroutput"><span class="special"><</span><span class="identifier">functional</span><span class="special">></span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_SHARED_PTR</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The library has a TR1 conforming <code class="computeroutput"><span class="identifier">shared_ptr</span></code>
+                  class template in <code class="computeroutput"><span class="special"><</span><span class="identifier">memory</span><span class="special">></span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_RANDOM</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The library has a TR1 conforming version of <code class="computeroutput"><span class="special"><</span><span class="identifier">random</span><span class="special">></span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_REGEX</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The library has a TR1 conforming version of <code class="computeroutput"><span class="special"><</span><span class="identifier">regex</span><span class="special">></span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_TUPLE</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The library has a TR1 conforming version of <code class="computeroutput"><span class="special"><</span><span class="identifier">tuple</span><span class="special">></span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_TYPE_TRAITS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The library has a TR1 conforming version of <code class="computeroutput"><span class="special"><</span><span class="identifier">type_traits</span><span class="special">></span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_UTILITY</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The library has the TR1 additions to <code class="computeroutput"><span class="special"><</span><span class="identifier">utility</span><span class="special">></span></code>
+                  (tuple interface to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span></code>).
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_UNORDERED_MAP</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The library has a TR1 conforming version of <code class="computeroutput"><span class="special"><</span><span class="identifier">unordered_map</span><span class="special">></span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_UNORDERED_SET</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The library has a TR1 conforming version of <code class="computeroutput"><span class="special"><</span><span class="identifier">unordered_set</span><span class="special">></span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  Implies all the other <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_</span><span class="special">*</span></code> macros should be set.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_THREADS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Platform, Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  Defined if the compiler, in its current translation mode, supports
+                  multiple threads of execution.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_TWO_ARG_USE_FACET</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library lacks a conforming std::use_facet, but has
+                  a two argument version that does the job. This is primarily for
+                  the Rogue Wave std lib.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_UNISTD_H</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Platform
+                </p>
+              </td>
+<td>
+                <p>
+                  The Platform provides <code class="computeroutput"><span class="special"><</span><span class="identifier">unistd</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_WINTHREADS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Platform
+                </p>
+              </td>
+<td>
+                <p>
+                  The platform supports MS Windows style threads.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_MSVC_STD_ITERATOR</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Standard library
+                </p>
+              </td>
+<td>
+                <p>
+                  Microsoft's broken version of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">iterator</span></code>
+                  is being used. This implies that <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">iterator</span></code>
+                  takes no more than two template parameters.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_MSVC6_MEMBER_TEMPLATES</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Compiler
+                </p>
+              </td>
+<td>
+                <p>
+                  Microsoft Visual C++ 6.0 has enough member template idiosyncrasies
+                  (being polite) that <code class="computeroutput"><span class="identifier">BOOST_NO_MEMBER_TEMPLATES</span></code>
+                  is defined for this compiler. <code class="computeroutput"><span class="identifier">BOOST_MSVC6_MEMBER_TEMPLATES</span></code>
+                  is defined to allow compiler specific workarounds. This macro gets
+                  defined automatically if <code class="computeroutput"><span class="identifier">BOOST_NO_MEMBER_TEMPLATES</span></code>
+                  is not defined - in other words this is treated as a strict subset
+                  of the features required by the standard.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_STDINT_H</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Platform
+                </p>
+              </td>
+<td>
+                <p>
+                  There are no 1998 C++ Standard headers <code class="computeroutput"><span class="special"><</span><span class="identifier">stdint</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code>
+                  or <code class="computeroutput"><span class="special"><</span><span class="identifier">cstdint</span><span class="special">></span></code>, although the 1999 C Standard
+                  does include <code class="computeroutput"><span class="special"><</span><span class="identifier">stdint</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code>.
+                  If <code class="computeroutput"><span class="special"><</span><span class="identifier">stdint</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code> is present, <code class="computeroutput"><span class="special"><</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">></span></code>
+                  can make good use of it, so a flag is supplied (signalling presence;
+                  thus the default is not present, conforming to the current C++
+                  standard).
+                </p>
+              </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.boost_macro_reference.macros_that_describe_possible_c___future_features"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_possible_c___future_features" title="Macros that describe possible C++ future features">Macros
+      that describe possible C++ future features</a>
+</h3></div></div></div>
+<p>
+        The following macros describe features that may be included in some future
+        ISO C++ standard, but have not yet been approved for inclusion in the language.
+      </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                <p>
+                  Macro
+                </p>
+              </th>
+<th>
+                <p>
+                  Description
+                </p>
+              </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_CONCEPTS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler supports concepts.
+                </p>
+              </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.boost_macro_reference.macros_that_describe_c__11_features_not_supported"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_c__11_features_not_supported" title="Macros that describe C++11 features not supported">Macros
+      that describe C++11 features not supported</a>
+</h3></div></div></div>
+<p>
+        The following macros describe features in the 2011 ISO C++ standard, formerly
+        known as C++0x, that are not yet supported by a particular compiler or library.
+      </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                <p>
+                  Macro
+                </p>
+              </th>
+<th>
+                <p>
+                  Description
+                </p>
+              </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_ALLOCATOR</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library does not provide a C++11 version of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">allocator</span></code> in <memory>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_ATOMIC_SP</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library <memory> does not support atomic smart
+                  pointer operations.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_ARRAY</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library does not provide header <array>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_CHRONO</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library does not provide header <chrono>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_CODECVT</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library does not provide header <codecvt>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_CONDITION_VARIABLE</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library does not provide header <condition_variable>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_FORWARD_LIST</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library does not provide header <forward_list>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_FUNCTIONAL</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library does not provide a C++11 compatible version
+                  of <functional>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_FUTURE</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library does not provide header <future>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_INITIALIZER_LIST</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library does not provide header <initializer_list>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_MUTEX</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library does not provide header <mutex>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_RANDOM</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library does not provide header <random>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_RATIO</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library does not provide header <ratio>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_REGEX</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library does not provide header <regex>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_SYSTEM_ERROR</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library does not provide header <system_error>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_THREAD</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library does not provide header <thread>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_TUPLE</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library does not provide header <tuple>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_TYPEINDEX</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library does not provide header <typeindex>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_TYPE_TRAITS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library does not provide header <type_traits>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_UNORDERED_MAP</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library does not provide header <unordered_map>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_UNORDERED_SET</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library does not provide header <unordered_set>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_SMART_PTR</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library header <memory> has no shared_ptr and
+                  unique_ptr.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_AUTO_DECLARATIONS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not support type deduction for variables declared
+                  with the <code class="computeroutput"><span class="keyword">auto</span></code> keyword
+                  (<code class="computeroutput"><span class="keyword">auto</span> <span class="identifier">var</span>
+                  <span class="special">=</span> <span class="special">...;</span></code>).
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not support type deduction for multiple variables
+                  declared with the <code class="computeroutput"><span class="keyword">auto</span></code>
+                  keyword (<code class="computeroutput"><span class="keyword">auto</span> <span class="identifier">var</span>
+                  <span class="special">=</span> <span class="special">...,</span>
+                  <span class="special">*</span><span class="identifier">ptr</span>
+                  <span class="special">=</span> <span class="special">...;</span></code>).
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_CHAR16_T</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not support type <code class="computeroutput"><span class="identifier">char16_t</span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_CHAR32_T</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not support type <code class="computeroutput"><span class="identifier">char32_t</span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_TEMPLATE_ALIASES</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not support template aliases.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_CONSTEXPR</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not support <code class="computeroutput"><span class="identifier">constexpr</span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_DECLTYPE</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not support <code class="computeroutput"><span class="identifier">decltype</span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_DECLTYPE_N3276</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not support the extension to <code class="computeroutput"><span class="identifier">decltype</span></code>
+                  described in N3276,
+                  accepted in Madrid, March 2011.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_DEFAULTED_FUNCTIONS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not support defaulted (<code class="computeroutput"><span class="special">=</span>
+                  <span class="keyword">default</span></code>) functions.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_DELETED_FUNCTIONS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not support deleted (<code class="computeroutput"><span class="special">=</span>
+                  <span class="keyword">delete</span></code>) functions.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not support explicit conversion operators (<code class="computeroutput"><span class="keyword">explicit</span> <span class="keyword">operator</span>
+                  <span class="identifier">T</span><span class="special">()</span></code>).
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_EXTERN_TEMPLATE</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not support explicit instantiation forward declarations
+                  for templates (<code class="computeroutput"><span class="keyword">extern</span> <span class="keyword">template</span> <span class="special">...</span></code>).
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not support default template arguments for function
+                  templates.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_LAMBDAS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not support Lambdas.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not allow to pass local classes as template parameters
+                  (this macro intentionally does not control passing of unnamed types
+                  as template parameters, see also N2657).
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_LONG_LONG</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not support <code class="computeroutput"><span class="keyword">long</span>
+                  <span class="keyword">long</span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_NOEXCEPT</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not support <code class="computeroutput"><span class="identifier">noexcept</span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_NULLPTR</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not support <code class="computeroutput"><span class="identifier">nullptr</span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_RANGE_BASED_FOR</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not support range-based for statements.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_RAW_LITERALS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not support raw string literals.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_RVALUE_REFERENCES</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not support r-value references.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_SCOPED_ENUMS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not support scoped enumerations (<code class="computeroutput"><span class="keyword">enum</span> <span class="keyword">class</span></code>).
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_STATIC_ASSERT</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not support <code class="computeroutput"><span class="identifier">static_assert</span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_STD_UNORDERD</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The standard library does not support <unordered_map> and
+                  <unordered_set>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_UNICODE_LITERALS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not support Unicode (<code class="computeroutput"><span class="identifier">u8</span></code>,
+                  <code class="computeroutput"><span class="identifier">u</span></code>, <code class="computeroutput"><span class="identifier">U</span></code>) literals.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not support the <a href="http://en.wikipedia.org/wiki/C%2B%2B0x#Uniform_initialization" target="_top">C++11
+                  Unified Initialization Syntax</a>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_VARIADIC_TEMPLATES</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not support variadic templates.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_VARIADIC_MACROS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler does not support variadic macros.
+                </p>
+              </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.boost_macro_reference.macros_that_allow_use_of_c__11_features_with_c__03_compilers"></a><a name="config_11_for_03"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_allow_use_of_c__11_features_with_c__03_compilers" title="Macros that allow use of C++11 features with C++03 compilers">Macros
+      that allow use of C++11 features with C++03 compilers</a>
+</h3></div></div></div>
+<p>
+        The following macros allow use of C++11 features even with compilers that
+        do not yet provide compliant C++11 support.
+      </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                <p>
+                  Macro
+                </p>
+              </th>
+<th>
+                <p>
+                  Description
+                </p>
+              </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_CONSTEXPR</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Some compilers don't support the use of <code class="computeroutput"><span class="identifier">constexpr</span></code>.
+                  This macro expands to nothing on those compilers, and <code class="computeroutput"><span class="identifier">constexpr</span></code> elsewhere. For example,
+                  when defining a constexpr function or constructor replace:
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">constexpr</span> <span class="identifier">tuple</span><span class="special">();</span>
+</pre>
+<p>
+                  with:
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">BOOST_CONSTEXPR</span> <span class="identifier">tuple</span><span class="special">();</span>
+</pre>
+<p>
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_CONSTEXPR_OR_CONST</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Some compilers don't support the use of <code class="computeroutput"><span class="identifier">constexpr</span></code>.
+                  This macro expands to <code class="computeroutput"><span class="keyword">const</span></code>
+                  on those compilers, and <code class="computeroutput"><span class="identifier">constexpr</span></code>
+                  elsewhere. For example, when defining const expr variables replace:
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">static</span> <span class="identifier">constexpr</span> <span class="identifier">UIntType</span> <span class="identifier">xor_mask</span> <span class="special">=</span> <span class="identifier">a</span><span class="special">;</span>
+</pre>
+<p>
+                  with:
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">static</span> <span class="identifier">BOOST_CONSTEXPR_OR_CONST</span> <span class="identifier">UIntType</span> <span class="identifier">xor_mask</span> <span class="special">=</span> <span class="identifier">a</span><span class="special">;</span>
+</pre>
+<p>
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_STATIC_CONSTEXPR</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  This is a shortcut for <code class="computeroutput"><span class="keyword">static</span>
+                  <span class="identifier">BOOST_CONSTEXPR_OR_CONST</span></code>.
+                  For example, when defining const expr variables replace:
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">static</span> <span class="identifier">constexpr</span> <span class="identifier">UIntType</span> <span class="identifier">xor_mask</span> <span class="special">=</span> <span class="identifier">a</span><span class="special">;</span>
+</pre>
+<p>
+                  with:
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">BOOST_STATIC_CONSTEXPR</span> <span class="identifier">UIntType</span> <span class="identifier">xor_mask</span> <span class="special">=</span> <span class="identifier">a</span><span class="special">;</span>
+</pre>
+<p>
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">BOOST_NOEXCEPT</span>
+<span class="identifier">BOOST_NOEXCEPT_IF</span><span class="special">(</span><span class="identifier">Predicate</span><span class="special">)</span>
+<span class="identifier">BOOST_NOEXCEPT_EXPR</span><span class="special">(</span><span class="identifier">Expression</span><span class="special">)</span>
+</pre>
+<p>
+                </p>
+              </td>
+<td>
+                <p>
+                  If <code class="computeroutput"><span class="identifier">BOOST_NO_NOEXCEPT</span></code>
+                  is defined (i.e. C++03 compliant compilers) these macros are defined
+                  as:
+                </p>
+                <div class="blockquote"><blockquote class="blockquote">
+<p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_NOEXCEPT</span>
+<span class="preprocessor">#define</span> <span class="identifier">BOOST_NOEXCEPT_IF</span><span class="special">(</span><span class="identifier">Predicate</span><span class="special">)</span>
+<span class="preprocessor">#define</span> <span class="identifier">BOOST_NOEXCEPT_EXPR</span><span class="special">(</span><span class="identifier">Expression</span><span class="special">)</span> <span class="keyword">false</span>
+</pre>
+<p>
+                  </p>
+</blockquote></div>
+                <p>
+                  If <code class="computeroutput"><span class="identifier">BOOST_NO_NOEXCEPT</span></code>
+                  is not defined (i.e. C++11 compliant compilers) they are defined
+                  as:
+                </p>
+                <div class="blockquote"><blockquote class="blockquote">
+<p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_NOEXCEPT</span> <span class="identifier">noexcept</span>
+<span class="preprocessor">#define</span> <span class="identifier">BOOST_NOEXCEPT_IF</span><span class="special">(</span><span class="identifier">Predicate</span><span class="special">)</span> <span class="identifier">noexcept</span><span class="special">((</span><span class="identifier">Predicate</span><span class="special">))</span>
+<span class="preprocessor">#define</span> <span class="identifier">BOOST_NOEXCEPT_EXPR</span><span class="special">(</span><span class="identifier">Expression</span><span class="special">)</span> <span class="identifier">noexcept</span><span class="special">((</span><span class="identifier">Expression</span><span class="special">))</span>
+</pre>
+<p>
+                  </p>
+</blockquote></div>
+              </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.boost_macro_reference.boost_helper_macros"></a><a name="config_helpers"></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>
+</h3></div></div></div>
+<p>
+        The following macros are either simple helpers, or macros that provide workarounds
+        for compiler/standard library defects.
+      </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                <p>
+                  Macro
+                </p>
+              </th>
+<th>
+                <p>
+                  Description
+                </p>
+              </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_WORKAROUND</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  This macro is used where a compiler specific workaround is required
+                  that is not otherwise described by one of the other Boost.Config
+                  macros. To use the macro you must first
+</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"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">detail</span><span class="special">/</span><span class="identifier">workaround</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+                  usage is then:
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="preprocessor">#if</span> <span class="identifier">BOOST_WORKAROUND</span><span class="special">(</span><span class="identifier">MACRONAME</span><span class="special">,</span> <span class="identifier">CONDITION</span><span class="special">)</span>
+   <span class="comment">// workaround code goes here...</span>
+<span class="preprocessor">#else</span>
+   <span class="comment">// Standard conforming code goes here...</span>
+<span class="preprocessor">#endif</span>
+</pre>
+<p>
+                  where <code class="computeroutput"><span class="identifier">MACRONAME</span></code>
+                  is a macro that usually describes the version number to be tested
+                  against, and <code class="computeroutput"><span class="identifier">CONDITION</span></code>
+                  is a comparison operator followed by a value. For example <code class="computeroutput"><span class="identifier">BOOST_WORKAROUND</span><span class="special">(</span><span class="identifier">BOOST_INTEL</span><span class="special">,</span>
+                  <span class="special"><=</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>
+                  The macro can also be used with <code class="computeroutput"><span class="identifier">BOOST_TESTED_AT</span></code>
+                  if all current compiler versions exhibit the issue, but the issue
+                  is expected to be fixed at some later point.
+                </p>
+                <p>
+                  For example <code class="computeroutput"><span class="identifier">BOOST_WORKAROUND</span><span class="special">(</span><span class="identifier">__BORLANDC__</span><span class="special">,</span> <span class="identifier">BOOST_TESTED_AT</span><span class="special">(</span><span class="number">0x590</span><span class="special">))</span></code> would normally evaluate to <code class="computeroutput"><span class="number">1</span></code> for all values of <code class="computeroutput"><span class="identifier">__BORLANDC__</span></code> <span class="emphasis"><em>unless</em></span>
+                  the macro <code class="computeroutput"><span class="identifier">BOOST_DETECT_OUTDATED_WORKAROUNDS</span></code>
+                  is defined, in which case evaluates to <code class="computeroutput"><span class="special">(</span><span class="identifier">__BORLANDC__</span> <span class="special"><=</span>
+                  <span class="number">0x590</span><span class="special">)</span></code>.
+                </p>
+                <p>
+                  <span class="bold"><strong>Note</strong></span>: the ultimate source of documentation
+                  for this macro is in boost/detail/workaround.hpp.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_PREVENT_MACRO_SUBSTITUTION</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Sometimes you have a function name with the same name as a C macro,
+                  for example "min" and "max" member functions,
+                  in which case one can prevent the function being expanded as a
+                  macro using:
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">someclass</span><span class="special">.</span><span class="identifier">min</span> <span class="identifier">BOOST_PREVENT_MACRO_SUBSTITUTION</span><span class="special">(</span><span class="identifier">arg1</span><span class="special">,</span> <span class="identifier">arg2</span><span class="special">);</span>
+</pre>
+<p>
+                  The following also works in most, but not all, contexts:
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="special">(</span><span class="identifier">someclass</span><span class="special">.</span><span class="identifier">max</span><span class="special">)(</span><span class="identifier">arg1</span><span class="special">,</span> <span class="identifier">arg2</span><span class="special">);</span>
+</pre>
+<p>
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_DEDUCED_TYPENAME</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Some compilers don't support the use of typename for dependent
+                  types in deduced contexts. This macro expands to nothing on those
+                  compilers, and typename elsewhere. For example, replace: <code class="computeroutput"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">void</span>
+                  <span class="identifier">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"><</span><span class="keyword">class</span>
+                  <span class="identifier">T</span><span class="special">></span>
+                  <span class="keyword">void</span> <span class="identifier">f</span><span class="special">(</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">BOOST_DEDUCED_TYPENAME</span>
+                  <span class="identifier">T</span><span class="special">::</span><span class="identifier">type</span><span class="special">);</span></code>
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HASH_MAP_HEADER</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The header to include to get the SGI <code class="computeroutput"><span class="identifier">hash_map</span></code>
+                  class. This macro is only available if <code class="computeroutput"><span class="identifier">BOOST_HAS_HASH</span></code>
+                  is defined.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HASH_SET_HEADER</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The header to include to get the SGI <code class="computeroutput"><span class="identifier">hash_set</span></code>
+                  class. This macro is only available if <code class="computeroutput"><span class="identifier">BOOST_HAS_HASH</span></code>
+                  is defined.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_SLIST_HEADER</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The header to include to get the SGI <code class="computeroutput"><span class="identifier">slist</span></code>
+                  class. This macro is only available if <code class="computeroutput"><span class="identifier">BOOST_HAS_SLIST</span></code>
+                  is defined.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_STD_EXTENSION_NAMESPACE</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The namespace used for std library extensions (hashtable classes
+                  etc).
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_STATIC_CONSTANT</span><span class="special">(</span><span class="identifier">Type</span><span class="special">,</span> <span class="identifier">assignment</span><span class="special">)</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  On compilers which don't allow in-class initialization of static
+                  integral constant members, we must use enums as a workaround if
+                  we want the constants to be available at compile-time. This macro
+                  gives us a convenient way to declare such constants. For example
+                  instead of:
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">struct</span> <span class="identifier">foo</span><span class="special">{</span>
+   <span class="keyword">static</span> <span class="keyword">const</span> <span class="keyword">int</span> <span class="identifier">value</span> <span class="special">=</span> <span class="number">2</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+                  use:
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">struct</span> <span class="identifier">foo</span><span class="special">{</span>
+   <span class="identifier">BOOST_STATIC_CONSTANT</span><span class="special">(</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">value</span> <span class="special">=</span> <span class="number">2</span><span class="special">);</span>
+<span class="special">};</span>
+</pre>
+<p>
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_UNREACHABLE_RETURN</span><span class="special">(</span><span class="identifier">result</span><span class="special">)</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Normally evaluates to nothing, but evaluates to return x; if the
+                  compiler requires a return, even when it can never be reached.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_EXPLICIT_TEMPLATE_TYPE</span><span class="special">(</span><span class="identifier">t</span><span class="special">)</span></code> <code class="computeroutput"><span class="identifier">BOOST_EXPLICIT_TEMPLATE_NON_TYPE</span><span class="special">(</span><span class="identifier">t</span><span class="special">,</span><span class="identifier">v</span><span class="special">)</span></code> <code class="computeroutput"><span class="identifier">BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE</span><span class="special">(</span><span class="identifier">t</span><span class="special">)</span></code> <code class="computeroutput"><span class="identifier">BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE</span><span class="special">(</span><span class="identifier">t</span><span class="special">,</span><span class="identifier">v</span><span class="special">)</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Some compilers silently "fold" different function template
+                  instantiations if some of the template parameters don't appear
+                  in the function parameter list. For instance:
+</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"><</span><span class="identifier">iostream</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">ostream</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">typeinfo</span><span class="special">></span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">int</span> <span class="identifier">n</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">f</span><span class="special">()</span> <span class="special">{</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">n</span> <span class="special"><<</span> <span class="char">' '</span><span class="special">;</span> <span class="special">}</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">g</span><span class="special">()</span> <span class="special">{</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="keyword">typeid</span><span class="special">(</span><span class="identifier">T</span><span class="special">).</span><span class="identifier">name</span><span class="special">()</span> <span class="special"><<</span> <span class="char">' '</span><span class="special">;</span> <span class="special">}</span>
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span> <span class="special">{</span>
+  <span class="identifier">f</span><span class="special"><</span><span class="number">1</span><span class="special">>();</span>
+  <span class="identifier">f</span><span class="special"><</span><span class="number">2</span><span class="special">>();</span>
+
+  <span class="identifier">g</span><span class="special"><</span><span class="keyword">int</span><span class="special">>();</span>
+  <span class="identifier">g</span><span class="special"><</span><span class="keyword">double</span><span class="special">>();</span>
+<span class="special">}</span>
+</pre>
+<p>
+                  incorrectly outputs <code class="literal">2 2 double double</code> on VC++
+                  6. These macros, to be used in the function parameter list, fix
+                  the problem without effects on the calling syntax. For instance,
+                  in the case above write:
+</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"><</span><span class="keyword">int</span> <span class="identifier">n</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>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">g</span><span class="special">(</span><span class="identifier">BOOST_EXPLICIT_TEMPLATE_TYPE</span><span class="special">(</span><span class="identifier">T</span><span class="special">))</span> <span class="special">{</span> <span class="special">...</span> <span class="special">}</span>
+</pre>
+<p>
+                  Beware that they can declare (for affected compilers) a dummy defaulted
+                  parameter, so they
+                </p>
+                <p>
+                  <span class="bold"><strong>a)</strong></span> should be always invoked <span class="bold"><strong>at the end</strong></span> of the parameter list
+                </p>
+                <p>
+                  <span class="bold"><strong>b)</strong></span> can't be used if your function
+                  template is multiply declared.
+                </p>
+                <p>
+                  Furthermore, in order to add any needed comma separator, an <code class="computeroutput"><span class="identifier">APPEND_</span><span class="special">*</span></code>
+                  version must be used when the macro invocation appears after a
+                  normal parameter declaration or after the invocation of another
+                  macro of this same group.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_USE_FACET</span><span class="special">(</span><span class="identifier">Type</span><span class="special">,</span> <span class="identifier">loc</span><span class="special">)</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  When the standard library does not have a conforming <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">use_facet</span></code> there are various workarounds
+                  available, but they differ from library to library. This macro
+                  provides a consistent way to access a locale's facets. For example,
+                  replace: <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">use_facet</span><span class="special"><</span><span class="identifier">Type</span><span class="special">>(</span><span class="identifier">loc</span><span class="special">);</span></code>
+                  with: <code class="computeroutput"><span class="identifier">BOOST_USE_FACET</span><span class="special">(</span><span class="identifier">Type</span><span class="special">,</span> <span class="identifier">loc</span><span class="special">);</span></code> Note do not add a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span></code>
+                  prefix to the front of <code class="computeroutput"><span class="identifier">BOOST_USE_FACET</span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_FACET</span><span class="special">(</span><span class="identifier">Type</span><span class="special">,</span> <span class="identifier">loc</span><span class="special">)</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  When the standard library does not have a comforming <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">has_facet</span></code> there are various workarounds
+                  available, but they differ from library to library. This macro
+                  provides a consistent way to check a locale's facets. For example,
+                  replace: <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">has_facet</span><span class="special"><</span><span class="identifier">Type</span><span class="special">>(</span><span class="identifier">loc</span><span class="special">);</span></code>
+                  with: <code class="computeroutput"><span class="identifier">BOOST_HAS_FACET</span><span class="special">(</span><span class="identifier">Type</span><span class="special">,</span> <span class="identifier">loc</span><span class="special">);</span></code> Note do not add a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span></code>
+                  prefix to the front of <code class="computeroutput"><span class="identifier">BOOST_HAS_FACET</span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NESTED_TEMPLATE</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Member templates are supported by some compilers even though they
+                  can't use the <code class="computeroutput"><span class="identifier">A</span><span class="special">::</span><span class="keyword">template</span>
+                  <span class="identifier">member</span><span class="special"><</span><span class="identifier">U</span><span class="special">></span></code>
+                  syntax, as a workaround replace: <code class="computeroutput"><span class="keyword">typedef</span>
+                  <span class="keyword">typename</span> <span class="identifier">A</span><span class="special">::</span><span class="keyword">template</span>
+                  <span class="identifier">rebind</span><span class="special"><</span><span class="identifier">U</span><span class="special">></span>
+                  <span class="identifier">binder</span><span class="special">;</span></code>
+                  with: <code class="computeroutput"><span class="keyword">typedef</span> <span class="keyword">typename</span>
+                  <span class="identifier">A</span><span class="special">::</span><span class="identifier">BOOST_NESTED_TEMPLATE</span> <span class="identifier">rebind</span><span class="special"><</span><span class="identifier">U</span><span class="special">></span> <span class="identifier">binder</span><span class="special">;</span></code>
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_STRINGIZE</span><span class="special">(</span><span class="identifier">X</span><span class="special">)</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Converts the parameter <code class="computeroutput"><span class="identifier">X</span></code>
+                  to a string after macro replacement on <code class="computeroutput"><span class="identifier">X</span></code>
+                  has been performed.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_JOIN</span><span class="special">(</span><span class="identifier">X</span><span class="special">,</span><span class="identifier">Y</span><span class="special">)</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  This piece of macro magic joins the two arguments together, even
+                  when one of the arguments is itself a macro (see 16.3.1 in C++
+                  standard). This is normally used to create a mangled name in combination
+                  with a predefined macro such a __LINE__.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_FORCEINLINE</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  This macro can be used in place of the <code class="computeroutput"><span class="keyword">inline</span></code>
+                  keyword to instruct the compiler that a function should always
+                  be inlined. Overuse of this macro can lead to significant bloat,
+                  while good use can increase performance in certain cases, such
+                  as computation-intensive code built through generative programming
+                  techniques.
+                </p>
+                <p>
+                  Usage example:
+</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"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">BOOST_FORCEINLINE</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">f</span><span class="special">(</span><span class="identifier">T</span><span class="special">&</span> <span class="identifier">t</span><span class="special">)</span>
+<span class="special">{</span>
+    <span class="keyword">return</span> <span class="identifier">t</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+                </p>
+                <p>
+                  Note that use of this macro can lead to cryptic error messages
+                  with some compilers. Consider defining it to <code class="computeroutput"><span class="keyword">inline</span></code>
+                  before including the Boost.Config header in order to be able to
+                  debug errors more easily.
+                </p>
+              </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.boost_macro_reference.boost_informational_macros"></a><a name="config_info_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>
+</h3></div></div></div>
+<p>
+        The following macros describe boost features; these are, generally speaking
+        the only boost macros that should be tested in user code.
+      </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                <p>
+                  Macro
+                </p>
+              </th>
+<th>
+                <p>
+                  Header
+                </p>
+              </th>
+<th>
+                <p>
+                  Description
+                </p>
+              </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_VERSION</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">version</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Describes the boost version number in XYYYZZ format such that:
+                  <code class="computeroutput"><span class="special">(</span><span class="identifier">BOOST_VERSION</span>
+                  <span class="special">%</span> <span class="number">100</span><span class="special">)</span></code> is the sub-minor version, <code class="computeroutput"><span class="special">((</span><span class="identifier">BOOST_VERSION</span>
+                  <span class="special">/</span> <span class="number">100</span><span class="special">)</span> <span class="special">%</span> <span class="number">1000</span><span class="special">)</span></code>
+                  is the minor version, and <code class="computeroutput"><span class="special">(</span><span class="identifier">BOOST_VERSION</span> <span class="special">/</span>
+                  <span class="number">100000</span><span class="special">)</span></code>
+                  is the major version.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_INT64_T</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="special"><</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">></span></code> <code class="computeroutput"><span class="special"><</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">></span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Defined if there are no 64-bit integral types: <code class="computeroutput"><span class="identifier">int64_t</span></code>,
+                  <code class="computeroutput"><span class="identifier">uint64_t</span></code> etc.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_INTEGRAL_INT64_T</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="special"><</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">></span></code> <code class="computeroutput"><span class="special"><</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">></span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Defined if <code class="computeroutput"><span class="identifier">int64_t</span></code>
+                  as defined by <code class="computeroutput"><span class="special"><</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">></span></code>
+                  is not usable in integral constant expressions.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_MSVC</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <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><span class="identifier">hpp</span><span class="special">></span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Defined if the compiler is really Microsoft Visual C++, as opposed
+                  to one of the many other compilers that also define <code class="computeroutput"><span class="identifier">_MSC_VER</span></code>. Has the same value
+                  as _MSC_VER.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_MSVC_FULL_VER</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <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><span class="identifier">hpp</span><span class="special">></span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Defined to a normalised 9 digit version of _MSC_FULL_VER (which
+                  sometimes only has 8 digits), the macro has the form VVMMPPPPP
+                  where VV is the major version number, MM is the minor version number,
+                  and PPPPP is the compiler build number.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_INTEL</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <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><span class="identifier">hpp</span><span class="special">></span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Defined if the compiler is an Intel compiler, takes the same value
+                  as the compiler version macro.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_CLANG</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <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><span class="identifier">hpp</span><span class="special">></span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Defined to 1 if the compiler is the Clang compiler.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_WINDOWS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <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><span class="identifier">hpp</span><span class="special">></span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Defined if the Windows platform API is available.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_DINKUMWARE_STDLIB</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <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><span class="identifier">hpp</span><span class="special">></span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Defined if the dinkumware standard library is in use, takes the
+                  same value as the Dinkumware library version macro <code class="computeroutput"><span class="identifier">_CPPLIB_VER</span></code> if defined, otherwise
+                  1.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_WREGEX</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">regex</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Defined if the regex library does not support wide character regular
+                  expressions.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_COMPILER</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <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><span class="identifier">hpp</span><span class="special">></span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Defined as a string describing the name and version number of the
+                  compiler in use. Mainly for debugging the configuration.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_STDLIB</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <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><span class="identifier">hpp</span><span class="special">></span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Defined as a string describing the name and version number of the
+                  standard library in use. Mainly for debugging the configuration.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_PLATFORM</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <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><span class="identifier">hpp</span><span class="special">></span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Defined as a string describing the name of the platform. Mainly
+                  for debugging the configuration.
+                </p>
+              </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.boost_macro_reference.boost_deprecated_macros"></a><a name="deprecated_macros"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.boost_deprecated_macros" title="Boost Deprecated Macros">Boost
+      Deprecated Macros</a>
+</h3></div></div></div>
+<p>
+        The following have been deprecated; please use the replacements instead.
+        They will be removed in a future version of boost.
+      </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                <p>
+                  Deprecated Macro
+                </p>
+              </th>
+<th>
+                <p>
+                  Replacement
+                </p>
+              </th>
+<th>
+                <p>
+                  When deprecated
+                </p>
+              </th>
+<th>
+                <p>
+                  When removed
+                </p>
+              </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_ARRAY</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_ARRAY</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.50
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_CHRONO</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_CHRONO</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.50
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_CODECVT</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_CODECVT</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.50
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_CONDITION_VARIABLE</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_CONDITION_VARIABLE</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.50
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_FORWARD_LIST</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_FORWARD_LIST</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.50
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_FUTURE</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_FUTURE</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.50
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_INITIALIZER_LIST</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_INITIALIZER_LIST</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.50
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_INITIALIZER_LISTS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_INITIALIZER_LIST</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.50
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_MUTEX</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_MUTEX</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.50
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_RANDOM</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_RANDOM</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.50
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_RATIO</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_RATIO</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.50
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_REGEX</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_REGEX</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.50
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_SYSTEM_ERROR</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_SYSTEM_ERROR</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.50
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_THREAD</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_THREAD</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.50
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_TUPLE</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_TUPLE</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.50
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_TYPE_TRAITS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_TYPE_TRAITS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.50
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_TYPEINDEX</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_TYPEINDEX</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.50
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_UNORDERED_SET</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_UNORDERED_SET</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.50
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_UNORDERED_MAP</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_UNORDERED_MAP</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.50
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_STD_UNORDERED</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_UNORDERED_SET</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.50
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+              </td>
+<td>
+              </td>
+<td>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_AUTO_DECLARATIONS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_AUTO_DECLARATIONS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.51
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_AUTO_MULTIDECLARATIONS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.51
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CHAR16_T</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_CHAR16_T</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.51
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CHAR32_T</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_CHAR32_T</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.51
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_TEMPLATE_ALIASES</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_TEMPLATE_ALIASES</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.51
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CONSTEXPR</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_CONSTEXPR</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.51
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_DECLTYPE</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_DECLTYPE</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.51
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_DECLTYPE_N3276</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_DECLTYPE_N3276</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.51
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_DEFAULTED_FUNCTIONS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_DEFAULTED_FUNCTIONS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.51
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_DELETED_FUNCTIONS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_DELETED_FUNCTIONS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.51
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_EXPLICIT_CONVERSION_OPERATORS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.51
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_EXTERN_TEMPLATE</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_EXTERN_TEMPLATE</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.51
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.51
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_LAMBDAS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_LAMBDAS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.51
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_LOCAL_CLASS_TEMPLATE_PARAMETERS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.51
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_NOEXCEPT</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_NOEXCEPT</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.51
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_NULLPTR</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_NULLPTR</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.51
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_RAW_LITERALS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_RAW_LITERALS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.51
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_RVALUE_REFERENCES</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_RVALUE_REFERENCES</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.51
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_SCOPED_ENUMS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_SCOPED_ENUMS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.51
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_STATIC_ASSERT</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_STATIC_ASSERT</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.51
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_STD_UNORDERD</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_STD_UNORDERD</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.51
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_UNICODE_LITERALS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_UNICODE_LITERALS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.51
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_UNIFIED_INITIALIZATION_SYNTAX</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.51
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_VARIADIC_TEMPLATES</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_VARIADIC_TEMPLATES</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.51
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_VARIADIC_MACROS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_VARIADIC_MACROS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.51
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_NUMERIC_LIMITS_LOWEST</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_NUMERIC_LIMITS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Boost 1.51
+                </p>
+              </td>
+<td>
+              </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code" title="Macros for libraries with separate source code">Macros
+      for libraries with separate source code</a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code.macros_controlling_shared_library_symbol_visibility">Macros
+        controlling shared library symbol visibility</a></span></dt>
+<dt><span class="section"><a href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code.abi_fixing">ABI
+        Fixing</a></span></dt>
+<dt><span class="section"><a href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code.automatic_library_selection">Automatic
+        library selection</a></span></dt>
+</dl></div>
+<p>
+        The following macros and helper headers are of use to authors whose libraries
+        include separate source code, and are intended to address several issues:
+      </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+            Controlling shared library symbol visibility
+          </li>
+<li class="listitem">
+            Fixing the ABI of the compiled library
+          </li>
+<li class="listitem">
+            Selecting which compiled library to link against based upon the compilers
+            settings
+          </li>
+</ul></div>
+<p>
+        See <a href="http://svn.boost.org/trac/boost/wiki/Guidelines/Separate" target="_top">Guidelines
+        for Authors of Boost Libraries Containing Separate Source</a>
+      </p>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code.macros_controlling_shared_library_symbol_visibility"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code.macros_controlling_shared_library_symbol_visibility" title="Macros controlling shared library symbol visibility">Macros
+        controlling shared library symbol visibility</a>
+</h4></div></div></div>
+<p>
+          Some compilers support C++ extensions that control which symbols will be
+          exported from shared libraries such as dynamic shared objects (DSO's) on
+          Unix-like systems or dynamic-link libraries (DLL's) on Windows.
+        </p>
+<p>
+          The Microsoft VC++ compiler has long supplied <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> extensions for this purpose, as do virtually
+          all other compilers targeting the Windows platform.
+        </p>
+<p>
+          Modern versions of the GNU GCC compiler provide the <code class="computeroutput"><span class="identifier">__attribute__</span><span class="special">((</span><span class="identifier">visibility</span><span class="special">(</span><span class="string">"default"</span><span class="special">)))</span></code> extension to indicate that a symbol
+          should be exported. All other symbols may be hidden by using the <code class="computeroutput"><span class="special">-</span><span class="identifier">fvisibility</span><span class="special">-</span><span class="identifier">hidden</span></code>
+          or <code class="computeroutput"><span class="special">-</span><span class="identifier">fvisibility</span><span class="special">-</span><span class="identifier">ms</span><span class="special">-</span><span class="identifier">compat</span></code> compiler switches.
+        </p>
+<p>
+          Boost supplies several macros to make it easier to manage symbol visibility
+          in a way that is portable between compilers and operating systems.
+        </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                  <p>
+                    Macro
+                  </p>
+                </th>
+<th>
+                  <p>
+                    Description
+                  </p>
+                </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">BOOST_SYMBOL_EXPORT</span></code>
+                  </p>
+                </td>
+<td>
+                  <p>
+                    Defines the syntax of a C++ language extension that indicates
+                    a symbol is to be exported from a shared library. If the compiler
+                    has no such extension, the macro is defined with no replacement
+                    text.
+                  </p>
+                </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">BOOST_SYMBOL_IMPORT</span></code>
+                  </p>
+                </td>
+<td>
+                  <p>
+                    Defines the syntax of a C++ language extension that indicates
+                    a symbol is to be imported from a shared library. If the compiler
+                    has no such extension, the macro is defined with no replacement
+                    text.
+                  </p>
+                </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">BOOST_SYMBOL_VISIBLE</span></code>
+                  </p>
+                </td>
+<td>
+                  <p>
+                    Defines the syntax of a C++ language extension that indicates
+                    a symbol is to be globally visible. If the compiler has no such
+                    extension, the macro is defined with no replacement text. Needed
+                    for classes that are not otherwise exported, but are used by
+                    RTTI. Examples include class for objects that will be thrown
+                    as exceptions or used in dynamic_casts, across shared library
+                    boundaries. For example, a header-only exception class might
+                    look like this:
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">class</span> <span class="identifier">BOOST_SYMBOL_VISIBLE</span> <span class="identifier">my_exception</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">runtime_error</span> <span class="special">{</span> <span class="special">...</span> <span class="special">};</span>
+</pre>
+<p>
+                    Without BOOST_SYMBOL_VISIBLE, it would be impossible to catch
+                    my_exception thrown from a shared library compiled by GCC with
+                    the -fvisibility=hidden option.
+                  </p>
+                </td>
+</tr>
+<tr>
+<td>
+                  <p>
+                    <code class="computeroutput"><span class="identifier">BOOST_HAS_DECLSPEC</span></code>
+                  </p>
+                </td>
+<td>
+                  <p>
+                    The compiler has C++ extensions <code class="computeroutput"><span class="identifier">__declspec</span><span class="special">(</span><span class="identifier">dllexport</span><span class="special">)</span></code> and <code class="computeroutput"><span class="identifier">__declspec</span><span class="special">(</span><span class="identifier">dllimport</span><span class="special">)</span></code> to control export/import of
+                    symbols from shared libraries. <span class="emphasis"><em>Deprecated. This macro
+                    is no longer necessary since BOOST_SYMBOL_EXPORT and BOOST_SYMBOL_IMPORT
+                    are now supplied. It is provided to support legacy code.</em></span>
+                  </p>
+                </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+          Typical usage:
+        </p>
+<p>
+          <span class="bold"><strong>boost/foo/config.hpp</strong></span>
+        </p>
+<pre class="programlisting"><span class="special">...</span>
+<span class="preprocessor">#if</span> <span class="identifier">defined</span><span class="special">(</span><span class="identifier">BOOST_ALL_DYN_LINK</span><span class="special">)</span> <span class="special">||</span> <span class="identifier">defined</span><span class="special">(</span><span class="identifier">BOOST_FOO_DYN_LINK</span><span class="special">)</span>
+<span class="preprocessor"># if</span> <span class="identifier">defined</span><span class="special">(</span><span class="identifier">BOOST_FOO_SOURCE</span><span class="special">)</span>
+<span class="preprocessor">#   define</span> <span class="identifier">BOOST_FOO_DECL</span> <span class="identifier">BOOST_SYMBOL_EXPORT</span>
+<span class="preprocessor"># else</span>
+<span class="preprocessor">#   define</span> <span class="identifier">BOOST_FOO_DECL</span> <span class="identifier">BOOST_SYMBOL_IMPORT</span>
+<span class="preprocessor"># endif</span>
+<span class="preprocessor">#else</span>
+<span class="preprocessor"># define</span> <span class="identifier">BOOST_FOO_DECL</span>
+<span class="preprocessor">#endif</span>
+<span class="special">...</span>
+</pre>
+<p>
+          <span class="bold"><strong>boost/foo/foo.hpp</strong></span>
+        </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">foo</span><span class="special">/</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="special">...</span>
+<span class="keyword">class</span> <span class="identifier">BOOST_FOO_DECL</span> <span class="identifier">bar</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">BOOST_FOO_DECL</span> <span class="identifier">f</span><span class="special">();</span>
+<span class="special">...</span>
+</pre>
+<p>
+          <span class="bold"><strong>boost/libs/foo/src/foo.cpp</strong></span>
+        </p>
+<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_FOO_SOURCE</span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">foo</span><span class="special">/</span><span class="identifier">foo</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="special">...</span>
+<span class="keyword">void</span> <span class="identifier">BOOST_FOO_DECL</span> <span class="identifier">f</span><span class="special">()</span>
+<span class="special">{</span>
+  <span class="special">...</span>
+<span class="special">}</span>
+<span class="special">...</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code.abi_fixing"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code.abi_fixing" title="ABI Fixing">ABI
+        Fixing</a>
+</h4></div></div></div>
+<p>
+          When linking against a pre-compiled library it vital that the ABI used
+          by the compiler when building the library <span class="emphasis"><em>matches exactly</em></span>
+          the ABI used by the code using the library. In this case ABI means things
+          like the struct packing arrangement used, the name mangling scheme used,
+          or the size of some types (enum types for example). This is separate from
+          things like threading support, or runtime library variations, which have
+          to be dealt with by build variants. To put this in perspective there is
+          one compiler (Borland's) that has so many compiler options that make subtle
+          changes to the ABI, that at least in theory there 3200 combinations, and
+          that's without considering runtime library variations. Fortunately these
+          variations can be managed by <code class="computeroutput"><span class="preprocessor">#pragma</span></code>'s
+          that tell the compiler what ABI to use for the types declared in your library.
+          In order to avoid sprinkling <code class="computeroutput"><span class="preprocessor">#pragma</span></code>'s
+          all over the boost headers, there are some prefix and suffix headers that
+          do the job. Typical usage is:
+        </p>
+<p>
+          <span class="bold"><strong>my_library.hpp</strong></span>
+        </p>
+<pre class="programlisting"><span class="preprocessor">#ifndef</span> <span class="identifier">MY_INCLUDE_GUARD</span>
+<span class="preprocessor">#define</span> <span class="identifier">MY_INCLUDE_GUARD</span>
+
+<span class="comment">// all includes go here:</span>
+<code class="literal"><span class="bold"><strong>#include <boost/config.hpp></strong></span></code>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">whatever</span><span class="special">></span>
+
+<code class="literal"><span class="bold"><strong>#include <boost/config/abi_prefix.hpp></strong></span></code> <span class="comment">// must be the last #include</span>
+
+<span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
+
+<span class="comment">// your code goes here</span>
+
+<span class="special">}</span>
+
+<code class="literal"><span class="bold"><strong>#include <boost/config/abi_suffix.hpp></strong></span></code> <span class="comment">// pops abi_prefix.hpp pragmas</span>
+
+<span class="preprocessor">#endif</span> <span class="comment">// include guard</span>
+</pre>
+<p>
+          <span class="bold"><strong>my_library.cpp</strong></span>
+        </p>
+<pre class="programlisting"><span class="special">...</span>
+<span class="comment">// nothing special need be done in the implementation file</span>
+<span class="special">...</span>
+</pre>
+<p>
+          The user can disable this mechanism by defining <code class="computeroutput"><span class="identifier">BOOST_DISABLE_ABI_HEADERS</span></code>,
+          or they can define <code class="computeroutput"><span class="identifier">BOOST_ABI_PREFIX</span></code>
+          and/or <code class="computeroutput"><span class="identifier">BOOST_ABI_SUFFIX</span></code>
+          to point to their own prefix/suffix headers if they so wish.
+        </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code.automatic_library_selection"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code.automatic_library_selection" title="Automatic library selection">Automatic
+        library selection</a>
+</h4></div></div></div>
+<p>
+          It is essential that users link to a build of a library which was built
+          against the same runtime library that their application will be built against
+          -if this does not happen then the library will not be binary compatible
+          with their own code- and there is a high likelihood that their application
+          will experience runtime crashes. These kinds of problems can be extremely
+          time consuming and difficult to debug, and often lead to frustrated users
+          and authors alike (simply selecting the right library to link against is
+          not as easy as it seems when their are 6-8 of them to chose from, and some
+          users seem to be blissfully unaware that there even are different runtimes
+          available to them).
+        </p>
+<p>
+          To solve this issue, some compilers allow source code to contain <code class="computeroutput"><span class="preprocessor">#pragma</span></code>'s that instruct the linker
+          which library to link against, all the user need do is include the headers
+          they need, place the compiled libraries in their library search path, and
+          the compiler and linker do the rest. Boost.config supports this via the
+          header <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><span class="identifier">auto_link</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>, before including this header one or
+          more of the following macros need to be defined:
+        </p>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">BOOST_LIB_NAME</span></code></span></dt>
+<dd><p>
+                Required: An identifier containing the basename of the library, for
+                example 'boost_regex'.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">BOOST_DYN_LINK</span></code></span></dt>
+<dd><p>
+                Optional: when set link to dll rather than static library.
+              </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">BOOST_LIB_DIAGNOSTIC</span></code></span></dt>
+<dd><p>
+                Optional: when set the header will print out the name of the library
+                selected (useful for debugging).
+              </p></dd>
+</dl>
+</div>
+<p>
+          If the compiler supports this mechanism, then it will be told to link against
+          the appropriately named library, the actual algorithm used to mangle the
+          name of the library is documented inside <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><span class="identifier">auto_link</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>
+          and has to match that used to create the libraries via bjam 's install
+          rules.
+        </p>
+<p>
+          <span class="bold"><strong>my_library.hpp</strong></span>
+        </p>
+<pre class="programlisting"><span class="special">...</span>
+<span class="comment">//</span>
+<span class="comment">// Don't include auto-linking code if the user has disabled it by</span>
+<span class="comment">// defining BOOST_ALL_NO_LIB, or BOOST_MY_LIBRARY_NO_LIB, or if this </span>
+<span class="comment">// is one of our own source files (signified by BOOST_MY_LIBRARY_SOURCE):</span>
+<span class="comment">//</span>
+<span class="preprocessor">#if</span> <span class="special">!</span><span class="identifier">defined</span><span class="special">(</span><span class="identifier">BOOST_ALL_NO_LIB</span><span class="special">)</span> <span class="special">&&</span> <span class="special">!</span><span class="identifier">defined</span><span class="special">(</span><span class="identifier">BOOST_MY_LIBRARY_NO_LIB</span><span class="special">)</span> <span class="special">&&</span> <span class="special">!</span><span class="identifier">defined</span><span class="special">(</span><span class="identifier">BOOST_MY_LIBRARY_SOURCE</span><span class="special">)</span>
+<span class="preprocessor">#  define</span> <span class="identifier">BOOST_LIB_NAME</span> <span class="identifier">boost_my_library</span>
+<span class="preprocessor">#  ifdef</span> <span class="identifier">BOOST_MY_LIBRARY_DYN_LINK</span>
+<span class="preprocessor">#     define</span> <span class="identifier">BOOST_DYN_LINK</span>
+<span class="preprocessor">#  endif</span>
+<span class="preprocessor">#  include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">auto_link</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#endif</span>
+<span class="special">...</span>
+</pre>
+<p>
+          <span class="bold"><strong>my_library.cpp</strong></span>
+        </p>
+<pre class="programlisting"><span class="comment">// define BOOST_MY_LIBRARY_SOURCE so that the header knows that the</span>
+<span class="comment">// library is being built (possibly exporting rather than importing code)</span>
+<span class="comment">//</span>
+<span class="preprocessor">#define</span> <span class="identifier">BOOST_MY_LIBRARY_SOURCE</span>
+
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">my_library</span><span class="special">/</span><span class="identifier">my_library</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="special">...</span>
+</pre>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Beman Dawes, Vesa Karvonen, John
+      Maddock<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../index.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="guidelines_for_boost_authors.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: website/public_html/live/doc/fixes/boost_1_52_0/libs/config/doc/html/boost_config/guidelines_for_boost_authors.html
==============================================================================
--- (empty file)
+++ website/public_html/live/doc/fixes/boost_1_52_0/libs/config/doc/html/boost_config/guidelines_for_boost_authors.html	2012-11-20 15:40:09 EST (Tue, 20 Nov 2012)
@@ -0,0 +1,377 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Guidelines for Boost Authors</title>
+<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Boost.Config">
+<link rel="up" href="../index.html" title="Boost.Config">
+<link rel="prev" href="boost_macro_reference.html" title="Boost Macro Reference">
+<link rel="next" href="rationale.html" title="Rationale">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="boost_macro_reference.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="rationale.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="boost_config.guidelines_for_boost_authors"></a><a class="link" href="guidelines_for_boost_authors.html" title="Guidelines for Boost Authors">Guidelines for
+    Boost Authors</a>
+</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.warnings">Disabling
+      Compiler Warnings</a></span></dt>
+<dt><span class="section"><a href="guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.adding_new_defect_macros">Adding
+      New Defect Macros</a></span></dt>
+<dt><span class="section"><a href="guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.adding_new_feature_test_macros">Adding
+      New Feature Test Macros</a></span></dt>
+<dt><span class="section"><a href="guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.modifying_the_boost_configuration_headers">Modifying
+      the Boost Configuration Headers</a></span></dt>
+</dl></div>
+<p>
+      The <boost/config.hpp>
+      header is used to pass configuration information to other boost files, allowing
+      them to cope with platform dependencies such as arithmetic byte ordering, compiler
+      pragmas, or compiler shortcomings. Without such configuration information,
+      many current compilers would not work with the Boost libraries.
+    </p>
+<p>
+      Centralizing configuration information in this header reduces the number of
+      files that must be modified when porting libraries to new platforms, or when
+      compilers are updated. Ideally, no other files would have to be modified when
+      porting to a new platform.
+    </p>
+<p>
+      Configuration headers are controversial because some view them as condoning
+      broken compilers and encouraging non-standard subsets. Adding settings for
+      additional platforms and maintaining existing settings can also be a problem.
+      In other words, configuration headers are a necessary evil rather than a desirable
+      feature. The boost config.hpp policy is designed to minimize the problems and
+      maximize the benefits of a configuration header.
+    </p>
+<p>
+      Note that:
+    </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+          Boost library implementers are not required to "<code class="computeroutput"><span class="preprocessor">#include</span>
+          <span class="special"><</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">></span></code>", and are not required in any
+          way to support compilers that do not comply with the C++ Standard (ISO/IEC
+          14882).
+        </li>
+<li class="listitem">
+          If a library implementer wishes to support some non-conforming compiler,
+          or to support some platform specific feature, "<code class="computeroutput"><span class="preprocessor">#include</span>
+          <span class="special"><</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">></span></code>" is the preferred way to obtain
+          configuration information not available from the standard headers such
+          as <code class="computeroutput"><span class="special"><</span><span class="identifier">climits</span><span class="special">></span></code>, etc.
+        </li>
+<li class="listitem">
+          If configuration information can be deduced from standard headers such
+          as <code class="computeroutput"><span class="special"><</span><span class="identifier">climits</span><span class="special">></span></code>, use those standard headers rather
+          than <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><span class="identifier">hpp</span><span class="special">></span></code>.
+        </li>
+<li class="listitem">
+          Boost files that use macros defined in <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><span class="identifier">hpp</span><span class="special">></span></code>
+          should have sensible, standard conforming, default behavior if the macro
+          is not defined. This means that the starting point for porting <code class="computeroutput"><span class="special"><</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">></span></code> to a new platform is simply to define
+          nothing at all specific to that platform. In the rare case where there
+          is no sensible default behavior, an #error message should describe the
+          problem.
+        </li>
+<li class="listitem">
+          If a Boost library implementer wants something added to <code class="computeroutput"><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span></code>,
+          post a request on the Boost mailing list. There is no guarantee such a
+          request will be honored; the intent is to limit the complexity of config.hpp.
+        </li>
+<li class="listitem">
+          The intent is to support only compilers which appear on their way to becoming
+          C++ Standard compliant, and only recent releases of those compilers at
+          that.
+        </li>
+<li class="listitem">
+          The intent is not to disable mainstream features now well-supported by
+          the majority of compilers, such as namespaces, exceptions, RTTI, or templates.
+        </li>
+</ul></div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.guidelines_for_boost_authors.warnings"></a><a class="link" href="guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.warnings" title="Disabling Compiler Warnings">Disabling
+      Compiler Warnings</a>
+</h3></div></div></div>
+<p>
+        The header <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><span class="identifier">warning_disable</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>
+        can be used to disable certain compiler warnings that are hard or impossible
+        to otherwise remove.
+      </p>
+<p>
+        Note that:
+      </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+            This header <span class="bold"><strong><span class="emphasis"><em>should never be included
+            by another Boost header</em></span></strong></span>, it should only ever be
+            used by a library source file or a test case.
+          </li>
+<li class="listitem">
+            The header should be included <span class="bold"><strong><span class="emphasis"><em>before
+            you include any other header</em></span></strong></span>.
+          </li>
+<li class="listitem">
+            This header only disables warnings that are hard or impossible to otherwise
+            deal with, and which are typically emitted by one compiler only, or in
+            one compilers own standard library headers.
+          </li>
+</ul></div>
+<p>
+        Currently it disables the following warnings:
+      </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                <p>
+                  Compiler
+                </p>
+              </th>
+<th>
+                <p>
+                  Warning
+                </p>
+              </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                <p>
+                  Visual C++ 8 and later
+                </p>
+              </td>
+<td>
+                <p>
+                  C4996:
+                  Error 'function': was declared deprecated
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  Intel C++
+                </p>
+              </td>
+<td>
+                <p>
+                  Warning 1786: relates to the use of "deprecated" standard
+                  library functions rather like C4996 in Visual C++.
+                </p>
+              </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.guidelines_for_boost_authors.adding_new_defect_macros"></a><a class="link" href="guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.adding_new_defect_macros" title="Adding New Defect Macros">Adding
+      New Defect Macros</a>
+</h3></div></div></div>
+<p>
+        When you need to add a new defect macro - either to fix a problem with an
+        existing library, or when adding a new library - distil the issue down to
+        a simple test case; often, at this point other (possibly better) workarounds
+        may become apparent. Secondly always post the test case code to the boost
+        mailing list and invite comments; remember that C++ is complex and that sometimes
+        what may appear a defect, may in fact turn out to be a problem with the authors
+        understanding of the standard.
+      </p>
+<p>
+        When you name the macro, follow the <code class="computeroutput"><span class="identifier">BOOST_NO_</span></code><span class="emphasis"><em>SOMETHING</em></span>
+        naming convention, so that it's obvious that this is a macro reporting a
+        defect.
+      </p>
+<p>
+        Finally, add the test program to the regression tests. You will need to place
+        the test case in a <code class="computeroutput"><span class="special">.</span><span class="identifier">ipp</span></code>
+        file with the following comments near the top:
+      </p>
+<pre class="programlisting"><span class="comment">//  MACRO:         BOOST_NO_FOO</span>
+<span class="comment">//  TITLE:         foo</span>
+<span class="comment">//  DESCRIPTION:   If the compiler fails to support foo</span>
+</pre>
+<p>
+        These comments are processed by the autoconf script, so make sure the format
+        follows the one given. The file should be named "<code class="computeroutput"><span class="identifier">boost_no_foo</span><span class="special">.</span><span class="identifier">ipp</span></code>",
+        where foo is the defect description - try and keep the file name under the
+        Mac 30 character filename limit though. You will also need to provide a function
+        prototype "<code class="computeroutput"><span class="keyword">int</span> <span class="identifier">test</span><span class="special">()</span></code>" that is declared in a namespace with
+        the same name as the macro, but in all lower case, and which returns zero
+        on success:
+      </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost_no_foo</span> <span class="special">{</span>
+<span class="keyword">int</span> <span class="identifier">test</span><span class="special">()</span>
+<span class="special">{</span>
+    <span class="comment">// test code goes here:</span>
+    <span class="comment">//</span>
+    <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+
+<span class="special">}</span>
+</pre>
+<p>
+        Once the test code is in place in libs/config/test, updating the configuration
+        test system proceeds as:
+      </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+            cd into <code class="computeroutput"><span class="identifier">libs</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">tools</span></code> and run <code class="computeroutput"><span class="identifier">bjam</span></code>.
+            This generates the <code class="computeroutput"><span class="special">.</span><span class="identifier">cpp</span></code>
+            file test cases from the <code class="computeroutput"><span class="special">.</span><span class="identifier">ipp</span></code> file, updates the libs/config/test/all/Jamfile.v2,
+            <code class="computeroutput"><span class="identifier">config_test</span><span class="special">.</span><span class="identifier">cpp</span></code> and <code class="computeroutput"><span class="identifier">config_info</span><span class="special">.</span><span class="identifier">cpp</span></code>.<br>
+            <br>
+          </li>
+<li class="listitem">
+            cd into <code class="computeroutput"><span class="identifier">libs</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">test</span><span class="special">/</span><span class="identifier">all</span></code> and run <code class="computeroutput"><span class="identifier">bjam</span>
+            </code><span class="emphasis"><em>MACRONAME<code class="computeroutput"> <span class="identifier">compiler</span><span class="special">-</span><span class="identifier">list</span></code></em></span>,
+            where <span class="emphasis"><em>MACRONAME</em></span> is the name of the new macro, and
+            <span class="emphasis"><em><code class="computeroutput"><span class="identifier">compiler</span><span class="special">-</span><span class="identifier">list</span></code></em></span> is a space separated
+            list of compilers to test with.<br> <br> The xxx_pass_test and the
+            xxx_fail_test <span class="bold"><strong>should both report <code class="computeroutput"><span class="special">**</span><span class="identifier">passed</span><span class="special">**</span></code></strong></span>.<br> <br> If <span class="emphasis"><em>MACRONAME</em></span>
+            is not defined when it should be defined, xxx_pass_test will not report
+            <code class="computeroutput"><span class="special">**</span><span class="identifier">passed</span><span class="special">**</span></code>. If <span class="emphasis"><em>MACRONAME</em></span>
+            is defined when it should not be defined, xxx_fail_test will not report
+            <code class="computeroutput"><span class="special">**</span><span class="identifier">passed</span><span class="special">**</span></code>.<br> <br>
+          </li>
+<li class="listitem">
+            cd into <code class="computeroutput"><span class="identifier">libs</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">test</span></code> and run <code class="computeroutput"><span class="identifier">bjam</span>
+            <span class="identifier">config_info</span> <span class="identifier">config_test</span>
+            </code><span class="emphasis"><em><code class="computeroutput"><span class="identifier">compiler</span><span class="special">-</span><span class="identifier">list</span></code></em></span>.
+            <code class="computeroutput"><span class="identifier">config_info</span></code> should build
+            and run cleanly for all the compilers in <span class="emphasis"><em><code class="computeroutput"><span class="identifier">compiler</span><span class="special">-</span><span class="identifier">list</span></code></em></span>
+            while <code class="computeroutput"><span class="identifier">config_test</span></code> should
+            fail for those that have the defect, and pass for those that do not.
+          </li>
+</ul></div>
+<p>
+        Then you should:
+      </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+            Define the defect macro in those config headers that require it.
+          </li>
+<li class="listitem">
+            Document the macro in this documentation (please do not forget this step!!)
+          </li>
+<li class="listitem">
+            Commit everything.
+          </li>
+<li class="listitem">
+            Keep an eye on the regression tests for new failures in Boost.Config
+            caused by the addition.
+          </li>
+<li class="listitem">
+            Start using the macro.
+          </li>
+</ul></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.guidelines_for_boost_authors.adding_new_feature_test_macros"></a><a class="link" href="guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.adding_new_feature_test_macros" title="Adding New Feature Test Macros">Adding
+      New Feature Test Macros</a>
+</h3></div></div></div>
+<p>
+        When you need to add a macro that describes a feature that the standard does
+        not require, follow the convention for adding a new defect macro (above),
+        but call the macro <code class="computeroutput"><span class="identifier">BOOST_HAS_FOO</span></code>,
+        and name the test file "<code class="computeroutput"><span class="identifier">boost_has_foo</span><span class="special">.</span><span class="identifier">ipp</span></code>".
+        Try not to add feature test macros unnecessarily, if there is a platform
+        specific macro that can already be used (for example <code class="computeroutput"><span class="identifier">_WIN32</span></code>,
+        <code class="computeroutput"><span class="identifier">__BEOS__</span></code>, or <code class="computeroutput"><span class="identifier">__linux</span></code>) to identify the feature then use
+        that. Try to keep the macro to a feature group, or header name, rather than
+        one specific API (for example <code class="computeroutput"><span class="identifier">BOOST_HAS_NL_TYPES_H</span></code>
+        rather than <code class="computeroutput"><span class="identifier">BOOST_HAS_CATOPEN</span></code>).
+        If the macro describes a POSIX feature group, then add boilerplate code to
+        <boost/config/suffix.hpp>
+        to auto-detect the feature where possible (if you are wondering why we can't
+        use POSIX feature test macro directly, remember that many of these features
+        can be added by third party libraries, and are not therefore identified inside
+        <code class="computeroutput"><span class="special"><</span><span class="identifier">unistd</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code>).
+      </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.guidelines_for_boost_authors.modifying_the_boost_configuration_headers"></a><a class="link" href="guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.modifying_the_boost_configuration_headers" title="Modifying the Boost Configuration Headers">Modifying
+      the Boost Configuration Headers</a>
+</h3></div></div></div>
+<p>
+        The aim of boost's configuration setup is that the configuration headers
+        should be relatively stable - a boost user should not have to recompile their
+        code just because the configuration for some compiler that they're not interested
+        in has changed. Separating the configuration into separate compiler/standard
+        library/platform sections provides for part of this stability, but boost
+        authors require some amount of restraint as well, in particular:
+      </p>
+<p>
+        <boost/config.hpp>
+        should never change, don't alter this file.
+      </p>
+<p>
+        <boost/config/user.hpp>
+        is included by default, don't add extra code to this file unless you have
+        to. If you do, please remember to update libs/config/tools/configure.in
+        as well.
+      </p>
+<p>
+        <boost/config/suffix.hpp>
+        is always included so be careful about modifying this file as it breaks dependencies
+        for everyone. This file should include only "boilerplate" configuration
+        code, and generally should change only when new macros are added.
+      </p>
+<p>
+        <boost/config/select_compiler_config.hpp>,
+        <boost/config/select_platform_config.hpp>
+        and <boost/config/select_stdlib_config.hpp>
+        are included by default and should change only if support for a new compiler/standard
+        library/platform is added.
+      </p>
+<p>
+        The compiler/platform/standard library selection code is set up so that unknown
+        platforms are ignored and assumed to be fully standards compliant - this
+        gives unknown platforms a "sporting chance" of working "as
+        is" even without running the configure script.
+      </p>
+<p>
+        When adding or modifying the individual mini-configs, assume that future,
+        as yet unreleased versions of compilers, have all the defects of the current
+        version. Although this is perhaps unnecessarily pessimistic, it cuts down
+        on the maintenance of these files, and experience suggests that pessimism
+        is better placed than optimism here!
+      </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Beman Dawes, Vesa Karvonen, John
+      Maddock<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="boost_macro_reference.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="rationale.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: website/public_html/live/doc/fixes/boost_1_52_0/libs/config/doc/html/boost_config/rationale.html
==============================================================================
--- (empty file)
+++ website/public_html/live/doc/fixes/boost_1_52_0/libs/config/doc/html/boost_config/rationale.html	2012-11-20 15:40:09 EST (Tue, 20 Nov 2012)
@@ -0,0 +1,124 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Rationale</title>
+<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="../index.html" title="Boost.Config">
+<link rel="up" href="../index.html" title="Boost.Config">
+<link rel="prev" href="guidelines_for_boost_authors.html" title="Guidelines for Boost Authors">
+<link rel="next" href="acknowledgements.html" title="Acknowledgements">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="guidelines_for_boost_authors.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="acknowledgements.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="boost_config.rationale"></a><a class="link" href="rationale.html" title="Rationale">Rationale</a>
+</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section">The problem</span></dt>
+<dt><span class="section">The solution</span></dt>
+</dl></div>
+<p>
+      The problem with many traditional "textbook" implementations of configuration
+      headers (where all the configuration options are in a single "monolithic"
+      header) is that they violate certain fundamental software engineering principles
+      which would have the effect of making boost more fragile, more difficult to
+      maintain and more difficult to use safely. You can find a description of the
+      principles from the <a href="http://www.objectmentor.com/resources/articles/Principles_and_Patterns.pdf" target="_top">following
+      article</a>.
+    </p>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.rationale.the_problem"></a><a class="link" href="rationale.html#boost_config.rationale.the_problem" title="The problem">The problem</a>
+</h3></div></div></div>
+<p>
+        Consider a situation in which you are concurrently developing on multiple
+        platforms. Then consider adding a new platform or changing the platform definitions
+        of an existing platform. What happens? Everything, and this does literally
+        mean everything, recompiles. Isn't it quite absurd that adding a new platform,
+        which has absolutely nothing to do with previously existing platforms, means
+        that all code on all existing platforms needs to be recompiled?
+      </p>
+<p>
+        Effectively, there is an imposed physical dependency between platforms that
+        have nothing to do with each other. Essentially, the traditional solution
+        employed by configuration headers does not conform to the Open-Closed Principle:
+      </p>
+<div class="blockquote"><blockquote class="blockquote"><p>
+          <span class="bold"><strong>"A module should be open for extension but closed
+          for modification."</strong></span>
+        </p></blockquote></div>
+<p>
+        Extending a traditional configuration header implies modifying existing code.
+      </p>
+<p>
+        Furthermore, consider the complexity and fragility of the platform detection
+        code. What if a simple change breaks the detection on some minor platform?
+        What if someone accidentally or on purpose (as a workaround for some other
+        problem) defines some platform dependent macros that are used by the detection
+        code? A traditional configuration header is one of the most volatile headers
+        of the entire library, and more stable elements of Boost would depend on
+        it. This violates the Stable Dependencies Principle:
+      </p>
+<div class="blockquote"><blockquote class="blockquote"><p>
+          <span class="bold"><strong>"Depend in the direction of stability."</strong></span>
+        </p></blockquote></div>
+<p>
+        After even a minor change to a traditional configuration header on one minor
+        platform, almost everything on every platform should be tested if we follow
+        sound software engineering practice.
+      </p>
+<p>
+        Another important issue is that it is not always possible to submit changes
+        to <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><span class="identifier">hpp</span><span class="special">></span></code>.
+        Some boost users are currently working on platforms using tools and libraries
+        that are under strict Non-Disclosure Agreements. In this situation it is
+        impossible to submit changes to a traditional monolithic configuration header,
+        instead some method by which the user can insert their own configuration
+        code must be provided.
+      </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.rationale.the_solution"></a><a class="link" href="rationale.html#boost_config.rationale.the_solution" title="The solution">The solution</a>
+</h3></div></div></div>
+<p>
+        The approach taken by boost's configuration headers is to separate configuration
+        into three orthogonal parts: the compiler, the standard library and the platform.
+        Each compiler/standard library/platform gets its own mini-configuration header,
+        so that changes to one compiler's configuration (for example) does not affect
+        other compilers. In addition there are measures that can be taken both to
+        omit the compiler/standard library/platform detection code (so that adding
+        support to a new platform does not break dependencies), or to freeze the
+        configuration completely; providing almost complete protection against dependency
+        changes.
+      </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Beman Dawes, Vesa Karvonen, John
+      Maddock<p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+      </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="guidelines_for_boost_authors.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="acknowledgements.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
Added: website/public_html/live/doc/fixes/boost_1_52_0/libs/config/doc/html/index.html
==============================================================================
--- (empty file)
+++ website/public_html/live/doc/fixes/boost_1_52_0/libs/config/doc/html/index.html	2012-11-20 15:40:09 EST (Tue, 20 Nov 2012)
@@ -0,0 +1,960 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Boost.Config</title>
+<link rel="stylesheet" href="../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.76.1">
+<link rel="home" href="index.html" title="Boost.Config">
+<link rel="next" href="boost_config/boost_macro_reference.html" title="Boost Macro Reference">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td>
+<td align="center">Home</td>
+<td align="center">Libraries</td>
+<td align="center">People</td>
+<td align="center">FAQ</td>
+<td align="center">More</td>
+</tr></table>
+<hr>
+<div class="spirit-nav"><a accesskey="n" href="boost_config/boost_macro_reference.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a></div>
+<div class="article">
+<div class="titlepage">
+<div>
+<div><h2 class="title">
+<a name="config"></a>Boost.Config</h2></div>
+<div><div class="authorgroup"><div class="author"><h3 class="author">
+<span class="firstname">Vesa Karvonen, John Maddock</span> <span class="surname">Beman Dawes</span>
+</h3></div></div></div>
+<div><p class="copyright">Copyright © 2001-2007 Beman Dawes, Vesa Karvonen, John
+      Maddock</p></div>
+<div><div class="legalnotice">
+<a name="config.legal"></a><p>
+        Distributed under the Boost Software License, Version 1.0. (See accompanying
+        file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+      </p>
+</div></div>
+</div>
+<hr>
+</div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform">Configuring
+    Boost for Your Platform</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.using_the_default_boost_configuration">Using
+      the default boost configuration</a></span></dt>
+<dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.the__boost_config_hpp__header">The
+      <boost/config.hpp> header</a></span></dt>
+<dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.using_the_configure_script">Using
+      the configure script</a></span></dt>
+<dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.user_settable_options">User
+      settable options</a></span></dt>
+<dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage">Advanced
+      configuration usage</a></span></dt>
+<dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.testing_the_boost_configuration">Testing
+      the boost configuration</a></span></dt>
+</dl></dd>
+<dt><span class="section">Boost Macro Reference</span></dt>
+<dd><dl>
+<dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_c__03_defects">Macros
+      that describe C++03 defects</a></span></dt>
+<dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_optional_features">Macros
+      that describe optional features</a></span></dt>
+<dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_possible_c___future_features">Macros
+      that describe possible C++ future features</a></span></dt>
+<dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_c__11_features_not_supported">Macros
+      that describe C++11 features not supported</a></span></dt>
+<dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_allow_use_of_c__11_features_with_c__03_compilers">Macros
+      that allow use of C++11 features with C++03 compilers</a></span></dt>
+<dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.boost_helper_macros">Boost
+      Helper Macros</a></span></dt>
+<dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.boost_informational_macros">Boost
+      Informational Macros</a></span></dt>
+<dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.boost_deprecated_macros">Boost
+      Deprecated Macros</a></span></dt>
+<dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code">Macros
+      for libraries with separate source code</a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="boost_config/guidelines_for_boost_authors.html">Guidelines for
+    Boost Authors</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="boost_config/guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.warnings">Disabling
+      Compiler Warnings</a></span></dt>
+<dt><span class="section"><a href="boost_config/guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.adding_new_defect_macros">Adding
+      New Defect Macros</a></span></dt>
+<dt><span class="section"><a href="boost_config/guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.adding_new_feature_test_macros">Adding
+      New Feature Test Macros</a></span></dt>
+<dt><span class="section"><a href="boost_config/guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.modifying_the_boost_configuration_headers">Modifying
+      the Boost Configuration Headers</a></span></dt>
+</dl></dd>
+<dt><span class="section">Rationale</span></dt>
+<dd><dl>
+<dt><span class="section">The problem</span></dt>
+<dt><span class="section">The solution</span></dt>
+</dl></dd>
+<dt><span class="section">Acknowledgements</span></dt>
+</dl>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="boost_config.configuring_boost_for_your_platform"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform" title="Configuring Boost for Your Platform">Configuring
+    Boost for Your Platform</a>
+</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.using_the_default_boost_configuration">Using
+      the default boost configuration</a></span></dt>
+<dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.the__boost_config_hpp__header">The
+      <boost/config.hpp> header</a></span></dt>
+<dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.using_the_configure_script">Using
+      the configure script</a></span></dt>
+<dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.user_settable_options">User
+      settable options</a></span></dt>
+<dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage">Advanced
+      configuration usage</a></span></dt>
+<dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.testing_the_boost_configuration">Testing
+      the boost configuration</a></span></dt>
+</dl></div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.configuring_boost_for_your_platform.using_the_default_boost_configuration"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.using_the_default_boost_configuration" title="Using the default boost configuration">Using
+      the default boost configuration</a>
+</h3></div></div></div>
+<p>
+        Boost comes already configured for most common compilers and platforms; you
+        should be able to use boost "as is". Since the compiler is configured
+        separately from the standard library, the default configuration should work
+        even if you replace the compiler's standard library with a third-party standard
+        library (like STLport).
+      </p>
+<p>
+        Using boost "as is" without trying to reconfigure is the recommended
+        method for using boost. You can, however, run the configure script if you
+        want to, and there are regression tests provided that allow you to test the
+        current boost configuration with your particular compiler setup.
+      </p>
+<p>
+        Boost library users can request support for additional compilers or platforms
+        by visiting our Trac
+        and submitting a support request.
+      </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.configuring_boost_for_your_platform.the__boost_config_hpp__header"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.the__boost_config_hpp__header" title="The <boost/config.hpp> header">The
+      <boost/config.hpp> header</a>
+</h3></div></div></div>
+<p>
+        Boost library implementations access configuration macros via
+      </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <boost/config.hpp>
+</pre>
+<p>
+        While Boost library users are not required to include that file directly,
+        or use those configuration macros, such use is acceptable. The configuration
+        macros are documented as to their purpose, usage, and limitations which makes
+        them usable by both Boost library and user code.
+      </p>
+<p>
+        Boost <a class="link" href="boost_config/boost_macro_reference.html#config_info_macros">informational</a> or <a class="link" href="boost_config/boost_macro_reference.html#config_helpers">helper</a>
+        macros are designed for use by Boost users as well as for our own internal
+        use. Note however, that the <a class="link" href="boost_config/boost_macro_reference.html#config_features">feature test</a>
+        and <a class="link" href="boost_config/boost_macro_reference.html#config_defects">defect test</a> macros were designed
+        for internal use by Boost libraries, not user code, so they can change at
+        any time (though no gratuitous changes are made to them). Boost library problems
+        resulting from changes to the configuration macros are caught by the Boost
+        regression tests, so the Boost libraries are updated to account for those
+        changes. By contrast, Boost library user code can be adversely affected by
+        changes to the macros without warning. The best way to keep abreast of changes
+        to the macros used in user code is to monitor the discussions on the Boost
+        developers list.
+      </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.configuring_boost_for_your_platform.using_the_configure_script"></a><a name="config_config_script"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.using_the_configure_script" title="Using the configure script">Using
+      the configure script</a>
+</h3></div></div></div>
+<div class="important"><table border="0" summary="Important">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../../../doc/src/images/important.png"></td>
+<th align="left">Important</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+          This configure script only sets up the Boost headers for use with a particular
+          compiler. It has no effect on Boost.Build, or how the libraries are built.
+        </p></td></tr>
+</table></div>
+<p>
+        If you know that boost is incorrectly configured for your particular setup,
+        and you are on a UNIX like platform, then you may want to try and improve
+        things by running the boost configure script. From a shell command prompt
+        you will need to cd into <span class="emphasis"><em><boost-root></em></span><code class="computeroutput"><span class="special">/</span><span class="identifier">libs</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span></code>
+        and type:
+      </p>
+<div class="blockquote"><blockquote class="blockquote"><p>
+          <code class="computeroutput"><span class="identifier">sh</span> <span class="special">./</span><span class="identifier">configure</span></code>
+        </p></blockquote></div>
+<p>
+        you will see a list of the items being checked as the script works its way
+        through the regression tests. Note that the configure script only really
+        auto-detects your compiler if it's called g++, c++ or CC. If you are using
+        some other compiler you will need to set one or more of the following environment
+        variables:
+      </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                <p>
+                  Variable
+                </p>
+              </th>
+<th>
+                <p>
+                  Description
+                </p>
+              </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                <p>
+                  CXX
+                </p>
+              </td>
+<td>
+                <p>
+                  The name of the compiler, for example <code class="computeroutput"><span class="identifier">c</span><span class="special">++</span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  CXXFLAGS
+                </p>
+              </td>
+<td>
+                <p>
+                  The compiler flags to use, for example <code class="computeroutput"><span class="special">-</span><span class="identifier">O2</span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  LDFLAGS
+                </p>
+              </td>
+<td>
+                <p>
+                  The linker flags to use, for example <code class="computeroutput"><span class="special">-</span><span class="identifier">L</span><span class="special">/</span><span class="identifier">mypath</span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  LIBS
+                </p>
+              </td>
+<td>
+                <p>
+                  Any libraries to link in, for example <code class="computeroutput"><span class="special">-</span><span class="identifier">lpthread</span></code>.
+                </p>
+              </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+        For example to run the configure script with HP aCC, you might use something
+        like:
+      </p>
+<pre class="programlisting"><span class="keyword">export</span> <span class="identifier">CXX</span><span class="special">=</span><span class="string">"aCC"</span>
+<span class="keyword">export</span> <span class="identifier">CXXFLAGS</span><span class="special">=</span><span class="string">"-Aa -DAportable -D__HPACC_THREAD_SAFE_RB_TREE \
+   -DRWSTD_MULTI_THREAD -DRW_MULTI_THREAD -D_REENTRANT -D_THREAD_SAFE"</span>
+<span class="keyword">export</span> <span class="identifier">LDFLAGS</span><span class="special">=</span><span class="string">"-DAportable"</span>
+<span class="keyword">export</span> <span class="identifier">LIBS</span><span class="special">=</span><span class="string">"-lpthread"</span>
+<span class="identifier">sh</span> <span class="special">./</span><span class="identifier">configure</span>
+</pre>
+<p>
+        However you run the configure script, when it finishes you will find a new
+        header -<code class="computeroutput"><span class="identifier">user</span><span class="special">.</span><span class="identifier">hpp</span></code>- located in the <span class="emphasis"><em><boost-root></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>
+        directory. <span class="bold"><strong>Note that configure does not install this
+        header into your boost include path by default</strong></span>. This header contains
+        all the options generated by the configure script, plus a header-section
+        that contains the user settable options from the default version of <boost/config/user.hpp>
+        (located under <span class="emphasis"><em><boost-root></em></span><code class="computeroutput"><span class="special">/</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span></code>).
+        There are two ways you can use this header:
+      </p>
+<div class="itemizedlist"><ul class="itemizedlist" type="disc">
+<li class="listitem">
+            <span class="bold"><strong>Option 1:</strong></span> copy the header into <span class="emphasis"><em><boost-root></em></span><code class="computeroutput"><span class="special">/</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span></code> so that it replaces the default user.hpp
+            provided by boost. This option allows only one configure-generated setup;
+            boost developers should avoid this option, as it incurs the danger of
+            accidentally committing a configure-modified <boost/config/user.hpp>
+            to the svn repository (something you will not be thanked for!).
+          </li>
+<li class="listitem">
+            <span class="bold"><strong>Option 2:</strong></span> give the header a more memorable
+            name, and place it somewhere convenient; then, define the macro <code class="computeroutput"><span class="identifier">BOOST_USER_CONFIG</span></code> to point to it. For
+            example create a new sub-directory <span class="emphasis"><em><boost-root></em></span><code class="computeroutput"><span class="special">/</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span></code> <code class="computeroutput"><span class="identifier">user</span><span class="special">/</span></code>, and copy the header there; for example
+            as <code class="computeroutput"><span class="identifier">multithread</span><span class="special">-</span><span class="identifier">gcc</span><span class="special">-</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span></code>. Then, when compiling add the command
+            line option: <code class="computeroutput"><span class="special">-</span><span class="identifier">DBOOST_USER_CONFIG</span><span class="special">=</span><span class="string">"<boost/config/user/multithread-gcc-config.hpp>"</span></code>,
+            and boost will use the new configuration header. This option allows you
+            to generate more than one configuration header, and to keep them separate
+            from the boost source - so that updates to the source do not interfere
+            with your configuration.
+          </li>
+</ul></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.configuring_boost_for_your_platform.user_settable_options"></a><a name="config_user_settable"></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>
+</h3></div></div></div>
+<p>
+        There are some configuration-options that represent user choices, rather
+        than compiler defects or platform specific options. These are listed in
+        <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><span class="identifier">user</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>
+        and at the start of a configure-generated <code class="computeroutput"><span class="identifier">user</span><span class="special">.</span><span class="identifier">hpp</span></code> header.
+        You can define these on the command line, or by editing <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><span class="identifier">user</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>, they are listed in the following table:
+      </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                <p>
+                  Macro
+                </p>
+              </th>
+<th>
+                <p>
+                  Description
+                </p>
+              </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_USER_CONFIG</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  When defined, it should point to the name of the user configuration
+                  file to include prior to any boost configuration files. When not
+                  defined, defaults to <boost/config/user.hpp>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_COMPILER_CONFIG</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  When defined, it should point to the name of the compiler configuration
+                  file to use. Defining this cuts out the compiler selection logic,
+                  and eliminates the dependency on the header containing that logic.
+                  For example if you are using gcc, then you could define BOOST_COMPILER_CONFIG
+                  to <boost/config/compiler/gcc.hpp>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_STDLIB_CONFIG</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  When defined, it should point to the name of the standard library
+                  configuration file to use. Defining this cuts out the standard
+                  library selection logic, and eliminates the dependency on the header
+                  containing that logic. For example if you are using STLport, then
+                  you could define <code class="computeroutput"><span class="identifier">BOOST_STDLIB_CONFIG</span></code>
+                  to <boost/config/stdlib/stlport.hpp>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_PLATFORM_CONFIG</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  When defined, it should point to the name of the platform configuration
+                  file to use. Defining this cuts out the platform selection logic,
+                  and eliminates the dependency on the header containing that logic.
+                  For example if you are compiling on linux, then you could define
+                  <code class="computeroutput"><span class="identifier">BOOST_PLATFORM_CONFIG</span></code>
+                  to <boost/config/platform/linux.hpp>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_COMPILER_CONFIG</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  When defined, no compiler configuration file is selected or included,
+                  define when the compiler is fully conformant with the standard,
+                  or where the user header (see <code class="computeroutput"><span class="identifier">BOOST_USER_CONFIG</span></code>),
+                  has had any options necessary added to it, for example by an autoconf
+                  generated configure script.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_STDLIB_CONFIG</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  When defined, no standard library configuration file is selected
+                  or included, define when the standard library is fully conformant
+                  with the standard, or where the user header (see <code class="computeroutput"><span class="identifier">BOOST_USER_CONFIG</span></code>), has had any
+                  options necessary added to it, for example by an autoconf generated
+                  configure script.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_PLATFORM_CONFIG</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  When defined, no platform configuration file is selected or included,
+                  define when the platform is fully conformant with the standard
+                  (and has no useful extra features), or where the user header (see
+                  <code class="computeroutput"><span class="identifier">BOOST_USER_CONFIG</span></code>),
+                  has had any options necessary added to it, for example by an autoconf
+                  generated configure script.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_CONFIG</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Equivalent to defining all of <code class="computeroutput"><span class="identifier">BOOST_NO_COMPILER_CONFIG</span></code>,
+                  <code class="computeroutput"><span class="identifier">BOOST_NO_STDLIB_CONFIG</span></code>
+                  and <code class="computeroutput"><span class="identifier">BOOST_NO_PLATFORM_CONFIG</span></code>.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_STRICT_CONFIG</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  The normal behavior for compiler versions that are newer than the
+                  last known version, is to assume that they have all the same defects
+                  as the last known version. By setting this define, then compiler
+                  versions that are newer than the last known version are assumed
+                  to be fully conforming with the standard. This is probably most
+                  useful for boost developers or testers, and for those who want
+                  to use boost to test beta compiler versions.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_ASSERT_CONFIG</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  When this flag is set, if the config finds anything unknown, then
+                  it will stop with a #error rather than continue. Boost regression
+                  testers should set this define, as should anyone who wants to quickly
+                  check whether boost is supported on their platform.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_DISABLE_THREADS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  When defined, disables threading support, even if the compiler
+                  in its current translation mode supports multiple threads.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_DISABLE_WIN32</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  When defined, disables the use of Win32 specific API's, even when
+                  these are available. Also has the effect of setting <code class="computeroutput"><span class="identifier">BOOST_DISABLE_THREADS</span></code> unless
+                  <code class="computeroutput"><span class="identifier">BOOST_HAS_PTHREADS</span></code>
+                  is set. This option may be set automatically by the config system
+                  when it detects that the compiler is in "strict mode".
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_DISABLE_ABI_HEADERS</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Stops boost headers from including any prefix/suffix headers that
+                  normally control things like struct packing and alignment.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_ABI_PREFIX</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  A prefix header to include in place of whatever boost.config would
+                  normally select, any replacement should set up struct packing and
+                  alignment options as required.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_ABI_SUFFIX</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  A suffix header to include in place of whatever boost.config would
+                  normally select, any replacement should undo the effects of the
+                  prefix header.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_ALL_DYN_LINK</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Forces all libraries that have separate source, to be linked as
+                  dll's rather than static libraries on Microsoft Windows (this macro
+                  is used to turn on <code class="computeroutput"><span class="identifier">__declspec</span><span class="special">(</span><span class="identifier">dllimport</span><span class="special">)</span></code> modifiers, so that the compiler
+                  knows which symbols to look for in a dll rather than in a static
+                  library). Note that there may be some libraries that can only be
+                  statically linked (Boost.Test for example) and others which may
+                  only be dynamically linked (Boost.Thread for example), in these
+                  cases this macro has no effect.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_</span></code><span class="emphasis"><em>WHATEVER</em></span><code class="computeroutput"><span class="identifier">_DYN_LINK</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Forces library "whatever" to be linked as a dll rather
+                  than a static library on Microsoft Windows: replace the <span class="emphasis"><em>WHATEVER</em></span>
+                  part of the macro name with the name of the library that you want
+                  to dynamically link to, for example use <code class="computeroutput"><span class="identifier">BOOST_DATE_TIME_DYN_LINK</span></code>
+                  or <code class="computeroutput"><span class="identifier">BOOST_REGEX_DYN_LINK</span></code>
+                  etc (this macro is used to turn on <code class="computeroutput"><span class="identifier">__declspec</span><span class="special">(</span><span class="identifier">dllimport</span><span class="special">)</span></code> modifiers, so that the compiler
+                  knows which symbols to look for in a dll rather than in a static
+                  library). Note that there may be some libraries that can only be
+                  statically linked (Boost.Test for example) and others which may
+                  only be dynamically linked (Boost.Thread for example), in these
+                  cases this macro is unsupported.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_ALL_NO_LIB</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Tells the config system not to automatically select which libraries
+                  to link against. Normally if a compiler supports #pragma lib, then
+                  the correct library build variant will be automatically selected
+                  and linked against, simply by the act of including one of that
+                  library's headers. This macro turns that feature off.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_</span></code><span class="emphasis"><em>WHATEVER</em></span><code class="computeroutput"><span class="identifier">_NO_LIB</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Tells the config system not to automatically select which library
+                  to link against for library "whatever", replace <span class="emphasis"><em>WHATEVER</em></span>
+                  in the macro name with the name of the library; for example <code class="computeroutput"><span class="identifier">BOOST_DATE_TIME_NO_LIB</span></code> or <code class="computeroutput"><span class="identifier">BOOST_REGEX_NO_LIB</span></code>. Normally
+                  if a compiler supports <code class="computeroutput"><span class="preprocessor">#pragma</span>
+                  <span class="identifier">lib</span></code>, then the correct
+                  library build variant will be automatically selected and linked
+                  against, simply by the act of including one of that library's headers.
+                  This macro turns that feature off.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_LIB_DIAGNOSTIC</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Causes the auto-linking code to output diagnostic messages indicating
+                  the name of the library that is selected for linking.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_LIB_TOOLSET</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Overrides the name of the toolset part of the name of library being
+                  linked to; note if defined this must be defined to a quoted string
+                  literal, for example "abc".
+                </p>
+              </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.configuring_boost_for_your_platform.advanced_configuration_usage"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage" title="Advanced configuration usage">Advanced
+      configuration usage</a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_1__creating_our_own_frozen_configuration">Example
+        1: creating our own frozen configuration</a></span></dt>
+<dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_2__skipping_files_that_you_don_t_need">Example
+        2: skipping files that you don't need</a></span></dt>
+<dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_3__using_configure_script_to_freeze_the_boost_configuration">Example
+        3: using configure script to freeze the boost configuration</a></span></dt>
+</dl></div>
+<p>
+        By setting various macros on the compiler command line or by editing <boost/config/user.hpp>,
+        the boost configuration setup can be optimised in a variety of ways.
+      </p>
+<p>
+        Boost's configuration is structured so that the user-configuration is included
+        first (defaulting to <boost/config/user.hpp>
+        if <code class="computeroutput"><span class="identifier">BOOST_USER_CONFIG</span></code> is not
+        defined). This sets up any user-defined policies, and gives the user-configuration
+        a chance to influence what happens next.
+      </p>
+<p>
+        Next the compiler, standard library, and platform configuration files are
+        included. These are included via macros (<code class="computeroutput"><span class="identifier">BOOST_COMPILER_CONFIG</span></code>
+        etc, <a class="link" href="index.html#config_user_settable">see user settable macros</a>),
+        and if the corresponding macro is undefined then a separate header that detects
+        which compiler/standard library/platform is in use is included in order to
+        set these. The config can be told to ignore these headers altogether if the
+        corresponding <code class="computeroutput"><span class="identifier">BOOST_NO_XXX</span></code>
+        macro is set (for example <code class="computeroutput"><span class="identifier">BOOST_NO_COMPILER_CONFIG</span></code>
+        to disable including any compiler configuration file - <a class="link" href="index.html#config_user_settable">see
+        user settable macros</a>).
+      </p>
+<p>
+        Finally the boost configuration header, includes <boost/config/suffix.hpp>;
+        this header contains any boiler plate configuration code - for example where
+        one boost macro being set implies that another must be set also.
+      </p>
+<p>
+        The following usage examples represent just a few of the possibilities:
+      </p>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_1__creating_our_own_frozen_configuration"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_1__creating_our_own_frozen_configuration" title="Example 1: creating our own frozen configuration">Example
+        1: creating our own frozen configuration</a>
+</h4></div></div></div>
+<p>
+          Lets suppose that we're building boost with Visual C++ 6, and STLport 4.0.
+          Lets suppose also that we don't intend to update our compiler or standard
+          library any time soon. In order to avoid breaking dependencies when we
+          update boost, we may want to "freeze" our configuration headers,
+          so that we only have to rebuild our project if the boost code itself has
+          changed, and not because the boost config has been updated for more recent
+          versions of Visual C++ or STLport. We'll start by realising that the configuration
+          files in use are: <boost/config/compiler/visualc.hpp> for the compiler, <boost/config/stdlib/stlport.hpp> for the 
standard library, and
+          <boost/config/platform/win32.hpp> for the platform. Next we'll
+          create our own private configuration directory: <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">mysetup</span><span class="special">/</span></code>, and copy the configuration files into
+          there. Finally, open up <boost/config/user.hpp>
+          and edit the following defines:
+        </p>
+<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_COMPILER_CONFIG</span> <span class="string">"boost/config/mysetup/visualc.hpp"</span>
+<span class="preprocessor">#define</span> <span class="identifier">BOOST_STDLIB_CONFIG</span> <span class="string">"boost/config/mysetup/stlport.hpp"</span>
+<span class="preprocessor">#define</span> <span class="identifier">BOOST_USER_CONFIG</span> <span class="string">"boost/config/mysetup/win32.hpp"</span>
+</pre>
+<p>
+          Now when you use boost, its configuration header will go straight to our
+          "frozen" versions, and ignore the default versions, you will
+          now be insulated from any configuration changes when you update boost.
+          This technique is also useful if you want to modify some of the boost configuration
+          files; for example if you are working with a beta compiler release not
+          yet supported by boost.
+        </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_2__skipping_files_that_you_don_t_need"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_2__skipping_files_that_you_don_t_need" title="Example 2: skipping files that you don't need">Example
+        2: skipping files that you don't need</a>
+</h4></div></div></div>
+<p>
+          Lets suppose that you're using boost with a compiler that is fully conformant
+          with the standard; you're not interested in the fact that older versions
+          of your compiler may have had bugs, because you know that your current
+          version does not need any configuration macros setting. In a case like
+          this, you can define <code class="computeroutput"><span class="identifier">BOOST_NO_COMPILER_CONFIG</span></code>
+          either on the command line, or in <boost/config/user.hpp>,
+          and miss out the compiler configuration header altogether (actually you
+          miss out two headers, one which works out what the compiler is, and one
+          that configures boost for it). This has two consequences: the first is
+          that less code has to be compiled, and the second that you have removed
+          a dependency on two boost headers.
+        </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_3__using_configure_script_to_freeze_the_boost_configuration"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_3__using_configure_script_to_freeze_the_boost_configuration" title="Example 3: using configure script to freeze the boost configuration">Example
+        3: using configure script to freeze the boost configuration</a>
+</h4></div></div></div>
+<p>
+          If you are working on a unix-like platform then you can use the configure
+          script to generate a "frozen" configuration based on your current
+          compiler setup - <a class="link" href="index.html#config_config_script">see using the configure
+          script for more details</a>.
+        </p>
+</div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.configuring_boost_for_your_platform.testing_the_boost_configuration"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.testing_the_boost_configuration" title="Testing the boost configuration">Testing
+      the boost configuration</a>
+</h3></div></div></div>
+<p>
+        The boost configuration library provides a full set of regression test programs
+        under the <span class="emphasis"><em><boost-root></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">test</span><span class="special">/</span></code>
+        sub-directory:
+      </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                <p>
+                  File
+                </p>
+              </th>
+<th>
+                <p>
+                  Description
+                </p>
+              </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">config_info</span><span class="special">.</span><span class="identifier">cpp</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Prints out a detailed description of your compiler/standard library/platform
+                  setup, plus your current boost configuration. The information provided
+                  by this program useful in setting up the boost configuration files.
+                  If you report that boost is incorrectly configured for your compiler/library/platform
+                  then please include the output from this program when reporting
+                  the changes required.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">config_test</span><span class="special">.</span><span class="identifier">cpp</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  A monolithic test program that includes most of the individual
+                  test cases. This provides a quick check to see if boost is correctly
+                  configured for your compiler/library/platform.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">limits_test</span><span class="special">.</span><span class="identifier">cpp</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Tests your standard library's <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span></code>
+                  implementation (or its boost provided replacement if <code class="computeroutput"><span class="identifier">BOOST_NO_LIMITS</span></code> is defined).
+                  This test file fails with most versions of numeric_limits, mainly
+                  due to the way that some compilers treat NAN's and infinity.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">no_</span><span class="special">*</span><span class="identifier">pass</span><span class="special">.</span><span class="identifier">cpp</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Individual compiler defect test files. Each of these should compile,
+                  if one does not then the corresponding <code class="computeroutput"><span class="identifier">BOOST_NO_XXX</span></code>
+                  macro needs to be defined - see each test file for specific details.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">no_</span><span class="special">*</span><span class="identifier">fail</span><span class="special">.</span><span class="identifier">cpp</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Individual compiler defect test files. Each of these should not
+                  compile, if one does then the corresponding <code class="computeroutput"><span class="identifier">BOOST_NO_XXX</span></code>
+                  macro is defined when it need not be - see each test file for specific
+                  details.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">has_</span><span class="special">*</span><span class="identifier">pass</span><span class="special">.</span><span class="identifier">cpp</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Individual feature test files. If one of these does not compile
+                  then the corresponding <code class="computeroutput"><span class="identifier">BOOST_HAS_XXX</span></code>
+                  macro is defined when it should not be - see each test file for
+                  specific details.
+                </p>
+              </td>
+</tr>
+<tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">has_</span><span class="special">*</span><span class="identifier">fail</span><span class="special">.</span><span class="identifier">cpp</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  Individual feature test files. If one of these does compile then
+                  the corresponding <code class="computeroutput"><span class="identifier">BOOST_HAS_XXX</span></code>
+                  macro can be safely defined - see each test file for specific details.
+                </p>
+              </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+        Although you can run the configuration regression tests as individual test
+        files, there are rather a lot of them, so there are a couple of shortcuts
+        to help you out:
+      </p>
+<p>
+        If you have built the <a href="../../../../tools/regression/doc/index.html" target="_top">boost
+        regression test driver</a>, then you can use this to produce a nice html
+        formatted report of the results using the supplied test file.
+      </p>
+<p>
+        Alternatively you can run the configure script like this:
+      </p>
+<div class="blockquote"><blockquote class="blockquote"><p>
+          <code class="computeroutput"><span class="special">./</span><span class="identifier">configure</span>
+          <span class="special">--</span><span class="identifier">enable</span><span class="special">-</span><span class="identifier">test</span></code>
+        </p></blockquote></div>
+<p>
+        in which case the script will test the current configuration rather than
+        creating a new one from scratch.
+      </p>
+<p>
+        If you are reporting the results of these tests for a new platform/library/compiler
+        then please include a log of the full compiler output, the output from <code class="computeroutput"><span class="identifier">config_info</span><span class="special">.</span><span class="identifier">cpp</span></code>, and the pass/fail test results.
+      </p>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"><p><small>Last revised: November 20, 2012 at 20:33:30 GMT</small></p></td>
+<td align="right"><div class="copyright-footer"></div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav"><a accesskey="n" href="boost_config/boost_macro_reference.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a></div>
+</body>
+</html>