diff --git a/checks/Jamfile.v2 b/checks/Jamfile.v2 index 4c57cde8..30d279f5 100644 --- a/checks/Jamfile.v2 +++ b/checks/Jamfile.v2 @@ -1,6 +1,6 @@ # # *** DO NOT EDIT THIS FILE BY HAND *** -# This file was automatically generated on Mon Dec 12 19:37:08 2016 +# This file was automatically generated on Sun Feb 5 18:12:09 2017 # by libs/config/tools/generate.cpp # Copyright John Maddock. # Use, modification and distribution are subject to the @@ -179,6 +179,7 @@ run-simple TEST_BOOST_NO_PRIVATE_IN_AGGREGATE : private_in_aggregate ; run-simple TEST_BOOST_NO_POINTER_TO_MEMBER_CONST : pointer_to_member_const ; run-simple TEST_BOOST_NO_CXX11_RANGE_BASED_FOR : cxx11_range_based_for ; run-simple TEST_BOOST_NO_CXX11_RAW_LITERALS : cxx11_raw_literals ; +run-simple TEST_BOOST_NO_RESTRICT_REFERENCES : restrict_references ; run-simple TEST_BOOST_NO_UNREACHABLE_RETURN_DETECTION : unreachable_return_detection ; run-simple TEST_BOOST_NO_RTTI : rtti ; run-simple TEST_BOOST_NO_CXX11_RVALUE_REFERENCES : cxx11_rvalue_references ; diff --git a/checks/test_case.cpp b/checks/test_case.cpp index dbfaa653..9e12d855 100644 --- a/checks/test_case.cpp +++ b/checks/test_case.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Mon Dec 12 19:37:08 2016 +// This file was automatically generated on Sun Feb 5 18:12:09 2017 // by libs/config/tools/generate.cpp // Copyright John Maddock 2002-4. // Use, modification and distribution are subject to the @@ -649,6 +649,10 @@ namespace test = boost_no_cxx11_range_based_for; # include "../test/boost_no_raw_literals.ipp" namespace test = boost_no_cxx11_raw_literals; #endif +#ifdef TEST_BOOST_NO_RESTRICT_REFERENCES +# include "../test/boost_no_restrict_references.ipp" +namespace test = boost_no_restrict_references; +#endif #ifdef TEST_BOOST_NO_UNREACHABLE_RETURN_DETECTION # include "../test/boost_no_ret_det.ipp" namespace test = boost_no_unreachable_return_detection; diff --git a/doc/html/boost_config/boost_macro_reference.html b/doc/html/boost_config/boost_macro_reference.html index 691a11c5..c4eda791 100644 --- a/doc/html/boost_config/boost_macro_reference.html +++ b/doc/html/boost_config/boost_macro_reference.html @@ -41,6 +41,8 @@ that describe C++14 features not supported
Macros that allow use of C++14 features with C++11 or earlier compilers
+
Macros + that describe C++17 features not supported
Boost Helper Macros
Boost @@ -813,6 +815,24 @@ + +

+ BOOST_NO_RESTRICT_REFERENCES +

+ + +

+ Compiler +

+ + +

+ Compiler-specific restrict + keyword can not be applied to references. +

+ + +

BOOST_NO_RTTI @@ -3715,6 +3735,46 @@

+

+ The following macros describe features in the 2016 ISO C++ standard, formerly + known as C++1z, that are not yet supported by a particular compiler or library. +

+
++++ + + + + + + + + +
+

+ Macro +

+
+

+ Description +

+
+

+ BOOST_NO_CXX17_STD_INVOKE +

+
+

+ The compiler does not support std::invoke(). +

+
+
+
+ @@ -4121,6 +4181,35 @@ + +

+ BOOST_RESTRICT +

+ + +

+ This macro can be used in place of the compiler specific variant + of the C99 restrict + keyword to notify the compiler that, for the lifetime of the qualified + pointer variable, only it and its derivative value will be used + to gain access to the object it references. This limits the effect + of pointer aliasing and helps the optimizers in generating better + code. However, i this condition is violated, undefined behavior + may occurs. +

+

+ Usage example: +

+
void perform_computation( float* BOOST_RESTRICT in, float* BOOST_RESTRICT out )
+{
+  *out = *in * 0.5f;
+}
+
+

+

+ + +

BOOST_FORCEINLINE diff --git a/doc/html/index.html b/doc/html/index.html index 5ff77786..5c633285 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -72,6 +72,8 @@ that describe C++14 features not supported

Macros that allow use of C++14 features with C++11 or earlier compilers
+
Macros + that describe C++17 features not supported
Boost Helper Macros
Boost @@ -988,7 +990,7 @@ - +

Last revised: July 02, 2016 at 08:07:27 GMT

Last revised: February 05, 2017 at 19:01:00 GMT


diff --git a/doc/macro_reference.qbk b/doc/macro_reference.qbk index b1d30e4a..d745bfa2 100644 --- a/doc/macro_reference.qbk +++ b/doc/macro_reference.qbk @@ -209,6 +209,9 @@ Pointers to members don't work when used as template parameters. The compiler misreads 8.5.1, treating classes as non-aggregate if they contain private or protected member functions. ]] +[[`BOOST_NO_RESTRICT_REFERENCES`][Compiler][ +Compiler-specific `restrict` keyword can not be applied to references. +]] [[`BOOST_NO_RTTI`][Compiler][ The compiler may (or may not) have the typeid operator, but RTTI on the dynamic type of an object is not supported. @@ -1150,6 +1153,21 @@ the arguments is itself a macro (see 16.3.1 in C++ standard). This is normally used to create a mangled name in combination with a predefined macro such a \_\_LINE__. ]] +[[`BOOST_RESTRICT`][ +This macro can be used in place of the compiler specific variant of the C99 `restrict` keyword to +notify the compiler that, for the lifetime of the qualified pointer variable, only it and its +derivative value will be used to gain access to the object it references. This limits the effect of +pointer aliasing and helps the optimizers in generating better code. However, i this condition is +violated, undefined behavior may occurs. + +Usage example: +`` + void perform_computation( float* BOOST_RESTRICT in, float* BOOST_RESTRICT out ) + { + *out = *in * 0.5f; + } +`` +]] [[`BOOST_FORCEINLINE`][ This macro can be used in place of the `inline` keyword to instruct the compiler that the function should always be inlined. diff --git a/include/boost/config/auto_link.hpp b/include/boost/config/auto_link.hpp index 56a16b0b..d4f3eabf 100644 --- a/include/boost/config/auto_link.hpp +++ b/include/boost/config/auto_link.hpp @@ -161,10 +161,15 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y. // vc12: # define BOOST_LIB_TOOLSET "vc120" +# elif defined(BOOST_MSVC) && (BOOST_MSVC < 1910) + + // vc14: +# define BOOST_LIB_TOOLSET "vc140" + # elif defined(BOOST_MSVC) - // vc14: -# define BOOST_LIB_TOOLSET "vc140" + // vc15: +# define BOOST_LIB_TOOLSET "vc150" # elif defined(__BORLANDC__) diff --git a/include/boost/config/compiler/intel.hpp b/include/boost/config/compiler/intel.hpp index 1885ea28..bf3f7d49 100644 --- a/include/boost/config/compiler/intel.hpp +++ b/include/boost/config/compiler/intel.hpp @@ -39,15 +39,20 @@ # define BOOST_NO_CXX14_VARIABLE_TEMPLATES #endif -#else +#else // defined(_MSC_VER) #include #undef BOOST_GCC_VERSION #undef BOOST_GCC_CXX11 +// Broken in all versions up to 17 (newer versions not tested) +#if (__INTEL_COMPILER <= 1700) && !defined(BOOST_NO_CXX14_CONSTEXPR) +# define BOOST_NO_CXX14_CONSTEXPR #endif +#endif // defined(_MSC_VER) + #undef BOOST_COMPILER #if defined(__INTEL_COMPILER) @@ -92,7 +97,7 @@ # define BOOST_INTEL_LINUX BOOST_INTEL #endif -#else +#else // defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 1500) && (defined(_MSC_VER) || defined(__GNUC__)) #include @@ -483,7 +488,7 @@ template<> struct assert_intrinsic_wchar_t {}; # undef BOOST_NO_CXX11_FINAL #endif -#endif +#endif // defined(BOOST_INTEL_STDCXX0X) // // Broken in all versions up to 15: @@ -500,11 +505,6 @@ template<> struct assert_intrinsic_wchar_t {}; # define BOOST_NO_CXX11_HDR_TUPLE #endif -// Broken in all versions up to 17: -#if !defined(BOOST_NO_CXX14_CONSTEXPR) -#define BOOST_NO_CXX14_CONSTEXPR -#endif - #if (BOOST_INTEL_CXX_VERSION < 1200) // // fenv.h appears not to work with Intel prior to 12.0: @@ -535,10 +535,10 @@ template<> struct assert_intrinsic_wchar_t {}; # define BOOST_HAS_INT128 #endif -#endif +#endif // defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 1500) && (defined(_MSC_VER) || defined(__GNUC__)) // // last known and checked version: -#if (BOOST_INTEL_CXX_VERSION > 1500) +#if (BOOST_INTEL_CXX_VERSION > 1700) # if defined(BOOST_ASSERT_CONFIG) # error "Unknown compiler version - please run the configure tests and report the results" # elif defined(_MSC_VER) diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp index cdbc9b67..78c50e51 100644 --- a/include/boost/config/compiler/visualc.hpp +++ b/include/boost/config/compiler/visualc.hpp @@ -218,6 +218,26 @@ // #define BOOST_NO_TWO_PHASE_NAME_LOOKUP +// +// Things that don't work in clr mode: +// +#ifdef _M_CEE +#ifndef BOOST_NO_CXX11_THREAD_LOCAL +# define BOOST_NO_CXX11_THREAD_LOCAL +#endif +#ifndef BOOST_NO_SFINAE_EXPR +# define BOOST_NO_SFINAE_EXPR +#endif +#ifndef BOOST_NO_CXX11_REF_QUALIFIERS +# define BOOST_NO_CXX11_REF_QUALIFIERS +#endif +#endif +#ifdef _M_CEE_PURE +#ifndef BOOST_NO_CXX11_CONSTEXPR +# define BOOST_NO_CXX11_CONSTEXPR +#endif +#endif + // // prefix and suffix headers: // diff --git a/include/boost/config/platform/cygwin.hpp b/include/boost/config/platform/cygwin.hpp index b7ef572f..53e23f7f 100644 --- a/include/boost/config/platform/cygwin.hpp +++ b/include/boost/config/platform/cygwin.hpp @@ -23,7 +23,7 @@ # define BOOST_HAS_SCHED_YIELD # define BOOST_HAS_GETTIMEOFDAY # define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE -# define BOOST_HAS_SIGACTION +//# define BOOST_HAS_SIGACTION #else # if !defined(BOOST_HAS_WINTHREADS) # define BOOST_HAS_WINTHREADS @@ -51,7 +51,6 @@ #ifdef BOOST_HAS_NL_TYPES_H # undef BOOST_HAS_NL_TYPES_H #endif - diff --git a/include/boost/config/stdlib/dinkumware.hpp b/include/boost/config/stdlib/dinkumware.hpp index 8cf5d4dd..3b95dcf3 100644 --- a/include/boost/config/stdlib/dinkumware.hpp +++ b/include/boost/config/stdlib/dinkumware.hpp @@ -196,6 +196,36 @@ # endif #endif + +// +// Things not supported by the CLR: +#ifdef _M_CEE +#ifndef BOOST_NO_CXX11_HDR_MUTEX +# define BOOST_NO_CXX11_HDR_MUTEX +#endif +#ifndef BOOST_NO_CXX11_HDR_ATOMIC +# define BOOST_NO_CXX11_HDR_ATOMIC +#endif +#ifndef BOOST_NO_CXX11_HDR_FUTURE +# define BOOST_NO_CXX11_HDR_FUTURE +#endif +#ifndef BOOST_NO_CXX11_HDR_CONDITION_VARIABLE +# define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE +#endif +#ifndef BOOST_NO_CXX11_HDR_THREAD +# define BOOST_NO_CXX11_HDR_THREAD +#endif +#ifndef BOOST_NO_CXX14_HDR_SHARED_MUTEX +# define BOOST_NO_CXX14_HDR_SHARED_MUTEX +#endif +#ifndef BOOST_NO_CXX14_STD_EXCHANGE +# define BOOST_NO_CXX14_STD_EXCHANGE +#endif +#ifndef BOOST_NO_FENV_H +# define BOOST_NO_FENV_H +#endif +#endif + #ifdef _CPPLIB_VER # define BOOST_DINKUMWARE_STDLIB _CPPLIB_VER #else diff --git a/include/boost/config/stdlib/libstdcpp3.hpp b/include/boost/config/stdlib/libstdcpp3.hpp index 557767b1..205489a9 100644 --- a/include/boost/config/stdlib/libstdcpp3.hpp +++ b/include/boost/config/stdlib/libstdcpp3.hpp @@ -101,8 +101,8 @@ // // Decide which version of libstdc++ we have, normally -// stdlibc++ C++0x support is detected via __GNUC__, __GNUC_MINOR__, and possibly -// __GNUC_PATCHLEVEL__ at the suggestion of Jonathan Wakely, one of the stdlibc++ +// libstdc++ C++0x support is detected via __GNUC__, __GNUC_MINOR__, and possibly +// __GNUC_PATCHLEVEL__ at the suggestion of Jonathan Wakely, one of the libstdc++ // developers. He also commented: // // "I'm not sure how useful __GLIBCXX__ is for your purposes, for instance in @@ -110,7 +110,7 @@ // Although 4.3.0 was released earlier than 4.2.4, it has better C++0x support // than any release in the 4.2 series." // -// Another resource for understanding stdlibc++ features is: +// Another resource for understanding libstdc++ features is: // 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 @@ -222,7 +222,7 @@ // #if (BOOST_LIBSTDCXX_VERSION < 40700) || !defined(BOOST_LIBSTDCXX11) // Note that although 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 truly conforming one. # define BOOST_NO_CXX11_HDR_CHRONO # define BOOST_NO_CXX11_ALLOCATOR #endif diff --git a/include/boost/config/suffix.hpp b/include/boost/config/suffix.hpp index eeaec2bf..6df9223f 100644 --- a/include/boost/config/suffix.hpp +++ b/include/boost/config/suffix.hpp @@ -583,6 +583,25 @@ namespace std{ using ::type_info; } # define BOOST_GPU_ENABLED # endif +// BOOST_RESTRICT ---------------------------------------------// +// Macro to use in place of 'restrict' keyword variants +#if !defined(BOOST_RESTRICT) +# if defined(_MSC_VER) +# define BOOST_RESTRICT __restrict +# if !defined(BOOST_NO_RESTRICT_REFERENCES) && (_MSC_FULL_VER < 190023026) +# define BOOST_NO_RESTRICT_REFERENCES +# endif +# elif defined(__GNUC__) && __GNUC__ > 3 + // Clang also defines __GNUC__ (as 4) +# define BOOST_RESTRICT __restrict__ +# else +# define BOOST_RESTRICT +# if !defined(BOOST_NO_RESTRICT_REFERENCES) +# define BOOST_NO_RESTRICT_REFERENCES +# endif +# endif +#endif + // BOOST_FORCEINLINE ---------------------------------------------// // Macro to use in place of 'inline' to force a function to be inline #if !defined(BOOST_FORCEINLINE) @@ -604,7 +623,7 @@ namespace std{ using ::type_info; } # elif defined(__GNUC__) && __GNUC__ > 3 // Clang also defines __GNUC__ (as 4) # if defined(__CUDACC__) - // nvcc doesn't always parse __noinline__, + // nvcc doesn't always parse __noinline__, // see: https://svn.boost.org/trac/boost/ticket/9392 # define BOOST_NOINLINE __attribute__ ((noinline)) # else diff --git a/include/boost/detail/workaround.hpp b/include/boost/detail/workaround.hpp index 40b3423b..7727aaf1 100644 --- a/include/boost/detail/workaround.hpp +++ b/include/boost/detail/workaround.hpp @@ -85,6 +85,11 @@ #else #define __GNUC_PATCHLEVEL___WORKAROUND_GUARD 0 #endif +#ifndef BOOST_GCC +#define BOOST_GCC_WORKAROUND_GUARD 1 +#else +#define BOOST_GCC_WORKAROUND_GUARD 0 +#endif #ifndef __IBMCPP__ #define __IBMCPP___WORKAROUND_GUARD 1 #else diff --git a/include/boost/version.hpp b/include/boost/version.hpp index 94c16c31..03b33f9a 100644 --- a/include/boost/version.hpp +++ b/include/boost/version.hpp @@ -19,7 +19,7 @@ // BOOST_VERSION / 100 % 1000 is the minor version // BOOST_VERSION / 100000 is the major version -#define BOOST_VERSION 106300 +#define BOOST_VERSION 106400 // // BOOST_LIB_VERSION must be defined to be the same as BOOST_VERSION @@ -27,6 +27,6 @@ // number, y is the minor version number, and z is the patch level if not 0. // This is used by to select which library version to link to. -#define BOOST_LIB_VERSION "1_63" +#define BOOST_LIB_VERSION "1_64" #endif diff --git a/test/all/Jamfile.v2 b/test/all/Jamfile.v2 index 57605714..f08e63b8 100644 --- a/test/all/Jamfile.v2 +++ b/test/all/Jamfile.v2 @@ -1,7 +1,7 @@ # # Regression test Jamfile for boost configuration setup. # *** DO NOT EDIT THIS FILE BY HAND *** -# This file was automatically generated on Mon Dec 12 19:37:08 2016 +# This file was automatically generated on Sun Feb 5 18:12:09 2017 # by libs/config/tools/generate.cpp # Copyright John Maddock. # Use, modification and distribution are subject to the @@ -502,6 +502,9 @@ test-suite "BOOST_NO_CXX11_RANGE_BASED_FOR" : test-suite "BOOST_NO_CXX11_RAW_LITERALS" : [ run ../no_raw_literals_pass.cpp ] [ compile-fail ../no_raw_literals_fail.cpp ] ; +test-suite "BOOST_NO_RESTRICT_REFERENCES" : +[ run ../no_restrict_references_pass.cpp ] +[ compile-fail ../no_restrict_references_fail.cpp ] ; test-suite "BOOST_NO_UNREACHABLE_RETURN_DETECTION" : [ run ../no_ret_det_pass.cpp ] [ compile-fail ../no_ret_det_fail.cpp ] ; diff --git a/test/boost_no_restrict_references.ipp b/test/boost_no_restrict_references.ipp new file mode 100644 index 00000000..548984d2 --- /dev/null +++ b/test/boost_no_restrict_references.ipp @@ -0,0 +1,47 @@ +// (C) Copyright Beman Dawes 2009 + +// 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_RESTRICT_REFERENCES +// TITLE: We cannot apply BOOST_RESTRICT to a reference type. +// DESCRIPTION: We cannot apply BOOST_RESTRICT to a reference type + +#include + +namespace boost_no_restrict_references { + +#ifdef _MSC_VER +#pragma warning(error:4227) +#endif + + +void sum2(int (& BOOST_RESTRICT a)[4], int (& BOOST_RESTRICT b)[4], int (&c)[4], int (&d)[4]) { + int i; + for (i = 0; i < 4; i++) { + a[i] = b[i] + c[i]; + c[i] = b[i] + d[i]; + } +} + +int test() +{ + int a[4] = { 1, 2, 3, 4 }; + int b[4] = { 3, 4, 5, 6 }; + int c[4] = { 0, 1, 3, 5 }; + int d[4] = { 2, 4, 6, 8 }; + + sum2(a, b, c, d); + + return 0; +} + +#ifdef _MSC_VER +#pragma warning(default:4227) +#endif + + +} diff --git a/test/config_info.cpp b/test/config_info.cpp index 53251d28..3daccd31 100644 --- a/test/config_info.cpp +++ b/test/config_info.cpp @@ -1106,6 +1106,7 @@ void print_boost_macros() PRINT_MACRO(BOOST_NO_POINTER_TO_MEMBER_CONST); PRINT_MACRO(BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS); PRINT_MACRO(BOOST_NO_PRIVATE_IN_AGGREGATE); + PRINT_MACRO(BOOST_NO_RESTRICT_REFERENCES); PRINT_MACRO(BOOST_NO_RTTI); PRINT_MACRO(BOOST_NO_SFINAE); PRINT_MACRO(BOOST_NO_SFINAE_EXPR); @@ -1149,6 +1150,7 @@ void print_boost_macros() + // END GENERATED BLOCK PRINT_MACRO(BOOST_INTEL); diff --git a/test/config_test.cpp b/test/config_test.cpp index 77f4511c..0138bfd1 100644 --- a/test/config_test.cpp +++ b/test/config_test.cpp @@ -1,4 +1,4 @@ -// This file was automatically generated on Mon Dec 12 19:37:08 2016 +// This file was automatically generated on Sun Feb 5 18:12:09 2017 // by libs/config/tools/generate.cpp // Copyright John Maddock 2002-4. // Use, modification and distribution are subject to the @@ -557,6 +557,11 @@ namespace boost_no_cxx11_range_based_for = empty_boost; #else namespace boost_no_cxx11_raw_literals = empty_boost; #endif +#ifndef BOOST_NO_RESTRICT_REFERENCES +#include "boost_no_restrict_references.ipp" +#else +namespace boost_no_restrict_references = empty_boost; +#endif #ifndef BOOST_NO_UNREACHABLE_RETURN_DETECTION #include "boost_no_ret_det.ipp" #else @@ -1816,6 +1821,11 @@ int main( int, char *[] ) std::cerr << "Failed test for BOOST_NO_CXX11_RAW_LITERALS at: " << __FILE__ << ":" << __LINE__ << std::endl; ++error_count; } + if(0 != boost_no_restrict_references::test()) + { + std::cerr << "Failed test for BOOST_NO_RESTRICT_REFERENCES at: " << __FILE__ << ":" << __LINE__ << std::endl; + ++error_count; + } if(0 != boost_no_unreachable_return_detection::test()) { std::cerr << "Failed test for BOOST_NO_UNREACHABLE_RETURN_DETECTION at: " << __FILE__ << ":" << __LINE__ << std::endl; diff --git a/test/no_restrict_references_fail.cpp b/test/no_restrict_references_fail.cpp new file mode 100644 index 00000000..867aa0cb --- /dev/null +++ b/test/no_restrict_references_fail.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Sun Feb 5 18:12:09 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_RESTRICT_REFERENCES +// This file should not compile, if it does then +// BOOST_NO_RESTRICT_REFERENCES should not be defined. +// See file boost_no_restrict_references.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 +#include "test.hpp" + +#ifdef BOOST_NO_RESTRICT_REFERENCES +#include "boost_no_restrict_references.ipp" +#else +#error "this file should not compile" +#endif + +int main( int, char *[] ) +{ + return boost_no_restrict_references::test(); +} + diff --git a/test/no_restrict_references_pass.cpp b/test/no_restrict_references_pass.cpp new file mode 100644 index 00000000..878c54eb --- /dev/null +++ b/test/no_restrict_references_pass.cpp @@ -0,0 +1,37 @@ +// This file was automatically generated on Sun Feb 5 18:12:09 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_RESTRICT_REFERENCES +// This file should compile, if it does not then +// BOOST_NO_RESTRICT_REFERENCES should be defined. +// See file boost_no_restrict_references.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 +#include "test.hpp" + +#ifndef BOOST_NO_RESTRICT_REFERENCES +#include "boost_no_restrict_references.ipp" +#else +namespace boost_no_restrict_references = empty_boost; +#endif + +int main( int, char *[] ) +{ + return boost_no_restrict_references::test(); +} +