Merge branch 'develop'

This commit is contained in:
jzmaddock
2014-10-16 11:51:55 +01:00
62 changed files with 5389 additions and 3327 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -271,6 +271,12 @@ feature off.
Causes the auto-linking code to output diagnostic messages indicating the Causes the auto-linking code to output diagnostic messages indicating the
name of the library that is selected for linking. name of the library that is selected for linking.
]] ]]
[[`BOOST_LIB_BUILDID`][
If you built Boost using the `--buildid` option then set this macro to the same value
as you passed to bjam. For example if you built using `bjam address-model=64 --buildid=amd64`
then compile your code with `-DBOOST_LIB_BUILDID=amd64` to ensure the correct libraries
are selected at link time.
]]
[[`BOOST_LIB_TOOLSET`][ [[`BOOST_LIB_TOOLSET`][
Overrides the name of the toolset part of the name of library being linked 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 to; note if defined this must be defined to a quoted string literal, for

View File

@ -37,6 +37,10 @@
that describe C++11 features not supported</a></span></dt> 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 <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> 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.macros_that_describe_c__14_features_not_supported">Macros
that describe C++14 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__14_features_with_c__11_or_earlier_compilers">Macros
that allow use of C++14 features with C++11 or earlier compilers</a></span></dt>
<dt><span class="section"><a href="boost_macro_reference.html#boost_config.boost_macro_reference.boost_helper_macros">Boost <dt><span class="section"><a href="boost_macro_reference.html#boost_config.boost_macro_reference.boost_helper_macros">Boost
Helper Macros</a></span></dt> Helper Macros</a></span></dt>
<dt><span class="section"><a href="boost_macro_reference.html#boost_config.boost_macro_reference.boost_informational_macros">Boost <dt><span class="section"><a href="boost_macro_reference.html#boost_config.boost_macro_reference.boost_informational_macros">Boost
@ -3451,6 +3455,209 @@
</div> </div>
<div class="section"> <div class="section">
<div class="titlepage"><div><div><h3 class="title"> <div class="titlepage"><div><div><h3 class="title">
<a name="boost_config.boost_macro_reference.macros_that_describe_c__14_features_not_supported"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_c__14_features_not_supported" title="Macros that describe C++14 features not supported">Macros
that describe C++14 features not supported</a>
</h3></div></div></div>
<p>
The following macros describe features in the 2014 ISO C++ standard, formerly
known as C++0y, 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_CXX14_AGGREGATE_NSDMI</span></code>
</p>
</td>
<td>
<p>
The compiler does not support member initializer for aggregates
as in the following example:
</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="keyword">struct</span> <span class="identifier">Foo</span>
<span class="special">{</span>
<span class="keyword">int</span> <span class="identifier">x</span><span class="special">,</span> <span class="identifier">y</span> <span class="special">=</span> <span class="number">42</span><span class="special">;</span>
<span class="special">};</span>
<span class="identifier">Foo</span> <span class="identifier">foo</span> <span class="special">=</span> <span class="special">{</span> <span class="number">0</span> <span class="special">};</span>
</pre>
<p>
</p>
</blockquote></div>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">BOOST_NO_CXX14_BINARY_LITERALS</span></code>
</p>
</td>
<td>
<p>
The compiler does not binary literals (e.g. <code class="computeroutput"><span class="number">0</span><span class="identifier">b1010</span></code>).
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">BOOST_NO_CXX14_CONSTEXPR</span></code>
</p>
</td>
<td>
<p>
The compiler does not support relaxed <code class="computeroutput"><span class="keyword">constexpr</span></code>.
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">BOOST_NO_CXX14_DECLTYPE_AUTO</span></code>
</p>
</td>
<td>
<p>
The compiler does not support <code class="computeroutput"><span class="keyword">decltype</span><span class="special">(</span><span class="keyword">auto</span><span class="special">)</span></code>.
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">BOOST_NO_CXX14_DIGIT_SEPARATOR</span></code>
</p>
</td>
<td>
<p>
The compiler does not support digit separators (e.g. <code class="computeroutput"><span class="number">1</span><span class="char">'000'</span><span class="number">000</span></code>).
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">BOOST_NO_CXX14_GENERIC_LAMBDAS</span></code>
</p>
</td>
<td>
<p>
The compiler does not support generic lambda (e.g. <code class="computeroutput"><span class="special">[](</span><span class="keyword">auto</span>
<span class="identifier">v</span><span class="special">){</span>
<span class="special">}</span></code>).
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURE</span></code>
</p>
</td>
<td>
<p>
The compiler does not support initialized lambda capture (e.g.
<code class="computeroutput"><span class="special">[</span><span class="identifier">foo</span>
<span class="special">=</span> <span class="number">42</span><span class="special">]{</span> <span class="special">}</span></code>).
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION</span></code>
</p>
</td>
<td>
<p>
The compiler does not support return type deduction for normal
functions (e.g. <code class="computeroutput"><span class="keyword">auto</span> <span class="identifier">f</span><span class="special">()</span>
<span class="special">{</span> <span class="keyword">return</span>
<span class="identifier">val</span><span class="special">;</span>
<span class="special">}</span></code>).
</p>
</td>
</tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">BOOST_NO_CXX14_VARIABLE_TEMPLATES</span></code>
</p>
</td>
<td>
<p>
The compiler does not support variable template (e.g. <code class="computeroutput"><span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">T</span>
<span class="identifier">kibi</span> <span class="special">=</span>
<span class="identifier">T</span><span class="special">(</span><span class="number">1024</span><span class="special">);</span></code>).
</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__14_features_with_c__11_or_earlier_compilers"></a><a name="config_14_for_11"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_allow_use_of_c__14_features_with_c__11_or_earlier_compilers" title="Macros that allow use of C++14 features with C++11 or earlier compilers">Macros
that allow use of C++14 features with C++11 or earlier compilers</a>
</h3></div></div></div>
<p>
The following macros allow use of C++14 features even with compilers that
do not yet provide compliant C++14 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_CXX14_CONSTEXPR</span></code>
</p>
</td>
<td>
<p>
This macro works similar to BOOST_CONSTEXPR, but expands to <code class="computeroutput"><span class="keyword">constexpr</span></code> only if the C++14 "relaxed"
<code class="computeroutput"><span class="keyword">constexpr</span></code> is available.
</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_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 <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> Helper Macros</a>
</h3></div></div></div> </h3></div></div></div>
@ -3981,6 +4188,20 @@
</p> </p>
</td> </td>
</tr> </tr>
<tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">BOOST_ATTRIBUTE_UNUSED</span></code>
</p>
</td>
<td>
<p>
Expands to <code class="computeroutput"><span class="identifier">__attribute__</span><span class="special">((</span><span class="identifier">unused</span><span class="special">))</span></code> when this is available - can
be used to disable compiler warnings relating to unused types or
variables.
</p>
</td>
</tr>
</tbody> </tbody>
</table></div> </table></div>
</div> </div>

View File

@ -68,6 +68,10 @@
that describe C++11 features not supported</a></span></dt> 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 <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> 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.macros_that_describe_c__14_features_not_supported">Macros
that describe C++14 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__14_features_with_c__11_or_earlier_compilers">Macros
that allow use of C++14 features with C++11 or earlier 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 <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> 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 <dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.boost_informational_macros">Boost
@ -680,6 +684,22 @@
</td> </td>
</tr> </tr>
<tr> <tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">BOOST_LIB_BUILDID</span></code>
</p>
</td>
<td>
<p>
If you built Boost using the <code class="computeroutput"><span class="special">--</span><span class="identifier">buildid</span></code> option then set this
macro to the same value as you passed to bjam. For example if you
built using <code class="computeroutput"><span class="identifier">bjam</span> <span class="identifier">address</span><span class="special">-</span><span class="identifier">model</span><span class="special">=</span><span class="number">64</span> <span class="special">--</span><span class="identifier">buildid</span><span class="special">=</span><span class="identifier">amd64</span></code> then compile your code
with <code class="computeroutput"><span class="special">-</span><span class="identifier">DBOOST_LIB_BUILDID</span><span class="special">=</span><span class="identifier">amd64</span></code>
to ensure the correct libraries are selected at link time.
</p>
</td>
</tr>
<tr>
<td> <td>
<p> <p>
<code class="computeroutput"><span class="identifier">BOOST_LIB_TOOLSET</span></code> <code class="computeroutput"><span class="identifier">BOOST_LIB_TOOLSET</span></code>
@ -968,7 +988,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: August 25, 2014 at 17:53:11 GMT</small></p></td> <td align="left"><p><small>Last revised: October 12, 2014 at 16:00:14 GMT</small></p></td>
<td align="right"><div class="copyright-footer"></div></td> <td align="right"><div class="copyright-footer"></div></td>
</tr></table> </tr></table>
<hr> <hr>

View File

@ -870,6 +870,51 @@ release supports the CTP features.
[endsect] [endsect]
[section Macros that describe C++14 features not supported]
The following macros describe features in the 2014 ISO C++ standard, formerly known as C++0y,
that are not yet supported by a particular compiler or library.
[table
[[Macro ][Description ]]
[[`BOOST_NO_CXX14_AGGREGATE_NSDMI`][The compiler does not support member initializer for aggregates as in the following example:
[:
``
struct Foo
{
int x, y = 42;
};
Foo foo = { 0 };
``
]
]]
[[`BOOST_NO_CXX14_BINARY_LITERALS`][The compiler does not binary literals (e.g. `0b1010`).]]
[[`BOOST_NO_CXX14_CONSTEXPR`][The compiler does not support relaxed `constexpr`.]]
[[`BOOST_NO_CXX14_DECLTYPE_AUTO`][The compiler does not support `decltype(auto)`.]]
[[`BOOST_NO_CXX14_DIGIT_SEPARATOR`][The compiler does not support digit separators (e.g. `1'000'000`).]]
[[`BOOST_NO_CXX14_GENERIC_LAMBDAS`][The compiler does not support generic lambda (e.g. `[](auto v){ }`).]]
[[`BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURE`][The compiler does not support initialized lambda capture (e.g. `[foo = 42]{ }`).]]
[[`BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION`][The compiler does not support return type deduction for normal functions (e.g. `auto f() { return val; }`).]]
[[`BOOST_NO_CXX14_VARIABLE_TEMPLATES`][The compiler does not support variable template (e.g. `template <class T> T kibi = T(1024);`).]]
]
[endsect]
[#config_14_for_11]
[section Macros that allow use of C++14 features with C++11 or earlier compilers]
The following macros allow use of C++14 features even with compilers that do not yet
provide compliant C++14 support.
[table
[[Macro ][ Description ]]
[[`BOOST_CXX14_CONSTEXPR`][This macro works similar to BOOST_CONSTEXPR, but expands to `constexpr` only if the C++14 "relaxed" `constexpr` is available.]]
]
[endsect]
[#config_helpers] [#config_helpers]
[section Boost Helper Macros] [section Boost Helper Macros]
@ -1152,6 +1197,8 @@ Usage example:
handle_error("ptr is NULL"); handle_error("ptr is NULL");
`` ``
]] ]]
[[`BOOST_ATTRIBUTE_UNUSED`][Expands to `__attribute__((unused))` when this is available -
can be used to disable compiler warnings relating to unused types or variables.]]
] ]
[endsect] [endsect]

View File

@ -156,11 +156,16 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y.
// vc11: // vc11:
# define BOOST_LIB_TOOLSET "vc110" # define BOOST_LIB_TOOLSET "vc110"
# elif defined(BOOST_MSVC) # elif defined(BOOST_MSVC) && (BOOST_MSVC < 1900)
// vc12: // vc12:
# define BOOST_LIB_TOOLSET "vc120" # define BOOST_LIB_TOOLSET "vc120"
# elif defined(BOOST_MSVC)
// vc14:
# define BOOST_LIB_TOOLSET "vc140"
# elif defined(__BORLANDC__) # elif defined(__BORLANDC__)
// CBuilder 6: // CBuilder 6:
@ -382,6 +387,11 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y.
# 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
#elif defined(BOOST_LIB_BUILDID)
# 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 "-" BOOST_STRINGIZE(BOOST_LIB_BUILDID) ".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 "-" BOOST_STRINGIZE(BOOST_LIB_BUILDID) ".lib")
# endif
#else #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") # 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 # ifdef BOOST_LIB_DIAGNOSTIC

View File

@ -197,6 +197,35 @@
#define BOOST_NO_CXX11_REF_QUALIFIERS #define BOOST_NO_CXX11_REF_QUALIFIERS
#define BOOST_NO_CXX11_FINAL #define BOOST_NO_CXX11_FINAL
// C++ 14:
#if !defined(__cpp_aggregate_nsdmi) || (__cpp_aggregate_nsdmi < 201304)
# define BOOST_NO_CXX14_AGGREGATE_NSDMI
#endif
#if !defined(__cpp_binary_literals) || (__cpp_binary_literals < 201304)
# define BOOST_NO_CXX14_BINARY_LITERALS
#endif
#if !defined(__cpp_constexpr) || (__cpp_constexpr < 201304)
# define BOOST_NO_CXX14_CONSTEXPR
#endif
#if !defined(__cpp_decltype_auto) || (__cpp_decltype_auto < 201304)
# define BOOST_NO_CXX14_DECLTYPE_AUTO
#endif
#if (__cplusplus < 201304) // There's no SD6 check for this....
# define BOOST_NO_CXX14_DIGIT_SEPARATOR
#endif
#if !defined(__cpp_generic_lambdas) || (__cpp_generic_lambdas < 201304)
# define BOOST_NO_CXX14_GENERIC_LAMBDAS
#endif
#if !defined(__cpp_init_captures) || (__cpp_init_captures < 201304)
# define BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES
#endif
#if !defined(__cpp_return_type_deduction) || (__cpp_return_type_deduction < 201304)
# define BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION
#endif
#if !defined(__cpp_variable_templates) || (__cpp_variable_templates < 201304)
# define BOOST_NO_CXX14_VARIABLE_TEMPLATES
#endif
#if __BORLANDC__ >= 0x590 #if __BORLANDC__ >= 0x590
# define BOOST_HAS_TR1_HASH # define BOOST_HAS_TR1_HASH

View File

@ -52,7 +52,15 @@
// Clang supports "long long" in all compilation modes. // Clang supports "long long" in all compilation modes.
#define BOOST_HAS_LONG_LONG #define BOOST_HAS_LONG_LONG
#if defined(__SIZEOF_INT128__) //
// We disable this if the compiler is really nvcc as it
// doesn't actually support __int128 as of CUDA_VERSION=5000
// even though it defines __SIZEOF_INT128__.
// See https://svn.boost.org/trac/boost/ticket/10418
// Only re-enable this for nvcc if you're absolutely sure
// of the circumstances under which it's supported:
//
#if defined(__SIZEOF_INT128__) && !defined(__CUDACC__)
# define BOOST_HAS_INT128 # define BOOST_HAS_INT128
#endif #endif
@ -197,8 +205,47 @@
# define BOOST_NO_CXX11_FINAL # define BOOST_NO_CXX11_FINAL
#endif #endif
// Clang always supports variadic macros #if !(__has_feature(cxx_binary_literals) || __has_extension(cxx_binary_literals))
// Clang always supports extern templates # define BOOST_NO_CXX14_BINARY_LITERALS
#endif
#if !(__has_feature(cxx_decltype_auto) || __has_extension(cxx_decltype_auto))
# define BOOST_NO_CXX14_DECLTYPE_AUTO
#endif
#if !(__has_feature(cxx_aggregate_nsdmi) || __has_extension(cxx_aggregate_nsdmi))
# define BOOST_NO_CXX14_AGGREGATE_NSDMI
#endif
#if !(__has_feature(cxx_init_captures) || __has_extension(cxx_init_captures))
# define BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES
#endif
#if !(__has_feature(cxx_generic_lambdas) || __has_extension(cxx_generic_lambdas))
# define BOOST_NO_CXX14_GENERIC_LAMBDAS
#endif
#if !(__has_feature(cxx_relaxed_constexpr) || __has_extension(cxx_relaxed_constexpr))
# define BOOST_NO_CXX14_CONSTEXPR
#endif
#if !(__has_feature(cxx_return_type_deduction) || __has_extension(cxx_return_type_deduction))
# define BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION
#endif
#if !(__has_feature(cxx_variable_templates) || __has_extension(cxx_variable_templates))
# define BOOST_NO_CXX14_VARIABLE_TEMPLATES
#endif
#if ((__clang_major__ < 3) || (__clang_major__ == 3 && __clang_minor__ < 4)) || (__cplusplus < 201400)
# define BOOST_NO_CXX14_DIGIT_SEPARATOR
#endif
// Unused attribute:
#if defined(__GNUC__) && (__GNUC__ >= 4)
# define BOOST_ATTRIBUTE_UNUSED __attribute__((unused))
#endif
#ifndef BOOST_COMPILER #ifndef BOOST_COMPILER
# define BOOST_COMPILER "Clang version " __clang_version__ # define BOOST_COMPILER "Clang version " __clang_version__

View File

@ -123,6 +123,35 @@
#define BOOST_NO_CXX11_REF_QUALIFIERS #define BOOST_NO_CXX11_REF_QUALIFIERS
#define BOOST_NO_CXX11_FINAL #define BOOST_NO_CXX11_FINAL
// C++ 14:
#if !defined(__cpp_aggregate_nsdmi) || (__cpp_aggregate_nsdmi < 201304)
# define BOOST_NO_CXX14_AGGREGATE_NSDMI
#endif
#if !defined(__cpp_binary_literals) || (__cpp_binary_literals < 201304)
# define BOOST_NO_CXX14_BINARY_LITERALS
#endif
#if !defined(__cpp_constexpr) || (__cpp_constexpr < 201304)
# define BOOST_NO_CXX14_CONSTEXPR
#endif
#if !defined(__cpp_decltype_auto) || (__cpp_decltype_auto < 201304)
# define BOOST_NO_CXX14_DECLTYPE_AUTO
#endif
#if (__cplusplus < 201304) // There's no SD6 check for this....
# define BOOST_NO_CXX14_DIGIT_SEPARATOR
#endif
#if !defined(__cpp_generic_lambdas) || (__cpp_generic_lambdas < 201304)
# define BOOST_NO_CXX14_GENERIC_LAMBDAS
#endif
#if !defined(__cpp_init_captures) || (__cpp_init_captures < 201304)
# define BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES
#endif
#if !defined(__cpp_return_type_deduction) || (__cpp_return_type_deduction < 201304)
# define BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION
#endif
#if !defined(__cpp_variable_templates) || (__cpp_variable_templates < 201304)
# define BOOST_NO_CXX14_VARIABLE_TEMPLATES
#endif
// //
// TR1 macros: // TR1 macros:
// //

View File

@ -107,6 +107,35 @@
#define BOOST_NO_CXX11_REF_QUALIFIERS #define BOOST_NO_CXX11_REF_QUALIFIERS
#define BOOST_NO_CXX11_FINAL #define BOOST_NO_CXX11_FINAL
// C++ 14:
#if !defined(__cpp_aggregate_nsdmi) || (__cpp_aggregate_nsdmi < 201304)
# define BOOST_NO_CXX14_AGGREGATE_NSDMI
#endif
#if !defined(__cpp_binary_literals) || (__cpp_binary_literals < 201304)
# define BOOST_NO_CXX14_BINARY_LITERALS
#endif
#if !defined(__cpp_constexpr) || (__cpp_constexpr < 201304)
# define BOOST_NO_CXX14_CONSTEXPR
#endif
#if !defined(__cpp_decltype_auto) || (__cpp_decltype_auto < 201304)
# define BOOST_NO_CXX14_DECLTYPE_AUTO
#endif
#if (__cplusplus < 201304) // There's no SD6 check for this....
# define BOOST_NO_CXX14_DIGIT_SEPARATOR
#endif
#if !defined(__cpp_generic_lambdas) || (__cpp_generic_lambdas < 201304)
# define BOOST_NO_CXX14_GENERIC_LAMBDAS
#endif
#if !defined(__cpp_init_captures) || (__cpp_init_captures < 201304)
# define BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES
#endif
#if !defined(__cpp_return_type_deduction) || (__cpp_return_type_deduction < 201304)
# define BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION
#endif
#if !defined(__cpp_variable_templates) || (__cpp_variable_templates < 201304)
# define BOOST_NO_CXX14_VARIABLE_TEMPLATES
#endif
#ifdef c_plusplus #ifdef c_plusplus
// EDG has "long long" in non-strict mode // EDG has "long long" in non-strict mode
// However, some libraries have insufficient "long long" support // However, some libraries have insufficient "long long" support

View File

@ -60,6 +60,8 @@
#define BOOST_NO_CXX11_CHAR16_T #define BOOST_NO_CXX11_CHAR16_T
#define BOOST_NO_CXX11_REF_QUALIFIERS #define BOOST_NO_CXX11_REF_QUALIFIERS
#define BOOST_NO_CXX11_FINAL #define BOOST_NO_CXX11_FINAL
//#define BOOST_BCB_PARTIAL_SPECIALIZATION_BUG //#define BOOST_BCB_PARTIAL_SPECIALIZATION_BUG
#define BOOST_MATH_DISABLE_STD_FPCLASSIFY #define BOOST_MATH_DISABLE_STD_FPCLASSIFY
//#define BOOST_HAS_FPCLASSIFY //#define BOOST_HAS_FPCLASSIFY

View File

@ -83,6 +83,35 @@
#define BOOST_NO_CXX11_REF_QUALIFIERS #define BOOST_NO_CXX11_REF_QUALIFIERS
#define BOOST_NO_CXX11_FINAL #define BOOST_NO_CXX11_FINAL
// C++ 14:
#if !defined(__cpp_aggregate_nsdmi) || (__cpp_aggregate_nsdmi < 201304)
# define BOOST_NO_CXX14_AGGREGATE_NSDMI
#endif
#if !defined(__cpp_binary_literals) || (__cpp_binary_literals < 201304)
# define BOOST_NO_CXX14_BINARY_LITERALS
#endif
#if !defined(__cpp_constexpr) || (__cpp_constexpr < 201304)
# define BOOST_NO_CXX14_CONSTEXPR
#endif
#if !defined(__cpp_decltype_auto) || (__cpp_decltype_auto < 201304)
# define BOOST_NO_CXX14_DECLTYPE_AUTO
#endif
#if (__cplusplus < 201304) // There's no SD6 check for this....
# define BOOST_NO_CXX14_DIGIT_SEPARATOR
#endif
#if !defined(__cpp_generic_lambdas) || (__cpp_generic_lambdas < 201304)
# define BOOST_NO_CXX14_GENERIC_LAMBDAS
#endif
#if !defined(__cpp_init_captures) || (__cpp_init_captures < 201304)
# define BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES
#endif
#if !defined(__cpp_return_type_deduction) || (__cpp_return_type_deduction < 201304)
# define BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION
#endif
#if !defined(__cpp_variable_templates) || (__cpp_variable_templates < 201304)
# define BOOST_NO_CXX14_VARIABLE_TEMPLATES
#endif
#if (__DMC__ <= 0x840) #if (__DMC__ <= 0x840)
#error "Compiler not supported or configured - please reconfigure" #error "Compiler not supported or configured - please reconfigure"
#endif #endif

View File

@ -16,8 +16,13 @@
// //
// Define BOOST_GCC so we know this is "real" GCC and not some pretender: // Define BOOST_GCC so we know this is "real" GCC and not some pretender:
// //
#define BOOST_GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
#if !defined(__CUDACC__) #if !defined(__CUDACC__)
#define BOOST_GCC (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__) #define BOOST_GCC BOOST_GCC_VERSION
#endif
#if defined(__GXX_EXPERIMENTAL_CXX0X__) || (__cplusplus >= 201103L)
# define BOOST_GCC_CXX11
#endif #endif
#if __GNUC__ == 3 #if __GNUC__ == 3
@ -42,11 +47,11 @@
#endif #endif
// GCC prior to 3.4 had #pragma once too but it didn't work well with filesystem links // GCC prior to 3.4 had #pragma once too but it didn't work well with filesystem links
#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ >= 4) #if BOOST_GCC_VERSION >= 30400
#define BOOST_HAS_PRAGMA_ONCE #define BOOST_HAS_PRAGMA_ONCE
#endif #endif
#if __GNUC__ < 4 || ( __GNUC__ == 4 && __GNUC_MINOR__ < 4 ) #if BOOST_GCC_VERSION < 40400
// Previous versions of GCC did not completely implement value-initialization: // Previous versions of GCC did not completely implement value-initialization:
// GCC Bug 30111, "Value-initialization of POD base class doesn't initialize // GCC Bug 30111, "Value-initialization of POD base class doesn't initialize
// members", reported by Jonathan Wakely in 2006, // members", reported by Jonathan Wakely in 2006,
@ -114,7 +119,7 @@
// //
// RTTI and typeinfo detection is possible post gcc-4.3: // RTTI and typeinfo detection is possible post gcc-4.3:
// //
#if __GNUC__ * 100 + __GNUC_MINOR__ >= 403 #if BOOST_GCC_VERSION > 40300
# ifndef __GXX_RTTI # ifndef __GXX_RTTI
# ifndef BOOST_NO_TYPEID # ifndef BOOST_NO_TYPEID
# define BOOST_NO_TYPEID # define BOOST_NO_TYPEID
@ -141,7 +146,7 @@
// C++0x features in 4.3.n and later // C++0x features in 4.3.n and later
// //
#if (__GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ > 2)) && defined(__GXX_EXPERIMENTAL_CXX0X__) #if (BOOST_GCC_VERSION >= 40300) && defined(BOOST_GCC_CXX11)
// C++0x features are only enabled when -std=c++0x or -std=gnu++0x are // C++0x features are only enabled when -std=c++0x or -std=gnu++0x are
// passed on the command line, which in turn defines // passed on the command line, which in turn defines
// __GXX_EXPERIMENTAL_CXX0X__. // __GXX_EXPERIMENTAL_CXX0X__.
@ -158,7 +163,7 @@
// C++0x features in 4.4.n and later // C++0x features in 4.4.n and later
// //
#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 4) || !defined(__GXX_EXPERIMENTAL_CXX0X__) #if (BOOST_GCC_VERSION < 40400) || !defined(BOOST_GCC_CXX11)
# define BOOST_NO_CXX11_AUTO_DECLARATIONS # define BOOST_NO_CXX11_AUTO_DECLARATIONS
# define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS # define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
# define BOOST_NO_CXX11_CHAR16_T # define BOOST_NO_CXX11_CHAR16_T
@ -171,18 +176,18 @@
# define BOOST_NO_CXX11_VARIADIC_TEMPLATES # define BOOST_NO_CXX11_VARIADIC_TEMPLATES
#endif #endif
#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 5) #if BOOST_GCC_VERSION < 40500
# define BOOST_NO_SFINAE_EXPR # define BOOST_NO_SFINAE_EXPR
#endif #endif
// GCC 4.5 forbids declaration of defaulted functions in private or protected sections // GCC 4.5 forbids declaration of defaulted functions in private or protected sections
#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ == 5) || !defined(__GXX_EXPERIMENTAL_CXX0X__) #if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ == 5) || !defined(BOOST_GCC_CXX11)
# define BOOST_NO_CXX11_NON_PUBLIC_DEFAULTED_FUNCTIONS # define BOOST_NO_CXX11_NON_PUBLIC_DEFAULTED_FUNCTIONS
#endif #endif
// C++0x features in 4.5.0 and later // C++0x features in 4.5.0 and later
// //
#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 5) || !defined(__GXX_EXPERIMENTAL_CXX0X__) #if (BOOST_GCC_VERSION < 40500) || !defined(BOOST_GCC_CXX11)
# define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS # define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
# define BOOST_NO_CXX11_LAMBDAS # define BOOST_NO_CXX11_LAMBDAS
# define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS # define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
@ -192,7 +197,7 @@
// C++0x features in 4.5.1 and later // C++0x features in 4.5.1 and later
// //
#if (__GNUC__*10000 + __GNUC_MINOR__*100 + __GNUC_PATCHLEVEL__ < 40501) || !defined(__GXX_EXPERIMENTAL_CXX0X__) #if (BOOST_GCC_VERSION < 40501) || !defined(BOOST_GCC_CXX11)
// scoped enums have a serious bug in 4.4.0, so define BOOST_NO_CXX11_SCOPED_ENUMS before 4.5.1 // scoped enums have a serious bug in 4.4.0, so define BOOST_NO_CXX11_SCOPED_ENUMS before 4.5.1
// See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38064 // See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38064
# define BOOST_NO_CXX11_SCOPED_ENUMS # define BOOST_NO_CXX11_SCOPED_ENUMS
@ -200,7 +205,7 @@
// C++0x features in 4.6.n and later // C++0x features in 4.6.n and later
// //
#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 6) || !defined(__GXX_EXPERIMENTAL_CXX0X__) #if (BOOST_GCC_VERSION < 40600) || !defined(BOOST_GCC_CXX11)
#define BOOST_NO_CXX11_CONSTEXPR #define BOOST_NO_CXX11_CONSTEXPR
#define BOOST_NO_CXX11_NOEXCEPT #define BOOST_NO_CXX11_NOEXCEPT
#define BOOST_NO_CXX11_NULLPTR #define BOOST_NO_CXX11_NULLPTR
@ -210,7 +215,7 @@
// C++0x features in 4.7.n and later // C++0x features in 4.7.n and later
// //
#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 7) || !defined(__GXX_EXPERIMENTAL_CXX0X__) #if (BOOST_GCC_VERSION < 40700) || !defined(BOOST_GCC_CXX11)
# define BOOST_NO_CXX11_FINAL # define BOOST_NO_CXX11_FINAL
# define BOOST_NO_CXX11_TEMPLATE_ALIASES # define BOOST_NO_CXX11_TEMPLATE_ALIASES
# define BOOST_NO_CXX11_USER_DEFINED_LITERALS # define BOOST_NO_CXX11_USER_DEFINED_LITERALS
@ -219,15 +224,46 @@
// C++0x features in 4.8.n and later // C++0x features in 4.8.n and later
// //
#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 8) || !defined(__GXX_EXPERIMENTAL_CXX0X__) #if (BOOST_GCC_VERSION < 40800) || !defined(BOOST_GCC_CXX11)
# define BOOST_NO_CXX11_ALIGNAS # define BOOST_NO_CXX11_ALIGNAS
#endif #endif
// C++0x features in 4.8.1 and later // C++0x features in 4.8.1 and later
// //
#if (__GNUC__*10000 + __GNUC_MINOR__*100 + __GNUC_PATCHLEVEL__ < 40801) || !defined(__GXX_EXPERIMENTAL_CXX0X__) #if (BOOST_GCC_VERSION < 40801) || !defined(BOOST_GCC_CXX11)
# define BOOST_NO_CXX11_DECLTYPE_N3276 # define BOOST_NO_CXX11_DECLTYPE_N3276
# define BOOST_NO_CXX11_REF_QUALIFIERS # define BOOST_NO_CXX11_REF_QUALIFIERS
# define BOOST_NO_CXX14_BINARY_LITERALS
#endif
// C++14 features in 4.9.0 and later
//
#if (BOOST_GCC_VERSION < 40900) || (__cplusplus < 201300)
# define BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION
# define BOOST_NO_CXX14_GENERIC_LAMBDAS
# define BOOST_NO_CXX14_DIGIT_SEPARATOR
# define BOOST_NO_CXX14_DECLTYPE_AUTO
# if !((BOOST_GCC_VERSION >= 40801) && (BOOST_GCC_VERSION < 40900) && defined(BOOST_GCC_CXX11))
# define BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES
# endif
#endif
// C++ 14:
#if !defined(__cpp_aggregate_nsdmi) || (__cpp_aggregate_nsdmi < 201304)
# define BOOST_NO_CXX14_AGGREGATE_NSDMI
#endif
#if !defined(__cpp_constexpr) || (__cpp_constexpr < 201304)
# define BOOST_NO_CXX14_CONSTEXPR
#endif
#if !defined(__cpp_variable_templates) || (__cpp_variable_templates < 201304)
# define BOOST_NO_CXX14_VARIABLE_TEMPLATES
#endif
//
// Unused attribute:
#if __GNUC__ >= 4
# define BOOST_ATTRIBUTE_UNUSED __attribute__((unused))
#endif #endif
#ifndef BOOST_COMPILER #ifndef BOOST_COMPILER
@ -243,12 +279,12 @@
// versions check: // versions check:
// we don't know gcc prior to version 3.30: // we don't know gcc prior to version 3.30:
#if (__GNUC__ < 3) || (__GNUC__ == 3 && (__GNUC_MINOR__ < 3)) #if (BOOST_GCC_VERSION< 30300)
# error "Compiler not configured - please reconfigure" # error "Compiler not configured - please reconfigure"
#endif #endif
// //
// last known and checked version is 4.6 (Pre-release): // last known and checked version is 4.9:
#if (__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ > 6)) #if (BOOST_GCC_VERSION > 40900)
# 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
@ -258,4 +294,3 @@
# endif # endif
#endif #endif

View File

@ -61,6 +61,35 @@
# define BOOST_NO_CXX11_REF_QUALIFIERS # define BOOST_NO_CXX11_REF_QUALIFIERS
#define BOOST_NO_CXX11_FINAL #define BOOST_NO_CXX11_FINAL
// C++ 14:
#if !defined(__cpp_aggregate_nsdmi) || (__cpp_aggregate_nsdmi < 201304)
# define BOOST_NO_CXX14_AGGREGATE_NSDMI
#endif
#if !defined(__cpp_binary_literals) || (__cpp_binary_literals < 201304)
# define BOOST_NO_CXX14_BINARY_LITERALS
#endif
#if !defined(__cpp_constexpr) || (__cpp_constexpr < 201304)
# define BOOST_NO_CXX14_CONSTEXPR
#endif
#if !defined(__cpp_decltype_auto) || (__cpp_decltype_auto < 201304)
# define BOOST_NO_CXX14_DECLTYPE_AUTO
#endif
#if (__cplusplus < 201304) // There's no SD6 check for this....
# define BOOST_NO_CXX14_DIGIT_SEPARATOR
#endif
#if !defined(__cpp_generic_lambdas) || (__cpp_generic_lambdas < 201304)
# define BOOST_NO_CXX14_GENERIC_LAMBDAS
#endif
#if !defined(__cpp_init_captures) || (__cpp_init_captures < 201304)
# define BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES
#endif
#if !defined(__cpp_return_type_deduction) || (__cpp_return_type_deduction < 201304)
# define BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION
#endif
#if !defined(__cpp_variable_templates) || (__cpp_variable_templates < 201304)
# define BOOST_NO_CXX14_VARIABLE_TEMPLATES
#endif
#define BOOST_COMPILER "GCC-XML C++ version " __GCCXML__ #define BOOST_COMPILER "GCC-XML C++ version " __GCCXML__

View File

@ -17,7 +17,11 @@
#include "boost/config/compiler/common_edg.hpp" #include "boost/config/compiler/common_edg.hpp"
#if defined(__INTEL_COMPILER) #if defined(__INTEL_COMPILER)
#if __INTEL_COMPILER == 9999
# define BOOST_INTEL_CXX_VERSION 1200 // Intel bug in 12.1.
#else
# define BOOST_INTEL_CXX_VERSION __INTEL_COMPILER # define BOOST_INTEL_CXX_VERSION __INTEL_COMPILER
#endif
#elif defined(__ICL) #elif defined(__ICL)
# define BOOST_INTEL_CXX_VERSION __ICL # define BOOST_INTEL_CXX_VERSION __ICL
#elif defined(__ICC) #elif defined(__ICC)
@ -34,6 +38,10 @@
# define BOOST_INTEL_STDCXX0X # define BOOST_INTEL_STDCXX0X
#endif #endif
#ifdef __GNUC__
# define BOOST_INTEL_GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
#endif
#if !defined(BOOST_COMPILER) #if !defined(BOOST_COMPILER)
# if defined(BOOST_INTEL_STDCXX0X) # if defined(BOOST_INTEL_STDCXX0X)
# define BOOST_COMPILER "Intel C++ C++0x mode version " BOOST_STRINGIZE(BOOST_INTEL_CXX_VERSION) # define BOOST_COMPILER "Intel C++ C++0x mode version " BOOST_STRINGIZE(BOOST_INTEL_CXX_VERSION)
@ -220,91 +228,187 @@ template<> struct assert_intrinsic_wchar_t<unsigned short> {};
#endif #endif
// //
// C++0x features // C++0x features
// - ICC added static_assert in 11.0 (first version with C++0x support) // For each feature we need to check both the Intel compiler version,
// and the version of MSVC or GCC that we are emulating.
// See http://software.intel.com/en-us/articles/c0x-features-supported-by-intel-c-compiler/
// for a list of which features were implemented in which Intel releases.
// //
#if defined(BOOST_INTEL_STDCXX0X) #if defined(BOOST_INTEL_STDCXX0X)
# undef BOOST_NO_CXX11_STATIC_ASSERT // BOOST_NO_CXX11_CONSTEXPR:
// #if (BOOST_INTEL_CXX_VERSION >= 1500) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40600)) && !defined(_MSC_VER)
// These pass our test cases, but aren't officially supported according to: // Available in earlier Intel versions, but fail our tests:
// http://software.intel.com/en-us/articles/c0x-features-supported-by-intel-c-compiler/ # undef BOOST_NO_CXX11_CONSTEXPR
// #endif
//# undef BOOST_NO_CXX11_LAMBDAS // BOOST_NO_CXX11_NULLPTR:
//# undef BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS #if (BOOST_INTEL_CXX_VERSION >= 1210) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40600)) && (!defined(_MSC_VER) || (_MSC_VER >= 1600))
//# undef BOOST_NO_CXX11_DECLTYPE # undef BOOST_NO_CXX11_NULLPTR
//# undef BOOST_NO_CXX11_AUTO_DECLARATIONS #endif
//# undef BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS // BOOST_NO_CXX11_TEMPLATE_ALIASES
#if (BOOST_INTEL_CXX_VERSION >= 1210) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40700)) && (!defined(_MSC_VER) || (_MSC_FULL_VER >= 180020827))
# undef BOOST_NO_CXX11_TEMPLATE_ALIASES
#endif #endif
#if defined(BOOST_INTEL_STDCXX0X) && (BOOST_INTEL_CXX_VERSION >= 1200) // BOOST_NO_CXX11_DECLTYPE
//# undef BOOST_NO_CXX11_RVALUE_REFERENCES // Enabling this breaks Filesystem and Exception libraries #if (BOOST_INTEL_CXX_VERSION >= 1200) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40300)) && (!defined(_MSC_VER) || (_MSC_VER >= 1600))
//# undef BOOST_NO_CXX11_SCOPED_ENUMS // doesn't really work!! # undef BOOST_NO_CXX11_DECLTYPE
# undef BOOST_NO_CXX11_DELETED_FUNCTIONS
# undef BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
# undef BOOST_NO_CXX11_LAMBDAS
# undef BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
# undef BOOST_NO_CXX11_DECLTYPE
# undef BOOST_NO_CXX11_AUTO_DECLARATIONS
# undef BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
# undef BOOST_NO_CXX11_TRAILING_RESULT_TYPES
#endif #endif
// icl Version 12.1.0.233 Build 20110811 and possibly some other builds // BOOST_NO_CXX11_DECLTYPE_N3276
// had an incorrect __INTEL_COMPILER value of 9999. Intel say this has been fixed. #if (BOOST_INTEL_CXX_VERSION >= 1500) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40800)) && (!defined(_MSC_VER) || (_MSC_FULL_VER >= 180020827))
#if defined(BOOST_INTEL_STDCXX0X) && (BOOST_INTEL_CXX_VERSION > 1200) # undef BOOST_NO_CXX11_DECLTYPE_N3276
# undef BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
# undef BOOST_NO_CXX11_NULLPTR
# undef BOOST_NO_CXX11_RVALUE_REFERENCES
# undef BOOST_NO_SFINAE_EXPR
# undef BOOST_NO_CXX11_TEMPLATE_ALIASES
# undef BOOST_NO_CXX11_VARIADIC_TEMPLATES
// http://software.intel.com/en-us/articles/c0x-features-supported-by-intel-c-compiler/
// continues to list scoped enum support as "Partial"
//# undef BOOST_NO_CXX11_SCOPED_ENUMS
#endif #endif
#if defined(BOOST_INTEL_STDCXX0X) && (BOOST_INTEL_CXX_VERSION >= 1310) && !defined(_MSC_VER)
# undef BOOST_NO_CXX11_INLINE_NAMESPACES // BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
#if (BOOST_INTEL_CXX_VERSION >= 1200) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40300)) && (!defined(_MSC_VER) || (_MSC_FULL_VER >= 180020827))
# undef BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS # undef BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
// This one generates internal compiler errors in multiprecision, disabled for now:
//# undef BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
// This one generates errors when used with conditional exception specifications, for example in multiprecision:
//# undef BOOST_NO_CXX11_NOEXCEPT
# undef BOOST_NO_CXX11_RANGE_BASED_FOR
# undef BOOST_NO_CXX11_SCOPED_ENUMS
# undef BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
# undef BOOST_NO_CXX11_FINAL
#endif #endif
#if (BOOST_INTEL_CXX_VERSION >= 1310)
# undef BOOST_NO_SFINAE_EXPR // BOOST_NO_CXX11_RVALUE_REFERENCES
#if (BOOST_INTEL_CXX_VERSION >= 1300) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40300)) && (!defined(_MSC_VER) || (_MSC_VER >= 1600))
// This is available from earlier Intel versions, but breaks Filesystem and other libraries:
# undef BOOST_NO_CXX11_RVALUE_REFERENCES
#endif #endif
#if defined(BOOST_INTEL_STDCXX0X) && (BOOST_INTEL_CXX_VERSION >= 1400) && !defined(_MSC_VER)
# undef BOOST_NO_CXX11_UNICODE_LITERALS // BOOST_NO_CXX11_STATIC_ASSERT
# undef BOOST_NO_CXX11_RAW_LITERALS #if (BOOST_INTEL_CXX_VERSION >= 1110) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40300)) && (!defined(_MSC_VER) || (_MSC_VER >= 1600))
// This one generates errors when used with conditional exception specifications, for example in multiprecision: # undef BOOST_NO_CXX11_STATIC_ASSERT
//# undef BOOST_NO_CXX11_NOEXCEPT #endif
// This breaks multiprecision:
//# undef BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS // BOOST_NO_CXX11_VARIADIC_TEMPLATES
# undef BOOST_NO_CXX11_HDR_THREAD #if (BOOST_INTEL_CXX_VERSION >= 1200) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40400)) && (!defined(_MSC_VER) || (_MSC_FULL_VER >= 180020827))
# undef BOOST_NO_CXX11_CHAR32_T # undef BOOST_NO_CXX11_VARIADIC_TEMPLATES
#endif
// BOOST_NO_CXX11_VARIADIC_MACROS
#if (BOOST_INTEL_CXX_VERSION >= 1200) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40200)) && (!defined(_MSC_VER) || (_MSC_VER >= 1400))
# undef BOOST_NO_CXX11_VARIADIC_MACROS
#endif
// BOOST_NO_CXX11_AUTO_DECLARATIONS
#if (BOOST_INTEL_CXX_VERSION >= 1200) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40400)) && (!defined(_MSC_VER) || (_MSC_VER >= 1600))
# undef BOOST_NO_CXX11_AUTO_DECLARATIONS
#endif
// BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
#if (BOOST_INTEL_CXX_VERSION >= 1200) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40400)) && (!defined(_MSC_VER) || (_MSC_VER >= 1600))
# undef BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
#endif
// BOOST_NO_CXX11_CHAR16_T
#if (BOOST_INTEL_CXX_VERSION >= 1400) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40400)) && (!defined(_MSC_VER) || (_MSC_VER >= 9999))
# undef BOOST_NO_CXX11_CHAR16_T # undef BOOST_NO_CXX11_CHAR16_T
#endif
// BOOST_NO_CXX11_CHAR32_T
#if (BOOST_INTEL_CXX_VERSION >= 1400) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40400)) && (!defined(_MSC_VER) || (_MSC_VER >= 9999))
# undef BOOST_NO_CXX11_CHAR32_T
#endif
// BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
#if (BOOST_INTEL_CXX_VERSION >= 1200) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40400)) && (!defined(_MSC_VER) || (_MSC_FULL_VER >= 180020827))
# undef BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
#endif
// BOOST_NO_CXX11_DELETED_FUNCTIONS
#if (BOOST_INTEL_CXX_VERSION >= 1200) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40400)) && (!defined(_MSC_VER) || (_MSC_FULL_VER >= 180020827))
# undef BOOST_NO_CXX11_DELETED_FUNCTIONS
#endif
// BOOST_NO_CXX11_HDR_INITIALIZER_LIST
#if (BOOST_INTEL_CXX_VERSION >= 1400) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40400)) && (!defined(_MSC_VER) || (_MSC_VER >= 1700))
# undef BOOST_NO_CXX11_HDR_INITIALIZER_LIST
#endif
// BOOST_NO_CXX11_SCOPED_ENUMS
#if (BOOST_INTEL_CXX_VERSION >= 1400) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40501)) && (!defined(_MSC_VER) || (_MSC_VER >= 1700))
// This is available but broken in earlier Intel releases.
# undef BOOST_NO_CXX11_SCOPED_ENUMS
#endif
// BOOST_NO_SFINAE_EXPR
#if (BOOST_INTEL_CXX_VERSION >= 1200) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40500)) && (!defined(_MSC_VER) || (_MSC_VER >= 9999))
# undef BOOST_NO_SFINAE_EXPR
#endif
// BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
#if (BOOST_INTEL_CXX_VERSION >= 1500) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40500)) && (!defined(_MSC_VER) || (_MSC_FULL_VER >= 180020827))
// This is available in earlier Intel releases, but breaks Multiprecision:
# undef BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
#endif
// BOOST_NO_CXX11_LAMBDAS
#if (BOOST_INTEL_CXX_VERSION >= 1200) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40500)) && (!defined(_MSC_VER) || (_MSC_VER >= 1600))
# undef BOOST_NO_CXX11_LAMBDAS
#endif
// BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
#if (BOOST_INTEL_CXX_VERSION >= 1200) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40500))
# undef BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
#endif
// BOOST_NO_CXX11_RANGE_BASED_FOR
#if (BOOST_INTEL_CXX_VERSION >= 1400) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40600)) && (!defined(_MSC_VER) || (_MSC_VER >= 1700))
# undef BOOST_NO_CXX11_RANGE_BASED_FOR
#endif
// BOOST_NO_CXX11_RAW_LITERALS
#if (BOOST_INTEL_CXX_VERSION >= 1400) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40500)) && (!defined(_MSC_VER) || (_MSC_FULL_VER >= 180020827))
# undef BOOST_NO_CXX11_RAW_LITERALS
#endif
// BOOST_NO_CXX11_UNICODE_LITERALS
#if (BOOST_INTEL_CXX_VERSION >= 1400) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40500)) && (!defined(_MSC_VER) || (_MSC_VER >= 9999))
# undef BOOST_NO_CXX11_UNICODE_LITERALS
#endif
// BOOST_NO_CXX11_NOEXCEPT
#if (BOOST_INTEL_CXX_VERSION >= 1500) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40600)) && (!defined(_MSC_VER) || (_MSC_VER >= 9999))
// Available in earlier Intel release, but generates errors when used with
// conditional exception specifications, for example in multiprecision:
# undef BOOST_NO_CXX11_NOEXCEPT
#endif
// BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
#if (BOOST_INTEL_CXX_VERSION >= 1400) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40600)) && (!defined(_MSC_VER) || (_MSC_VER >= 9999))
# undef BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
#endif
// BOOST_NO_CXX11_USER_DEFINED_LITERALS
#if (BOOST_INTEL_CXX_VERSION >= 1500) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40700)) && (!defined(_MSC_VER) || (_MSC_FULL_VER >= 190021730))
# undef BOOST_NO_CXX11_USER_DEFINED_LITERALS
#endif
// BOOST_NO_CXX11_ALIGNAS
#if (BOOST_INTEL_CXX_VERSION >= 1500) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40800)) && (!defined(_MSC_VER) || (_MSC_FULL_VER >= 190021730))
# undef BOOST_NO_CXX11_ALIGNAS
#endif
// BOOST_NO_CXX11_TRAILING_RESULT_TYPES
#if (BOOST_INTEL_CXX_VERSION >= 1200) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40400)) && (!defined(_MSC_VER) || (_MSC_FULL_VER >= 180020827))
# undef BOOST_NO_CXX11_TRAILING_RESULT_TYPES
#endif
// BOOST_NO_CXX11_INLINE_NAMESPACES
#if (BOOST_INTEL_CXX_VERSION >= 1400) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40400)) && (!defined(_MSC_VER) || (_MSC_FULL_VER >= 190021730))
# undef BOOST_NO_CXX11_INLINE_NAMESPACES
#endif
// BOOST_NO_CXX11_REF_QUALIFIERS
#if (BOOST_INTEL_CXX_VERSION >= 1400) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40800)) && (!defined(_MSC_VER) || (_MSC_FULL_VER >= 190021730))
# undef BOOST_NO_CXX11_REF_QUALIFIERS # undef BOOST_NO_CXX11_REF_QUALIFIERS
#endif #endif
#if defined(BOOST_INTEL_STDCXX0X) && (BOOST_INTEL_CXX_VERSION >= 1500) && (!defined(_MSC_VER) || (_MSC_VER >= 1800)) // BOOST_NO_CXX11_FINAL
# undef BOOST_NO_CXX11_ADDRESSOF #if (BOOST_INTEL_CXX_VERSION >= 1400) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40700)) && (!defined(_MSC_VER) || (_MSC_VER >= 1700))
# undef BOOST_NO_CXX11_DECLTYPE_N3276 # undef BOOST_NO_CXX11_FINAL
# undef BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
# undef BOOST_NO_CXX11_RANGE_BASED_FOR
# undef BOOST_NO_CXX11_RAW_LITERALS
# undef BOOST_NO_CXX11_SCOPED_ENUMS
#endif #endif
#if defined(BOOST_INTEL_STDCXX0X) && (BOOST_INTEL_CXX_VERSION >= 1500) && !defined(_MSC_VER)
# undef BOOST_NO_CXX11_ALIGNAS
# undef BOOST_NO_CXX11_CONSTEXPR
# undef BOOST_NO_CXX11_NOEXCEPT
# undef BOOST_NO_CXX11_USER_DEFINED_LITERALS
#endif #endif
//
// Broken in all versions up to 15:
#define BOOST_NO_CXX11_FIXED_LENGTH_VARIADIC_TEMPLATE_EXPANSION_PACKS
#if defined(BOOST_INTEL_STDCXX0X) && (BOOST_INTEL_CXX_VERSION <= 1310) #if defined(BOOST_INTEL_STDCXX0X) && (BOOST_INTEL_CXX_VERSION <= 1310)
# define BOOST_NO_CXX11_HDR_FUTURE # define BOOST_NO_CXX11_HDR_FUTURE
# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST # define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
@ -316,24 +420,6 @@ template<> struct assert_intrinsic_wchar_t<unsigned short> {};
# define BOOST_NO_CXX11_HDR_TUPLE # define BOOST_NO_CXX11_HDR_TUPLE
#endif #endif
#if BOOST_INTEL_CXX_VERSION <= 1500
# define BOOST_NO_CXX11_FIXED_LENGTH_VARIADIC_TEMPLATE_EXPANSION_PACKS
#endif
#if defined(_MSC_VER) && (_MSC_VER <= 1700)
//
// Although the Intel compiler is capable of supporting these, it appears not to in MSVC compatibility mode:
//
# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
# define BOOST_NO_CXX11_VARIADIC_TEMPLATES
# define BOOST_NO_CXX11_DELETED_FUNCTIONS
# define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
# define BOOST_NO_CXX11_TEMPLATE_ALIASES
# if(BOOST_INTEL_CXX_VERSION < 1310)
# define BOOST_NO_CXX11_TRAILING_RESULT_TYPES
# endif
#endif
#if (BOOST_INTEL_CXX_VERSION < 1200) #if (BOOST_INTEL_CXX_VERSION < 1200)
// //
// fenv.h appears not to work with Intel prior to 12.0: // fenv.h appears not to work with Intel prior to 12.0:
@ -350,7 +436,6 @@ template<> struct assert_intrinsic_wchar_t<unsigned short> {};
#if defined(_MSC_VER) && (_MSC_VER >= 1600) #if defined(_MSC_VER) && (_MSC_VER >= 1600)
# define BOOST_HAS_STDINT_H # define BOOST_HAS_STDINT_H
# undef BOOST_NO_CXX11_FINAL
#endif #endif
#if defined(__LP64__) && defined(__GNUC__) && (BOOST_INTEL_CXX_VERSION >= 1310) && !defined(__CUDACC__) #if defined(__LP64__) && defined(__GNUC__) && (BOOST_INTEL_CXX_VERSION >= 1310) && !defined(__CUDACC__)

View File

@ -126,6 +126,35 @@
#define BOOST_NO_CXX11_REF_QUALIFIERS #define BOOST_NO_CXX11_REF_QUALIFIERS
#define BOOST_NO_CXX11_FINAL #define BOOST_NO_CXX11_FINAL
// C++ 14:
#if !defined(__cpp_aggregate_nsdmi) || (__cpp_aggregate_nsdmi < 201304)
# define BOOST_NO_CXX14_AGGREGATE_NSDMI
#endif
#if !defined(__cpp_binary_literals) || (__cpp_binary_literals < 201304)
# define BOOST_NO_CXX14_BINARY_LITERALS
#endif
#if !defined(__cpp_constexpr) || (__cpp_constexpr < 201304)
# define BOOST_NO_CXX14_CONSTEXPR
#endif
#if !defined(__cpp_decltype_auto) || (__cpp_decltype_auto < 201304)
# define BOOST_NO_CXX14_DECLTYPE_AUTO
#endif
#if (__cplusplus < 201304) // There's no SD6 check for this....
# define BOOST_NO_CXX14_DIGIT_SEPARATOR
#endif
#if !defined(__cpp_generic_lambdas) || (__cpp_generic_lambdas < 201304)
# define BOOST_NO_CXX14_GENERIC_LAMBDAS
#endif
#if !defined(__cpp_init_captures) || (__cpp_init_captures < 201304)
# define BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES
#endif
#if !defined(__cpp_return_type_deduction) || (__cpp_return_type_deduction < 201304)
# define BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION
#endif
#if !defined(__cpp_variable_templates) || (__cpp_variable_templates < 201304)
# define BOOST_NO_CXX14_VARIABLE_TEMPLATES
#endif
#define BOOST_COMPILER "Metrowerks CodeWarrior C++ version " BOOST_STRINGIZE(BOOST_COMPILER_VERSION) #define BOOST_COMPILER "Metrowerks CodeWarrior C++ version " BOOST_STRINGIZE(BOOST_COMPILER_VERSION)
// //

View File

@ -74,6 +74,36 @@
#define BOOST_NO_CXX11_INLINE_NAMESPACES #define BOOST_NO_CXX11_INLINE_NAMESPACES
#define BOOST_NO_CXX11_REF_QUALIFIERS #define BOOST_NO_CXX11_REF_QUALIFIERS
#define BOOST_NO_CXX11_FINAL #define BOOST_NO_CXX11_FINAL
// C++ 14:
#if !defined(__cpp_aggregate_nsdmi) || (__cpp_aggregate_nsdmi < 201304)
# define BOOST_NO_CXX14_AGGREGATE_NSDMI
#endif
#if !defined(__cpp_binary_literals) || (__cpp_binary_literals < 201304)
# define BOOST_NO_CXX14_BINARY_LITERALS
#endif
#if !defined(__cpp_constexpr) || (__cpp_constexpr < 201304)
# define BOOST_NO_CXX14_CONSTEXPR
#endif
#if !defined(__cpp_decltype_auto) || (__cpp_decltype_auto < 201304)
# define BOOST_NO_CXX14_DECLTYPE_AUTO
#endif
#if (__cplusplus < 201304) // There's no SD6 check for this....
# define BOOST_NO_CXX14_DIGIT_SEPARATOR
#endif
#if !defined(__cpp_generic_lambdas) || (__cpp_generic_lambdas < 201304)
# define BOOST_NO_CXX14_GENERIC_LAMBDAS
#endif
#if !defined(__cpp_init_captures) || (__cpp_init_captures < 201304)
# define BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES
#endif
#if !defined(__cpp_return_type_deduction) || (__cpp_return_type_deduction < 201304)
# define BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION
#endif
#if !defined(__cpp_variable_templates) || (__cpp_variable_templates < 201304)
# define BOOST_NO_CXX14_VARIABLE_TEMPLATES
#endif
// //
// versions check: // versions check:
// we don't support MPW prior to version 8.9: // we don't support MPW prior to version 8.9:

View File

@ -82,4 +82,33 @@
# define BOOST_NO_CXX11_INLINE_NAMESPACES # define BOOST_NO_CXX11_INLINE_NAMESPACES
# define BOOST_NO_CXX11_REF_QUALIFIERS # define BOOST_NO_CXX11_REF_QUALIFIERS
# define BOOST_NO_CXX11_FINAL # define BOOST_NO_CXX11_FINAL
// C++ 14:
#if !defined(__cpp_aggregate_nsdmi) || (__cpp_aggregate_nsdmi < 201304)
# define BOOST_NO_CXX14_AGGREGATE_NSDMI
#endif
#if !defined(__cpp_binary_literals) || (__cpp_binary_literals < 201304)
# define BOOST_NO_CXX14_BINARY_LITERALS
#endif
#if !defined(__cpp_constexpr) || (__cpp_constexpr < 201304)
# define BOOST_NO_CXX14_CONSTEXPR
#endif
#if !defined(__cpp_decltype_auto) || (__cpp_decltype_auto < 201304)
# define BOOST_NO_CXX14_DECLTYPE_AUTO
#endif
#if (__cplusplus < 201304) // There's no SD6 check for this....
# define BOOST_NO_CXX14_DIGIT_SEPARATOR
#endif
#if !defined(__cpp_generic_lambdas) || (__cpp_generic_lambdas < 201304)
# define BOOST_NO_CXX14_GENERIC_LAMBDAS
#endif
#if !defined(__cpp_init_captures) || (__cpp_init_captures < 201304)
# define BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES
#endif
#if !defined(__cpp_return_type_deduction) || (__cpp_return_type_deduction < 201304)
# define BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION
#endif
#if !defined(__cpp_variable_templates) || (__cpp_variable_templates < 201304)
# define BOOST_NO_CXX14_VARIABLE_TEMPLATES
#endif
#endif #endif

View File

@ -121,6 +121,34 @@
#define BOOST_NO_CXX11_REF_QUALIFIERS #define BOOST_NO_CXX11_REF_QUALIFIERS
#define BOOST_NO_CXX11_FINAL #define BOOST_NO_CXX11_FINAL
// C++ 14:
#if !defined(__cpp_aggregate_nsdmi) || (__cpp_aggregate_nsdmi < 201304)
# define BOOST_NO_CXX14_AGGREGATE_NSDMI
#endif
#if !defined(__cpp_binary_literals) || (__cpp_binary_literals < 201304)
# define BOOST_NO_CXX14_BINARY_LITERALS
#endif
#if !defined(__cpp_constexpr) || (__cpp_constexpr < 201304)
# define BOOST_NO_CXX14_CONSTEXPR
#endif
#if !defined(__cpp_decltype_auto) || (__cpp_decltype_auto < 201304)
# define BOOST_NO_CXX14_DECLTYPE_AUTO
#endif
#if (__cplusplus < 201304) // There's no SD6 check for this....
# define BOOST_NO_CXX14_DIGIT_SEPARATOR
#endif
#if !defined(__cpp_generic_lambdas) || (__cpp_generic_lambdas < 201304)
# define BOOST_NO_CXX14_GENERIC_LAMBDAS
#endif
#if !defined(__cpp_init_captures) || (__cpp_init_captures < 201304)
# define BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES
#endif
#if !defined(__cpp_return_type_deduction) || (__cpp_return_type_deduction < 201304)
# define BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION
#endif
#if !defined(__cpp_variable_templates) || (__cpp_variable_templates < 201304)
# define BOOST_NO_CXX14_VARIABLE_TEMPLATES
#endif
// //
// version check: // version check:
// probably nothing to do here? // probably nothing to do here?

View File

@ -134,6 +134,34 @@
#define BOOST_NO_CXX11_REF_QUALIFIERS #define BOOST_NO_CXX11_REF_QUALIFIERS
#define BOOST_NO_CXX11_FINAL #define BOOST_NO_CXX11_FINAL
// C++ 14:
#if !defined(__cpp_aggregate_nsdmi) || (__cpp_aggregate_nsdmi < 201304)
# define BOOST_NO_CXX14_AGGREGATE_NSDMI
#endif
#if !defined(__cpp_binary_literals) || (__cpp_binary_literals < 201304)
# define BOOST_NO_CXX14_BINARY_LITERALS
#endif
#if !defined(__cpp_constexpr) || (__cpp_constexpr < 201304)
# define BOOST_NO_CXX14_CONSTEXPR
#endif
#if !defined(__cpp_decltype_auto) || (__cpp_decltype_auto < 201304)
# define BOOST_NO_CXX14_DECLTYPE_AUTO
#endif
#if (__cplusplus < 201304) // There's no SD6 check for this....
# define BOOST_NO_CXX14_DIGIT_SEPARATOR
#endif
#if !defined(__cpp_generic_lambdas) || (__cpp_generic_lambdas < 201304)
# define BOOST_NO_CXX14_GENERIC_LAMBDAS
#endif
#if !defined(__cpp_init_captures) || (__cpp_init_captures < 201304)
# define BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES
#endif
#if !defined(__cpp_return_type_deduction) || (__cpp_return_type_deduction < 201304)
# define BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION
#endif
#if !defined(__cpp_variable_templates) || (__cpp_variable_templates < 201304)
# define BOOST_NO_CXX14_VARIABLE_TEMPLATES
#endif
// //
// Version // Version
// //

View File

@ -131,3 +131,32 @@
#define BOOST_NO_CXX11_INLINE_NAMESPACES #define BOOST_NO_CXX11_INLINE_NAMESPACES
#define BOOST_NO_CXX11_REF_QUALIFIERS #define BOOST_NO_CXX11_REF_QUALIFIERS
#define BOOST_NO_CXX11_FINAL #define BOOST_NO_CXX11_FINAL
// C++ 14:
#if !defined(__cpp_aggregate_nsdmi) || (__cpp_aggregate_nsdmi < 201304)
# define BOOST_NO_CXX14_AGGREGATE_NSDMI
#endif
#if !defined(__cpp_binary_literals) || (__cpp_binary_literals < 201304)
# define BOOST_NO_CXX14_BINARY_LITERALS
#endif
#if !defined(__cpp_constexpr) || (__cpp_constexpr < 201304)
# define BOOST_NO_CXX14_CONSTEXPR
#endif
#if !defined(__cpp_decltype_auto) || (__cpp_decltype_auto < 201304)
# define BOOST_NO_CXX14_DECLTYPE_AUTO
#endif
#if (__cplusplus < 201304) // There's no SD6 check for this....
# define BOOST_NO_CXX14_DIGIT_SEPARATOR
#endif
#if !defined(__cpp_generic_lambdas) || (__cpp_generic_lambdas < 201304)
# define BOOST_NO_CXX14_GENERIC_LAMBDAS
#endif
#if !defined(__cpp_init_captures) || (__cpp_init_captures < 201304)
# define BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES
#endif
#if !defined(__cpp_return_type_deduction) || (__cpp_return_type_deduction < 201304)
# define BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION
#endif
#if !defined(__cpp_variable_templates) || (__cpp_variable_templates < 201304)
# define BOOST_NO_CXX14_VARIABLE_TEMPLATES
#endif

View File

@ -192,6 +192,35 @@
#define BOOST_NO_SFINAE_EXPR #define BOOST_NO_SFINAE_EXPR
#define BOOST_NO_TWO_PHASE_NAME_LOOKUP #define BOOST_NO_TWO_PHASE_NAME_LOOKUP
// C++ 14:
#if !defined(__cpp_aggregate_nsdmi) || (__cpp_aggregate_nsdmi < 201304)
# define BOOST_NO_CXX14_AGGREGATE_NSDMI
#endif
#if !defined(__cpp_binary_literals) || (__cpp_binary_literals < 201304)
# define BOOST_NO_CXX14_BINARY_LITERALS
#endif
#if !defined(__cpp_constexpr) || (__cpp_constexpr < 201304)
# define BOOST_NO_CXX14_CONSTEXPR
#endif
#if !defined(__cpp_decltype_auto) || (__cpp_decltype_auto < 201304)
# define BOOST_NO_CXX14_DECLTYPE_AUTO
#endif
#if (__cplusplus < 201304) // There's no SD6 check for this....
# define BOOST_NO_CXX14_DIGIT_SEPARATOR
#endif
#if !defined(__cpp_generic_lambdas) || (__cpp_generic_lambdas < 201304)
# define BOOST_NO_CXX14_GENERIC_LAMBDAS
#endif
#if !defined(__cpp_init_captures) || (__cpp_init_captures < 201304)
# define BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES
#endif
#if !defined(__cpp_return_type_deduction) || (__cpp_return_type_deduction < 201304)
# define BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION
#endif
#if !defined(__cpp_variable_templates) || (__cpp_variable_templates < 201304)
# define BOOST_NO_CXX14_VARIABLE_TEMPLATES
#endif
// //
// prefix and suffix headers: // prefix and suffix headers:
// //
@ -227,6 +256,8 @@
# define BOOST_COMPILER_VERSION evc11 # define BOOST_COMPILER_VERSION evc11
# elif _MSC_VER < 1900 # elif _MSC_VER < 1900
# define BOOST_COMPILER_VERSION evc12 # define BOOST_COMPILER_VERSION evc12
# elif _MSC_VER < 2000
# define BOOST_COMPILER_VERSION evc14
# else # else
# if defined(BOOST_ASSERT_CONFIG) # if defined(BOOST_ASSERT_CONFIG)
# error "Unknown EVC++ compiler version - please run the configure tests and report the results" # error "Unknown EVC++ compiler version - please run the configure tests and report the results"
@ -265,8 +296,8 @@
#endif #endif
// //
// last known and checked version is 19.00.21901.1 (VC14 CTP2): // last known and checked version is 19.00.21901.1 (VC14 CTP3):
#if (_MSC_VER > 1800 && _MSC_FULL_VER > 190021901) #if (_MSC_VER > 1800 && _MSC_FULL_VER > 190022013)
# 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

View File

@ -41,8 +41,10 @@
#endif #endif
#if defined(__MINGW32__) && (__GNUC__ >= 4) #if defined(__MINGW32__) && (__GNUC__ >= 4)
# define BOOST_HAS_EXPM1 // Mingw has these functions but there are persistent problems
# define BOOST_HAS_LOG1P // with calls to these crashing, so disable for now:
//# define BOOST_HAS_EXPM1
//# define BOOST_HAS_LOG1P
# define BOOST_HAS_GETTIMEOFDAY # define BOOST_HAS_GETTIMEOFDAY
#endif #endif
// //

View File

@ -28,13 +28,19 @@
#else #else
// If our std lib was not some version of STLport, then include <utility> as it is about // If our std lib was not some version of STLport, and has not otherwise
// the smallest of the std lib headers that includes real C++ stuff. (Some std libs do not // been detected, then include <utility> as it is about
// include their C++-related macros in <cstddef> so this additional include makes sure // the smallest of the std lib headers that includes real C++ stuff.
// we get those definitions) // Some std libs do not include their C++-related macros in <cstddef>
// (again do not rely on this header being included since users can short-circuit this // so this additional include makes sure we get those definitions.
// header if they know whose std lib they are using.) // Note: do not rely on this header being included since users can short-circuit this
#include <boost/config/no_tr1/utility.hpp> // #include if they know whose std lib they are using.
#if !defined(__LIBCOMO__) && !defined(__STD_RWCOMPILER_H__) && !defined(_RWSTD_VER)\
&& !defined(_LIBCPP_VERSION) && !defined(__GLIBCPP__) && !defined(__GLIBCXX__)\
&& !defined(__STL_CONFIG_H) && !defined(__MSL_CPP__) && !defined(__IBMCPP__)\
&& !defined(MSIPL_COMPILE_H) && !defined(_YVALS) && !defined(_CPPLIB_VER)
#include <utility>
#endif
#if defined(__LIBCOMO__) #if defined(__LIBCOMO__)
// Comeau STL: // Comeau STL:

View File

@ -91,6 +91,14 @@
# endif # endif
#endif #endif
//
// Decide whether we have C++11 support turned on:
//
#if defined(__GXX_EXPERIMENTAL_CXX0X__) || (__cplusplus >= 201103)
# define BOOST_LIBSTDCXX11
#endif
//
// Decide which version of libstdc++ we have, normally
// stdlibc++ C++0x support is detected via __GNUC__, __GNUC_MINOR__, and possibly // stdlibc++ C++0x support is detected via __GNUC__, __GNUC_MINOR__, and possibly
// __GNUC_PATCHLEVEL__ at the suggestion of Jonathan Wakely, one of the stdlibc++ // __GNUC_PATCHLEVEL__ at the suggestion of Jonathan Wakely, one of the stdlibc++
// developers. He also commented: // developers. He also commented:
@ -102,10 +110,48 @@
// //
// Another resource for understanding stdlibc++ features is: // Another resource for understanding stdlibc++ features is:
// http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#manual.intro.status.standard.200x // http://gcc.gnu.org/onlinedocs/libstdc++/manual/status.html#manual.intro.status.standard.200x
//
// However, using the GCC version number fails when the compiler is clang since this
// only ever claims to emulate GCC-4.2, see https://svn.boost.org/trac/boost/ticket/7473
// for a long discussion on this issue. What we can do though is use clang's __has_include
// to detect the presence of a C++11 header that was introduced with a specific GCC release.
// We still have to be careful though as many such headers were buggy and/or incomplete when
// first introduced, so we only check for headers that were fully featured from day 1, and then
// use that to infer the underlying GCC version:
//
#ifdef __clang__
#if __has_include(<experimental/any>)
# define BOOST_LIBSTDCXX_VERSION 50000
#elif __has_include(<shared_mutex>)
# define BOOST_LIBSTDCXX_VERSION 40900
#elif __has_include(<ext/cmath>)
# define BOOST_LIBSTDCXX_VERSION 40800
#elif __has_include(<chrono>)
# define BOOST_LIBSTDCXX_VERSION 40700
#elif __has_include(<typeindex>)
# define BOOST_LIBSTDCXX_VERSION 40600
#elif __has_include(<future>)
# define BOOST_LIBSTDCXX_VERSION 40500
#elif __has_include(<ratio>)
# define BOOST_LIBSTDCXX_VERSION 40400
#elif __has_include(<array>)
# define BOOST_LIBSTDCXX_VERSION 40300
#endif
//
// GCC 4.8 and 9 add working versions of <atomic> and <regex> respectively.
// However, we have no test for these as the headers were present but broken
// in early GCC versions.
//
#endif
#if !defined(BOOST_LIBSTDCXX_VERSION)
# define BOOST_LIBSTDCXX_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
#endif
// C++0x headers in GCC 4.3.0 and later // C++0x headers in GCC 4.3.0 and later
// //
#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 3) || !defined(__GXX_EXPERIMENTAL_CXX0X__) #if (BOOST_LIBSTDCXX_VERSION < 40300) || !defined(BOOST_LIBSTDCXX11)
# define BOOST_NO_CXX11_HDR_ARRAY # define BOOST_NO_CXX11_HDR_ARRAY
# define BOOST_NO_CXX11_HDR_TUPLE # define BOOST_NO_CXX11_HDR_TUPLE
# define BOOST_NO_CXX11_HDR_UNORDERED_MAP # define BOOST_NO_CXX11_HDR_UNORDERED_MAP
@ -115,7 +161,7 @@
// C++0x headers in GCC 4.4.0 and later // C++0x headers in GCC 4.4.0 and later
// //
#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 4) || !defined(__GXX_EXPERIMENTAL_CXX0X__) #if (BOOST_LIBSTDCXX_VERSION < 40400) || !defined(BOOST_LIBSTDCXX11)
# define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE # define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
# define BOOST_NO_CXX11_HDR_FORWARD_LIST # define BOOST_NO_CXX11_HDR_FORWARD_LIST
# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST # define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
@ -128,14 +174,9 @@
# define BOOST_HAS_TR1_COMPLEX_OVERLOADS # define BOOST_HAS_TR1_COMPLEX_OVERLOADS
#endif #endif
#if (!defined(_GLIBCXX_HAS_GTHREADS) || !defined(_GLIBCXX_USE_C99_STDINT_TR1)) && (!defined(BOOST_NO_CXX11_HDR_CONDITION_VARIABLE) || !defined(BOOST_NO_CXX11_HDR_MUTEX))
# define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
# define BOOST_NO_CXX11_HDR_MUTEX
#endif
// C++0x features in GCC 4.5.0 and later // C++0x features in GCC 4.5.0 and later
// //
#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 5) || !defined(__GXX_EXPERIMENTAL_CXX0X__) #if (BOOST_LIBSTDCXX_VERSION < 40500) || !defined(BOOST_LIBSTDCXX11)
# define BOOST_NO_CXX11_NUMERIC_LIMITS # define BOOST_NO_CXX11_NUMERIC_LIMITS
# define BOOST_NO_CXX11_HDR_FUTURE # define BOOST_NO_CXX11_HDR_FUTURE
# define BOOST_NO_CXX11_HDR_RANDOM # define BOOST_NO_CXX11_HDR_RANDOM
@ -143,36 +184,60 @@
// C++0x features in GCC 4.6.0 and later // C++0x features in GCC 4.6.0 and later
// //
#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 6) || !defined(__GXX_EXPERIMENTAL_CXX0X__) #if (BOOST_LIBSTDCXX_VERSION < 40600) || !defined(BOOST_LIBSTDCXX11)
# define BOOST_NO_CXX11_HDR_TYPEINDEX # define BOOST_NO_CXX11_HDR_TYPEINDEX
# define BOOST_NO_CXX11_ADDRESSOF # define BOOST_NO_CXX11_ADDRESSOF
#endif #endif
// C++0x features in GCC 4.7.0 and later // C++0x features in GCC 4.7.0 and later
// //
#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 7) || !defined(__GXX_EXPERIMENTAL_CXX0X__) #if (BOOST_LIBSTDCXX_VERSION < 40700) || !defined(BOOST_LIBSTDCXX11)
// Note that although <chrono> existed prior to 4.7, "steady_clock" is spelled "monotonic_clock" // Note that although <chrono> existed prior to 4.7, "steady_clock" is spelled "monotonic_clock"
// so 4.7.0 is the first truely conforming one. // so 4.7.0 is the first truely conforming one.
# define BOOST_NO_CXX11_HDR_CHRONO # define BOOST_NO_CXX11_HDR_CHRONO
# define BOOST_NO_CXX11_ALLOCATOR # define BOOST_NO_CXX11_ALLOCATOR
#endif #endif
// C++0x features in GCC 4.7.0 and later // C++0x features in GCC 4.8.0 and later
// //
#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 8) || !defined(__GXX_EXPERIMENTAL_CXX0X__) #if (BOOST_LIBSTDCXX_VERSION < 40800) || !defined(BOOST_LIBSTDCXX11)
// Note that although <atomic> existed prior to gcc 4.8 it was largely unimplemented for many types: // Note that although <atomic> existed prior to gcc 4.8 it was largely unimplemented for many types:
# define BOOST_NO_CXX11_HDR_ATOMIC # define BOOST_NO_CXX11_HDR_ATOMIC
# define BOOST_NO_CXX11_HDR_THREAD
#endif #endif
#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 9) || !defined(__GXX_EXPERIMENTAL_CXX0X__) #if (BOOST_LIBSTDCXX_VERSION < 40900) || !defined(BOOST_LIBSTDCXX11)
// Although <regex> is present and compilable against, the actual implementation is not functional // Although <regex> is present and compilable against, the actual implementation is not functional
// even for the simplest patterns such as "\d" or "[0-9]". This is the case at least in gcc up to 4.8, inclusively. // even for the simplest patterns such as "\d" or "[0-9]". This is the case at least in gcc up to 4.8, inclusively.
# define BOOST_NO_CXX11_HDR_REGEX # define BOOST_NO_CXX11_HDR_REGEX
#endif #endif
#if defined(__clang_major__) && ((__clang_major__ < 3) || ((__clang_major__ == 3) && (__clang_minor__ < 7)))
// As of clang-3.6, libstdc++ header <atomic> throws up errors with clang:
# define BOOST_NO_CXX11_HDR_ATOMIC
#endif
// C++0x headers not yet (fully!) implemented // C++0x headers not yet (fully!) implemented
// //
# define BOOST_NO_CXX11_HDR_THREAD
# define BOOST_NO_CXX11_HDR_TYPE_TRAITS # define BOOST_NO_CXX11_HDR_TYPE_TRAITS
# define BOOST_NO_CXX11_HDR_CODECVT # define BOOST_NO_CXX11_HDR_CODECVT
# define BOOST_NO_CXX11_ATOMIC_SMART_PTR # define BOOST_NO_CXX11_ATOMIC_SMART_PTR
# define BOOST_NO_CXX11_STD_ALIGN # define BOOST_NO_CXX11_STD_ALIGN
#if (!defined(_GLIBCXX_HAS_GTHREADS) || !defined(_GLIBCXX_USE_C99_STDINT_TR1))
// Headers not always available:
# ifndef BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
# define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
# endif
# ifndef BOOST_NO_CXX11_HDR_MUTEX
# define BOOST_NO_CXX11_HDR_MUTEX
# endif
# ifndef BOOST_NO_CXX11_HDR_THREAD
# define BOOST_NO_CXX11_HDR_THREAD
# endif
#endif
#if (!defined(_GTHREAD_USE_MUTEX_TIMEDLOCK) || (_GTHREAD_USE_MUTEX_TIMEDLOCK == 0)) && !defined(BOOST_NO_CXX11_HDR_MUTEX)
// Timed mutexes are not always available:
# define BOOST_NO_CXX11_HDR_MUTEX
#endif
// --- end --- // --- end ---

View File

@ -939,6 +939,18 @@ namespace std{ using ::type_info; }
#define BOOST_CONSTEXPR constexpr #define BOOST_CONSTEXPR constexpr
#define BOOST_CONSTEXPR_OR_CONST constexpr #define BOOST_CONSTEXPR_OR_CONST constexpr
#endif #endif
#if defined(BOOST_NO_CXX14_CONSTEXPR)
#define BOOST_CXX14_CONSTEXPR
#else
#define BOOST_CXX14_CONSTEXPR constexpr
#endif
//
// Unused variable/typedef workarounds:
//
#ifndef BOOST_ATTRIBUTE_UNUSED
# define BOOST_ATTRIBUTE_UNUSED
#endif
#define BOOST_STATIC_CONSTEXPR static BOOST_CONSTEXPR_OR_CONST #define BOOST_STATIC_CONSTEXPR static BOOST_CONSTEXPR_OR_CONST

View File

@ -119,5 +119,15 @@
// that feature off. // that feature off.
// #define BOOST_WHATEVER_NO_LIB // #define BOOST_WHATEVER_NO_LIB
// BOOST_LIB_BUILDID: Set to the same value as the value passed to Boost.Build's
// --buildid command line option. For example if you built using:
//
// bjam address-model=64 --buildid=amd64
//
// then compile your code with:
//
// -DBOOST_LIB_BUILDID = amd64
//
// to ensure the correct libraries are selected at link time.
// #define BOOST_LIB_BUILDID amd64

View File

@ -89,6 +89,7 @@ test-suite config
[ compile-fail threads/test_thread_fail1.cpp ] [ compile-fail threads/test_thread_fail1.cpp ]
[ compile-fail threads/test_thread_fail2.cpp ] [ compile-fail threads/test_thread_fail2.cpp ]
[ compile boost_fallthrough_test.cpp : [ check-target-builds has_clang_implicit_fallthrough "Clang implicit fallthrough" : <toolset>clang:<cxxflags>"-std=c++11 -Wimplicit-fallthrough" <warnings-as-errors>on <warnings>all ] ] [ compile boost_fallthrough_test.cpp : [ check-target-builds has_clang_implicit_fallthrough "Clang implicit fallthrough" : <toolset>clang:<cxxflags>"-std=c++11 -Wimplicit-fallthrough" <warnings-as-errors>on <warnings>all ] ]
[ compile helper_macro_test.cpp ]
[ run cstdint_test.cpp : : : <warnings>all <toolset>gcc:<cxxflags>"-Wno-long-long -Wextra" <toolset>darwin:<cxxflags>-Wno-long-long ] [ run cstdint_test.cpp : : : <warnings>all <toolset>gcc:<cxxflags>"-Wno-long-long -Wextra" <toolset>darwin:<cxxflags>-Wno-long-long ]
[ run cstdint_test2.cpp : : : <warnings>all <toolset>gcc:<cxxflags>"-Wno-long-long -Wextra" <toolset>darwin:<cxxflags>-Wno-long-long ] [ run cstdint_test2.cpp : : : <warnings>all <toolset>gcc:<cxxflags>"-Wno-long-long -Wextra" <toolset>darwin:<cxxflags>-Wno-long-long ]
[ compile cstdint_include_test.cpp : <warnings>all <toolset>gcc:<cxxflags>-Wextra ] [ compile cstdint_include_test.cpp : <warnings>all <toolset>gcc:<cxxflags>-Wextra ]

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,23 @@
// (C) Copyright Kohei Takahashi 2014
// 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 more information.
// MACRO: BOOST_NO_CXX14_BINARY_LITERALS
// TITLE: C++14 binary literals unavailable
// DESCRIPTION: The compiler does not support C++14 binary literals
namespace boost_no_cxx14_binary_literals
{
int test()
{
return ((int)0b01000010 == (int)0x42) ? 0 : 1;
}
}

View File

@ -0,0 +1,35 @@
// (C) Copyright Kohei Takahashi 2014
// 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 more information.
// MACRO: BOOST_NO_CXX14_CONSTEXPR
// TITLE: C++14 relaxed constexpr unavailable
// DESCRIPTION: The compiler does not support C++14 relaxed constexpr
namespace boost_no_cxx14_constexpr
{
constexpr void decrement(int &value)
{
--value;
}
constexpr int zero()
{
int ret = 1;
decrement(ret);
return ret;
}
int test()
{
return zero();
}
}

View File

@ -0,0 +1,33 @@
// (C) Copyright Kohei Takahashi 2014
// 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 more information.
// MACRO: BOOST_NO_CXX14_DECLTYPE_AUTO
// TITLE: C++14 decltype(auto) unavailable
// DESCRIPTION: The compiler does not support C++14 decltype(auto)
namespace boost_no_cxx14_decltype_auto
{
void quiet_warning(int){}
const int &foo(const int &x)
{
return x;
}
int test()
{
int j;
decltype(auto) x = foo(j);
quiet_warning(x);
return 0;
}
}

View File

@ -0,0 +1,23 @@
// (C) Copyright Kohei Takahashi 2014
// 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 more information.
// MACRO: BOOST_NO_CXX14_DIGIT_SEPARATOR
// TITLE: C++14 digit separator unavailable
// DESCRIPTION: The compiler does not support C++14 digit separator
namespace boost_no_cxx14_digit_separator
{
int test()
{
return 0'0;
}
}

View File

@ -0,0 +1,23 @@
// (C) Copyright Kohei Takahashi 2014
// 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 more information.
// MACRO: BOOST_NO_CXX14_GENERIC_LAMBDAS
// TITLE: C++14 generic lambda unavailable
// DESCRIPTION: The compiler does not support C++14 generic lambda
namespace boost_no_cxx14_generic_lambdas
{
int test()
{
return [](auto ret) { return ret; } (0);
}
}

View File

@ -0,0 +1,23 @@
// (C) Copyright Kohei Takahashi 2014
// 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 more information.
// MACRO: BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES
// TITLE: C++14 initialized lambda capture unavailable
// DESCRIPTION: The compiler does not support C++14 initialized lambda capture
namespace boost_no_cxx14_initialized_lambda_captures
{
int test()
{
return [ret = 0] { return ret; } ();
}
}

View File

@ -0,0 +1,30 @@
// (C) Copyright Kohei Takahashi 2014
// 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 more information.
// MACRO: BOOST_NO_CXX14_AGGREGATE_NSDMI
// TITLE: C++14 member initializers unavailable
// DESCRIPTION: The compiler does not support C++14 member initializers
namespace boost_no_cxx14_aggregate_nsdmi
{
struct S
{
int x;
int y = 0;
};
int test()
{
S s[] = { { 0x72 }, { 0x42 } };
return s[1].x - 0x42;
}
}

View File

@ -0,0 +1,29 @@
// (C) Copyright Kohei Takahashi 2014
// 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 more information.
// MACRO: BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION
// TITLE: C++14 return type deduction unavailable
// DESCRIPTION: The compiler does not support C++14 return type deduction
namespace boost_no_cxx14_return_type_deduction
{
template<typename T>
auto deduced_abs(T x)
{
return x > 0 ? x : -x;
}
int test()
{
return deduced_abs(2) - deduced_abs(-2);
}
}

View File

@ -0,0 +1,26 @@
// (C) Copyright Kohei Takahashi 2014
// 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 more information.
// MACRO: BOOST_NO_CXX14_VARIABLE_TEMPLATES
// TITLE: C++14 variable templates unavailable
// DESCRIPTION: The compiler does not support C++14 variable templates
namespace boost_no_cxx14_variable_templates
{
template <class T>
T zero = static_cast<T>(0);
int test()
{
return zero<int>;
}
}

View File

@ -1055,6 +1055,15 @@ void print_boost_macros()
PRINT_MACRO(BOOST_NO_CXX11_USER_DEFINED_LITERALS); PRINT_MACRO(BOOST_NO_CXX11_USER_DEFINED_LITERALS);
PRINT_MACRO(BOOST_NO_CXX11_VARIADIC_MACROS); PRINT_MACRO(BOOST_NO_CXX11_VARIADIC_MACROS);
PRINT_MACRO(BOOST_NO_CXX11_VARIADIC_TEMPLATES); PRINT_MACRO(BOOST_NO_CXX11_VARIADIC_TEMPLATES);
PRINT_MACRO(BOOST_NO_CXX14_AGGREGATE_NSDMI);
PRINT_MACRO(BOOST_NO_CXX14_BINARY_LITERALS);
PRINT_MACRO(BOOST_NO_CXX14_CONSTEXPR);
PRINT_MACRO(BOOST_NO_CXX14_DECLTYPE_AUTO);
PRINT_MACRO(BOOST_NO_CXX14_DIGIT_SEPARATOR);
PRINT_MACRO(BOOST_NO_CXX14_GENERIC_LAMBDAS);
PRINT_MACRO(BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES);
PRINT_MACRO(BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION);
PRINT_MACRO(BOOST_NO_CXX14_VARIABLE_TEMPLATES);
PRINT_MACRO(BOOST_NO_DEPENDENT_NESTED_DERIVATIONS); PRINT_MACRO(BOOST_NO_DEPENDENT_NESTED_DERIVATIONS);
PRINT_MACRO(BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS); PRINT_MACRO(BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS);
PRINT_MACRO(BOOST_NO_EXCEPTIONS); PRINT_MACRO(BOOST_NO_EXCEPTIONS);
@ -1114,30 +1123,6 @@ void print_boost_macros()
PRINT_MACRO(BOOST_NO_USING_TEMPLATE); PRINT_MACRO(BOOST_NO_USING_TEMPLATE);
PRINT_MACRO(BOOST_NO_VOID_RETURNS); PRINT_MACRO(BOOST_NO_VOID_RETURNS);
// END GENERATED BLOCK // END GENERATED BLOCK
PRINT_MACRO(BOOST_INTEL); PRINT_MACRO(BOOST_INTEL);

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,60 @@
// 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)
#include <boost/config.hpp>
int test_fallthrough(int n)
{
switch (n)
{
case 0:
n++;
BOOST_FALLTHROUGH;
case 1:
n++;
break;
}
return n;
}
int test_unreachable(int i)
{
if(BOOST_LIKELY(i)) return i;
throw i;
BOOST_UNREACHABLE_RETURN(0);
}
BOOST_FORCEINLINE int always_inline(int i){ return ++i; }
BOOST_NOINLINE int never_inline(int i){ return ++i; }
BOOST_NORETURN void always_throw()
{
throw 0;
}
#define test_fallthrough(x) foobar(x)
int main()
{
typedef int unused_type BOOST_ATTRIBUTE_UNUSED;
try
{
int result = test_fallthrough BOOST_PREVENT_MACRO_SUBSTITUTION(0);
BOOST_STATIC_CONSTANT(bool, value = 0);
result += test_unreachable(1);
result += always_inline(2);
result += never_inline(3);
if(BOOST_UNLIKELY(!result))
always_throw();
}
catch(int)
{
return 1;
}
return 0;
}

View File

@ -73,10 +73,10 @@ 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 <toolset>msvc-9.0:<build>no <toolset>msvc-10.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 <toolset>msvc-11.0:<build>no <toolset>msvc-12.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 <toolset>msvc-9.0:<build>no <toolset>msvc-10.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 <toolset>msvc-11.0:<build>no <toolset>msvc-12.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 ;

View File

@ -0,0 +1,37 @@
// This file was automatically generated on Sat Oct 11 19:26:16 2014
// 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$
//
// Test file for macro BOOST_NO_CXX14_BINARY_LITERALS
// This file should not compile, if it does then
// BOOST_NO_CXX14_BINARY_LITERALS should not be defined.
// See file boost_no_cxx14_binary_literals.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_CXX14_BINARY_LITERALS
#include "boost_no_cxx14_binary_literals.ipp"
#else
#error "this file should not compile"
#endif
int main( int, char *[] )
{
return boost_no_cxx14_binary_literals::test();
}

View File

@ -0,0 +1,37 @@
// This file was automatically generated on Sat Oct 11 19:26:16 2014
// 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$
//
// Test file for macro BOOST_NO_CXX14_BINARY_LITERALS
// This file should compile, if it does not then
// BOOST_NO_CXX14_BINARY_LITERALS should be defined.
// See file boost_no_cxx14_binary_literals.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_CXX14_BINARY_LITERALS
#include "boost_no_cxx14_binary_literals.ipp"
#else
namespace boost_no_cxx14_binary_literals = empty_boost;
#endif
int main( int, char *[] )
{
return boost_no_cxx14_binary_literals::test();
}

View File

@ -0,0 +1,37 @@
// This file was automatically generated on Sat Oct 11 19:26:16 2014
// 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$
//
// Test file for macro BOOST_NO_CXX14_CONSTEXPR
// This file should not compile, if it does then
// BOOST_NO_CXX14_CONSTEXPR should not be defined.
// See file boost_no_cxx14_constexpr.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_CXX14_CONSTEXPR
#include "boost_no_cxx14_constexpr.ipp"
#else
#error "this file should not compile"
#endif
int main( int, char *[] )
{
return boost_no_cxx14_constexpr::test();
}

View File

@ -0,0 +1,37 @@
// This file was automatically generated on Sat Oct 11 19:26:16 2014
// 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$
//
// Test file for macro BOOST_NO_CXX14_CONSTEXPR
// This file should compile, if it does not then
// BOOST_NO_CXX14_CONSTEXPR should be defined.
// See file boost_no_cxx14_constexpr.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_CXX14_CONSTEXPR
#include "boost_no_cxx14_constexpr.ipp"
#else
namespace boost_no_cxx14_constexpr = empty_boost;
#endif
int main( int, char *[] )
{
return boost_no_cxx14_constexpr::test();
}

View File

@ -0,0 +1,37 @@
// This file was automatically generated on Sat Oct 11 19:26:16 2014
// 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$
//
// Test file for macro BOOST_NO_CXX14_DECLTYPE_AUTO
// This file should not compile, if it does then
// BOOST_NO_CXX14_DECLTYPE_AUTO should not be defined.
// See file boost_no_cxx14_decltype_auto.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_CXX14_DECLTYPE_AUTO
#include "boost_no_cxx14_decltype_auto.ipp"
#else
#error "this file should not compile"
#endif
int main( int, char *[] )
{
return boost_no_cxx14_decltype_auto::test();
}

View File

@ -0,0 +1,37 @@
// This file was automatically generated on Sat Oct 11 19:26:16 2014
// 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$
//
// Test file for macro BOOST_NO_CXX14_DECLTYPE_AUTO
// This file should compile, if it does not then
// BOOST_NO_CXX14_DECLTYPE_AUTO should be defined.
// See file boost_no_cxx14_decltype_auto.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_CXX14_DECLTYPE_AUTO
#include "boost_no_cxx14_decltype_auto.ipp"
#else
namespace boost_no_cxx14_decltype_auto = empty_boost;
#endif
int main( int, char *[] )
{
return boost_no_cxx14_decltype_auto::test();
}

View File

@ -0,0 +1,37 @@
// This file was automatically generated on Sat Oct 11 19:26:16 2014
// 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$
//
// Test file for macro BOOST_NO_CXX14_DIGIT_SEPARATOR
// This file should not compile, if it does then
// BOOST_NO_CXX14_DIGIT_SEPARATOR should not be defined.
// See file boost_no_cxx14_digit_separator.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_CXX14_DIGIT_SEPARATOR
#include "boost_no_cxx14_digit_separator.ipp"
#else
#error "this file should not compile"
#endif
int main( int, char *[] )
{
return boost_no_cxx14_digit_separator::test();
}

View File

@ -0,0 +1,37 @@
// This file was automatically generated on Sat Oct 11 19:26:16 2014
// 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$
//
// Test file for macro BOOST_NO_CXX14_DIGIT_SEPARATOR
// This file should compile, if it does not then
// BOOST_NO_CXX14_DIGIT_SEPARATOR should be defined.
// See file boost_no_cxx14_digit_separator.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_CXX14_DIGIT_SEPARATOR
#include "boost_no_cxx14_digit_separator.ipp"
#else
namespace boost_no_cxx14_digit_separator = empty_boost;
#endif
int main( int, char *[] )
{
return boost_no_cxx14_digit_separator::test();
}

View File

@ -0,0 +1,37 @@
// This file was automatically generated on Sat Oct 11 19:26:16 2014
// 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$
//
// Test file for macro BOOST_NO_CXX14_GENERIC_LAMBDAS
// This file should not compile, if it does then
// BOOST_NO_CXX14_GENERIC_LAMBDAS should not be defined.
// See file boost_no_cxx14_generic_lambda.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_CXX14_GENERIC_LAMBDAS
#include "boost_no_cxx14_generic_lambda.ipp"
#else
#error "this file should not compile"
#endif
int main( int, char *[] )
{
return boost_no_cxx14_generic_lambdas::test();
}

View File

@ -0,0 +1,37 @@
// This file was automatically generated on Sat Oct 11 19:26:16 2014
// 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$
//
// Test file for macro BOOST_NO_CXX14_GENERIC_LAMBDAS
// This file should compile, if it does not then
// BOOST_NO_CXX14_GENERIC_LAMBDAS should be defined.
// See file boost_no_cxx14_generic_lambda.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_CXX14_GENERIC_LAMBDAS
#include "boost_no_cxx14_generic_lambda.ipp"
#else
namespace boost_no_cxx14_generic_lambdas = empty_boost;
#endif
int main( int, char *[] )
{
return boost_no_cxx14_generic_lambdas::test();
}

View File

@ -0,0 +1,37 @@
// This file was automatically generated on Sat Oct 11 19:26:17 2014
// 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$
//
// Test file for macro BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES
// This file should not compile, if it does then
// BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES should not be defined.
// See file boost_no_cxx14_lambda_capture.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_CXX14_INITIALIZED_LAMBDA_CAPTURES
#include "boost_no_cxx14_lambda_capture.ipp"
#else
#error "this file should not compile"
#endif
int main( int, char *[] )
{
return boost_no_cxx14_initialized_lambda_captures::test();
}

View File

@ -0,0 +1,37 @@
// This file was automatically generated on Sat Oct 11 19:26:17 2014
// 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$
//
// Test file for macro BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES
// This file should compile, if it does not then
// BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES should be defined.
// See file boost_no_cxx14_lambda_capture.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_CXX14_INITIALIZED_LAMBDA_CAPTURES
#include "boost_no_cxx14_lambda_capture.ipp"
#else
namespace boost_no_cxx14_initialized_lambda_captures = empty_boost;
#endif
int main( int, char *[] )
{
return boost_no_cxx14_initialized_lambda_captures::test();
}

View File

@ -0,0 +1,37 @@
// This file was automatically generated on Sat Oct 11 19:26:17 2014
// 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$
//
// Test file for macro BOOST_NO_CXX14_AGGREGATE_NSDMI
// This file should not compile, if it does then
// BOOST_NO_CXX14_AGGREGATE_NSDMI should not be defined.
// See file boost_no_cxx14_member_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_CXX14_AGGREGATE_NSDMI
#include "boost_no_cxx14_member_init.ipp"
#else
#error "this file should not compile"
#endif
int main( int, char *[] )
{
return boost_no_cxx14_aggregate_nsdmi::test();
}

View File

@ -0,0 +1,37 @@
// This file was automatically generated on Sat Oct 11 19:26:17 2014
// 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$
//
// Test file for macro BOOST_NO_CXX14_AGGREGATE_NSDMI
// This file should compile, if it does not then
// BOOST_NO_CXX14_AGGREGATE_NSDMI should be defined.
// See file boost_no_cxx14_member_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_CXX14_AGGREGATE_NSDMI
#include "boost_no_cxx14_member_init.ipp"
#else
namespace boost_no_cxx14_aggregate_nsdmi = empty_boost;
#endif
int main( int, char *[] )
{
return boost_no_cxx14_aggregate_nsdmi::test();
}

View File

@ -0,0 +1,37 @@
// This file was automatically generated on Sat Oct 11 19:26:17 2014
// 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$
//
// Test file for macro BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION
// This file should not compile, if it does then
// BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION should not be defined.
// See file boost_no_cxx14_return_type_ded.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_CXX14_RETURN_TYPE_DEDUCTION
#include "boost_no_cxx14_return_type_ded.ipp"
#else
#error "this file should not compile"
#endif
int main( int, char *[] )
{
return boost_no_cxx14_return_type_deduction::test();
}

View File

@ -0,0 +1,37 @@
// This file was automatically generated on Sat Oct 11 19:26:17 2014
// 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$
//
// Test file for macro BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION
// This file should compile, if it does not then
// BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION should be defined.
// See file boost_no_cxx14_return_type_ded.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_CXX14_RETURN_TYPE_DEDUCTION
#include "boost_no_cxx14_return_type_ded.ipp"
#else
namespace boost_no_cxx14_return_type_deduction = empty_boost;
#endif
int main( int, char *[] )
{
return boost_no_cxx14_return_type_deduction::test();
}

View File

@ -0,0 +1,37 @@
// This file was automatically generated on Sat Oct 11 19:26:17 2014
// 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$
//
// Test file for macro BOOST_NO_CXX14_VARIABLE_TEMPLATES
// This file should not compile, if it does then
// BOOST_NO_CXX14_VARIABLE_TEMPLATES should not be defined.
// See file boost_no_cxx14_var_templ.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_CXX14_VARIABLE_TEMPLATES
#include "boost_no_cxx14_var_templ.ipp"
#else
#error "this file should not compile"
#endif
int main( int, char *[] )
{
return boost_no_cxx14_variable_templates::test();
}

View File

@ -0,0 +1,37 @@
// This file was automatically generated on Sat Oct 11 19:26:17 2014
// 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$
//
// Test file for macro BOOST_NO_CXX14_VARIABLE_TEMPLATES
// This file should compile, if it does not then
// BOOST_NO_CXX14_VARIABLE_TEMPLATES should be defined.
// See file boost_no_cxx14_var_templ.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_CXX14_VARIABLE_TEMPLATES
#include "boost_no_cxx14_var_templ.ipp"
#else
namespace boost_no_cxx14_variable_templates = empty_boost;
#endif
int main( int, char *[] )
{
return boost_no_cxx14_variable_templates::test();
}

View File

@ -324,18 +324,26 @@ int cpp_main(int argc, char* argv[])
} }
std::cout << "Info: Boost.Config test path set as: " << config_path.string() << std::endl; std::cout << "Info: Boost.Config test path set as: " << config_path.string() << std::endl;
// enumerate *.ipp files: // enumerate *.ipp files and store them in a map for now:
boost::regex ipp_mask("boost_(?:(has)|no).*\\.ipp"); boost::regex ipp_mask("boost_(?:(has)|no).*\\.ipp");
boost::smatch ipp_match; boost::smatch ipp_match;
fs::directory_iterator i(config_path), j; fs::directory_iterator i(config_path), j;
std::map<fs::path, bool> files_to_process;
while(i != j) while(i != j)
{ {
if(boost::regex_match(i->path().leaf().string(), ipp_match, ipp_mask)) if(boost::regex_match(i->path().leaf().string(), ipp_match, ipp_mask))
{ {
process_ipp_file(*i, ipp_match[1].matched); files_to_process[*i] = ipp_match[1].matched;
} }
++i; ++i;
} }
// Enumerate the files and process them, by defering this until now
// the results are always alphabetized which reduces churn in the
// generated files.
for(std::map<fs::path, bool>::const_iterator pos = files_to_process.begin(); pos != files_to_process.end(); ++pos)
{
process_ipp_file(pos->first, pos->second);
}
write_config_test(); write_config_test();
write_jamfile_v2(); write_jamfile_v2();
write_config_info(); write_config_info();