forked from boostorg/config
Merge all config diffs from trunk
[SVN r62379]
This commit is contained in:
@ -172,6 +172,25 @@
|
|||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<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>
|
<td>
|
||||||
<p>
|
<p>
|
||||||
<code class="computeroutput"><span class="identifier">BOOST_NO_CTYPE_FUNCTIONS</span></code>
|
<code class="computeroutput"><span class="identifier">BOOST_NO_CTYPE_FUNCTIONS</span></code>
|
||||||
@ -1341,23 +1360,6 @@
|
|||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr>
|
<tr>
|
||||||
<td>
|
|
||||||
<p>
|
|
||||||
<code class="computeroutput"><span class="identifier">BOOST_HAS_DECLSPEC</span></code>
|
|
||||||
</p>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<p>
|
|
||||||
Compiler
|
|
||||||
</p>
|
|
||||||
</td>
|
|
||||||
<td>
|
|
||||||
<p>
|
|
||||||
The compiler uses <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 export/import symbols from dll's.
|
|
||||||
</p>
|
|
||||||
</td>
|
|
||||||
</tr>
|
|
||||||
<tr>
|
|
||||||
<td>
|
<td>
|
||||||
<p>
|
<p>
|
||||||
<code class="computeroutput"><span class="identifier">BOOST_HAS_DIRENT_H</span></code>
|
<code class="computeroutput"><span class="identifier">BOOST_HAS_DIRENT_H</span></code>
|
||||||
@ -2634,7 +2636,7 @@
|
|||||||
<tr>
|
<tr>
|
||||||
<td>
|
<td>
|
||||||
<p>
|
<p>
|
||||||
<code class="computeroutput"><span class="identifier">BOOST_NO_EXPLICIT_CONVERSION_OPERATIONS</span></code>
|
<code class="computeroutput"><span class="identifier">BOOST_NO_EXPLICIT_CONVERSION_OPERATORS</span></code>
|
||||||
</p>
|
</p>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
@ -2652,8 +2654,8 @@
|
|||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
<p>
|
<p>
|
||||||
The compiler does not support explicit instantiation declarations
|
The compiler does not support explicit instantiation forward declarations
|
||||||
for templates (<code class="computeroutput"><span class="keyword">explicit</span> <span class="keyword">template</span></code>).
|
for templates (<code class="computeroutput"><span class="keyword">extern</span> <span class="keyword">template</span> <span class="special">...</span></code>).
|
||||||
</p>
|
</p>
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
@ -3311,6 +3313,23 @@
|
|||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<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>
|
<td>
|
||||||
<p>
|
<p>
|
||||||
<code class="computeroutput"><span class="identifier">BOOST_WINDOWS</span></code>
|
<code class="computeroutput"><span class="identifier">BOOST_WINDOWS</span></code>
|
||||||
@ -3427,6 +3446,8 @@
|
|||||||
for libraries with separate source code</a>
|
for libraries with separate source code</a>
|
||||||
</h3></div></div></div>
|
</h3></div></div></div>
|
||||||
<div class="toc"><dl>
|
<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
|
<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>
|
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
|
<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
|
||||||
@ -3434,10 +3455,178 @@
|
|||||||
</dl></div>
|
</dl></div>
|
||||||
<p>
|
<p>
|
||||||
The following macros and helper headers are of use to authors whose libraries
|
The following macros and helper headers are of use to authors whose libraries
|
||||||
include separate source code, and are intended to address two issues: fixing
|
include separate source code, and are intended to address several issues:
|
||||||
the ABI of the compiled library, and selecting which compiled library to
|
|
||||||
link against based upon the compilers settings.
|
|
||||||
</p>
|
</p>
|
||||||
|
<div class="itemizedlist"><ul type="disc">
|
||||||
|
<li>
|
||||||
|
Controlling shared library symbol visibility
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
Fixing the ABI of the compiled library
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
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" lang="en">
|
||||||
|
<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" lang="en">
|
<div class="section" lang="en">
|
||||||
<div class="titlepage"><div><div><h4 class="title">
|
<div class="titlepage"><div><div><h4 class="title">
|
||||||
<a name="boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code.abi_fixing"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code.abi_fixing" title="ABI Fixing">ABI
|
<a name="boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code.abi_fixing"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code.abi_fixing" title="ABI Fixing">ABI
|
||||||
|
@ -28,7 +28,7 @@
|
|||||||
</h3></div></div></div>
|
</h3></div></div></div>
|
||||||
<div><p class="copyright">Copyright © 2001 -2007 Beman Dawes, Vesa Karvonen, John Maddock</p></div>
|
<div><p class="copyright">Copyright © 2001 -2007 Beman Dawes, Vesa Karvonen, John Maddock</p></div>
|
||||||
<div><div class="legalnotice">
|
<div><div class="legalnotice">
|
||||||
<a name="id793416"></a><p>
|
<a name="id903664"></a><p>
|
||||||
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
Distributed under the Boost Software License, Version 1.0. (See accompanying
|
||||||
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
|
||||||
</p>
|
</p>
|
||||||
@ -960,7 +960,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
|
||||||
<td align="left"><p><small>Last revised: March 02, 2010 at 17:08:14 GMT</small></p></td>
|
<td align="left"><p><small>Last revised: May 27, 2010 at 08:46:14 GMT</small></p></td>
|
||||||
<td align="right"><div class="copyright-footer"></div></td>
|
<td align="right"><div class="copyright-footer"></div></td>
|
||||||
</tr></table>
|
</tr></table>
|
||||||
<hr>
|
<hr>
|
||||||
|
@ -49,6 +49,10 @@ Koenig lookup); see std::3.4.2 \[basic.koenig.lookup\]
|
|||||||
[[`BOOST_NO_AUTO_PTR`][Standard library][
|
[[`BOOST_NO_AUTO_PTR`][Standard library][
|
||||||
If the compiler / library supplies non-standard or broken `std::auto_ptr`.
|
If the compiler / library supplies non-standard or broken `std::auto_ptr`.
|
||||||
]]
|
]]
|
||||||
|
[[`BOOST_NO_COMPLETE_VALUE_INITIALIZATION`][Compiler][
|
||||||
|
Compiler has not completely implemented value-initialization.
|
||||||
|
See also [@../../../utility/value_init.htm#compiler_issues The Utility\/Value Init docs]
|
||||||
|
]]
|
||||||
[[`BOOST_NO_CTYPE_FUNCTIONS`][Platform][
|
[[`BOOST_NO_CTYPE_FUNCTIONS`][Platform][
|
||||||
The Platform does not provide functions for the character-classifying
|
The Platform does not provide functions for the character-classifying
|
||||||
operations `<ctype.h>` and `<cctype>`, only macros.
|
operations `<ctype.h>` and `<cctype>`, only macros.
|
||||||
@ -313,6 +317,7 @@ void g() { return f(); }
|
|||||||
|
|
||||||
[#config_features]
|
[#config_features]
|
||||||
|
|
||||||
|
|
||||||
[section Macros that describe optional features]
|
[section Macros that describe optional features]
|
||||||
|
|
||||||
The following macros describe features that are not required by the C++
|
The following macros describe features that are not required by the C++
|
||||||
@ -328,10 +333,6 @@ The platform supports BeOS style threads.
|
|||||||
[[`BOOST_HAS_CLOCK_GETTIME`][Platform][
|
[[`BOOST_HAS_CLOCK_GETTIME`][Platform][
|
||||||
The platform has the POSIX API `clock_gettime`.
|
The platform has the POSIX API `clock_gettime`.
|
||||||
]]
|
]]
|
||||||
[[`BOOST_HAS_DECLSPEC`][Compiler][
|
|
||||||
The compiler uses `__declspec(dllexport)` and `__declspec(dllimport)` to
|
|
||||||
export/import symbols from dll's.
|
|
||||||
]]
|
|
||||||
[[`BOOST_HAS_DIRENT_H`][Platform][
|
[[`BOOST_HAS_DIRENT_H`][Platform][
|
||||||
The platform has the POSIX header `<dirent.h>`.
|
The platform has the POSIX header `<dirent.h>`.
|
||||||
]]
|
]]
|
||||||
@ -577,11 +578,11 @@ defaulted (`= default`) functions.
|
|||||||
[[`BOOST_NO_DELETED_FUNCTIONS`][The compiler does not support
|
[[`BOOST_NO_DELETED_FUNCTIONS`][The compiler does not support
|
||||||
deleted (`= delete`) functions.
|
deleted (`= delete`) functions.
|
||||||
]]
|
]]
|
||||||
[[`BOOST_NO_EXPLICIT_CONVERSION_OPERATIONS`][The compiler does not support
|
[[`BOOST_NO_EXPLICIT_CONVERSION_OPERATORS`][The compiler does not support
|
||||||
explicit conversion operators (`explicit operator T()`).
|
explicit conversion operators (`explicit operator T()`).
|
||||||
]]
|
]]
|
||||||
[[`BOOST_NO_EXTERN_TEMPLATE`][The compiler does not support
|
[[`BOOST_NO_EXTERN_TEMPLATE`][The compiler does not support
|
||||||
explicit instantiation declarations for templates (`explicit template`).
|
explicit instantiation forward declarations for templates (`extern template ...`).
|
||||||
]]
|
]]
|
||||||
[[`BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS`][The compiler does not support
|
[[`BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS`][The compiler does not support
|
||||||
default template arguments for function templates.
|
default template arguments for function templates.
|
||||||
@ -864,9 +865,98 @@ the configuration.
|
|||||||
[section Macros for libraries with separate source code]
|
[section Macros for libraries with separate source code]
|
||||||
|
|
||||||
The following macros and helper headers are of use to authors whose libraries
|
The following macros and helper headers are of use to authors whose libraries
|
||||||
include separate source code, and are intended to address two issues: fixing
|
include separate source code, and are intended to address several issues:
|
||||||
the ABI of the compiled library, and selecting which compiled library to link
|
|
||||||
against based upon the compilers settings.
|
* Controlling shared library symbol visibility
|
||||||
|
* Fixing the ABI of the compiled library
|
||||||
|
* Selecting which compiled library to link against based upon the compilers settings
|
||||||
|
|
||||||
|
See [@http://svn.boost.org/trac/boost/wiki/Guidelines/Separate Guidelines for Authors of Boost Libraries Containing Separate Source]
|
||||||
|
|
||||||
|
[section Macros controlling shared library symbol visibility]
|
||||||
|
|
||||||
|
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.
|
||||||
|
|
||||||
|
The Microsoft VC++ compiler has long supplied
|
||||||
|
`__declspec(dllexport)` and `__declspec(dllimport)` extensions for this purpose,
|
||||||
|
as do virtually all other compilers targeting the Windows platform.
|
||||||
|
|
||||||
|
Modern versions of the GNU GCC compiler provide the `__attribute__((visibility("default")))`
|
||||||
|
extension to indicate that a symbol should be exported. All other symbols may be hidden by using the
|
||||||
|
`-fvisibility-hidden` or `-fvisibility-ms-compat` compiler switches.
|
||||||
|
|
||||||
|
Boost supplies several macros to make it easier to manage symbol visibility in a way that
|
||||||
|
is portable between compilers and operating systems.
|
||||||
|
|
||||||
|
[table
|
||||||
|
[[Macro ][Description ]]
|
||||||
|
[[`BOOST_SYMBOL_EXPORT`][
|
||||||
|
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.
|
||||||
|
]]
|
||||||
|
[[`BOOST_SYMBOL_IMPORT`][
|
||||||
|
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.
|
||||||
|
]]
|
||||||
|
[[`BOOST_SYMBOL_VISIBLE`][
|
||||||
|
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:
|
||||||
|
``
|
||||||
|
class BOOST_SYMBOL_VISIBLE my_exception : public std::runtime_error { ... };
|
||||||
|
``
|
||||||
|
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.
|
||||||
|
]]
|
||||||
|
[[`BOOST_HAS_DECLSPEC`][
|
||||||
|
The compiler has C++ extensions `__declspec(dllexport)` and `__declspec(dllimport)` to control
|
||||||
|
export/import of symbols from shared libraries.
|
||||||
|
['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.]
|
||||||
|
]]
|
||||||
|
]
|
||||||
|
|
||||||
|
Typical usage:
|
||||||
|
|
||||||
|
[*boost/foo/config.hpp]
|
||||||
|
|
||||||
|
...
|
||||||
|
#if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_FOO_DYN_LINK)
|
||||||
|
# if defined(BOOST_FOO_SOURCE)
|
||||||
|
# define BOOST_FOO_DECL BOOST_SYMBOL_EXPORT
|
||||||
|
# else
|
||||||
|
# define BOOST_FOO_DECL BOOST_SYMBOL_IMPORT
|
||||||
|
# endif
|
||||||
|
#else
|
||||||
|
# define BOOST_FOO_DECL
|
||||||
|
#endif
|
||||||
|
...
|
||||||
|
|
||||||
|
[*boost/foo/foo.hpp]
|
||||||
|
|
||||||
|
#include <boost/foo/config.hpp>
|
||||||
|
...
|
||||||
|
class BOOST_FOO_DECL bar { ... };
|
||||||
|
...
|
||||||
|
void BOOST_FOO_DECL f();
|
||||||
|
...
|
||||||
|
|
||||||
|
[*boost/libs/foo/src/foo.cpp]
|
||||||
|
|
||||||
|
#define BOOST_FOO_SOURCE
|
||||||
|
#include <boost/foo/foo.hpp>
|
||||||
|
...
|
||||||
|
void BOOST_FOO_DECL f()
|
||||||
|
{
|
||||||
|
...
|
||||||
|
}
|
||||||
|
...
|
||||||
|
|
||||||
|
[endsect]
|
||||||
|
|
||||||
[section ABI Fixing]
|
[section ABI Fixing]
|
||||||
|
|
||||||
@ -988,3 +1078,6 @@ match that used to create the libraries via bjam 's install rules.
|
|||||||
[endsect]
|
[endsect]
|
||||||
|
|
||||||
[endsect]
|
[endsect]
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -21,7 +21,7 @@
|
|||||||
// 8026 - functions taking class by value arguments are not expanded inline
|
// 8026 - functions taking class by value arguments are not expanded inline
|
||||||
|
|
||||||
#pragma nopushoptwarn
|
#pragma nopushoptwarn
|
||||||
# pragma option push -Vx -Ve -a8 -b -pc -Vmv -VC- -Vl- -w-8027 -w-8026
|
# pragma option push -a8 -Vx- -Ve- -b- -pc -Vmv -VC- -Vl- -w-8027 -w-8026
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -25,6 +25,9 @@ BOOST_LIB_DIAGNOSTIC: Optional: when set the header will print out the name
|
|||||||
of the library selected (useful for debugging).
|
of the library selected (useful for debugging).
|
||||||
BOOST_AUTO_LINK_NOMANGLE: Specifies that we should link to BOOST_LIB_NAME.lib,
|
BOOST_AUTO_LINK_NOMANGLE: Specifies that we should link to BOOST_LIB_NAME.lib,
|
||||||
rather than a mangled-name version.
|
rather than a mangled-name version.
|
||||||
|
BOOST_AUTO_LINK_TAGGED: Specifies that we link to libraries built with the --layout=tagged option.
|
||||||
|
This is essentially the same as the default name-mangled version, but without
|
||||||
|
the compiler name and version, or the Boost version. Just the build options.
|
||||||
|
|
||||||
These macros will be undef'ed at the end of the header, further this header
|
These macros will be undef'ed at the end of the header, further this header
|
||||||
has no include guards - so be sure to include it only once from your library!
|
has no include guards - so be sure to include it only once from your library!
|
||||||
@ -60,6 +63,8 @@ BOOST_LIB_RT_OPT: A suffix that indicates the runtime library used,
|
|||||||
a hiphen:
|
a hiphen:
|
||||||
|
|
||||||
s static runtime (dynamic if not present).
|
s static runtime (dynamic if not present).
|
||||||
|
g debug/diagnostic runtime (release if not present).
|
||||||
|
y Python debug/diagnostic runtime (release if not present).
|
||||||
d debug build (release if not present).
|
d debug build (release if not present).
|
||||||
g debug/diagnostic runtime (release if not present).
|
g debug/diagnostic runtime (release if not present).
|
||||||
p STLPort Build.
|
p STLPort Build.
|
||||||
@ -183,8 +188,16 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y.
|
|||||||
|
|
||||||
# if (defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)) && (defined(_STLP_OWN_IOSTREAMS) || defined(__STL_OWN_IOSTREAMS))
|
# if (defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)) && (defined(_STLP_OWN_IOSTREAMS) || defined(__STL_OWN_IOSTREAMS))
|
||||||
|
|
||||||
# if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))
|
# if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))\
|
||||||
|
&& defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
|
||||||
|
# define BOOST_LIB_RT_OPT "-gydp"
|
||||||
|
# elif defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))
|
||||||
# define BOOST_LIB_RT_OPT "-gdp"
|
# define BOOST_LIB_RT_OPT "-gdp"
|
||||||
|
# elif defined(_DEBUG)\
|
||||||
|
&& defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
|
||||||
|
# define BOOST_LIB_RT_OPT "-gydp"
|
||||||
|
# pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1")
|
||||||
|
# error "Build options aren't compatible with pre-built libraries"
|
||||||
# elif defined(_DEBUG)
|
# elif defined(_DEBUG)
|
||||||
# define BOOST_LIB_RT_OPT "-gdp"
|
# define BOOST_LIB_RT_OPT "-gdp"
|
||||||
# pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1")
|
# pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1")
|
||||||
@ -195,8 +208,16 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y.
|
|||||||
|
|
||||||
# elif defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)
|
# elif defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)
|
||||||
|
|
||||||
# if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))
|
# if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))\
|
||||||
|
&& defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
|
||||||
|
# define BOOST_LIB_RT_OPT "-gydpn"
|
||||||
|
# elif defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))
|
||||||
# define BOOST_LIB_RT_OPT "-gdpn"
|
# define BOOST_LIB_RT_OPT "-gdpn"
|
||||||
|
# elif defined(_DEBUG)\
|
||||||
|
&& defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
|
||||||
|
# define BOOST_LIB_RT_OPT "-gydpn"
|
||||||
|
# pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1")
|
||||||
|
# error "Build options aren't compatible with pre-built libraries"
|
||||||
# elif defined(_DEBUG)
|
# elif defined(_DEBUG)
|
||||||
# define BOOST_LIB_RT_OPT "-gdpn"
|
# define BOOST_LIB_RT_OPT "-gdpn"
|
||||||
# pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1")
|
# pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1")
|
||||||
@ -207,7 +228,9 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y.
|
|||||||
|
|
||||||
# else
|
# else
|
||||||
|
|
||||||
# if defined(_DEBUG)
|
# if defined(_DEBUG) && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
|
||||||
|
# define BOOST_LIB_RT_OPT "-gyd"
|
||||||
|
# elif defined(_DEBUG)
|
||||||
# define BOOST_LIB_RT_OPT "-gd"
|
# define BOOST_LIB_RT_OPT "-gd"
|
||||||
# else
|
# else
|
||||||
# define BOOST_LIB_RT_OPT
|
# define BOOST_LIB_RT_OPT
|
||||||
@ -219,8 +242,16 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y.
|
|||||||
|
|
||||||
# if (defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)) && (defined(_STLP_OWN_IOSTREAMS) || defined(__STL_OWN_IOSTREAMS))
|
# if (defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)) && (defined(_STLP_OWN_IOSTREAMS) || defined(__STL_OWN_IOSTREAMS))
|
||||||
|
|
||||||
# if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))
|
# if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))\
|
||||||
|
&& defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
|
||||||
|
# define BOOST_LIB_RT_OPT "-sgydp"
|
||||||
|
# elif defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))
|
||||||
# define BOOST_LIB_RT_OPT "-sgdp"
|
# define BOOST_LIB_RT_OPT "-sgdp"
|
||||||
|
# elif defined(_DEBUG)\
|
||||||
|
&& defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
|
||||||
|
# define BOOST_LIB_RT_OPT "-sgydp"
|
||||||
|
# pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1")
|
||||||
|
# error "Build options aren't compatible with pre-built libraries"
|
||||||
# elif defined(_DEBUG)
|
# elif defined(_DEBUG)
|
||||||
# define BOOST_LIB_RT_OPT "-sgdp"
|
# define BOOST_LIB_RT_OPT "-sgdp"
|
||||||
# pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1")
|
# pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1")
|
||||||
@ -231,8 +262,16 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y.
|
|||||||
|
|
||||||
# elif defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)
|
# elif defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)
|
||||||
|
|
||||||
# if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))
|
# if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))\
|
||||||
|
&& defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
|
||||||
|
# define BOOST_LIB_RT_OPT "-sgydpn"
|
||||||
|
# elif defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))
|
||||||
# define BOOST_LIB_RT_OPT "-sgdpn"
|
# define BOOST_LIB_RT_OPT "-sgdpn"
|
||||||
|
# elif defined(_DEBUG)\
|
||||||
|
&& defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
|
||||||
|
# define BOOST_LIB_RT_OPT "-sgydpn"
|
||||||
|
# pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1")
|
||||||
|
# error "Build options aren't compatible with pre-built libraries"
|
||||||
# elif defined(_DEBUG)
|
# elif defined(_DEBUG)
|
||||||
# define BOOST_LIB_RT_OPT "-sgdpn"
|
# define BOOST_LIB_RT_OPT "-sgdpn"
|
||||||
# pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1")
|
# pragma message("warning: STLPort debug versions are built with /D_STLP_DEBUG=1")
|
||||||
@ -243,7 +282,10 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y.
|
|||||||
|
|
||||||
# else
|
# else
|
||||||
|
|
||||||
# if defined(_DEBUG)
|
# if defined(_DEBUG)\
|
||||||
|
&& defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
|
||||||
|
# define BOOST_LIB_RT_OPT "-sgyd"
|
||||||
|
# elif defined(_DEBUG)
|
||||||
# define BOOST_LIB_RT_OPT "-sgd"
|
# define BOOST_LIB_RT_OPT "-sgd"
|
||||||
# else
|
# else
|
||||||
# define BOOST_LIB_RT_OPT "-s"
|
# define BOOST_LIB_RT_OPT "-s"
|
||||||
@ -270,16 +312,26 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y.
|
|||||||
|
|
||||||
# ifdef _RTLDLL
|
# ifdef _RTLDLL
|
||||||
|
|
||||||
# ifdef BOOST_BORLAND_DEBUG
|
# if defined(BOOST_BORLAND_DEBUG)\
|
||||||
|
&& defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
|
||||||
|
# define BOOST_LIB_RT_OPT "-yd"
|
||||||
|
# elif defined(BOOST_BORLAND_DEBUG)
|
||||||
# define BOOST_LIB_RT_OPT "-d"
|
# define BOOST_LIB_RT_OPT "-d"
|
||||||
|
# elif defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
|
||||||
|
# define BOOST_LIB_RT_OPT -y
|
||||||
# else
|
# else
|
||||||
# define BOOST_LIB_RT_OPT
|
# define BOOST_LIB_RT_OPT
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
# else
|
# else
|
||||||
|
|
||||||
# ifdef BOOST_BORLAND_DEBUG
|
# if defined(BOOST_BORLAND_DEBUG)\
|
||||||
|
&& defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
|
||||||
|
# define BOOST_LIB_RT_OPT "-syd"
|
||||||
|
# elif defined(BOOST_BORLAND_DEBUG)
|
||||||
# define BOOST_LIB_RT_OPT "-sd"
|
# define BOOST_LIB_RT_OPT "-sd"
|
||||||
|
# elif defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
|
||||||
|
# define BOOST_LIB_RT_OPT "-sy"
|
||||||
# else
|
# else
|
||||||
# define BOOST_LIB_RT_OPT "-s"
|
# define BOOST_LIB_RT_OPT "-s"
|
||||||
# endif
|
# endif
|
||||||
@ -309,16 +361,21 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y.
|
|||||||
&& defined(BOOST_LIB_RT_OPT) \
|
&& defined(BOOST_LIB_RT_OPT) \
|
||||||
&& defined(BOOST_LIB_VERSION)
|
&& defined(BOOST_LIB_VERSION)
|
||||||
|
|
||||||
#ifndef BOOST_AUTO_LINK_NOMANGLE
|
#ifdef BOOST_AUTO_LINK_TAGGED
|
||||||
# pragma comment(lib, BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT "-" BOOST_LIB_VERSION ".lib")
|
# pragma commentcomment(lib, BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT ".lib")
|
||||||
# ifdef BOOST_LIB_DIAGNOSTIC
|
# ifdef BOOST_LIB_DIAGNOSTIC
|
||||||
# pragma message ("Linking to lib file: " BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT "-" BOOST_LIB_VERSION ".lib")
|
# pragma message ("Linking to lib file: " BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT "-" BOOST_LIB_VERSION ".lib")
|
||||||
# endif
|
# endif
|
||||||
#else
|
#elif defined(BOOST_AUTO_LINK_NOMANGLE)
|
||||||
# pragma comment(lib, BOOST_STRINGIZE(BOOST_LIB_NAME) ".lib")
|
# pragma comment(lib, BOOST_STRINGIZE(BOOST_LIB_NAME) ".lib")
|
||||||
# ifdef BOOST_LIB_DIAGNOSTIC
|
# ifdef BOOST_LIB_DIAGNOSTIC
|
||||||
# pragma message ("Linking to lib file: " BOOST_STRINGIZE(BOOST_LIB_NAME) ".lib")
|
# pragma message ("Linking to lib file: " BOOST_STRINGIZE(BOOST_LIB_NAME) ".lib")
|
||||||
# endif
|
# endif
|
||||||
|
#else
|
||||||
|
# pragma comment(lib, BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT "-" BOOST_LIB_VERSION ".lib")
|
||||||
|
# ifdef BOOST_LIB_DIAGNOSTIC
|
||||||
|
# pragma message ("Linking to lib file: " BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT "-" BOOST_LIB_VERSION ".lib")
|
||||||
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#else
|
#else
|
||||||
@ -361,13 +418,3 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y.
|
|||||||
# undef BOOST_AUTO_LINK_NOMANGLE
|
# undef BOOST_AUTO_LINK_NOMANGLE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -218,7 +218,7 @@
|
|||||||
//
|
//
|
||||||
// check for exception handling support:
|
// check for exception handling support:
|
||||||
//
|
//
|
||||||
#if !defined(_CPPUNWIND) && !defined(BOOST_CPPUNWIND) && !defined(__EXCEPTIONS)
|
#if !defined(_CPPUNWIND) && !defined(BOOST_CPPUNWIND) && !defined(__EXCEPTIONS) && !defined(BOOST_NO_EXCEPTIONS)
|
||||||
# define BOOST_NO_EXCEPTIONS
|
# define BOOST_NO_EXCEPTIONS
|
||||||
#endif
|
#endif
|
||||||
//
|
//
|
||||||
@ -230,8 +230,9 @@
|
|||||||
//
|
//
|
||||||
// all versions support __declspec:
|
// all versions support __declspec:
|
||||||
//
|
//
|
||||||
#ifndef __STRICT_ANSI__
|
#if defined(__STRICT_ANSI__)
|
||||||
# define BOOST_HAS_DECLSPEC
|
// config/platform/win32.hpp will define BOOST_SYMBOL_EXPORT, etc., unless already defined
|
||||||
|
# define BOOST_SYMBOL_EXPORT
|
||||||
#endif
|
#endif
|
||||||
//
|
//
|
||||||
// ABI fixing headers:
|
// ABI fixing headers:
|
||||||
@ -261,6 +262,13 @@
|
|||||||
# define BOOST_NO_VOID_RETURNS
|
# define BOOST_NO_VOID_RETURNS
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
// Borland did not implement value-initialization completely, as I reported
|
||||||
|
// in 2007, Borland Report 51854, "Value-initialization: POD struct should be
|
||||||
|
// zero-initialized", http://qc.embarcadero.com/wc/qcmain.aspx?d=51854
|
||||||
|
// See also: http://www.boost.org/libs/utility/value_init.htm#compiler_issues
|
||||||
|
// (Niels Dekker, LKEB, April 2010)
|
||||||
|
#define BOOST_NO_COMPLETE_VALUE_INITIALIZATION
|
||||||
|
|
||||||
#define BOOST_COMPILER "Borland C++ version " BOOST_STRINGIZE(__BORLANDC__)
|
#define BOOST_COMPILER "Borland C++ version " BOOST_STRINGIZE(__BORLANDC__)
|
||||||
|
|
||||||
|
|
||||||
|
@ -18,12 +18,6 @@
|
|||||||
# define BOOST_NO_RTTI
|
# define BOOST_NO_RTTI
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if defined(__int32)
|
|
||||||
// HACK: Clang only defines the type __int32 in Microsoft-compatibility mode,
|
|
||||||
// which means that declspecs are also available
|
|
||||||
# define BOOST_HAS_DECLSPEC
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(__int64)
|
#if defined(__int64)
|
||||||
# define BOOST_HAS_MS_INT64
|
# define BOOST_HAS_MS_INT64
|
||||||
#endif
|
#endif
|
||||||
@ -59,6 +53,13 @@
|
|||||||
// them is wrong.
|
// them is wrong.
|
||||||
#define BOOST_NO_EXTERN_TEMPLATE
|
#define BOOST_NO_EXTERN_TEMPLATE
|
||||||
|
|
||||||
|
// Clang version 2.0 (trunk 103769) does not yet properly
|
||||||
|
// value-initialize objects of a pointer-to-member type,
|
||||||
|
// as was reported by Christopher Jefferson in May 2010, Bug 7139,
|
||||||
|
// "ptr to member not zeroed", http://llvm.org/bugs/show_bug.cgi?id=7139
|
||||||
|
// (Niels Dekker, LKEB, May 2010)
|
||||||
|
#define BOOST_NO_COMPLETE_VALUE_INITIALIZATION
|
||||||
|
|
||||||
#ifndef BOOST_COMPILER
|
#ifndef BOOST_COMPILER
|
||||||
# define BOOST_COMPILER "Clang version " __clang_version__
|
# define BOOST_COMPILER "Clang version " __clang_version__
|
||||||
#endif
|
#endif
|
||||||
|
@ -19,8 +19,8 @@
|
|||||||
#endif
|
#endif
|
||||||
//
|
//
|
||||||
// versions check:
|
// versions check:
|
||||||
// last known and checked version is 0x620
|
// last known and checked version is 0x621
|
||||||
#if (__CODEGEARC__ > 0x620)
|
#if (__CODEGEARC__ > 0x621)
|
||||||
# if defined(BOOST_ASSERT_CONFIG)
|
# if defined(BOOST_ASSERT_CONFIG)
|
||||||
# error "Unknown compiler version - please run the configure tests and report the results"
|
# error "Unknown compiler version - please run the configure tests and report the results"
|
||||||
# else
|
# else
|
||||||
@ -41,7 +41,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
// CodeGear C++ Builder 2010
|
// CodeGear C++ Builder 2010
|
||||||
#if (__CODEGEARC__ <= 0x620)
|
#if (__CODEGEARC__ <= 0x621)
|
||||||
# define BOOST_NO_TYPENAME_WITH_CTOR // Cannot use typename keyword when making temporaries of a dependant type
|
# define BOOST_NO_TYPENAME_WITH_CTOR // Cannot use typename keyword when making temporaries of a dependant type
|
||||||
# define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
|
# define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
|
||||||
# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
|
# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
|
||||||
@ -51,6 +51,15 @@
|
|||||||
// Temporary hack, until specific MPL preprocessed headers are generated
|
// Temporary hack, until specific MPL preprocessed headers are generated
|
||||||
# define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
|
# define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
|
||||||
|
|
||||||
|
// CodeGear has not yet completely implemented value-initialization, for
|
||||||
|
// example for array types, as I reported in 2010: Embarcadero Report 83751,
|
||||||
|
// "Value-initialization: arrays should have each element value-initialized",
|
||||||
|
// http://qc.embarcadero.com/wc/qcmain.aspx?d=83751
|
||||||
|
// Last checked version: Embarcadero C++ 6.21
|
||||||
|
// See also: http://www.boost.org/libs/utility/value_init.htm#compiler_issues
|
||||||
|
// (Niels Dekker, LKEB, April 2010)
|
||||||
|
# define BOOST_NO_COMPLETE_VALUE_INITIALIZATION
|
||||||
|
|
||||||
# ifdef NDEBUG
|
# ifdef NDEBUG
|
||||||
// fix broken <cstring> so that Boost.test works:
|
// fix broken <cstring> so that Boost.test works:
|
||||||
# include <cstring>
|
# include <cstring>
|
||||||
@ -66,6 +75,11 @@
|
|||||||
//
|
//
|
||||||
// C++0x macros:
|
// C++0x macros:
|
||||||
//
|
//
|
||||||
|
#if (__CODEGEARC__ <= 0x620)
|
||||||
|
#define BOOST_NO_STATIC_ASSERT
|
||||||
|
#else
|
||||||
|
#define BOOST_HAS_STATIC_ASSERT
|
||||||
|
#endif
|
||||||
#define BOOST_HAS_CHAR16_T
|
#define BOOST_HAS_CHAR16_T
|
||||||
#define BOOST_HAS_CHAR32_T
|
#define BOOST_HAS_CHAR32_T
|
||||||
#define BOOST_HAS_LONG_LONG
|
#define BOOST_HAS_LONG_LONG
|
||||||
@ -91,7 +105,6 @@
|
|||||||
#define BOOST_NO_RAW_LITERALS
|
#define BOOST_NO_RAW_LITERALS
|
||||||
#define BOOST_NO_RVALUE_REFERENCES
|
#define BOOST_NO_RVALUE_REFERENCES
|
||||||
#define BOOST_NO_SFINAE_EXPR
|
#define BOOST_NO_SFINAE_EXPR
|
||||||
#define BOOST_NO_STATIC_ASSERT
|
|
||||||
#define BOOST_NO_TEMPLATE_ALIASES
|
#define BOOST_NO_TEMPLATE_ALIASES
|
||||||
#define BOOST_NO_UNICODE_LITERALS
|
#define BOOST_NO_UNICODE_LITERALS
|
||||||
#define BOOST_NO_VARIADIC_TEMPLATES
|
#define BOOST_NO_VARIADIC_TEMPLATES
|
||||||
@ -122,7 +135,7 @@
|
|||||||
//
|
//
|
||||||
// check for exception handling support:
|
// check for exception handling support:
|
||||||
//
|
//
|
||||||
#if !defined(_CPPUNWIND) && !defined(BOOST_CPPUNWIND) && !defined(__EXCEPTIONS)
|
#if !defined(_CPPUNWIND) && !defined(BOOST_CPPUNWIND) && !defined(__EXCEPTIONS) && !defined(BOOST_NO_EXCEPTIONS)
|
||||||
# define BOOST_NO_EXCEPTIONS
|
# define BOOST_NO_EXCEPTIONS
|
||||||
#endif
|
#endif
|
||||||
//
|
//
|
||||||
@ -134,8 +147,9 @@
|
|||||||
//
|
//
|
||||||
// all versions support __declspec:
|
// all versions support __declspec:
|
||||||
//
|
//
|
||||||
#if !defined(__STRICT_ANSI__)
|
#if defined(__STRICT_ANSI__)
|
||||||
# define BOOST_HAS_DECLSPEC
|
// config/platform/win32.hpp will define BOOST_SYMBOL_EXPORT, etc., unless already defined
|
||||||
|
# define BOOST_SYMBOL_EXPORT
|
||||||
#endif
|
#endif
|
||||||
//
|
//
|
||||||
// ABI fixing headers:
|
// ABI fixing headers:
|
||||||
|
@ -44,7 +44,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
// See also kai.hpp which checks a Kai-specific symbol for EH
|
// See also kai.hpp which checks a Kai-specific symbol for EH
|
||||||
# if !defined(__KCC) && !defined(__EXCEPTIONS)
|
# if !defined(__KCC) && !defined(__EXCEPTIONS) && !defined(BOOST_NO_EXCEPTIONS)
|
||||||
# define BOOST_NO_EXCEPTIONS
|
# define BOOST_NO_EXCEPTIONS
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
@ -59,6 +59,9 @@
|
|||||||
//
|
//
|
||||||
// See above for BOOST_NO_LONG_LONG
|
// See above for BOOST_NO_LONG_LONG
|
||||||
//
|
//
|
||||||
|
#if (__EDG_VERSION__ < 310)
|
||||||
|
# define BOOST_NO_EXTERN_TEMPLATE
|
||||||
|
#endif
|
||||||
#if (__EDG_VERSION__ <= 310) || !defined(BOOST_STRICT_CONFIG)
|
#if (__EDG_VERSION__ <= 310) || !defined(BOOST_STRICT_CONFIG)
|
||||||
// No support for initializer lists
|
// No support for initializer lists
|
||||||
# define BOOST_NO_INITIALIZER_LISTS
|
# define BOOST_NO_INITIALIZER_LISTS
|
||||||
@ -74,7 +77,6 @@
|
|||||||
#define BOOST_NO_DEFAULTED_FUNCTIONS
|
#define BOOST_NO_DEFAULTED_FUNCTIONS
|
||||||
#define BOOST_NO_DELETED_FUNCTIONS
|
#define BOOST_NO_DELETED_FUNCTIONS
|
||||||
#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
|
#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
|
||||||
#define BOOST_NO_EXTERN_TEMPLATE
|
|
||||||
#define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS
|
#define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS
|
||||||
#define BOOST_NO_LAMBDAS
|
#define BOOST_NO_LAMBDAS
|
||||||
#define BOOST_NO_NULLPTR
|
#define BOOST_NO_NULLPTR
|
||||||
|
@ -51,7 +51,7 @@
|
|||||||
|
|
||||||
|
|
||||||
// check for exception handling support:
|
// check for exception handling support:
|
||||||
#ifndef _CPPUNWIND
|
#if !defined(_CPPUNWIND) && !defined(BOOST_NO_EXCEPTIONS)
|
||||||
# define BOOST_NO_EXCEPTIONS
|
# define BOOST_NO_EXCEPTIONS
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -42,6 +42,7 @@
|
|||||||
# define BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE
|
# define BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE
|
||||||
# define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
|
# define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
|
||||||
# define BOOST_NO_IS_ABSTRACT
|
# define BOOST_NO_IS_ABSTRACT
|
||||||
|
# define BOOST_NO_EXTERN_TEMPLATE
|
||||||
#elif __GNUC__ == 3
|
#elif __GNUC__ == 3
|
||||||
# if defined (__PATHSCALE__)
|
# if defined (__PATHSCALE__)
|
||||||
# define BOOST_NO_TWO_PHASE_NAME_LOOKUP
|
# define BOOST_NO_TWO_PHASE_NAME_LOOKUP
|
||||||
@ -58,6 +59,7 @@
|
|||||||
# if __GNUC_MINOR__ < 4
|
# if __GNUC_MINOR__ < 4
|
||||||
# define BOOST_NO_IS_ABSTRACT
|
# define BOOST_NO_IS_ABSTRACT
|
||||||
# endif
|
# endif
|
||||||
|
# define BOOST_NO_EXTERN_TEMPLATE
|
||||||
#endif
|
#endif
|
||||||
#if __GNUC__ < 4
|
#if __GNUC__ < 4
|
||||||
//
|
//
|
||||||
@ -69,7 +71,19 @@
|
|||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#ifndef __EXCEPTIONS
|
#if __GNUC__ < 4 || ( __GNUC__ == 4 && __GNUC_MINOR__ < 4 )
|
||||||
|
// Previous versions of GCC did not completely implement value-initialization:
|
||||||
|
// GCC Bug 30111, "Value-initialization of POD base class doesn't initialize
|
||||||
|
// members", reported by Jonathan Wakely in 2006,
|
||||||
|
// http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30111 (fixed for GCC 4.4)
|
||||||
|
// GCC Bug 33916, "Default constructor fails to initialize array members",
|
||||||
|
// reported by Michael Elizabeth Chastain in 2007,
|
||||||
|
// http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33916 (fixed for GCC 4.2.4)
|
||||||
|
// See also: http://www.boost.org/libs/utility/value_init.htm#compiler_issues
|
||||||
|
#define BOOST_NO_COMPLETE_VALUE_INITIALIZATION
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(__EXCEPTIONS) && !defined(BOOST_NO_EXCEPTIONS)
|
||||||
# define BOOST_NO_EXCEPTIONS
|
# define BOOST_NO_EXCEPTIONS
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -94,6 +108,28 @@
|
|||||||
#if __GNUC__ > 3 || ( __GNUC__ == 3 && __GNUC_MINOR__ >= 1 )
|
#if __GNUC__ > 3 || ( __GNUC__ == 3 && __GNUC_MINOR__ >= 1 )
|
||||||
#define BOOST_HAS_NRVO
|
#define BOOST_HAS_NRVO
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// Dynamic shared object (DSO) and dynamic-link library (DLL) support
|
||||||
|
//
|
||||||
|
#if __GNUC__ >= 4
|
||||||
|
# if defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
|
||||||
|
// All Win32 development environments, including 64-bit Windows and MinGW, define
|
||||||
|
// _WIN32 or one of its variant spellings. Note that Cygwin is a POSIX environment,
|
||||||
|
// so does not define _WIN32 or its variants.
|
||||||
|
# define BOOST_HAS_DECLSPEC
|
||||||
|
# define BOOST_SYMBOL_EXPORT __attribute__((dllexport))
|
||||||
|
# define BOOST_SYMBOL_IMPORT __attribute__((dllimport))
|
||||||
|
# else
|
||||||
|
# define BOOST_SYMBOL_EXPORT __attribute__((visibility("default")))
|
||||||
|
# define BOOST_SYMBOL_IMPORT
|
||||||
|
# endif
|
||||||
|
# define BOOST_SYMBOL_VISIBLE __attribute__((visibility("default")))
|
||||||
|
#else
|
||||||
|
// config/platform/win32.hpp will define BOOST_SYMBOL_EXPORT, etc., unless already defined
|
||||||
|
# define BOOST_SYMBOL_EXPORT
|
||||||
|
#endif
|
||||||
|
|
||||||
//
|
//
|
||||||
// RTTI and typeinfo detection is possible post gcc-4.3:
|
// RTTI and typeinfo detection is possible post gcc-4.3:
|
||||||
//
|
//
|
||||||
@ -107,7 +143,6 @@
|
|||||||
// C++0x features not implemented in any GCC version
|
// C++0x features not implemented in any GCC version
|
||||||
//
|
//
|
||||||
#define BOOST_NO_CONSTEXPR
|
#define BOOST_NO_CONSTEXPR
|
||||||
#define BOOST_NO_EXTERN_TEMPLATE
|
|
||||||
#define BOOST_NO_NULLPTR
|
#define BOOST_NO_NULLPTR
|
||||||
#define BOOST_NO_TEMPLATE_ALIASES
|
#define BOOST_NO_TEMPLATE_ALIASES
|
||||||
|
|
||||||
|
@ -157,6 +157,29 @@ template<> struct assert_intrinsic_wchar_t<unsigned short> {};
|
|||||||
# define BOOST_NO_TWO_PHASE_NAME_LOOKUP
|
# define BOOST_NO_TWO_PHASE_NAME_LOOKUP
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// An attempt to value-initialize a pointer-to-member may trigger an
|
||||||
|
// internal error on Intel <= 11.1 (last checked version), as was
|
||||||
|
// reported by John Maddock, Intel support issue 589832, May 2010.
|
||||||
|
// Moreover, according to test results from Huang-Vista-x86_32_intel,
|
||||||
|
// intel-vc9-win-11.1 may leave a non-POD array uninitialized, in some
|
||||||
|
// cases when it should be value-initialized.
|
||||||
|
// (Niels Dekker, LKEB, May 2010)
|
||||||
|
#if defined(__INTEL_COMPILER)
|
||||||
|
# if __INTEL_COMPILER <= 1110
|
||||||
|
# define BOOST_NO_COMPLETE_VALUE_INITIALIZATION
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// Dynamic shared object (DSO) and dynamic-link library (DLL) support
|
||||||
|
//
|
||||||
|
#if defined(__GNUC__) && (__GNUC__ >= 4)
|
||||||
|
# define BOOST_SYMBOL_EXPORT __attribute__((visibility("default")))
|
||||||
|
# define BOOST_SYMBOL_IMPORT
|
||||||
|
# define BOOST_SYMBOL_VISIBLE __attribute__((visibility("default")))
|
||||||
|
#endif
|
||||||
|
|
||||||
//
|
//
|
||||||
// last known and checked version:
|
// last known and checked version:
|
||||||
#if (BOOST_INTEL_CXX_VERSION > 1110)
|
#if (BOOST_INTEL_CXX_VERSION > 1110)
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
# endif
|
# endif
|
||||||
|
|
||||||
// see also common_edg.hpp which needs a special check for __KCC
|
// see also common_edg.hpp which needs a special check for __KCC
|
||||||
# if !defined(_EXCEPTIONS)
|
# if !defined(_EXCEPTIONS) && !defined(BOOST_NO_EXCEPTIONS)
|
||||||
# define BOOST_NO_EXCEPTIONS
|
# define BOOST_NO_EXCEPTIONS
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
|
@ -48,7 +48,7 @@
|
|||||||
# define BOOST_NO_INTRINSIC_WCHAR_T
|
# define BOOST_NO_INTRINSIC_WCHAR_T
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !__option(exceptions)
|
#if !__option(exceptions) && !defined(BOOST_NO_EXCEPTIONS)
|
||||||
# define BOOST_NO_EXCEPTIONS
|
# define BOOST_NO_EXCEPTIONS
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -69,6 +69,25 @@
|
|||||||
# define BOOST_NO_IS_ABSTRACT
|
# define BOOST_NO_IS_ABSTRACT
|
||||||
# endif
|
# endif
|
||||||
|
|
||||||
|
# if (__SUNPRO_CC <= 0x5100)
|
||||||
|
// Sun 5.10 may not correctly value-initialize objects of
|
||||||
|
// some user defined types, as was reported in April 2010
|
||||||
|
// (CR 6947016), and confirmed by Steve Clamage.
|
||||||
|
// (Niels Dekker, LKEB, May 2010).
|
||||||
|
# define BOOST_NO_COMPLETE_VALUE_INITIALIZATION
|
||||||
|
# endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// Dynamic shared object (DSO) and dynamic-link library (DLL) support
|
||||||
|
//
|
||||||
|
#if __SUNPRO_CC > 0x500
|
||||||
|
# define BOOST_SYMBOL_EXPORT __global
|
||||||
|
# define BOOST_SYMBOL_IMPORT __global
|
||||||
|
# define BOOST_SYMBOL_VISIBLE __global
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// Issues that effect all known versions:
|
// Issues that effect all known versions:
|
||||||
//
|
//
|
||||||
@ -78,12 +97,7 @@
|
|||||||
//
|
//
|
||||||
// C++0x features
|
// C++0x features
|
||||||
//
|
//
|
||||||
|
|
||||||
#if(__SUNPRO_CC >= 0x590)
|
|
||||||
# define BOOST_HAS_LONG_LONG
|
# define BOOST_HAS_LONG_LONG
|
||||||
#else
|
|
||||||
# define BOOST_NO_LONG_LONG
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#define BOOST_NO_AUTO_DECLARATIONS
|
#define BOOST_NO_AUTO_DECLARATIONS
|
||||||
#define BOOST_NO_AUTO_MULTIDECLARATIONS
|
#define BOOST_NO_AUTO_MULTIDECLARATIONS
|
||||||
|
@ -30,6 +30,14 @@
|
|||||||
# define BOOST_NO_INITIALIZER_LISTS
|
# define BOOST_NO_INITIALIZER_LISTS
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#if (__IBMCPP__ <= 1110)
|
||||||
|
// XL C++ V11.1 and earlier versions may not always value-initialize
|
||||||
|
// a temporary object T(), when T is a non-POD aggregate class type.
|
||||||
|
// Michael Wong (IBM Canada Ltd) has confirmed this issue and gave it
|
||||||
|
// high priority. -- Niels Dekker (LKEB), May 2010.
|
||||||
|
# define BOOST_NO_COMPLETE_VALUE_INITIALIZATION
|
||||||
|
#endif
|
||||||
|
|
||||||
//
|
//
|
||||||
// On AIX thread support seems to be indicated by _THREAD_SAFE:
|
// On AIX thread support seems to be indicated by _THREAD_SAFE:
|
||||||
//
|
//
|
||||||
|
@ -68,6 +68,7 @@
|
|||||||
# define BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS
|
# define BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS
|
||||||
# define BOOST_NO_IS_ABSTRACT
|
# define BOOST_NO_IS_ABSTRACT
|
||||||
# define BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS
|
# define BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS
|
||||||
|
# define BOOST_NO_EXTERN_TEMPLATE
|
||||||
// TODO: what version is meant here? Have there really been any fixes in cl 12.01 (as e.g. shipped with eVC4)?
|
// TODO: what version is meant here? Have there really been any fixes in cl 12.01 (as e.g. shipped with eVC4)?
|
||||||
# if (_MSC_VER > 1200)
|
# if (_MSC_VER > 1200)
|
||||||
# define BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS
|
# define BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS
|
||||||
@ -99,6 +100,24 @@
|
|||||||
# define BOOST_NO_ADL_BARRIER
|
# define BOOST_NO_ADL_BARRIER
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#if (_MSC_VER <= 1600)
|
||||||
|
// MSVC (including the latest checked version) has not yet completely
|
||||||
|
// implemented value-initialization, as is reported:
|
||||||
|
// "VC++ does not value-initialize members of derived classes without
|
||||||
|
// user-declared constructor", reported in 2009 by Sylvester Hesp:
|
||||||
|
// https://connect.microsoft.com/VisualStudio/feedback/details/484295
|
||||||
|
// "Presence of copy constructor breaks member class initialization",
|
||||||
|
// reported in 2009 by Alex Vakulenko:
|
||||||
|
// https://connect.microsoft.com/VisualStudio/feedback/details/499606
|
||||||
|
// "Value-initialization in new-expression", reported in 2005 by
|
||||||
|
// Pavel Kuznetsov (MetaCommunications Engineering):
|
||||||
|
// https://connect.microsoft.com/VisualStudio/feedback/details/100744
|
||||||
|
// See also: http://www.boost.org/libs/utility/value_init.htm#compiler_issues
|
||||||
|
// (Niels Dekker, LKEB, May 2010)
|
||||||
|
#define BOOST_NO_COMPLETE_VALUE_INITIALIZATION
|
||||||
|
#endif
|
||||||
|
|
||||||
#if _MSC_VER <= 1500 || !defined(BOOST_STRICT_CONFIG) // 1500 == VC++ 9.0
|
#if _MSC_VER <= 1500 || !defined(BOOST_STRICT_CONFIG) // 1500 == VC++ 9.0
|
||||||
# define BOOST_NO_INITIALIZER_LISTS
|
# define BOOST_NO_INITIALIZER_LISTS
|
||||||
#endif
|
#endif
|
||||||
@ -115,7 +134,7 @@
|
|||||||
|
|
||||||
//
|
//
|
||||||
// check for exception handling support:
|
// check for exception handling support:
|
||||||
#ifndef _CPPUNWIND
|
#if !defined(_CPPUNWIND) && !defined(BOOST_NO_EXCEPTIONS)
|
||||||
# define BOOST_NO_EXCEPTIONS
|
# define BOOST_NO_EXCEPTIONS
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -144,11 +163,6 @@
|
|||||||
# define BOOST_NO_RTTI
|
# define BOOST_NO_RTTI
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
//
|
|
||||||
// all versions support __declspec:
|
|
||||||
//
|
|
||||||
#define BOOST_HAS_DECLSPEC
|
|
||||||
|
|
||||||
//
|
//
|
||||||
// C++0x features
|
// C++0x features
|
||||||
//
|
//
|
||||||
@ -159,11 +173,14 @@
|
|||||||
#if _MSC_VER < 1600
|
#if _MSC_VER < 1600
|
||||||
#define BOOST_NO_AUTO_DECLARATIONS
|
#define BOOST_NO_AUTO_DECLARATIONS
|
||||||
#define BOOST_NO_AUTO_MULTIDECLARATIONS
|
#define BOOST_NO_AUTO_MULTIDECLARATIONS
|
||||||
#define BOOST_NO_DECLTYPE
|
|
||||||
#define BOOST_NO_LAMBDAS
|
#define BOOST_NO_LAMBDAS
|
||||||
#define BOOST_NO_RVALUE_REFERENCES
|
#define BOOST_NO_RVALUE_REFERENCES
|
||||||
#define BOOST_NO_STATIC_ASSERT
|
#define BOOST_NO_STATIC_ASSERT
|
||||||
|
#define BOOST_NO_NULLPTR
|
||||||
#endif // _MSC_VER < 1600
|
#endif // _MSC_VER < 1600
|
||||||
|
#if _MSC_VER >= 1600
|
||||||
|
#define BOOST_HAS_STDINT_H
|
||||||
|
#endif
|
||||||
|
|
||||||
// C++0x features not supported by any versions
|
// C++0x features not supported by any versions
|
||||||
#define BOOST_NO_CHAR16_T
|
#define BOOST_NO_CHAR16_T
|
||||||
@ -171,19 +188,17 @@
|
|||||||
#define BOOST_NO_CONCEPTS
|
#define BOOST_NO_CONCEPTS
|
||||||
#define BOOST_NO_CONSTEXPR
|
#define BOOST_NO_CONSTEXPR
|
||||||
#define BOOST_NO_DEFAULTED_FUNCTIONS
|
#define BOOST_NO_DEFAULTED_FUNCTIONS
|
||||||
|
#define BOOST_NO_DECLTYPE
|
||||||
#define BOOST_NO_DELETED_FUNCTIONS
|
#define BOOST_NO_DELETED_FUNCTIONS
|
||||||
#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
|
#define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
|
||||||
#define BOOST_NO_EXTERN_TEMPLATE
|
|
||||||
#define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS
|
#define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS
|
||||||
#define BOOST_NO_INITIALIZER_LISTS
|
#define BOOST_NO_INITIALIZER_LISTS
|
||||||
#define BOOST_NO_NULLPTR
|
|
||||||
#define BOOST_NO_RAW_LITERALS
|
#define BOOST_NO_RAW_LITERALS
|
||||||
#define BOOST_NO_SCOPED_ENUMS
|
#define BOOST_NO_SCOPED_ENUMS
|
||||||
#define BOOST_NO_SFINAE_EXPR
|
#define BOOST_NO_SFINAE_EXPR
|
||||||
#define BOOST_NO_TEMPLATE_ALIASES
|
#define BOOST_NO_TEMPLATE_ALIASES
|
||||||
#define BOOST_NO_UNICODE_LITERALS
|
#define BOOST_NO_UNICODE_LITERALS
|
||||||
#define BOOST_NO_VARIADIC_TEMPLATES
|
#define BOOST_NO_VARIADIC_TEMPLATES
|
||||||
|
|
||||||
//
|
//
|
||||||
// prefix and suffix headers:
|
// prefix and suffix headers:
|
||||||
//
|
//
|
||||||
|
@ -21,10 +21,17 @@
|
|||||||
# define BOOST_NO_SWPRINTF
|
# define BOOST_NO_SWPRINTF
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if !defined(__GNUC__) && !defined(BOOST_HAS_DECLSPEC)
|
// Default defines for BOOST_SYMBOL_EXPORT and BOOST_SYMBOL_IMPORT
|
||||||
|
// If a compiler doesn't support __declspec(dllexport)/__declspec(dllimport),
|
||||||
|
// its boost/config/compiler/ file must define BOOST_SYMBOL_EXPORT and
|
||||||
|
// BOOST_SYMBOL_IMPORT
|
||||||
|
#ifndef BOOST_SYMBOL_EXPORT
|
||||||
# define BOOST_HAS_DECLSPEC
|
# define BOOST_HAS_DECLSPEC
|
||||||
|
# define BOOST_SYMBOL_EXPORT __declspec(dllexport)
|
||||||
|
# define BOOST_SYMBOL_IMPORT __declspec(dllimport)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
#if defined(__MINGW32__) && ((__MINGW32_MAJOR_VERSION > 2) || ((__MINGW32_MAJOR_VERSION == 2) && (__MINGW32_MINOR_VERSION >= 0)))
|
#if defined(__MINGW32__) && ((__MINGW32_MAJOR_VERSION > 2) || ((__MINGW32_MAJOR_VERSION == 2) && (__MINGW32_MINOR_VERSION >= 0)))
|
||||||
# define BOOST_HAS_STDINT_H
|
# define BOOST_HAS_STDINT_H
|
||||||
# define __STDC_LIMIT_MACROS
|
# define __STDC_LIMIT_MACROS
|
||||||
|
@ -86,6 +86,11 @@
|
|||||||
# define BOOST_NO_STD_LOCALE
|
# define BOOST_NO_STD_LOCALE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <typeinfo>
|
||||||
|
#if !_HAS_EXCEPTIONS
|
||||||
|
# define BOOST_NO_STD_TYPEINFO
|
||||||
|
#endif
|
||||||
|
|
||||||
// C++0x headers implemented in 520 (as shipped by Microsoft)
|
// C++0x headers implemented in 520 (as shipped by Microsoft)
|
||||||
//
|
//
|
||||||
#if !defined(_CPPLIB_VER) || _CPPLIB_VER < 520
|
#if !defined(_CPPLIB_VER) || _CPPLIB_VER < 520
|
||||||
@ -100,6 +105,11 @@
|
|||||||
# define BOOST_NO_STD_UNORDERED // deprecated; see following
|
# define BOOST_NO_STD_UNORDERED // deprecated; see following
|
||||||
# define BOOST_NO_0X_HDR_UNORDERED_MAP
|
# define BOOST_NO_0X_HDR_UNORDERED_MAP
|
||||||
# define BOOST_NO_0X_HDR_UNORDERED_SET
|
# define BOOST_NO_0X_HDR_UNORDERED_SET
|
||||||
|
# define BOOST_NO_0X_HDR_TUPLE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if !defined(_HAS_TR1_IMPORTS) && !defined(BOOST_NO_0X_HDR_TUPLE)
|
||||||
|
# define BOOST_NO_0X_HDR_TUPLE
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// C++0x headers not yet implemented
|
// C++0x headers not yet implemented
|
||||||
@ -114,7 +124,6 @@
|
|||||||
# define BOOST_NO_0X_HDR_MUTEX
|
# define BOOST_NO_0X_HDR_MUTEX
|
||||||
# define BOOST_NO_0X_HDR_RATIO
|
# define BOOST_NO_0X_HDR_RATIO
|
||||||
# define BOOST_NO_0X_HDR_THREAD
|
# define BOOST_NO_0X_HDR_THREAD
|
||||||
# define BOOST_NO_0X_HDR_TUPLE
|
|
||||||
|
|
||||||
#ifdef _CPPLIB_VER
|
#ifdef _CPPLIB_VER
|
||||||
# define BOOST_DINKUMWARE_STDLIB _CPPLIB_VER
|
# define BOOST_DINKUMWARE_STDLIB _CPPLIB_VER
|
||||||
|
@ -25,6 +25,19 @@
|
|||||||
#ifndef BOOST_CONFIG_SUFFIX_HPP
|
#ifndef BOOST_CONFIG_SUFFIX_HPP
|
||||||
#define BOOST_CONFIG_SUFFIX_HPP
|
#define BOOST_CONFIG_SUFFIX_HPP
|
||||||
|
|
||||||
|
//
|
||||||
|
// ensure that visibility macros are always defined, thus symplifying use
|
||||||
|
//
|
||||||
|
#ifndef BOOST_SYMBOL_EXPORT
|
||||||
|
# define BOOST_SYMBOL_EXPORT
|
||||||
|
#endif
|
||||||
|
#ifndef BOOST_SYMBOL_IMPORT
|
||||||
|
# define BOOST_SYMBOL_IMPORT
|
||||||
|
#endif
|
||||||
|
#ifndef BOOST_SYMBOL_VISIBLE
|
||||||
|
# define BOOST_SYMBOL_VISIBLE
|
||||||
|
#endif
|
||||||
|
|
||||||
//
|
//
|
||||||
// look for long long by looking for the appropriate macros in <limits.h>.
|
// look for long long by looking for the appropriate macros in <limits.h>.
|
||||||
// Note that we use limits.h rather than climits for maximal portability,
|
// Note that we use limits.h rather than climits for maximal portability,
|
||||||
@ -82,6 +95,13 @@
|
|||||||
# define BOOST_NO_LONG_LONG_NUMERIC_LIMITS
|
# define BOOST_NO_LONG_LONG_NUMERIC_LIMITS
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// Normalize BOOST_NO_STATIC_ASSERT and (depricated) BOOST_HAS_STATIC_ASSERT:
|
||||||
|
//
|
||||||
|
#if !defined(BOOST_NO_STATIC_ASSERT) && !defined(BOOST_HAS_STATIC_ASSERT)
|
||||||
|
# define BOOST_HAS_STATIC_ASSERT
|
||||||
|
#endif
|
||||||
|
|
||||||
//
|
//
|
||||||
// if there is no __int64 then there is no specialisation
|
// if there is no __int64 then there is no specialisation
|
||||||
// for numeric_limits<__int64> either:
|
// for numeric_limits<__int64> either:
|
||||||
@ -314,6 +334,13 @@
|
|||||||
# define BOOST_NO_INITIALIZER_LISTS
|
# define BOOST_NO_INITIALIZER_LISTS
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
//
|
||||||
|
// Set BOOST_HAS_RVALUE_REFS when BOOST_NO_RVALUE_REFERENCES is not defined
|
||||||
|
//
|
||||||
|
#if !defined(BOOST_NO_RVALUE_REFERENCES) && !defined(BOOST_HAS_RVALUE_REFS)
|
||||||
|
#define BOOST_HAS_RVALUE_REFS
|
||||||
|
#endif
|
||||||
|
|
||||||
// BOOST_HAS_ABI_HEADERS
|
// BOOST_HAS_ABI_HEADERS
|
||||||
// This macro gets set if we have headers that fix the ABI,
|
// This macro gets set if we have headers that fix the ABI,
|
||||||
// and prevent ODR violations when linking to external libraries:
|
// and prevent ODR violations when linking to external libraries:
|
||||||
@ -554,6 +581,12 @@ namespace boost{
|
|||||||
|
|
||||||
#endif // defined BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS
|
#endif // defined BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS
|
||||||
|
|
||||||
|
// When BOOST_NO_STD_TYPEINFO is defined, we can just import
|
||||||
|
// the global definition into std namespace:
|
||||||
|
#ifdef BOOST_NO_STD_TYPEINFO
|
||||||
|
#include <typeinfo>
|
||||||
|
namespace std{ using ::typeinfo; }
|
||||||
|
#endif
|
||||||
|
|
||||||
// ---------------------------------------------------------------------------//
|
// ---------------------------------------------------------------------------//
|
||||||
|
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
#
|
#
|
||||||
# Regression test Jamfile for boost configuration setup.
|
# Regression test Jamfile for boost configuration setup.
|
||||||
# *** DO NOT EDIT THIS FILE BY HAND ***
|
# *** DO NOT EDIT THIS FILE BY HAND ***
|
||||||
# This file was automatically generated on Sun Oct 11 13:04:18 2009
|
# This file was automatically generated on Fri Apr 09 12:24:54 2010
|
||||||
# by libs/config/tools/generate.cpp
|
# by libs/config/tools/generate.cpp
|
||||||
# Copyright John Maddock.
|
# Copyright John Maddock.
|
||||||
# Use, modification and distribution are subject to the
|
# Use, modification and distribution are subject to the
|
||||||
@ -265,6 +265,9 @@ test-suite "BOOST_NO_CHAR16_T" :
|
|||||||
test-suite "BOOST_NO_CHAR32_T" :
|
test-suite "BOOST_NO_CHAR32_T" :
|
||||||
[ run ../no_char32_t_pass.cpp ]
|
[ run ../no_char32_t_pass.cpp ]
|
||||||
[ compile-fail ../no_char32_t_fail.cpp ] ;
|
[ compile-fail ../no_char32_t_fail.cpp ] ;
|
||||||
|
test-suite "BOOST_NO_COMPLETE_VALUE_INITIALIZATION" :
|
||||||
|
[ run ../no_com_value_init_pass.cpp ]
|
||||||
|
[ compile-fail ../no_com_value_init_fail.cpp ] ;
|
||||||
test-suite "BOOST_NO_CONCEPTS" :
|
test-suite "BOOST_NO_CONCEPTS" :
|
||||||
[ run ../no_concepts_pass.cpp ]
|
[ run ../no_concepts_pass.cpp ]
|
||||||
[ compile-fail ../no_concepts_fail.cpp ] ;
|
[ compile-fail ../no_concepts_fail.cpp ] ;
|
||||||
|
@ -16,6 +16,7 @@ namespace boost_no_0x_hdr_tuple {
|
|||||||
|
|
||||||
int test()
|
int test()
|
||||||
{
|
{
|
||||||
|
std::tuple<int, int, long> t(0, 1, 2);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -11,14 +11,14 @@
|
|||||||
|
|
||||||
namespace boost_no_auto_declarations {
|
namespace boost_no_auto_declarations {
|
||||||
|
|
||||||
void check(int& x)
|
void check_f(int& x)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
int test()
|
int test()
|
||||||
{
|
{
|
||||||
auto x = 10;
|
auto x = 10;
|
||||||
check(x);
|
check_f(x);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -11,14 +11,14 @@
|
|||||||
|
|
||||||
namespace boost_no_auto_multideclarations {
|
namespace boost_no_auto_multideclarations {
|
||||||
|
|
||||||
void check(int& x, int*& y)
|
void check_f(int& x, int*& y)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
int test()
|
int test()
|
||||||
{
|
{
|
||||||
auto x = 10, *y = &x;
|
auto x = 10, *y = &x;
|
||||||
check(x, y);
|
check_f(x, y);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,3 +1,4 @@
|
|||||||
|
|
||||||
// (C) Copyright Beman Dawes 2008
|
// (C) Copyright Beman Dawes 2008
|
||||||
|
|
||||||
// Use, modification and distribution are subject to the
|
// Use, modification and distribution are subject to the
|
||||||
@ -14,7 +15,7 @@ namespace boost_no_char16_t {
|
|||||||
|
|
||||||
int test()
|
int test()
|
||||||
{
|
{
|
||||||
char16_t c;
|
const char16_t* p = u"abc";
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@ namespace boost_no_char32_t {
|
|||||||
|
|
||||||
int test()
|
int test()
|
||||||
{
|
{
|
||||||
char32_t c;
|
const char32_t* p = U"abc";
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
1024
test/boost_no_com_value_init.ipp
Normal file
1024
test/boost_no_com_value_init.ipp
Normal file
File diff suppressed because it is too large
Load Diff
@ -1,3 +1,4 @@
|
|||||||
|
|
||||||
// (C) Copyright Beman Dawes 2008
|
// (C) Copyright Beman Dawes 2008
|
||||||
|
|
||||||
// Use, modification and distribution are subject to the
|
// Use, modification and distribution are subject to the
|
||||||
@ -12,10 +13,34 @@
|
|||||||
|
|
||||||
namespace boost_no_decltype {
|
namespace boost_no_decltype {
|
||||||
|
|
||||||
|
struct test_class
|
||||||
|
{
|
||||||
|
test_class() {}
|
||||||
|
};
|
||||||
|
|
||||||
|
test_class get_test_class()
|
||||||
|
{
|
||||||
|
return test_class();
|
||||||
|
}
|
||||||
|
|
||||||
|
template<typename F>
|
||||||
|
void baz(F f)
|
||||||
|
{
|
||||||
|
//
|
||||||
|
// Strangely VC-10 deduces the return type of F
|
||||||
|
// to be "test_class&". Remove the constructor
|
||||||
|
// from test_class and then decltype does work OK!!
|
||||||
|
//
|
||||||
|
typedef decltype(f()) res;
|
||||||
|
res r;
|
||||||
|
}
|
||||||
|
|
||||||
int test()
|
int test()
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
decltype(i) j;
|
decltype(i) j;
|
||||||
|
decltype(get_test_class()) k;
|
||||||
|
baz(get_test_class);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -12,7 +12,26 @@
|
|||||||
|
|
||||||
namespace boost_no_extern_template {
|
namespace boost_no_extern_template {
|
||||||
|
|
||||||
extern template<class T> void f(T);
|
template<class T, class U> void f(T const* p, U const* q)
|
||||||
|
{
|
||||||
|
p = q;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
class must_not_compile
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
void f(T const* p, int const* q);
|
||||||
|
};
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
void must_not_compile<T>::f(T const* p, int const* q)
|
||||||
|
{
|
||||||
|
p = q;
|
||||||
|
}
|
||||||
|
|
||||||
|
extern template void f<>(int const*, float const*);
|
||||||
|
extern template class must_not_compile<int>;
|
||||||
|
|
||||||
int test()
|
int test()
|
||||||
{
|
{
|
||||||
|
@ -11,11 +11,18 @@
|
|||||||
// DESCRIPTION: If the compiler does not support C++0x initializer lists
|
// DESCRIPTION: If the compiler does not support C++0x initializer lists
|
||||||
|
|
||||||
#include <initializer_list>
|
#include <initializer_list>
|
||||||
|
#include <vector>
|
||||||
|
|
||||||
namespace boost_no_initializer_lists {
|
namespace boost_no_initializer_lists {
|
||||||
|
|
||||||
|
void f(std::initializer_list<int>)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
int test()
|
int test()
|
||||||
{
|
{
|
||||||
|
std::vector<std::string> v{"once", "upon", "a", "time"}; // See C++ std 8.5.4
|
||||||
|
f( { 1, 2, 3, 4 } );
|
||||||
std::initializer_list<int> x = { 1, 2 };
|
std::initializer_list<int> x = { 1, 2 };
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -14,8 +14,8 @@ namespace boost_no_raw_literals {
|
|||||||
|
|
||||||
int test()
|
int test()
|
||||||
{
|
{
|
||||||
const char* s = R"[abc]";
|
const char* s = R"(abc)";
|
||||||
const wchar_t* ws = LR"[abc]";
|
const wchar_t* ws = LR"(abc)";
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -36,7 +36,7 @@ void B::t()
|
|||||||
namespace boost_no_rtti
|
namespace boost_no_rtti
|
||||||
{
|
{
|
||||||
|
|
||||||
int check(const A& a)
|
int check_f(const A& a)
|
||||||
{
|
{
|
||||||
return typeid(a) == typeid(B) ? 0 : 1;
|
return typeid(a) == typeid(B) ? 0 : 1;
|
||||||
}
|
}
|
||||||
@ -45,7 +45,7 @@ int test()
|
|||||||
{
|
{
|
||||||
try{
|
try{
|
||||||
B b;
|
B b;
|
||||||
return check(b);
|
return check_f(b);
|
||||||
}
|
}
|
||||||
catch(...)
|
catch(...)
|
||||||
{
|
{
|
||||||
|
@ -985,6 +985,7 @@ void print_boost_macros()
|
|||||||
PRINT_MACRO(BOOST_NO_AUTO_PTR);
|
PRINT_MACRO(BOOST_NO_AUTO_PTR);
|
||||||
PRINT_MACRO(BOOST_NO_CHAR16_T);
|
PRINT_MACRO(BOOST_NO_CHAR16_T);
|
||||||
PRINT_MACRO(BOOST_NO_CHAR32_T);
|
PRINT_MACRO(BOOST_NO_CHAR32_T);
|
||||||
|
PRINT_MACRO(BOOST_NO_COMPLETE_VALUE_INITIALIZATION);
|
||||||
PRINT_MACRO(BOOST_NO_CONCEPTS);
|
PRINT_MACRO(BOOST_NO_CONCEPTS);
|
||||||
PRINT_MACRO(BOOST_NO_CONSTEXPR);
|
PRINT_MACRO(BOOST_NO_CONSTEXPR);
|
||||||
PRINT_MACRO(BOOST_NO_CTYPE_FUNCTIONS);
|
PRINT_MACRO(BOOST_NO_CTYPE_FUNCTIONS);
|
||||||
@ -1080,6 +1081,7 @@ void print_boost_macros()
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// END GENERATED BLOCK
|
// END GENERATED BLOCK
|
||||||
|
|
||||||
PRINT_MACRO(BOOST_INTEL);
|
PRINT_MACRO(BOOST_INTEL);
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// This file was automatically generated on Sun Oct 11 13:04:18 2009
|
// This file was automatically generated on Fri Apr 09 12:24:54 2010
|
||||||
// by libs/config/tools/generate.cpp
|
// by libs/config/tools/generate.cpp
|
||||||
// Copyright John Maddock 2002-4.
|
// Copyright John Maddock 2002-4.
|
||||||
// Use, modification and distribution are subject to the
|
// Use, modification and distribution are subject to the
|
||||||
@ -172,6 +172,11 @@ namespace boost_no_char16_t = empty_boost;
|
|||||||
#else
|
#else
|
||||||
namespace boost_no_char32_t = empty_boost;
|
namespace boost_no_char32_t = empty_boost;
|
||||||
#endif
|
#endif
|
||||||
|
#ifndef BOOST_NO_COMPLETE_VALUE_INITIALIZATION
|
||||||
|
#include "boost_no_com_value_init.ipp"
|
||||||
|
#else
|
||||||
|
namespace boost_no_complete_value_initialization = empty_boost;
|
||||||
|
#endif
|
||||||
#ifndef BOOST_NO_CONCEPTS
|
#ifndef BOOST_NO_CONCEPTS
|
||||||
#include "boost_no_concepts.ipp"
|
#include "boost_no_concepts.ipp"
|
||||||
#else
|
#else
|
||||||
@ -1251,6 +1256,11 @@ int main( int, char *[] )
|
|||||||
std::cerr << "Failed test for BOOST_NO_CHAR32_T at: " << __FILE__ << ":" << __LINE__ << std::endl;
|
std::cerr << "Failed test for BOOST_NO_CHAR32_T at: " << __FILE__ << ":" << __LINE__ << std::endl;
|
||||||
++error_count;
|
++error_count;
|
||||||
}
|
}
|
||||||
|
if(0 != boost_no_complete_value_initialization::test())
|
||||||
|
{
|
||||||
|
std::cerr << "Failed test for BOOST_NO_COMPLETE_VALUE_INITIALIZATION at: " << __FILE__ << ":" << __LINE__ << std::endl;
|
||||||
|
++error_count;
|
||||||
|
}
|
||||||
if(0 != boost_no_concepts::test())
|
if(0 != boost_no_concepts::test())
|
||||||
{
|
{
|
||||||
std::cerr << "Failed test for BOOST_NO_CONCEPTS at: " << __FILE__ << ":" << __LINE__ << std::endl;
|
std::cerr << "Failed test for BOOST_NO_CONCEPTS at: " << __FILE__ << ":" << __LINE__ << std::endl;
|
||||||
|
@ -14,3 +14,6 @@ lib link_test : link_test.cpp
|
|||||||
debug release
|
debug release
|
||||||
;
|
;
|
||||||
|
|
||||||
|
run main.cpp link_test : : : <define>BOOST_DYN_LINK=1 <define>BOOST_CONFIG_NO_LIB <link>shared <runtime-link>shared <threading>single : link_test_test ;
|
||||||
|
|
||||||
|
|
||||||
|
@ -9,6 +9,8 @@
|
|||||||
#define BOOST_CONFIG_SOURCE
|
#define BOOST_CONFIG_SOURCE
|
||||||
|
|
||||||
#include "link_test.hpp"
|
#include "link_test.hpp"
|
||||||
|
#include <iostream>
|
||||||
|
#include <iomanip>
|
||||||
|
|
||||||
bool BOOST_CONFIG_DECL check_options(
|
bool BOOST_CONFIG_DECL check_options(
|
||||||
bool m_dyn_link,
|
bool m_dyn_link,
|
||||||
@ -17,10 +19,36 @@ bool BOOST_CONFIG_DECL check_options(
|
|||||||
bool m_debug,
|
bool m_debug,
|
||||||
bool m_stlp_debug)
|
bool m_stlp_debug)
|
||||||
{
|
{
|
||||||
return (m_dyn_link == dyn_link)
|
if(m_dyn_link != dyn_link)
|
||||||
&& (m_dyn_rtl == dyn_rtl)
|
{
|
||||||
&& (m_has_threads == has_threads)
|
std::cout << "Dynamic link options do not match" << std::endl;
|
||||||
&& (m_debug == debug)
|
std::cout << "Application setting = " << m_dyn_link << " Library setting = " << dyn_link << std::endl;
|
||||||
&& (m_stlp_debug == stl_debug);
|
return false;
|
||||||
|
}
|
||||||
|
if(m_dyn_rtl != dyn_rtl)
|
||||||
|
{
|
||||||
|
std::cout << "Runtime library options do not match" << std::endl;
|
||||||
|
std::cout << "Application setting = " << m_dyn_rtl << " Library setting = " << dyn_rtl << std::endl;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if(m_has_threads != has_threads)
|
||||||
|
{
|
||||||
|
std::cout << "Threading options do not match" << std::endl;
|
||||||
|
std::cout << "Application setting = " << m_has_threads << " Library setting = " << has_threads << std::endl;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if(m_debug != debug)
|
||||||
|
{
|
||||||
|
std::cout << "Debug options do not match" << std::endl;
|
||||||
|
std::cout << "Application setting = " << m_debug << " Library setting = " << debug << std::endl;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
if(m_stlp_debug != stl_debug)
|
||||||
|
{
|
||||||
|
std::cout << "STLPort debug options do not match" << std::endl;
|
||||||
|
std::cout << "Application setting = " << m_stlp_debug << " Library setting = " << stl_debug << std::endl;
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -44,11 +44,11 @@ static const bool stl_debug = false;
|
|||||||
//
|
//
|
||||||
// set up import and export options:
|
// set up import and export options:
|
||||||
//
|
//
|
||||||
#if defined(BOOST_HAS_DECLSPEC) && defined(BOOST_DYN_LINK)
|
#if defined(BOOST_DYN_LINK)
|
||||||
# ifdef BOOST_CONFIG_SOURCE
|
# ifdef BOOST_CONFIG_SOURCE
|
||||||
# define BOOST_CONFIG_DECL __declspec(dllexport)
|
# define BOOST_CONFIG_DECL BOOST_SYMBOL_EXPORT
|
||||||
# else
|
# else
|
||||||
# define BOOST_CONFIG_DECL __declspec(dllimport)
|
# define BOOST_CONFIG_DECL BOOST_SYMBOL_IMPORT
|
||||||
# endif
|
# endif
|
||||||
#endif
|
#endif
|
||||||
#ifndef BOOST_CONFIG_DECL
|
#ifndef BOOST_CONFIG_DECL
|
||||||
@ -73,5 +73,36 @@ bool BOOST_CONFIG_DECL check_options(
|
|||||||
# include <boost/config/auto_link.hpp>
|
# include <boost/config/auto_link.hpp>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef BOOST_NO_EXTERN_TEMPLATE
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
T test_free_proc(T v)
|
||||||
|
{
|
||||||
|
return v;
|
||||||
|
}
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
struct tester
|
||||||
|
{
|
||||||
|
static int test();
|
||||||
|
};
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
int tester<T>::test()
|
||||||
|
{
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef BOOST_CONFIG_SOURCE
|
||||||
|
template BOOST_SYMBOL_EXPORT int test_free_proc<int>(int);
|
||||||
|
template BOOST_SYMBOL_EXPORT int tester<int>::test();
|
||||||
|
#else
|
||||||
|
extern template BOOST_SYMBOL_IMPORT int test_free_proc<int>(int);
|
||||||
|
extern template BOOST_SYMBOL_IMPORT int tester<int>::test();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif // BOOST_NO_EXTERN_TEMPLATE
|
||||||
|
|
||||||
#endif // BOOST_LINK_TEST_HPP
|
#endif // BOOST_LINK_TEST_HPP
|
||||||
|
|
||||||
|
|
||||||
|
@ -9,6 +9,10 @@
|
|||||||
|
|
||||||
int main()
|
int main()
|
||||||
{
|
{
|
||||||
|
#ifndef BOOST_NO_EXTERN_TEMPLATE
|
||||||
|
test_free_proc<int>(0);
|
||||||
|
tester<int>::test();
|
||||||
|
#endif
|
||||||
return check_options(dyn_link, dyn_rtl, has_threads, debug, stl_debug) ? 0 : -1;
|
return check_options(dyn_link, dyn_rtl, has_threads, debug, stl_debug) ? 0 : -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -69,13 +69,14 @@ autolink-lib link_test : ../link_test.cpp
|
|||||||
:
|
:
|
||||||
;
|
;
|
||||||
|
|
||||||
|
|
||||||
explicit link_test ;
|
explicit link_test ;
|
||||||
|
|
||||||
run ../main.cpp link_test
|
run ../main.cpp link_test
|
||||||
: : : <toolset>msvc-8.0:<build>no <link>static <runtime-link>static <threading>single debug : link_test_ssd ;
|
: : : <toolset>msvc-8.0:<build>no <toolset>msvc-9.0:<build>no <toolset>msvc-10.0:<build>no <link>static <runtime-link>static <threading>single debug : link_test_ssd ;
|
||||||
|
|
||||||
run ../main.cpp link_test
|
run ../main.cpp link_test
|
||||||
: : : <toolset>msvc-8.0:<build>no <link>static <runtime-link>static <threading>single release : link_test_ssr ;
|
: : : <toolset>msvc-8.0:<build>no <toolset>msvc-9.0:<build>no <toolset>msvc-10.0:<build>no <link>static <runtime-link>static <threading>single release : link_test_ssr ;
|
||||||
|
|
||||||
run ../main.cpp link_test
|
run ../main.cpp link_test
|
||||||
: : : <link>static <runtime-link>static <threading>multi debug : link_test_smd ;
|
: : : <link>static <runtime-link>static <threading>multi debug : link_test_smd ;
|
||||||
@ -113,3 +114,4 @@ run ../main.cpp link_test
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
37
test/no_com_value_init_fail.cpp
Normal file
37
test/no_com_value_init_fail.cpp
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
// This file was automatically generated on Fri Apr 09 12:24:53 2010
|
||||||
|
// by libs/config/tools/generate.cpp
|
||||||
|
// Copyright John Maddock 2002-4.
|
||||||
|
// Use, modification and distribution are subject to 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)
|
||||||
|
|
||||||
|
// See http://www.boost.org/libs/config for the most recent version.//
|
||||||
|
// Revision $Id: generate.cpp 49281 2008-10-11 15:40:44Z johnmaddock $
|
||||||
|
//
|
||||||
|
|
||||||
|
|
||||||
|
// Test file for macro BOOST_NO_COMPLETE_VALUE_INITIALIZATION
|
||||||
|
// This file should not compile, if it does then
|
||||||
|
// BOOST_NO_COMPLETE_VALUE_INITIALIZATION should not be defined.
|
||||||
|
// See file boost_no_com_value_init.ipp for details
|
||||||
|
|
||||||
|
// Must not have BOOST_ASSERT_CONFIG set; it defeats
|
||||||
|
// the objective of this file:
|
||||||
|
#ifdef BOOST_ASSERT_CONFIG
|
||||||
|
# undef BOOST_ASSERT_CONFIG
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <boost/config.hpp>
|
||||||
|
#include "test.hpp"
|
||||||
|
|
||||||
|
#ifdef BOOST_NO_COMPLETE_VALUE_INITIALIZATION
|
||||||
|
#include "boost_no_com_value_init.ipp"
|
||||||
|
#else
|
||||||
|
#error "this file should not compile"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int main( int, char *[] )
|
||||||
|
{
|
||||||
|
return boost_no_complete_value_initialization::test();
|
||||||
|
}
|
||||||
|
|
37
test/no_com_value_init_pass.cpp
Normal file
37
test/no_com_value_init_pass.cpp
Normal file
@ -0,0 +1,37 @@
|
|||||||
|
// This file was automatically generated on Fri Apr 09 12:24:53 2010
|
||||||
|
// by libs/config/tools/generate.cpp
|
||||||
|
// Copyright John Maddock 2002-4.
|
||||||
|
// Use, modification and distribution are subject to 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)
|
||||||
|
|
||||||
|
// See http://www.boost.org/libs/config for the most recent version.//
|
||||||
|
// Revision $Id: generate.cpp 49281 2008-10-11 15:40:44Z johnmaddock $
|
||||||
|
//
|
||||||
|
|
||||||
|
|
||||||
|
// Test file for macro BOOST_NO_COMPLETE_VALUE_INITIALIZATION
|
||||||
|
// This file should compile, if it does not then
|
||||||
|
// BOOST_NO_COMPLETE_VALUE_INITIALIZATION should be defined.
|
||||||
|
// See file boost_no_com_value_init.ipp for details
|
||||||
|
|
||||||
|
// Must not have BOOST_ASSERT_CONFIG set; it defeats
|
||||||
|
// the objective of this file:
|
||||||
|
#ifdef BOOST_ASSERT_CONFIG
|
||||||
|
# undef BOOST_ASSERT_CONFIG
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <boost/config.hpp>
|
||||||
|
#include "test.hpp"
|
||||||
|
|
||||||
|
#ifndef BOOST_NO_COMPLETE_VALUE_INITIALIZATION
|
||||||
|
#include "boost_no_com_value_init.ipp"
|
||||||
|
#else
|
||||||
|
namespace boost_no_complete_value_initialization = empty_boost;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int main( int, char *[] )
|
||||||
|
{
|
||||||
|
return boost_no_complete_value_initialization::test();
|
||||||
|
}
|
||||||
|
|
Reference in New Issue
Block a user