Merge branch 'develop'

This commit is contained in:
Glen Fernandes
2017-02-20 16:44:44 -05:00
28 changed files with 200 additions and 11 deletions

View File

@ -1,6 +1,6 @@
# #
# *** DO NOT EDIT THIS FILE BY HAND *** # *** DO NOT EDIT THIS FILE BY HAND ***
# This file was automatically generated on Sun Feb 5 18:12:09 2017 # This file was automatically generated on Sun Feb 5 19:09:22 2017
# by libs/config/tools/generate.cpp # by libs/config/tools/generate.cpp
# Copyright John Maddock. # Copyright John Maddock.
# Use, modification and distribution are subject to the # Use, modification and distribution are subject to the
@ -116,6 +116,7 @@ run-simple <define>TEST_BOOST_NO_CXX11_INLINE_NAMESPACES : cxx11_inline_namespac
run-simple <define>TEST_BOOST_NO_CXX11_NON_PUBLIC_DEFAULTED_FUNCTIONS : cxx11_non_public_defaulted_functions ; run-simple <define>TEST_BOOST_NO_CXX11_NON_PUBLIC_DEFAULTED_FUNCTIONS : cxx11_non_public_defaulted_functions ;
run-simple <define>TEST_BOOST_NO_CXX11_NUMERIC_LIMITS : cxx11_numeric_limits ; run-simple <define>TEST_BOOST_NO_CXX11_NUMERIC_LIMITS : cxx11_numeric_limits ;
run-simple <define>TEST_BOOST_NO_CXX11_REF_QUALIFIERS : cxx11_ref_qualifiers ; run-simple <define>TEST_BOOST_NO_CXX11_REF_QUALIFIERS : cxx11_ref_qualifiers ;
run-simple <define>TEST_BOOST_NO_CXX11_SFINAE_EXPR : cxx11_sfinae_expr ;
run-simple <define>TEST_BOOST_NO_CXX11_SMART_PTR : cxx11_smart_ptr ; run-simple <define>TEST_BOOST_NO_CXX11_SMART_PTR : cxx11_smart_ptr ;
run-simple <define>TEST_BOOST_NO_CXX11_STD_ALIGN : cxx11_std_align ; run-simple <define>TEST_BOOST_NO_CXX11_STD_ALIGN : cxx11_std_align ;
run-simple <define>TEST_BOOST_NO_CXX11_THREAD_LOCAL : cxx11_thread_local ; run-simple <define>TEST_BOOST_NO_CXX11_THREAD_LOCAL : cxx11_thread_local ;

View File

@ -1,4 +1,4 @@
// This file was automatically generated on Sun Feb 5 18:12:09 2017 // This file was automatically generated on Sun Feb 5 19:09:22 2017
// by libs/config/tools/generate.cpp // by libs/config/tools/generate.cpp
// Copyright John Maddock 2002-4. // Copyright John Maddock 2002-4.
// Use, modification and distribution are subject to the // Use, modification and distribution are subject to the
@ -397,6 +397,10 @@ namespace test = boost_no_cxx11_numeric_limits;
# include "../test/boost_no_cxx11_ref_qualifiers.ipp" # include "../test/boost_no_cxx11_ref_qualifiers.ipp"
namespace test = boost_no_cxx11_ref_qualifiers; namespace test = boost_no_cxx11_ref_qualifiers;
#endif #endif
#ifdef TEST_BOOST_NO_CXX11_SFINAE_EXPR
# include "../test/boost_no_cxx11_sfinae_expr.ipp"
namespace test = boost_no_cxx11_sfinae_expr;
#endif
#ifdef TEST_BOOST_NO_CXX11_SMART_PTR #ifdef TEST_BOOST_NO_CXX11_SMART_PTR
# include "../test/boost_no_cxx11_smart_ptr.ipp" # include "../test/boost_no_cxx11_smart_ptr.ipp"
namespace test = boost_no_cxx11_smart_ptr; namespace test = boost_no_cxx11_smart_ptr;

View File

@ -517,7 +517,7 @@
is covered by <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#337" target="_top">Core is covered by <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#337" target="_top">Core
Language DR337</a>, but is not part of the current standard. Language DR337</a>, but is not part of the current standard.
Fortunately most compilers that support SFINAE also support this Fortunately most compilers that support SFINAE also support this
DR. DR. See also BOOST_NO_SFINAE and BOOST_NO_SFINAE_EXPR
</p> </p>
</td> </td>
</tr> </tr>
@ -864,7 +864,8 @@
<td> <td>
<p> <p>
The compiler does not support the "Substitution Failure Is The compiler does not support the "Substitution Failure Is
Not An Error" meta-programming idiom. Not An Error" meta-programming idiom. This is the lightweight
pre-C++11 version of SFINAE.
</p> </p>
</td> </td>
</tr> </tr>
@ -882,6 +883,8 @@
<td> <td>
<p> <p>
The compiler does not support usage of SFINAE with arbitrary expressions. The compiler does not support usage of SFINAE with arbitrary expressions.
This is the post-C++11 SFINAE, but excludes a few specific corner
cases, see also BOOST_NO_CXX11_SFINAE_EXPR.
</p> </p>
</td> </td>
</tr> </tr>
@ -3073,6 +3076,22 @@
</td> </td>
</tr> </tr>
<tr> <tr>
<td>
<p>
<code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_SFINAE_EXPR</span></code>
</p>
</td>
<td>
<p>
The compiler does not support usage of C++11 SFINAE with arbitrary
expressions. Use this macro only if you are using all of the features
of SFINAE including substitution-failure-on-private-member-access.
Otherwise use BOOST_NO_SFINAE_EXPR or BOOST_NO_SFINAE which get
defined for fewer compilers.
</p>
</td>
</tr>
<tr>
<td> <td>
<p> <p>
<code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_SMART_PTR</span></code> <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_SMART_PTR</span></code>

View File

@ -990,7 +990,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: February 05, 2017 at 19:01:00 GMT</small></p></td> <td align="left"><p><small>Last revised: February 05, 2017 at 19:27:06 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

@ -138,7 +138,7 @@ The standard library lacks `<iostream>`, `<istream>` or `<ostream>`.
[[`BOOST_NO_IS_ABSTRACT`][Compiler][ [[`BOOST_NO_IS_ABSTRACT`][Compiler][
The C++ compiler does not support SFINAE with abstract types, this is covered The C++ compiler does not support SFINAE with abstract types, this is covered
by __CORE_LANGUAGE_DR337__, but is not part of the current standard. Fortunately by __CORE_LANGUAGE_DR337__, but is not part of the current standard. Fortunately
most compilers that support SFINAE also support this DR. most compilers that support SFINAE also support this DR. See also BOOST_NO_SFINAE and BOOST_NO_SFINAE_EXPR
]] ]]
[[`BOOST_NO_LIMITS`][Standard library][ [[`BOOST_NO_LIMITS`][Standard library][
The C++ implementation does not provide the `<limits>` header. Never check for The C++ implementation does not provide the `<limits>` header. Never check for
@ -218,10 +218,11 @@ of an object is not supported.
]] ]]
[[`BOOST_NO_SFINAE`][Compiler][ [[`BOOST_NO_SFINAE`][Compiler][
The compiler does not support the "Substitution Failure Is Not An Error" The compiler does not support the "Substitution Failure Is Not An Error"
meta-programming idiom. meta-programming idiom. This is the lightweight pre-C++11 version of SFINAE.
]] ]]
[[`BOOST_NO_SFINAE_EXPR`][Compiler][ [[`BOOST_NO_SFINAE_EXPR`][Compiler][
The compiler does not support usage of SFINAE with arbitrary expressions. The compiler does not support usage of SFINAE with arbitrary expressions. This is the
post-C++11 SFINAE, but excludes a few specific corner cases, see also BOOST_NO_CXX11_SFINAE_EXPR.
]] ]]
[[`BOOST_NO_STD_ALLOCATOR`][Standard library][ [[`BOOST_NO_STD_ALLOCATOR`][Standard library][
The C++ standard library does not provide a standards conforming The C++ standard library does not provide a standards conforming
@ -695,6 +696,11 @@ r-value references.
[[`BOOST_NO_CXX11_SCOPED_ENUMS`][The compiler does not support [[`BOOST_NO_CXX11_SCOPED_ENUMS`][The compiler does not support
scoped enumerations (`enum class`). scoped enumerations (`enum class`).
]] ]]
[[`BOOST_NO_CXX11_SFINAE_EXPR`][The compiler does not support
usage of C++11 SFINAE with arbitrary expressions. Use this macro only if you
are using all of the features of SFINAE including substitution-failure-on-private-member-access.
Otherwise use BOOST_NO_SFINAE_EXPR or BOOST_NO_SFINAE which get defined for fewer compilers.
]]
[[`BOOST_NO_CXX11_SMART_PTR`][The standard library header <memory> has no shared_ptr and unique_ptr.]] [[`BOOST_NO_CXX11_SMART_PTR`][The standard library header <memory> has no shared_ptr and unique_ptr.]]
[[`BOOST_NO_CXX11_STATIC_ASSERT`][The compiler does not support [[`BOOST_NO_CXX11_STATIC_ASSERT`][The compiler does not support
`static_assert`. `static_assert`.

View File

@ -185,6 +185,7 @@
#define BOOST_NO_CXX11_RVALUE_REFERENCES #define BOOST_NO_CXX11_RVALUE_REFERENCES
#define BOOST_NO_CXX11_SCOPED_ENUMS #define BOOST_NO_CXX11_SCOPED_ENUMS
#define BOOST_NO_SFINAE_EXPR #define BOOST_NO_SFINAE_EXPR
#define BOOST_NO_CXX11_SFINAE_EXPR
#define BOOST_NO_CXX11_TEMPLATE_ALIASES #define BOOST_NO_CXX11_TEMPLATE_ALIASES
#define BOOST_NO_CXX11_UNICODE_LITERALS // UTF-8 still not supported #define BOOST_NO_CXX11_UNICODE_LITERALS // UTF-8 still not supported
#define BOOST_NO_CXX11_VARIADIC_TEMPLATES #define BOOST_NO_CXX11_VARIADIC_TEMPLATES

View File

@ -57,7 +57,7 @@
#define BOOST_HAS_NRVO #define BOOST_HAS_NRVO
// Branch prediction hints // Branch prediction hints
#if defined(__has_builtin) #if !defined (__c2__) && defined(__has_builtin)
#if __has_builtin(__builtin_expect) #if __has_builtin(__builtin_expect)
#define BOOST_LIKELY(x) __builtin_expect(x, 1) #define BOOST_LIKELY(x) __builtin_expect(x, 1)
#define BOOST_UNLIKELY(x) __builtin_expect(x, 0) #define BOOST_UNLIKELY(x) __builtin_expect(x, 0)
@ -282,6 +282,10 @@
# define BOOST_NO_CXX14_VARIABLE_TEMPLATES # define BOOST_NO_CXX14_VARIABLE_TEMPLATES
#endif #endif
#if __cplusplus < 201103L
#define BOOST_NO_CXX11_SFINAE_EXPR
#endif
#if __cplusplus < 201400 #if __cplusplus < 201400
// All versions with __cplusplus above this value seem to support this: // All versions with __cplusplus above this value seem to support this:
# define BOOST_NO_CXX14_DIGIT_SEPARATORS # define BOOST_NO_CXX14_DIGIT_SEPARATORS

View File

@ -112,6 +112,7 @@
#define BOOST_NO_CXX11_RAW_LITERALS #define BOOST_NO_CXX11_RAW_LITERALS
#define BOOST_NO_CXX11_RVALUE_REFERENCES #define BOOST_NO_CXX11_RVALUE_REFERENCES
#define BOOST_NO_SFINAE_EXPR #define BOOST_NO_SFINAE_EXPR
#define BOOST_NO_CXX11_SFINAE_EXPR
#define BOOST_NO_CXX11_TEMPLATE_ALIASES #define BOOST_NO_CXX11_TEMPLATE_ALIASES
#define BOOST_NO_CXX11_UNICODE_LITERALS #define BOOST_NO_CXX11_UNICODE_LITERALS
#define BOOST_NO_CXX11_VARIADIC_TEMPLATES #define BOOST_NO_CXX11_VARIADIC_TEMPLATES

View File

@ -95,6 +95,7 @@
#define BOOST_NO_CXX11_RVALUE_REFERENCES #define BOOST_NO_CXX11_RVALUE_REFERENCES
#define BOOST_NO_CXX11_SCOPED_ENUMS #define BOOST_NO_CXX11_SCOPED_ENUMS
#define BOOST_NO_SFINAE_EXPR #define BOOST_NO_SFINAE_EXPR
#define BOOST_NO_CXX11_SFINAE_EXPR
#define BOOST_NO_CXX11_STATIC_ASSERT #define BOOST_NO_CXX11_STATIC_ASSERT
#define BOOST_NO_CXX11_TEMPLATE_ALIASES #define BOOST_NO_CXX11_TEMPLATE_ALIASES
#define BOOST_NO_CXX11_UNICODE_LITERALS #define BOOST_NO_CXX11_UNICODE_LITERALS

View File

@ -39,6 +39,7 @@
#define BOOST_NO_CXX11_TEMPLATE_ALIASES #define BOOST_NO_CXX11_TEMPLATE_ALIASES
#define BOOST_NO_CXX11_STATIC_ASSERT #define BOOST_NO_CXX11_STATIC_ASSERT
#define BOOST_NO_SFINAE_EXPR #define BOOST_NO_SFINAE_EXPR
#define BOOST_NO_CXX11_SFINAE_EXPR
#define BOOST_NO_CXX11_SCOPED_ENUMS #define BOOST_NO_CXX11_SCOPED_ENUMS
#define BOOST_NO_CXX11_RVALUE_REFERENCES #define BOOST_NO_CXX11_RVALUE_REFERENCES
#define BOOST_NO_CXX11_RANGE_BASED_FOR #define BOOST_NO_CXX11_RANGE_BASED_FOR

View File

@ -71,6 +71,7 @@
#define BOOST_NO_CXX11_RVALUE_REFERENCES #define BOOST_NO_CXX11_RVALUE_REFERENCES
#define BOOST_NO_CXX11_SCOPED_ENUMS #define BOOST_NO_CXX11_SCOPED_ENUMS
#define BOOST_NO_SFINAE_EXPR #define BOOST_NO_SFINAE_EXPR
#define BOOST_NO_CXX11_SFINAE_EXPR
#define BOOST_NO_CXX11_STATIC_ASSERT #define BOOST_NO_CXX11_STATIC_ASSERT
#define BOOST_NO_CXX11_TEMPLATE_ALIASES #define BOOST_NO_CXX11_TEMPLATE_ALIASES
#define BOOST_NO_CXX11_UNICODE_LITERALS #define BOOST_NO_CXX11_UNICODE_LITERALS

View File

@ -253,6 +253,7 @@
#if (BOOST_GCC_VERSION < 40800) || !defined(BOOST_GCC_CXX11) #if (BOOST_GCC_VERSION < 40800) || !defined(BOOST_GCC_CXX11)
# define BOOST_NO_CXX11_ALIGNAS # define BOOST_NO_CXX11_ALIGNAS
# define BOOST_NO_CXX11_THREAD_LOCAL # define BOOST_NO_CXX11_THREAD_LOCAL
# define BOOST_NO_CXX11_SFINAE_EXPR
#endif #endif
// C++0x features in 4.8.1 and later // C++0x features in 4.8.1 and later

View File

@ -46,6 +46,7 @@
# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST # define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
# define BOOST_NO_CXX11_SCOPED_ENUMS # define BOOST_NO_CXX11_SCOPED_ENUMS
# define BOOST_NO_SFINAE_EXPR # define BOOST_NO_SFINAE_EXPR
# define BOOST_NO_CXX11_SFINAE_EXPR
# 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

View File

@ -114,6 +114,7 @@
#define BOOST_NO_CXX11_RVALUE_REFERENCES #define BOOST_NO_CXX11_RVALUE_REFERENCES
#define BOOST_NO_CXX11_SCOPED_ENUMS #define BOOST_NO_CXX11_SCOPED_ENUMS
#define BOOST_NO_SFINAE_EXPR #define BOOST_NO_SFINAE_EXPR
#define BOOST_NO_CXX11_SFINAE_EXPR
#define BOOST_NO_CXX11_STATIC_ASSERT #define BOOST_NO_CXX11_STATIC_ASSERT
#define BOOST_NO_CXX11_TEMPLATE_ALIASES #define BOOST_NO_CXX11_TEMPLATE_ALIASES
#define BOOST_NO_CXX11_UNICODE_LITERALS #define BOOST_NO_CXX11_UNICODE_LITERALS

View File

@ -415,6 +415,11 @@ template<> struct assert_intrinsic_wchar_t<unsigned short> {};
# undef BOOST_NO_SFINAE_EXPR # undef BOOST_NO_SFINAE_EXPR
#endif #endif
// BOOST_NO_CXX11_SFINAE_EXPR
#if (BOOST_INTEL_CXX_VERSION >= 1500) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40800)) && !defined(_MSC_VER)
# undef BOOST_NO_CXX11_SFINAE_EXPR
#endif
// BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS // 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)) #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: // This is available in earlier Intel releases, but breaks Multiprecision:

View File

@ -113,6 +113,7 @@
#define BOOST_NO_CXX11_RAW_LITERALS #define BOOST_NO_CXX11_RAW_LITERALS
#define BOOST_NO_CXX11_SCOPED_ENUMS #define BOOST_NO_CXX11_SCOPED_ENUMS
#define BOOST_NO_SFINAE_EXPR #define BOOST_NO_SFINAE_EXPR
#define BOOST_NO_CXX11_SFINAE_EXPR
#define BOOST_NO_CXX11_STATIC_ASSERT #define BOOST_NO_CXX11_STATIC_ASSERT
#define BOOST_NO_CXX11_TEMPLATE_ALIASES #define BOOST_NO_CXX11_TEMPLATE_ALIASES
#define BOOST_NO_CXX11_UNICODE_LITERALS #define BOOST_NO_CXX11_UNICODE_LITERALS

View File

@ -62,6 +62,7 @@
#define BOOST_NO_CXX11_RVALUE_REFERENCES #define BOOST_NO_CXX11_RVALUE_REFERENCES
#define BOOST_NO_CXX11_SCOPED_ENUMS #define BOOST_NO_CXX11_SCOPED_ENUMS
#define BOOST_NO_SFINAE_EXPR #define BOOST_NO_SFINAE_EXPR
#define BOOST_NO_CXX11_SFINAE_EXPR
#define BOOST_NO_CXX11_STATIC_ASSERT #define BOOST_NO_CXX11_STATIC_ASSERT
#define BOOST_NO_CXX11_TEMPLATE_ALIASES #define BOOST_NO_CXX11_TEMPLATE_ALIASES
#define BOOST_NO_CXX11_UNICODE_LITERALS #define BOOST_NO_CXX11_UNICODE_LITERALS

View File

@ -37,6 +37,7 @@
# define BOOST_NO_CXX11_TEMPLATE_ALIASES # define BOOST_NO_CXX11_TEMPLATE_ALIASES
# define BOOST_NO_CXX11_STATIC_ASSERT # define BOOST_NO_CXX11_STATIC_ASSERT
# define BOOST_NO_SFINAE_EXPR # define BOOST_NO_SFINAE_EXPR
# define BOOST_NO_CXX11_SFINAE_EXPR
# define BOOST_NO_CXX11_SCOPED_ENUMS # define BOOST_NO_CXX11_SCOPED_ENUMS
# define BOOST_NO_CXX11_RVALUE_REFERENCES # define BOOST_NO_CXX11_RVALUE_REFERENCES
# define BOOST_NO_CXX11_RANGE_BASED_FOR # define BOOST_NO_CXX11_RANGE_BASED_FOR

View File

@ -88,6 +88,7 @@
#define BOOST_NO_CXX11_RVALUE_REFERENCES #define BOOST_NO_CXX11_RVALUE_REFERENCES
#define BOOST_NO_CXX11_SCOPED_ENUMS #define BOOST_NO_CXX11_SCOPED_ENUMS
#define BOOST_NO_SFINAE_EXPR #define BOOST_NO_SFINAE_EXPR
#define BOOST_NO_CXX11_SFINAE_EXPR
#define BOOST_NO_CXX11_STATIC_ASSERT #define BOOST_NO_CXX11_STATIC_ASSERT
#define BOOST_NO_SWPRINTF #define BOOST_NO_SWPRINTF
#define BOOST_NO_CXX11_TEMPLATE_ALIASES #define BOOST_NO_CXX11_TEMPLATE_ALIASES

View File

@ -141,6 +141,7 @@
// //
# define BOOST_HAS_LONG_LONG # define BOOST_HAS_LONG_LONG
#define BOOST_NO_CXX11_SFINAE_EXPR
// C++ 14: // C++ 14:
#if !defined(__cpp_aggregate_nsdmi) || (__cpp_aggregate_nsdmi < 201304) #if !defined(__cpp_aggregate_nsdmi) || (__cpp_aggregate_nsdmi < 201304)

View File

@ -114,6 +114,7 @@
# define BOOST_NO_CXX11_SCOPED_ENUMS # define BOOST_NO_CXX11_SCOPED_ENUMS
#endif #endif
#define BOOST_NO_SFINAE_EXPR #define BOOST_NO_SFINAE_EXPR
#define BOOST_NO_CXX11_SFINAE_EXPR
#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX #define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
#if ! __IBMCPP_STATIC_ASSERT #if ! __IBMCPP_STATIC_ASSERT
# define BOOST_NO_CXX11_STATIC_ASSERT # define BOOST_NO_CXX11_STATIC_ASSERT

View File

@ -217,6 +217,7 @@
// C++ 11: // C++ 11:
// //
#define BOOST_NO_TWO_PHASE_NAME_LOOKUP #define BOOST_NO_TWO_PHASE_NAME_LOOKUP
#define BOOST_NO_CXX11_SFINAE_EXPR
// //
// Things that don't work in clr mode: // Things that don't work in clr mode:

View File

@ -1,7 +1,7 @@
# #
# Regression test Jamfile for boost configuration setup. # Regression test Jamfile for boost configuration setup.
# *** DO NOT EDIT THIS FILE BY HAND *** # *** DO NOT EDIT THIS FILE BY HAND ***
# This file was automatically generated on Sun Feb 5 18:12:09 2017 # This file was automatically generated on Sun Feb 5 19:09:22 2017
# by libs/config/tools/generate.cpp # by libs/config/tools/generate.cpp
# Copyright John Maddock. # Copyright John Maddock.
# Use, modification and distribution are subject to the # Use, modification and distribution are subject to the
@ -313,6 +313,9 @@ test-suite "BOOST_NO_CXX11_NUMERIC_LIMITS" :
test-suite "BOOST_NO_CXX11_REF_QUALIFIERS" : test-suite "BOOST_NO_CXX11_REF_QUALIFIERS" :
[ run ../no_cxx11_ref_qualifiers_pass.cpp ] [ run ../no_cxx11_ref_qualifiers_pass.cpp ]
[ compile-fail ../no_cxx11_ref_qualifiers_fail.cpp ] ; [ compile-fail ../no_cxx11_ref_qualifiers_fail.cpp ] ;
test-suite "BOOST_NO_CXX11_SFINAE_EXPR" :
[ run ../no_cxx11_sfinae_expr_pass.cpp ]
[ compile-fail ../no_cxx11_sfinae_expr_fail.cpp ] ;
test-suite "BOOST_NO_CXX11_SMART_PTR" : test-suite "BOOST_NO_CXX11_SMART_PTR" :
[ run ../no_cxx11_smart_ptr_pass.cpp ] [ run ../no_cxx11_smart_ptr_pass.cpp ]
[ compile-fail ../no_cxx11_smart_ptr_fail.cpp ] ; [ compile-fail ../no_cxx11_smart_ptr_fail.cpp ] ;

View File

@ -0,0 +1,46 @@
/*
Copyright 2017 Glen Joseph Fernandes
(glenjofe@gmail.com)
Distributed under Boost Software License, Version 1.0.
(See accompanying file LICENSE_1_0.txt or copy at
http://www.boost.org/LICENSE_1_0.txt)
*/
// MACRO: BOOST_NO_CXX11_SFINAE_EXPR
// TITLE: C++11 SFINAE for expressions
// DESCRIPTION: C++11 SFINAE for expressions not supported.
namespace boost_no_cxx11_sfinae_expr {
template<class>
struct ignore {
typedef void type;
};
template<class T>
T& object();
template<class T, class E = void>
struct trait {
static const int value = 0;
};
template<class T>
struct trait<T, typename ignore<decltype(&object<T>())>::type> { };
template<class T>
struct result {
static const int value = T::value;
};
class type {
void operator&() const { }
};
int test()
{
return result<trait<type> >::value;
}
} /* boost_no_cxx11_sfinae_expr */

View File

@ -1053,6 +1053,7 @@ void print_boost_macros()
PRINT_MACRO(BOOST_NO_CXX11_REF_QUALIFIERS); PRINT_MACRO(BOOST_NO_CXX11_REF_QUALIFIERS);
PRINT_MACRO(BOOST_NO_CXX11_RVALUE_REFERENCES); PRINT_MACRO(BOOST_NO_CXX11_RVALUE_REFERENCES);
PRINT_MACRO(BOOST_NO_CXX11_SCOPED_ENUMS); PRINT_MACRO(BOOST_NO_CXX11_SCOPED_ENUMS);
PRINT_MACRO(BOOST_NO_CXX11_SFINAE_EXPR);
PRINT_MACRO(BOOST_NO_CXX11_SMART_PTR); PRINT_MACRO(BOOST_NO_CXX11_SMART_PTR);
PRINT_MACRO(BOOST_NO_CXX11_STATIC_ASSERT); PRINT_MACRO(BOOST_NO_CXX11_STATIC_ASSERT);
PRINT_MACRO(BOOST_NO_CXX11_STD_ALIGN); PRINT_MACRO(BOOST_NO_CXX11_STD_ALIGN);
@ -1151,6 +1152,7 @@ void print_boost_macros()
// END GENERATED BLOCK // END GENERATED BLOCK
PRINT_MACRO(BOOST_INTEL); PRINT_MACRO(BOOST_INTEL);

View File

@ -1,4 +1,4 @@
// This file was automatically generated on Sun Feb 5 18:12:09 2017 // This file was automatically generated on Sun Feb 5 19:09:22 2017
// by libs/config/tools/generate.cpp // by libs/config/tools/generate.cpp
// Copyright John Maddock 2002-4. // Copyright John Maddock 2002-4.
// Use, modification and distribution are subject to the // Use, modification and distribution are subject to the
@ -242,6 +242,11 @@ namespace boost_no_cxx11_numeric_limits = empty_boost;
#else #else
namespace boost_no_cxx11_ref_qualifiers = empty_boost; namespace boost_no_cxx11_ref_qualifiers = empty_boost;
#endif #endif
#ifndef BOOST_NO_CXX11_SFINAE_EXPR
#include "boost_no_cxx11_sfinae_expr.ipp"
#else
namespace boost_no_cxx11_sfinae_expr = empty_boost;
#endif
#ifndef BOOST_NO_CXX11_SMART_PTR #ifndef BOOST_NO_CXX11_SMART_PTR
#include "boost_no_cxx11_smart_ptr.ipp" #include "boost_no_cxx11_smart_ptr.ipp"
#else #else
@ -1506,6 +1511,11 @@ int main( int, char *[] )
std::cerr << "Failed test for BOOST_NO_CXX11_REF_QUALIFIERS at: " << __FILE__ << ":" << __LINE__ << std::endl; std::cerr << "Failed test for BOOST_NO_CXX11_REF_QUALIFIERS at: " << __FILE__ << ":" << __LINE__ << std::endl;
++error_count; ++error_count;
} }
if(0 != boost_no_cxx11_sfinae_expr::test())
{
std::cerr << "Failed test for BOOST_NO_CXX11_SFINAE_EXPR at: " << __FILE__ << ":" << __LINE__ << std::endl;
++error_count;
}
if(0 != boost_no_cxx11_smart_ptr::test()) if(0 != boost_no_cxx11_smart_ptr::test())
{ {
std::cerr << "Failed test for BOOST_NO_CXX11_SMART_PTR at: " << __FILE__ << ":" << __LINE__ << std::endl; std::cerr << "Failed test for BOOST_NO_CXX11_SMART_PTR at: " << __FILE__ << ":" << __LINE__ << std::endl;

View File

@ -0,0 +1,37 @@
// This file was automatically generated on Sat Feb 4 00:49:07 2017
// 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_CXX11_SFINAE_EXPR
// This file should not compile, if it does then
// BOOST_NO_CXX11_SFINAE_EXPR should not be defined.
// See file boost_no_cxx11_sfinae_expr.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_CXX11_SFINAE_EXPR
#include "boost_no_cxx11_sfinae_expr.ipp"
#else
#error "this file should not compile"
#endif
int main( int, char *[] )
{
return boost_no_cxx11_sfinae_expr::test();
}

View File

@ -0,0 +1,37 @@
// This file was automatically generated on Sat Feb 4 00:49:07 2017
// 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_CXX11_SFINAE_EXPR
// This file should compile, if it does not then
// BOOST_NO_CXX11_SFINAE_EXPR should be defined.
// See file boost_no_cxx11_sfinae_expr.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_CXX11_SFINAE_EXPR
#include "boost_no_cxx11_sfinae_expr.ipp"
#else
namespace boost_no_cxx11_sfinae_expr = empty_boost;
#endif
int main( int, char *[] )
{
return boost_no_cxx11_sfinae_expr::test();
}