Squashed 'third_party/boostorg/config/' content from commit bb3c8a2
Change-Id: I20e82d188260045e00478e35813b54ca7fda6eaf
git-subtree-dir: third_party/boostorg/config
git-subtree-split: bb3c8a20dcb3a97e0c999a5869305398fa6d8a11
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..3e84d7c
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,96 @@
+* text=auto !eol svneol=native#text/plain
+*.gitattributes text svneol=native#text/plain
+
+# Scriptish formats
+*.bat text svneol=native#text/plain
+*.bsh text svneol=native#text/x-beanshell
+*.cgi text svneol=native#text/plain
+*.cmd text svneol=native#text/plain
+*.js text svneol=native#text/javascript
+*.php text svneol=native#text/x-php
+*.pl text svneol=native#text/x-perl
+*.pm text svneol=native#text/x-perl
+*.py text svneol=native#text/x-python
+*.sh eol=lf svneol=LF#text/x-sh
+configure eol=lf svneol=LF#text/x-sh
+
+# Image formats
+*.bmp binary svneol=unset#image/bmp
+*.gif binary svneol=unset#image/gif
+*.ico binary svneol=unset#image/ico
+*.jpeg binary svneol=unset#image/jpeg
+*.jpg binary svneol=unset#image/jpeg
+*.png binary svneol=unset#image/png
+*.tif binary svneol=unset#image/tiff
+*.tiff binary svneol=unset#image/tiff
+*.svg text svneol=native#image/svg%2Bxml
+
+# Data formats
+*.pdf binary svneol=unset#application/pdf
+*.avi binary svneol=unset#video/avi
+*.doc binary svneol=unset#application/msword
+*.dsp text svneol=crlf#text/plain
+*.dsw text svneol=crlf#text/plain
+*.eps binary svneol=unset#application/postscript
+*.gz binary svneol=unset#application/gzip
+*.mov binary svneol=unset#video/quicktime
+*.mp3 binary svneol=unset#audio/mpeg
+*.ppt binary svneol=unset#application/vnd.ms-powerpoint
+*.ps binary svneol=unset#application/postscript
+*.psd binary svneol=unset#application/photoshop
+*.rdf binary svneol=unset#text/rdf
+*.rss text svneol=unset#text/xml
+*.rtf binary svneol=unset#text/rtf
+*.sln text svneol=native#text/plain
+*.swf binary svneol=unset#application/x-shockwave-flash
+*.tgz binary svneol=unset#application/gzip
+*.vcproj text svneol=native#text/xml
+*.vcxproj text svneol=native#text/xml
+*.vsprops text svneol=native#text/xml
+*.wav binary svneol=unset#audio/wav
+*.xls binary svneol=unset#application/vnd.ms-excel
+*.zip binary svneol=unset#application/zip
+
+# Text formats
+.htaccess text svneol=native#text/plain
+*.bbk text svneol=native#text/xml
+*.cmake text svneol=native#text/plain
+*.css text svneol=native#text/css
+*.dtd text svneol=native#text/xml
+*.htm text svneol=native#text/html
+*.html text svneol=native#text/html
+*.ini text svneol=native#text/plain
+*.log text svneol=native#text/plain
+*.mak text svneol=native#text/plain
+*.qbk text svneol=native#text/plain
+*.rst text svneol=native#text/plain
+*.sql text svneol=native#text/x-sql
+*.txt text svneol=native#text/plain
+*.xhtml text svneol=native#text/xhtml%2Bxml
+*.xml text svneol=native#text/xml
+*.xsd text svneol=native#text/xml
+*.xsl text svneol=native#text/xml
+*.xslt text svneol=native#text/xml
+*.xul text svneol=native#text/xul
+*.yml text svneol=native#text/plain
+boost-no-inspect text svneol=native#text/plain
+CHANGES text svneol=native#text/plain
+COPYING text svneol=native#text/plain
+INSTALL text svneol=native#text/plain
+Jamfile text svneol=native#text/plain
+Jamroot text svneol=native#text/plain
+Jamfile.v2 text svneol=native#text/plain
+Jamrules text svneol=native#text/plain
+Makefile* text svneol=native#text/plain
+README text svneol=native#text/plain
+TODO text svneol=native#text/plain
+
+# Code formats
+*.c text svneol=native#text/plain
+*.cpp text svneol=native#text/plain
+*.h text svneol=native#text/plain
+*.hpp text svneol=native#text/plain
+*.ipp text svneol=native#text/plain
+*.tpp text svneol=native#text/plain
+*.jam text svneol=native#text/plain
+*.java text svneol=native#text/plain
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..17bac5c
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1 @@
+checks/architecture/bin
diff --git a/.travis.yml b/.travis.yml
new file mode 100644
index 0000000..ff0257a
--- /dev/null
+++ b/.travis.yml
@@ -0,0 +1,251 @@
+# Copyright 2016, 2017, 2018 Peter Dimov
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at http://boost.org/LICENSE_1_0.txt)
+
+language: cpp
+
+sudo: false
+
+branches:
+ only:
+ - master
+ - develop
+ - /feature\/.*/
+
+env:
+ matrix:
+ - BOGUS_JOB=true
+
+matrix:
+
+ exclude:
+ - env: BOGUS_JOB=true
+
+ include:
+ - os: linux
+ env: TOOLSET=gcc COMPILER=g++ CXXSTD=03,11
+
+ - os: linux
+ compiler: g++-4.4
+ env: TOOLSET=gcc COMPILER=g++-4.4 CXXSTD=98,0x
+ addons:
+ apt:
+ packages:
+ - g++-4.4
+ sources:
+ - ubuntu-toolchain-r-test
+
+ - os: linux
+ compiler: g++-4.6
+ env: TOOLSET=gcc COMPILER=g++-4.6 CXXSTD=03,0x
+ addons:
+ apt:
+ packages:
+ - g++-4.6
+ sources:
+ - ubuntu-toolchain-r-test
+
+ - os: linux
+ env: TOOLSET=gcc COMPILER=g++-4.7 CXXSTD=03,11
+ addons:
+ apt:
+ packages:
+ - g++-4.7
+ sources:
+ - ubuntu-toolchain-r-test
+
+ - os: linux
+ env: TOOLSET=gcc COMPILER=g++-4.8 CXXSTD=03,11
+ addons:
+ apt:
+ packages:
+ - g++-4.8
+ sources:
+ - ubuntu-toolchain-r-test
+
+ - os: linux
+ env: TOOLSET=gcc COMPILER=g++-4.9 CXXSTD=03,11
+ addons:
+ apt:
+ packages:
+ - g++-4.9
+ sources:
+ - ubuntu-toolchain-r-test
+
+ - os: linux
+ env: TOOLSET=gcc COMPILER=g++-5 CXXSTD=03,11,14,1z
+ addons:
+ apt:
+ packages:
+ - g++-5
+ sources:
+ - ubuntu-toolchain-r-test
+
+ - os: linux
+ env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=03,11,14,1z
+ addons:
+ apt:
+ packages:
+ - g++-6
+ sources:
+ - ubuntu-toolchain-r-test
+
+ - os: linux
+ env: TOOLSET=gcc COMPILER=g++-6 CXXSTD=03,11,14,1z CXXSTD_DIALECT=cxxstd-dialect=gnu
+ addons:
+ apt:
+ packages:
+ - g++-6
+ sources:
+ - ubuntu-toolchain-r-test
+
+ - os: linux
+ env: TOOLSET=gcc COMPILER=g++-7 CXXSTD=03,11,14,17
+ addons:
+ apt:
+ packages:
+ - g++-7
+ sources:
+ - ubuntu-toolchain-r-test
+
+ - os: linux
+ env: TOOLSET=gcc COMPILER=g++-8 CXXSTD=03,11,14,17
+ addons:
+ apt:
+ packages:
+ - g++-8
+ sources:
+ - ubuntu-toolchain-r-test
+
+ - os: linux
+ env: TOOLSET=clang COMPILER=clang++ CXXSTD=03,11
+
+ - os: linux
+ env: TOOLSET=clang COMPILER=clang++-3.5 CXXSTD=03,11,14,1z
+ addons:
+ apt:
+ packages:
+ - clang-3.5
+ sources:
+ - ubuntu-toolchain-r-test
+ - llvm-toolchain-precise-3.5
+
+ - os: linux
+ env: TOOLSET=clang COMPILER=clang++-3.6 CXXSTD=03,11,14,1z
+ addons:
+ apt:
+ packages:
+ - clang-3.6
+ sources:
+ - ubuntu-toolchain-r-test
+ - llvm-toolchain-precise-3.6
+
+ - os: linux
+ env: TOOLSET=clang COMPILER=clang++-3.7 CXXSTD=03,11,14,1z
+ addons:
+ apt:
+ packages:
+ - clang-3.7
+ sources:
+ - ubuntu-toolchain-r-test
+ - llvm-toolchain-precise-3.7
+
+ - os: linux
+ env: TOOLSET=clang COMPILER=clang++-3.8 CXXSTD=03,11,14,1z
+ addons:
+ apt:
+ packages:
+ - clang-3.8
+ sources:
+ - ubuntu-toolchain-r-test
+ - llvm-toolchain-precise-3.8
+
+ - os: linux
+ env: TOOLSET=clang COMPILER=clang++-3.9 CXXSTD=03,11,14,1z
+ addons:
+ apt:
+ packages:
+ - clang-3.9
+ sources:
+ - ubuntu-toolchain-r-test
+ - llvm-toolchain-precise-3.9
+
+ - os: linux
+ compiler: clang++-4.0
+ env: TOOLSET=clang COMPILER=clang++-4.0 CXXSTD=03,11,14,1z
+ addons:
+ apt:
+ packages:
+ - clang-4.0
+ sources:
+ - ubuntu-toolchain-r-test
+ - llvm-toolchain-trusty-4.0
+
+ - os: linux
+ compiler: clang++-5.0
+ env: TOOLSET=clang COMPILER=clang++-5.0 CXXSTD=03,11,14,1z
+ addons:
+ apt:
+ packages:
+ - clang-5.0
+ sources:
+ - ubuntu-toolchain-r-test
+ - llvm-toolchain-trusty-5.0
+
+ - os: linux
+ compiler: clang++-libc++
+ env: TOOLSET=clang COMPILER=clang++-libc++ CXXSTD=03,11,14,1z
+ addons:
+ apt:
+ packages:
+ - libc++-dev
+
+ - os: osx
+ env: TOOLSET=clang COMPILER=clang++ CXXSTD=03,11,14,1z
+ osx_image: xcode9.1
+
+ - os: osx
+ env: TOOLSET=clang COMPILER=clang++ CXXSTD=03,11,14,1z
+ osx_image: xcode9
+
+ - os: osx
+ env: TOOLSET=clang COMPILER=clang++ CXXSTD=03,11,14,1z
+ osx_image: xcode8.3
+
+ - os: osx
+ env: TOOLSET=clang COMPILER=clang++ CXXSTD=03,11,14,1z
+ osx_image: xcode8
+
+ - os: osx
+ env: TOOLSET=clang COMPILER=clang++ CXXSTD=03,11,14,1z
+ osx_image: xcode7.3
+
+ - os: osx
+ env: TOOLSET=clang COMPILER=clang++ CXXSTD=03,11,14,1z
+ osx_image: xcode6.4
+
+install:
+ - BOOST_BRANCH=develop && [ "$TRAVIS_BRANCH" == "master" ] && BOOST_BRANCH=master || true
+ - cd ..
+ - git clone -b $BOOST_BRANCH --depth 1 https://github.com/boostorg/boost.git boost-root
+ - cd boost-root
+ - git submodule update --init tools/build
+ - git submodule update --init libs/detail
+ - git submodule update --init libs/core
+ - git submodule update --init libs/assert
+ - git submodule update --init libs/type_traits
+ - cp -r $TRAVIS_BUILD_DIR/* libs/config
+ - ./bootstrap.sh
+ - ./b2 headers
+
+script:
+ - |-
+ echo "using $TOOLSET : : $COMPILER ;" > ~/user-config.jam
+ - IFS=','
+ - for CXXLOCAL in $CXXSTD; do (cd libs/config/test && ../../../b2 config_info_travis_install toolset=$TOOLSET cxxstd=$CXXLOCAL $CXXSTD_DIALECT && echo With Standard Version $CXXLOCAL && ./config_info_travis && rm ./config_info_travis) done
+ - unset IFS
+ - ./b2 -j3 libs/config/test toolset=$TOOLSET cxxstd=$CXXSTD $CXXSTD_DIALECT
+
+notifications:
+ email:
+ on_success: always
diff --git a/appveyor.bat b/appveyor.bat
new file mode 100644
index 0000000..fb6d527
--- /dev/null
+++ b/appveyor.bat
@@ -0,0 +1,12 @@
+IF NOT DEFINED CXXSTD (
+ECHO %ARGS:"=%
+..\..\..\b2 config_info_travis_install %ARGS:"=%
+config_info_travis
+del config_info_travis.exe
+)
+IF DEFINED CXXSTD FOR %%A IN (%CXXSTD%) DO (
+ECHO %ARGS:"=%
+..\..\..\b2 -a -d2 config_info_travis_install %ARGS:"=% cxxstd=%%A
+config_info_travis
+del config_info_travis.exe
+)
\ No newline at end of file
diff --git a/appveyor.yml b/appveyor.yml
new file mode 100644
index 0000000..7d04c71
--- /dev/null
+++ b/appveyor.yml
@@ -0,0 +1,67 @@
+# Copyright 2016 Peter Dimov
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at http://boost.org/LICENSE_1_0.txt)
+
+version: 1.0.{build}-{branch}
+
+shallow_clone: true
+
+branches:
+ only:
+ - master
+ - develop
+
+platform:
+ - x64
+
+environment:
+ matrix:
+ - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
+ ARGS: --toolset=msvc-14.1 address-model=64
+ - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
+ ARGS: --toolset=msvc-14.1 address-model=32
+ - APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2017
+ ARGS: --toolset=msvc-14.1 address-model=64 cxxflags=-std:c++latest cxxflags=-permissive-
+ - ARGS: --toolset=msvc-9.0 address-model=32
+ - ARGS: --toolset=msvc-10.0 address-model=32
+ - ARGS: --toolset=msvc-11.0 address-model=32
+ - ARGS: --toolset=msvc-12.0 address-model=32
+ - ARGS: --toolset=msvc-14.0 address-model=32
+ - ARGS: --toolset=msvc-12.0 address-model=64
+ - ARGS: --toolset=msvc-14.0 address-model=64
+ - ARGS: --toolset=msvc-14.0 address-model=64 cxxflags=-std:c++latest
+ - ARGS: --toolset=gcc address-model=64
+ CXXSTD: 03,11,14,1z
+ PATH: C:\mingw-w64\x86_64-6.3.0-posix-seh-rt_v5-rev1\mingw64\bin;%PATH%
+ - ARGS: --toolset=gcc address-model=64
+ CXXSTD: 03,11,14,1z
+ PATH: C:\mingw-w64\x86_64-7.2.0-posix-seh-rt_v5-rev1\mingw64\bin;%PATH%
+ - ARGS: --toolset=gcc address-model=32 linkflags=-Wl,-allow-multiple-definition
+ CXXSTD: 03,11,14,1z
+ PATH: C:\MinGW\bin;%PATH%
+ - ARGS: --toolset=gcc address-model=64
+ CXXSTD: 03,11,14,1z
+ PATH: C:\cygwin64\bin;%PATH%
+ - ARGS: --toolset=gcc address-model=32
+ CXXSTD: 03,11,14,1z
+ PATH: C:\cygwin\bin;%PATH%
+
+install:
+ - cd ..
+ - git clone -b %APPVEYOR_REPO_BRANCH% --depth 1 https://github.com/boostorg/boost.git boost-root
+ - cd boost-root
+ - xcopy /s /e /q %APPVEYOR_BUILD_FOLDER% libs\config
+ - git submodule update --init tools/build
+ - git submodule update --init libs/detail
+ - git submodule update --init libs/core
+ - git submodule update --init libs/assert
+ - git submodule update --init libs/type_traits
+ - bootstrap
+ - b2 headers
+
+build: off
+
+test_script:
+ - cd libs\config\test
+ - ..\appveyor.bat
+ - ..\..\..\b2 -j3 %ARGS% cxxstd=%CXXSTD%
diff --git a/checks/Jamfile.v2 b/checks/Jamfile.v2
new file mode 100644
index 0000000..0c26bce
--- /dev/null
+++ b/checks/Jamfile.v2
@@ -0,0 +1,207 @@
+#
+# *** DO NOT EDIT THIS FILE BY HAND ***
+# This file was automatically generated on Wed Apr 18 20:03:40 2018
+# by libs/config/tools/generate.cpp
+# Copyright John Maddock.
+# 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)
+
+import modules ;
+import path ;
+
+
+obj two_arg_use_facet : test_case.cpp : <define>TEST_BOOST_HAS_TWO_ARG_USE_FACET ;
+obj bethreads : test_case.cpp : <define>TEST_BOOST_HAS_BETHREADS ;
+obj clock_gettime : test_case.cpp : <define>TEST_BOOST_HAS_CLOCK_GETTIME ;
+obj pragma_detect_mismatch : test_case.cpp : <define>TEST_BOOST_HAS_PRAGMA_DETECT_MISMATCH ;
+obj dirent_h : test_case.cpp : <define>TEST_BOOST_HAS_DIRENT_H ;
+obj expm1 : test_case.cpp : <define>TEST_BOOST_HAS_EXPM1 ;
+obj float128 : test_case.cpp : <define>TEST_BOOST_HAS_FLOAT128 ;
+obj ftime : test_case.cpp : <define>TEST_BOOST_HAS_FTIME ;
+obj getsystemtimeasfiletime : test_case.cpp : <define>TEST_BOOST_HAS_GETSYSTEMTIMEASFILETIME ;
+obj gettimeofday : test_case.cpp : <define>TEST_BOOST_HAS_GETTIMEOFDAY ;
+obj hash : test_case.cpp : <define>TEST_BOOST_HAS_HASH ;
+obj int128 : test_case.cpp : <define>TEST_BOOST_HAS_INT128 ;
+obj log1p : test_case.cpp : <define>TEST_BOOST_HAS_LOG1P ;
+obj long_long : test_case.cpp : <define>TEST_BOOST_HAS_LONG_LONG ;
+obj macro_use_facet : test_case.cpp : <define>TEST_BOOST_HAS_MACRO_USE_FACET ;
+obj ms_int64 : test_case.cpp : <define>TEST_BOOST_HAS_MS_INT64 ;
+obj nanosleep : test_case.cpp : <define>TEST_BOOST_HAS_NANOSLEEP ;
+obj nl_types_h : test_case.cpp : <define>TEST_BOOST_HAS_NL_TYPES_H ;
+obj nrvo : test_case.cpp : <define>TEST_BOOST_HAS_NRVO ;
+obj partial_std_allocator : test_case.cpp : <define>TEST_BOOST_HAS_PARTIAL_STD_ALLOCATOR ;
+obj pthread_delay_np : test_case.cpp : <define>TEST_BOOST_HAS_PTHREAD_DELAY_NP ;
+obj pthread_mutexattr_settype : test_case.cpp : <define>TEST_BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE ;
+obj pthread_yield : test_case.cpp : <define>TEST_BOOST_HAS_PTHREAD_YIELD ;
+obj pthreads : test_case.cpp : <define>TEST_BOOST_HAS_PTHREADS ;
+obj rvalue_refs : test_case.cpp : <define>TEST_BOOST_HAS_RVALUE_REFS ;
+obj sched_yield : test_case.cpp : <define>TEST_BOOST_HAS_SCHED_YIELD ;
+obj sgi_type_traits : test_case.cpp : <define>TEST_BOOST_HAS_SGI_TYPE_TRAITS ;
+obj sigaction : test_case.cpp : <define>TEST_BOOST_HAS_SIGACTION ;
+obj slist : test_case.cpp : <define>TEST_BOOST_HAS_SLIST ;
+obj static_assert : test_case.cpp : <define>TEST_BOOST_HAS_STATIC_ASSERT ;
+obj stdint_h : test_case.cpp : <define>TEST_BOOST_HAS_STDINT_H ;
+obj stlp_use_facet : test_case.cpp : <define>TEST_BOOST_HAS_STLP_USE_FACET ;
+obj unistd_h : test_case.cpp : <define>TEST_BOOST_HAS_UNISTD_H ;
+obj variadic_tmpl : test_case.cpp : <define>TEST_BOOST_HAS_VARIADIC_TMPL ;
+obj boost_msvc6_member_templates : test_case.cpp : <define>TEST_BOOST_MSVC6_MEMBER_TEMPLATES ;
+obj boost_msvc_std_iterator : test_case.cpp : <define>TEST_BOOST_MSVC_STD_ITERATOR ;
+obj winthreads : test_case.cpp : <define>TEST_BOOST_HAS_WINTHREADS ;
+obj adl_barrier : test_case.cpp : <define>TEST_BOOST_NO_ADL_BARRIER ;
+obj argument_dependent_lookup : test_case.cpp : <define>TEST_BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP ;
+obj array_type_specializations : test_case.cpp : <define>TEST_BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS ;
+obj cxx11_auto_declarations : test_case.cpp : <define>TEST_BOOST_NO_CXX11_AUTO_DECLARATIONS ;
+obj cxx11_auto_multideclarations : test_case.cpp : <define>TEST_BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS ;
+obj auto_ptr : test_case.cpp : <define>TEST_BOOST_NO_AUTO_PTR ;
+obj boost_bcb_partial_specialization_bug : test_case.cpp : <define>TEST_BOOST_BCB_PARTIAL_SPECIALIZATION_BUG ;
+obj cxx11_char16_t : test_case.cpp : <define>TEST_BOOST_NO_CXX11_CHAR16_T ;
+obj cxx11_char32_t : test_case.cpp : <define>TEST_BOOST_NO_CXX11_CHAR32_T ;
+obj complete_value_initialization : test_case.cpp : <define>TEST_BOOST_NO_COMPLETE_VALUE_INITIALIZATION ;
+obj cxx11_constexpr : test_case.cpp : <define>TEST_BOOST_NO_CXX11_CONSTEXPR ;
+obj ctype_functions : test_case.cpp : <define>TEST_BOOST_NO_CTYPE_FUNCTIONS ;
+obj cv_specializations : test_case.cpp : <define>TEST_BOOST_NO_CV_SPECIALIZATIONS ;
+obj cv_void_specializations : test_case.cpp : <define>TEST_BOOST_NO_CV_VOID_SPECIALIZATIONS ;
+obj cwchar : test_case.cpp : <define>TEST_BOOST_NO_CWCHAR ;
+obj cwctype : test_case.cpp : <define>TEST_BOOST_NO_CWCTYPE ;
+obj cxx11_addressof : test_case.cpp : <define>TEST_BOOST_NO_CXX11_ADDRESSOF ;
+obj cxx11_alignas : test_case.cpp : <define>TEST_BOOST_NO_CXX11_ALIGNAS ;
+obj cxx11_allocator : test_case.cpp : <define>TEST_BOOST_NO_CXX11_ALLOCATOR ;
+obj cxx11_atomic_smart_ptr : test_case.cpp : <define>TEST_BOOST_NO_CXX11_ATOMIC_SMART_PTR ;
+obj cxx11_defaulted_moves : test_case.cpp : <define>TEST_BOOST_NO_CXX11_DEFAULTED_MOVES ;
+obj cxx11_final : test_case.cpp : <define>TEST_BOOST_NO_CXX11_FINAL ;
+obj cxx11_hdr_array : test_case.cpp : <define>TEST_BOOST_NO_CXX11_HDR_ARRAY ;
+obj cxx11_hdr_atomic : test_case.cpp : <define>TEST_BOOST_NO_CXX11_HDR_ATOMIC ;
+obj cxx11_hdr_chrono : test_case.cpp : <define>TEST_BOOST_NO_CXX11_HDR_CHRONO ;
+obj cxx11_hdr_codecvt : test_case.cpp : <define>TEST_BOOST_NO_CXX11_HDR_CODECVT ;
+obj cxx11_hdr_condition_variable : test_case.cpp : <define>TEST_BOOST_NO_CXX11_HDR_CONDITION_VARIABLE ;
+obj cxx11_hdr_forward_list : test_case.cpp : <define>TEST_BOOST_NO_CXX11_HDR_FORWARD_LIST ;
+obj cxx11_hdr_future : test_case.cpp : <define>TEST_BOOST_NO_CXX11_HDR_FUTURE ;
+obj cxx11_hdr_initializer_list : test_case.cpp : <define>TEST_BOOST_NO_CXX11_HDR_INITIALIZER_LIST ;
+obj cxx11_hdr_mutex : test_case.cpp : <define>TEST_BOOST_NO_CXX11_HDR_MUTEX ;
+obj cxx11_hdr_random : test_case.cpp : <define>TEST_BOOST_NO_CXX11_HDR_RANDOM ;
+obj cxx11_hdr_ratio : test_case.cpp : <define>TEST_BOOST_NO_CXX11_HDR_RATIO ;
+obj cxx11_hdr_regex : test_case.cpp : <define>TEST_BOOST_NO_CXX11_HDR_REGEX ;
+obj cxx11_hdr_system_error : test_case.cpp : <define>TEST_BOOST_NO_CXX11_HDR_SYSTEM_ERROR ;
+obj cxx11_hdr_thread : test_case.cpp : <define>TEST_BOOST_NO_CXX11_HDR_THREAD ;
+obj cxx11_hdr_tuple : test_case.cpp : <define>TEST_BOOST_NO_CXX11_HDR_TUPLE ;
+obj cxx11_hdr_type_traits : test_case.cpp : <define>TEST_BOOST_NO_CXX11_HDR_TYPE_TRAITS ;
+obj cxx11_hdr_typeindex : test_case.cpp : <define>TEST_BOOST_NO_CXX11_HDR_TYPEINDEX ;
+obj cxx11_hdr_unordered_map : test_case.cpp : <define>TEST_BOOST_NO_CXX11_HDR_UNORDERED_MAP ;
+obj cxx11_hdr_unordered_set : test_case.cpp : <define>TEST_BOOST_NO_CXX11_HDR_UNORDERED_SET ;
+obj cxx11_inline_namespaces : test_case.cpp : <define>TEST_BOOST_NO_CXX11_INLINE_NAMESPACES ;
+obj cxx11_non_public_defaulted_functions : test_case.cpp : <define>TEST_BOOST_NO_CXX11_NON_PUBLIC_DEFAULTED_FUNCTIONS ;
+obj cxx11_numeric_limits : test_case.cpp : <define>TEST_BOOST_NO_CXX11_NUMERIC_LIMITS ;
+obj cxx11_pointer_traits : test_case.cpp : <define>TEST_BOOST_NO_CXX11_POINTER_TRAITS ;
+obj cxx11_ref_qualifiers : test_case.cpp : <define>TEST_BOOST_NO_CXX11_REF_QUALIFIERS ;
+obj cxx11_sfinae_expr : test_case.cpp : <define>TEST_BOOST_NO_CXX11_SFINAE_EXPR ;
+obj cxx11_smart_ptr : test_case.cpp : <define>TEST_BOOST_NO_CXX11_SMART_PTR ;
+obj cxx11_std_align : test_case.cpp : <define>TEST_BOOST_NO_CXX11_STD_ALIGN ;
+obj cxx11_thread_local : test_case.cpp : <define>TEST_BOOST_NO_CXX11_THREAD_LOCAL ;
+obj cxx11_trailing_result_types : test_case.cpp : <define>TEST_BOOST_NO_CXX11_TRAILING_RESULT_TYPES ;
+obj cxx11_user_defined_literals : test_case.cpp : <define>TEST_BOOST_NO_CXX11_USER_DEFINED_LITERALS ;
+obj cxx14_binary_literals : test_case.cpp : <define>TEST_BOOST_NO_CXX14_BINARY_LITERALS ;
+obj cxx14_constexpr : test_case.cpp : <define>TEST_BOOST_NO_CXX14_CONSTEXPR ;
+obj cxx14_decltype_auto : test_case.cpp : <define>TEST_BOOST_NO_CXX14_DECLTYPE_AUTO ;
+obj cxx14_digit_separators : test_case.cpp : <define>TEST_BOOST_NO_CXX14_DIGIT_SEPARATORS ;
+obj cxx14_generic_lambdas : test_case.cpp : <define>TEST_BOOST_NO_CXX14_GENERIC_LAMBDAS ;
+obj cxx14_hdr_shared_mutex : test_case.cpp : <define>TEST_BOOST_NO_CXX14_HDR_SHARED_MUTEX ;
+obj cxx14_initialized_lambda_captures : test_case.cpp : <define>TEST_BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES ;
+obj cxx14_aggregate_nsdmi : test_case.cpp : <define>TEST_BOOST_NO_CXX14_AGGREGATE_NSDMI ;
+obj cxx14_return_type_deduction : test_case.cpp : <define>TEST_BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION ;
+obj cxx14_std_exchange : test_case.cpp : <define>TEST_BOOST_NO_CXX14_STD_EXCHANGE ;
+obj cxx14_variable_templates : test_case.cpp : <define>TEST_BOOST_NO_CXX14_VARIABLE_TEMPLATES ;
+obj cxx17_fold_expressions : test_case.cpp : <define>TEST_BOOST_NO_CXX17_FOLD_EXPRESSIONS ;
+obj cxx17_if_constexpr : test_case.cpp : <define>TEST_BOOST_NO_CXX17_IF_CONSTEXPR ;
+obj cxx17_inline_variables : test_case.cpp : <define>TEST_BOOST_NO_CXX17_INLINE_VARIABLES ;
+obj cxx17_iterator_traits : test_case.cpp : <define>TEST_BOOST_NO_CXX17_ITERATOR_TRAITS ;
+obj cxx17_std_apply : test_case.cpp : <define>TEST_BOOST_NO_CXX17_STD_APPLY ;
+obj cxx17_std_invoke : test_case.cpp : <define>TEST_BOOST_NO_CXX17_STD_INVOKE ;
+obj cxx17_structured_bindings : test_case.cpp : <define>TEST_BOOST_NO_CXX17_STRUCTURED_BINDINGS ;
+obj cxx98_binders : test_case.cpp : <define>TEST_BOOST_NO_CXX98_BINDERS ;
+obj cxx98_function_base : test_case.cpp : <define>TEST_BOOST_NO_CXX98_FUNCTION_BASE ;
+obj cxx98_random_shuffle : test_case.cpp : <define>TEST_BOOST_NO_CXX98_RANDOM_SHUFFLE ;
+obj cxx11_hdr_functional : test_case.cpp : <define>TEST_BOOST_NO_CXX11_HDR_FUNCTIONAL ;
+obj cxx11_decltype : test_case.cpp : <define>TEST_BOOST_NO_CXX11_DECLTYPE ;
+obj cxx11_decltype_n3276 : test_case.cpp : <define>TEST_BOOST_NO_CXX11_DECLTYPE_N3276 ;
+obj boost_deduced_typename : test_case.cpp : <define>TEST_BOOST_DEDUCED_TYPENAME ;
+obj cxx11_defaulted_functions : test_case.cpp : <define>TEST_BOOST_NO_CXX11_DEFAULTED_FUNCTIONS ;
+obj cxx11_deleted_functions : test_case.cpp : <define>TEST_BOOST_NO_CXX11_DELETED_FUNCTIONS ;
+obj dependent_nested_derivations : test_case.cpp : <define>TEST_BOOST_NO_DEPENDENT_NESTED_DERIVATIONS ;
+obj dependent_types_in_template_value_parameters : test_case.cpp : <define>TEST_BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS ;
+obj exception_std_namespace : test_case.cpp : <define>TEST_BOOST_NO_EXCEPTION_STD_NAMESPACE ;
+obj exceptions : test_case.cpp : <define>TEST_BOOST_NO_EXCEPTIONS ;
+obj explicit_function_template_arguments : test_case.cpp : <define>TEST_BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS ;
+obj cxx11_explicit_conversion_operators : test_case.cpp : <define>TEST_BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS ;
+obj cxx11_extern_template : test_case.cpp : <define>TEST_BOOST_NO_CXX11_EXTERN_TEMPLATE ;
+obj fenv_h : test_case.cpp : <define>TEST_BOOST_NO_FENV_H ;
+obj cxx11_fixed_length_variadic_template_expansion_packs : test_case.cpp : <define>TEST_BOOST_NO_CXX11_FIXED_LENGTH_VARIADIC_TEMPLATE_EXPANSION_PACKS ;
+obj function_template_ordering : test_case.cpp : <define>TEST_BOOST_NO_FUNCTION_TEMPLATE_ORDERING ;
+obj cxx11_function_template_default_args : test_case.cpp : <define>TEST_BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS ;
+obj function_type_specializations : test_case.cpp : <define>TEST_BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS ;
+obj ms_int64_numeric_limits : test_case.cpp : <define>TEST_BOOST_NO_MS_INT64_NUMERIC_LIMITS ;
+obj inclass_member_initialization : test_case.cpp : <define>TEST_BOOST_NO_INCLASS_MEMBER_INITIALIZATION ;
+obj integral_int64_t : test_case.cpp : <define>TEST_BOOST_NO_INTEGRAL_INT64_T ;
+obj iosfwd : test_case.cpp : <define>TEST_BOOST_NO_IOSFWD ;
+obj iostream : test_case.cpp : <define>TEST_BOOST_NO_IOSTREAM ;
+obj is_abstract : test_case.cpp : <define>TEST_BOOST_NO_IS_ABSTRACT ;
+obj templated_iterator_constructors : test_case.cpp : <define>TEST_BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS ;
+obj cxx11_lambdas : test_case.cpp : <define>TEST_BOOST_NO_CXX11_LAMBDAS ;
+obj limits : test_case.cpp : <define>TEST_BOOST_NO_LIMITS ;
+obj limits_compile_time_constants : test_case.cpp : <define>TEST_BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS ;
+obj long_long_numeric_limits : test_case.cpp : <define>TEST_BOOST_NO_LONG_LONG_NUMERIC_LIMITS ;
+obj member_function_specializations : test_case.cpp : <define>TEST_BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS ;
+obj member_template_keyword : test_case.cpp : <define>TEST_BOOST_NO_MEMBER_TEMPLATE_KEYWORD ;
+obj pointer_to_member_template_parameters : test_case.cpp : <define>TEST_BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS ;
+obj member_template_friends : test_case.cpp : <define>TEST_BOOST_NO_MEMBER_TEMPLATE_FRIENDS ;
+obj member_templates : test_case.cpp : <define>TEST_BOOST_NO_MEMBER_TEMPLATES ;
+obj nested_friendship : test_case.cpp : <define>TEST_BOOST_NO_NESTED_FRIENDSHIP ;
+obj cxx11_noexcept : test_case.cpp : <define>TEST_BOOST_NO_CXX11_NOEXCEPT ;
+obj cxx11_nullptr : test_case.cpp : <define>TEST_BOOST_NO_CXX11_NULLPTR ;
+obj operators_in_namespace : test_case.cpp : <define>TEST_BOOST_NO_OPERATORS_IN_NAMESPACE ;
+obj partial_specialization_implicit_default_args : test_case.cpp : <define>TEST_BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS ;
+obj template_partial_specialization : test_case.cpp : <define>TEST_BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION ;
+obj private_in_aggregate : test_case.cpp : <define>TEST_BOOST_NO_PRIVATE_IN_AGGREGATE ;
+obj pointer_to_member_const : test_case.cpp : <define>TEST_BOOST_NO_POINTER_TO_MEMBER_CONST ;
+obj cxx11_range_based_for : test_case.cpp : <define>TEST_BOOST_NO_CXX11_RANGE_BASED_FOR ;
+obj cxx11_raw_literals : test_case.cpp : <define>TEST_BOOST_NO_CXX11_RAW_LITERALS ;
+obj restrict_references : test_case.cpp : <define>TEST_BOOST_NO_RESTRICT_REFERENCES ;
+obj unreachable_return_detection : test_case.cpp : <define>TEST_BOOST_NO_UNREACHABLE_RETURN_DETECTION ;
+obj rtti : test_case.cpp : <define>TEST_BOOST_NO_RTTI ;
+obj cxx11_rvalue_references : test_case.cpp : <define>TEST_BOOST_NO_CXX11_RVALUE_REFERENCES ;
+obj cxx11_scoped_enums : test_case.cpp : <define>TEST_BOOST_NO_CXX11_SCOPED_ENUMS ;
+obj sfinae : test_case.cpp : <define>TEST_BOOST_NO_SFINAE ;
+obj sfinae_expr : test_case.cpp : <define>TEST_BOOST_NO_SFINAE_EXPR ;
+obj stringstream : test_case.cpp : <define>TEST_BOOST_NO_STRINGSTREAM ;
+obj cxx11_static_assert : test_case.cpp : <define>TEST_BOOST_NO_CXX11_STATIC_ASSERT ;
+obj std_allocator : test_case.cpp : <define>TEST_BOOST_NO_STD_ALLOCATOR ;
+obj std_distance : test_case.cpp : <define>TEST_BOOST_NO_STD_DISTANCE ;
+obj std_iterator_traits : test_case.cpp : <define>TEST_BOOST_NO_STD_ITERATOR_TRAITS ;
+obj std_iterator : test_case.cpp : <define>TEST_BOOST_NO_STD_ITERATOR ;
+obj std_locale : test_case.cpp : <define>TEST_BOOST_NO_STD_LOCALE ;
+obj std_messages : test_case.cpp : <define>TEST_BOOST_NO_STD_MESSAGES ;
+obj std_min_max : test_case.cpp : <define>TEST_BOOST_NO_STD_MIN_MAX ;
+obj std_output_iterator_assign : test_case.cpp : <define>TEST_BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN ;
+obj std_typeinfo : test_case.cpp : <define>TEST_BOOST_NO_STD_TYPEINFO ;
+obj std_use_facet : test_case.cpp : <define>TEST_BOOST_NO_STD_USE_FACET ;
+obj std_wstreambuf : test_case.cpp : <define>TEST_BOOST_NO_STD_WSTREAMBUF ;
+obj std_wstring : test_case.cpp : <define>TEST_BOOST_NO_STD_WSTRING ;
+obj stdc_namespace : test_case.cpp : <define>TEST_BOOST_NO_STDC_NAMESPACE ;
+obj swprintf : test_case.cpp : <define>TEST_BOOST_NO_SWPRINTF ;
+obj cxx11_local_class_template_parameters : test_case.cpp : <define>TEST_BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS ;
+obj cxx11_template_aliases : test_case.cpp : <define>TEST_BOOST_NO_CXX11_TEMPLATE_ALIASES ;
+obj templated_iostreams : test_case.cpp : <define>TEST_BOOST_NO_TEMPLATED_IOSTREAMS ;
+obj template_templates : test_case.cpp : <define>TEST_BOOST_NO_TEMPLATE_TEMPLATES ;
+obj two_phase_name_lookup : test_case.cpp : <define>TEST_BOOST_NO_TWO_PHASE_NAME_LOOKUP ;
+obj typeid : test_case.cpp : <define>TEST_BOOST_NO_TYPEID ;
+obj typename_with_ctor : test_case.cpp : <define>TEST_BOOST_NO_TYPENAME_WITH_CTOR ;
+obj cxx11_unicode_literals : test_case.cpp : <define>TEST_BOOST_NO_CXX11_UNICODE_LITERALS ;
+obj cxx11_unified_initialization_syntax : test_case.cpp : <define>TEST_BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX ;
+obj boost_function_scope_using_declaration_breaks_adl : test_case.cpp : <define>TEST_BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL ;
+obj using_declaration_overloads_from_typename_base : test_case.cpp : <define>TEST_BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE ;
+obj using_template : test_case.cpp : <define>TEST_BOOST_NO_USING_TEMPLATE ;
+obj cxx11_variadic_macros : test_case.cpp : <define>TEST_BOOST_NO_CXX11_VARIADIC_MACROS ;
+obj cxx11_variadic_templates : test_case.cpp : <define>TEST_BOOST_NO_CXX11_VARIADIC_TEMPLATES ;
+obj void_returns : test_case.cpp : <define>TEST_BOOST_NO_VOID_RETURNS ;
+obj intrinsic_wchar_t : test_case.cpp : <define>TEST_BOOST_NO_INTRINSIC_WCHAR_T ;
+
diff --git a/checks/architecture/.gitignore b/checks/architecture/.gitignore
new file mode 100644
index 0000000..ba077a4
--- /dev/null
+++ b/checks/architecture/.gitignore
@@ -0,0 +1 @@
+bin
diff --git a/checks/architecture/32.cpp b/checks/architecture/32.cpp
new file mode 100644
index 0000000..d3d2dba
--- /dev/null
+++ b/checks/architecture/32.cpp
@@ -0,0 +1,9 @@
+// 32.cpp
+//
+// Copyright (c) 2012 Steven Watanabe
+//
+// Distributed under the Boost Software License Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+int test[sizeof(void*) == 4? 1 : -1];
diff --git a/checks/architecture/64.cpp b/checks/architecture/64.cpp
new file mode 100644
index 0000000..5a33bc6
--- /dev/null
+++ b/checks/architecture/64.cpp
@@ -0,0 +1,9 @@
+// 64.cpp
+//
+// Copyright (c) 2012 Steven Watanabe
+//
+// Distributed under the Boost Software License Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+int test[sizeof(void*) == 8? 1 : -1];
diff --git a/checks/architecture/Jamroot.jam b/checks/architecture/Jamroot.jam
new file mode 100644
index 0000000..ca653b7
--- /dev/null
+++ b/checks/architecture/Jamroot.jam
@@ -0,0 +1,23 @@
+# Jamfile.jam
+#
+# Copyright 2012 Steven Watanabe
+#
+# Distributed under the Boost Software License Version 1.0. (See
+# accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt)
+
+project /boost/architecture
+ : requirements
+ -<conditional>@boostcpp.deduce-address-model
+ -<conditional>@boostcpp.deduce-architecture
+ ;
+
+obj 32 : 32.cpp ;
+obj 64 : 64.cpp ;
+
+obj arm : arm.cpp ;
+obj combined : combined.cpp ;
+obj mips1 : mips1.cpp ;
+obj power : power.cpp ;
+obj sparc : sparc.cpp ;
+obj x86 : x86.cpp ;
diff --git a/checks/architecture/arm.cpp b/checks/architecture/arm.cpp
new file mode 100644
index 0000000..794aba8
--- /dev/null
+++ b/checks/architecture/arm.cpp
@@ -0,0 +1,15 @@
+// arm.cpp
+//
+// Copyright (c) 2012 Steven Watanabe
+//
+// Distributed under the Boost Software License Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+#if !defined(__arm__) && !defined(__thumb__) && \
+ !defined(__TARGET_ARCH_ARM) && !defined(__TARGET_ARCH_THUMB) && \
+ !defined(_ARM) && !defined(_M_ARM) && \
+ !defined(__aarch64__)
+#error "Not ARM"
+#endif
+
diff --git a/checks/architecture/combined.cpp b/checks/architecture/combined.cpp
new file mode 100644
index 0000000..4e5a387
--- /dev/null
+++ b/checks/architecture/combined.cpp
@@ -0,0 +1,21 @@
+// combined.cpp
+//
+// Copyright (c) 2012 Steven Watanabe
+// 2014 Oliver Kowalke
+//
+// Distributed under the Boost Software License Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+#if !defined(i386) && !defined(__i386__) && !defined(__i386) \
+ && !defined(__i486__) && !defined(__i586__) && !defined(__i686__) \
+ && !defined(_M_IX86) && !defined(__X86__) && !defined(_X86_) \
+ && !defined(__THW_INTEL__) && !defined(__I86__) && !defined(__INTEL__) \
+ && !defined(__amd64__) && !defined(__x86_64__) && !defined(__amd64) \
+ && !defined(__x86_64) && !defined(_M_X64) \
+ && !defined(__powerpc) && !defined(__powerpc__) && !defined(__ppc) \
+ && !defined(__ppc__) && !defined(_M_PPC) && !defined(_ARCH_PPC) \
+ && !defined(__POWERPC__) && !defined(__PPCGECKO__) \
+ && !defined(__PPCBROADWAY) && !defined(_XENON)
+#error "Not combined"
+#endif
diff --git a/checks/architecture/mips1.cpp b/checks/architecture/mips1.cpp
new file mode 100644
index 0000000..adc4a61
--- /dev/null
+++ b/checks/architecture/mips1.cpp
@@ -0,0 +1,11 @@
+// mips1.cpp
+//
+// Copyright (c) 2012 Steven Watanabe
+//
+// Distributed under the Boost Software License Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+#if !((defined(__mips) && __mips == 1) || defined(_MIPS_ISA_MIPS1) || defined(_R3000))
+#error "Not MIPS1"
+#endif
diff --git a/checks/architecture/power.cpp b/checks/architecture/power.cpp
new file mode 100644
index 0000000..0551194
--- /dev/null
+++ b/checks/architecture/power.cpp
@@ -0,0 +1,14 @@
+// power.cpp
+//
+// Copyright (c) 2012 Steven Watanabe
+//
+// Distributed under the Boost Software License Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+#if !defined(__powerpc) && !defined(__powerpc__) && !defined(__ppc) \
+ && !defined(__ppc__) && !defined(_M_PPC) && !defined(_ARCH_PPC) \
+ && !defined(__POWERPC__) && !defined(__PPCGECKO__) \
+ && !defined(__PPCBROADWAY) && !defined(_XENON)
+#error "Not PPC"
+#endif
diff --git a/checks/architecture/sparc.cpp b/checks/architecture/sparc.cpp
new file mode 100644
index 0000000..3df2df8
--- /dev/null
+++ b/checks/architecture/sparc.cpp
@@ -0,0 +1,11 @@
+// power.cpp
+//
+// Copyright (c) 2012 Steven Watanabe
+//
+// Distributed under the Boost Software License Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+#if !defined(__sparc__) && !defined(__sparc)
+#error "Not SPARC"
+#endif
diff --git a/checks/architecture/x86.cpp b/checks/architecture/x86.cpp
new file mode 100644
index 0000000..0d2f9c2
--- /dev/null
+++ b/checks/architecture/x86.cpp
@@ -0,0 +1,16 @@
+// x86.cpp
+//
+// Copyright (c) 2012 Steven Watanabe
+//
+// Distributed under the Boost Software License Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+#if !defined(i386) && !defined(__i386__) && !defined(__i386) \
+ && !defined(__i486__) && !defined(__i586__) && !defined(__i686__) \
+ && !defined(_M_IX86) && !defined(__X86__) && !defined(_X86_) \
+ && !defined(__THW_INTEL__) && !defined(__I86__) && !defined(__INTEL__) \
+ && !defined(__amd64__) && !defined(__x86_64__) && !defined(__amd64) \
+ && !defined(__x86_64) && !defined(_M_X64)
+#error "Not x86"
+#endif
diff --git a/checks/config.jam b/checks/config.jam
new file mode 100644
index 0000000..c5adfe7
--- /dev/null
+++ b/checks/config.jam
@@ -0,0 +1,21 @@
+# Copyright John Maddock.
+# 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)
+
+import modules ;
+
+rule requires ( names + )
+{
+ local config-binding = [ modules.binding $(__name__) ] ;
+
+ local result ;
+ for name in $(names)
+ {
+ local msg = "Boost.Config Feature Check: " ;
+ msg += $(name) ;
+ result += [ check-target-builds $(config-binding:D)//$(name) $(msg:J=) : : <build>no ] ;
+ }
+ return $(result) ;
+}
+
diff --git a/checks/test_case.cpp b/checks/test_case.cpp
new file mode 100644
index 0000000..7d9cb10
--- /dev/null
+++ b/checks/test_case.cpp
@@ -0,0 +1,989 @@
+// This file was automatically generated on Wed Apr 18 20:03:40 2018
+// 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$
+//
+
+#include <boost/config.hpp>
+
+#ifdef TEST_BOOST_HAS_TWO_ARG_USE_FACET
+# ifndef BOOST_HAS_TWO_ARG_USE_FACET
+# error "Feature macro BOOST_HAS_TWO_ARG_USE_FACET is not defined."
+# endif
+#endif
+#ifdef TEST_BOOST_HAS_BETHREADS
+# ifndef BOOST_HAS_BETHREADS
+# error "Feature macro BOOST_HAS_BETHREADS is not defined."
+# endif
+#endif
+#ifdef TEST_BOOST_HAS_CLOCK_GETTIME
+# ifndef BOOST_HAS_CLOCK_GETTIME
+# error "Feature macro BOOST_HAS_CLOCK_GETTIME is not defined."
+# endif
+#endif
+#ifdef TEST_BOOST_HAS_PRAGMA_DETECT_MISMATCH
+# ifndef BOOST_HAS_PRAGMA_DETECT_MISMATCH
+# error "Feature macro BOOST_HAS_PRAGMA_DETECT_MISMATCH is not defined."
+# endif
+#endif
+#ifdef TEST_BOOST_HAS_DIRENT_H
+# ifndef BOOST_HAS_DIRENT_H
+# error "Feature macro BOOST_HAS_DIRENT_H is not defined."
+# endif
+#endif
+#ifdef TEST_BOOST_HAS_EXPM1
+# ifndef BOOST_HAS_EXPM1
+# error "Feature macro BOOST_HAS_EXPM1 is not defined."
+# endif
+#endif
+#ifdef TEST_BOOST_HAS_FLOAT128
+# ifndef BOOST_HAS_FLOAT128
+# error "Feature macro BOOST_HAS_FLOAT128 is not defined."
+# endif
+#endif
+#ifdef TEST_BOOST_HAS_FTIME
+# ifndef BOOST_HAS_FTIME
+# error "Feature macro BOOST_HAS_FTIME is not defined."
+# endif
+#endif
+#ifdef TEST_BOOST_HAS_GETSYSTEMTIMEASFILETIME
+# ifndef BOOST_HAS_GETSYSTEMTIMEASFILETIME
+# error "Feature macro BOOST_HAS_GETSYSTEMTIMEASFILETIME is not defined."
+# endif
+#endif
+#ifdef TEST_BOOST_HAS_GETTIMEOFDAY
+# ifndef BOOST_HAS_GETTIMEOFDAY
+# error "Feature macro BOOST_HAS_GETTIMEOFDAY is not defined."
+# endif
+#endif
+#ifdef TEST_BOOST_HAS_HASH
+# ifndef BOOST_HAS_HASH
+# error "Feature macro BOOST_HAS_HASH is not defined."
+# endif
+#endif
+#ifdef TEST_BOOST_HAS_INT128
+# ifndef BOOST_HAS_INT128
+# error "Feature macro BOOST_HAS_INT128 is not defined."
+# endif
+#endif
+#ifdef TEST_BOOST_HAS_LOG1P
+# ifndef BOOST_HAS_LOG1P
+# error "Feature macro BOOST_HAS_LOG1P is not defined."
+# endif
+#endif
+#ifdef TEST_BOOST_HAS_LONG_LONG
+# ifndef BOOST_HAS_LONG_LONG
+# error "Feature macro BOOST_HAS_LONG_LONG is not defined."
+# endif
+#endif
+#ifdef TEST_BOOST_HAS_MACRO_USE_FACET
+# ifndef BOOST_HAS_MACRO_USE_FACET
+# error "Feature macro BOOST_HAS_MACRO_USE_FACET is not defined."
+# endif
+#endif
+#ifdef TEST_BOOST_HAS_MS_INT64
+# ifndef BOOST_HAS_MS_INT64
+# error "Feature macro BOOST_HAS_MS_INT64 is not defined."
+# endif
+#endif
+#ifdef TEST_BOOST_HAS_NANOSLEEP
+# ifndef BOOST_HAS_NANOSLEEP
+# error "Feature macro BOOST_HAS_NANOSLEEP is not defined."
+# endif
+#endif
+#ifdef TEST_BOOST_HAS_NL_TYPES_H
+# ifndef BOOST_HAS_NL_TYPES_H
+# error "Feature macro BOOST_HAS_NL_TYPES_H is not defined."
+# endif
+#endif
+#ifdef TEST_BOOST_HAS_NRVO
+# ifndef BOOST_HAS_NRVO
+# error "Feature macro BOOST_HAS_NRVO is not defined."
+# endif
+#endif
+#ifdef TEST_BOOST_HAS_PARTIAL_STD_ALLOCATOR
+# ifndef BOOST_HAS_PARTIAL_STD_ALLOCATOR
+# error "Feature macro BOOST_HAS_PARTIAL_STD_ALLOCATOR is not defined."
+# endif
+#endif
+#ifdef TEST_BOOST_HAS_PTHREAD_DELAY_NP
+# ifndef BOOST_HAS_PTHREAD_DELAY_NP
+# error "Feature macro BOOST_HAS_PTHREAD_DELAY_NP is not defined."
+# endif
+#endif
+#ifdef TEST_BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
+# ifndef BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
+# error "Feature macro BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE is not defined."
+# endif
+#endif
+#ifdef TEST_BOOST_HAS_PTHREAD_YIELD
+# ifndef BOOST_HAS_PTHREAD_YIELD
+# error "Feature macro BOOST_HAS_PTHREAD_YIELD is not defined."
+# endif
+#endif
+#ifdef TEST_BOOST_HAS_PTHREADS
+# ifndef BOOST_HAS_PTHREADS
+# error "Feature macro BOOST_HAS_PTHREADS is not defined."
+# endif
+#endif
+#ifdef TEST_BOOST_HAS_RVALUE_REFS
+# ifndef BOOST_HAS_RVALUE_REFS
+# error "Feature macro BOOST_HAS_RVALUE_REFS is not defined."
+# endif
+#endif
+#ifdef TEST_BOOST_HAS_SCHED_YIELD
+# ifndef BOOST_HAS_SCHED_YIELD
+# error "Feature macro BOOST_HAS_SCHED_YIELD is not defined."
+# endif
+#endif
+#ifdef TEST_BOOST_HAS_SGI_TYPE_TRAITS
+# ifndef BOOST_HAS_SGI_TYPE_TRAITS
+# error "Feature macro BOOST_HAS_SGI_TYPE_TRAITS is not defined."
+# endif
+#endif
+#ifdef TEST_BOOST_HAS_SIGACTION
+# ifndef BOOST_HAS_SIGACTION
+# error "Feature macro BOOST_HAS_SIGACTION is not defined."
+# endif
+#endif
+#ifdef TEST_BOOST_HAS_SLIST
+# ifndef BOOST_HAS_SLIST
+# error "Feature macro BOOST_HAS_SLIST is not defined."
+# endif
+#endif
+#ifdef TEST_BOOST_HAS_STATIC_ASSERT
+# ifndef BOOST_HAS_STATIC_ASSERT
+# error "Feature macro BOOST_HAS_STATIC_ASSERT is not defined."
+# endif
+#endif
+#ifdef TEST_BOOST_HAS_STDINT_H
+# ifndef BOOST_HAS_STDINT_H
+# error "Feature macro BOOST_HAS_STDINT_H is not defined."
+# endif
+#endif
+#ifdef TEST_BOOST_HAS_STLP_USE_FACET
+# ifndef BOOST_HAS_STLP_USE_FACET
+# error "Feature macro BOOST_HAS_STLP_USE_FACET is not defined."
+# endif
+#endif
+#ifdef TEST_BOOST_HAS_UNISTD_H
+# ifndef BOOST_HAS_UNISTD_H
+# error "Feature macro BOOST_HAS_UNISTD_H is not defined."
+# endif
+#endif
+#ifdef TEST_BOOST_HAS_VARIADIC_TMPL
+# ifndef BOOST_HAS_VARIADIC_TMPL
+# error "Feature macro BOOST_HAS_VARIADIC_TMPL is not defined."
+# endif
+#endif
+#ifdef TEST_BOOST_MSVC6_MEMBER_TEMPLATES
+# ifndef BOOST_MSVC6_MEMBER_TEMPLATES
+# error "Feature macro BOOST_MSVC6_MEMBER_TEMPLATES is not defined."
+# endif
+#endif
+#ifdef TEST_BOOST_MSVC_STD_ITERATOR
+# ifndef BOOST_MSVC_STD_ITERATOR
+# error "Feature macro BOOST_MSVC_STD_ITERATOR is not defined."
+# endif
+#endif
+#ifdef TEST_BOOST_HAS_WINTHREADS
+# ifndef BOOST_HAS_WINTHREADS
+# error "Feature macro BOOST_HAS_WINTHREADS is not defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_ADL_BARRIER
+# ifdef BOOST_NO_ADL_BARRIER
+# error "Defect macro BOOST_NO_ADL_BARRIER is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
+# ifdef BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
+# error "Defect macro BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS
+# ifdef BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS
+# error "Defect macro BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX11_AUTO_DECLARATIONS
+# ifdef BOOST_NO_CXX11_AUTO_DECLARATIONS
+# error "Defect macro BOOST_NO_CXX11_AUTO_DECLARATIONS is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
+# ifdef BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
+# error "Defect macro BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_AUTO_PTR
+# ifdef BOOST_NO_AUTO_PTR
+# error "Defect macro BOOST_NO_AUTO_PTR is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_BCB_PARTIAL_SPECIALIZATION_BUG
+# ifdef BOOST_BCB_PARTIAL_SPECIALIZATION_BUG
+# error "Defect macro BOOST_BCB_PARTIAL_SPECIALIZATION_BUG is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX11_CHAR16_T
+# ifdef BOOST_NO_CXX11_CHAR16_T
+# error "Defect macro BOOST_NO_CXX11_CHAR16_T is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX11_CHAR32_T
+# ifdef BOOST_NO_CXX11_CHAR32_T
+# error "Defect macro BOOST_NO_CXX11_CHAR32_T is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_COMPLETE_VALUE_INITIALIZATION
+# ifdef BOOST_NO_COMPLETE_VALUE_INITIALIZATION
+# error "Defect macro BOOST_NO_COMPLETE_VALUE_INITIALIZATION is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX11_CONSTEXPR
+# ifdef BOOST_NO_CXX11_CONSTEXPR
+# error "Defect macro BOOST_NO_CXX11_CONSTEXPR is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CTYPE_FUNCTIONS
+# ifdef BOOST_NO_CTYPE_FUNCTIONS
+# error "Defect macro BOOST_NO_CTYPE_FUNCTIONS is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CV_SPECIALIZATIONS
+# ifdef BOOST_NO_CV_SPECIALIZATIONS
+# error "Defect macro BOOST_NO_CV_SPECIALIZATIONS is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CV_VOID_SPECIALIZATIONS
+# ifdef BOOST_NO_CV_VOID_SPECIALIZATIONS
+# error "Defect macro BOOST_NO_CV_VOID_SPECIALIZATIONS is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CWCHAR
+# ifdef BOOST_NO_CWCHAR
+# error "Defect macro BOOST_NO_CWCHAR is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CWCTYPE
+# ifdef BOOST_NO_CWCTYPE
+# error "Defect macro BOOST_NO_CWCTYPE is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX11_ADDRESSOF
+# ifdef BOOST_NO_CXX11_ADDRESSOF
+# error "Defect macro BOOST_NO_CXX11_ADDRESSOF is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX11_ALIGNAS
+# ifdef BOOST_NO_CXX11_ALIGNAS
+# error "Defect macro BOOST_NO_CXX11_ALIGNAS is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX11_ALLOCATOR
+# ifdef BOOST_NO_CXX11_ALLOCATOR
+# error "Defect macro BOOST_NO_CXX11_ALLOCATOR is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX11_ATOMIC_SMART_PTR
+# ifdef BOOST_NO_CXX11_ATOMIC_SMART_PTR
+# error "Defect macro BOOST_NO_CXX11_ATOMIC_SMART_PTR is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX11_DEFAULTED_MOVES
+# ifdef BOOST_NO_CXX11_DEFAULTED_MOVES
+# error "Defect macro BOOST_NO_CXX11_DEFAULTED_MOVES is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX11_FINAL
+# ifdef BOOST_NO_CXX11_FINAL
+# error "Defect macro BOOST_NO_CXX11_FINAL is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX11_HDR_ARRAY
+# ifdef BOOST_NO_CXX11_HDR_ARRAY
+# error "Defect macro BOOST_NO_CXX11_HDR_ARRAY is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX11_HDR_ATOMIC
+# ifdef BOOST_NO_CXX11_HDR_ATOMIC
+# error "Defect macro BOOST_NO_CXX11_HDR_ATOMIC is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX11_HDR_CHRONO
+# ifdef BOOST_NO_CXX11_HDR_CHRONO
+# error "Defect macro BOOST_NO_CXX11_HDR_CHRONO is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX11_HDR_CODECVT
+# ifdef BOOST_NO_CXX11_HDR_CODECVT
+# error "Defect macro BOOST_NO_CXX11_HDR_CODECVT is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
+# ifdef BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
+# error "Defect macro BOOST_NO_CXX11_HDR_CONDITION_VARIABLE is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX11_HDR_FORWARD_LIST
+# ifdef BOOST_NO_CXX11_HDR_FORWARD_LIST
+# error "Defect macro BOOST_NO_CXX11_HDR_FORWARD_LIST is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX11_HDR_FUTURE
+# ifdef BOOST_NO_CXX11_HDR_FUTURE
+# error "Defect macro BOOST_NO_CXX11_HDR_FUTURE is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+# ifdef BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+# error "Defect macro BOOST_NO_CXX11_HDR_INITIALIZER_LIST is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX11_HDR_MUTEX
+# ifdef BOOST_NO_CXX11_HDR_MUTEX
+# error "Defect macro BOOST_NO_CXX11_HDR_MUTEX is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX11_HDR_RANDOM
+# ifdef BOOST_NO_CXX11_HDR_RANDOM
+# error "Defect macro BOOST_NO_CXX11_HDR_RANDOM is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX11_HDR_RATIO
+# ifdef BOOST_NO_CXX11_HDR_RATIO
+# error "Defect macro BOOST_NO_CXX11_HDR_RATIO is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX11_HDR_REGEX
+# ifdef BOOST_NO_CXX11_HDR_REGEX
+# error "Defect macro BOOST_NO_CXX11_HDR_REGEX is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX11_HDR_SYSTEM_ERROR
+# ifdef BOOST_NO_CXX11_HDR_SYSTEM_ERROR
+# error "Defect macro BOOST_NO_CXX11_HDR_SYSTEM_ERROR is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX11_HDR_THREAD
+# ifdef BOOST_NO_CXX11_HDR_THREAD
+# error "Defect macro BOOST_NO_CXX11_HDR_THREAD is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX11_HDR_TUPLE
+# ifdef BOOST_NO_CXX11_HDR_TUPLE
+# error "Defect macro BOOST_NO_CXX11_HDR_TUPLE is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX11_HDR_TYPE_TRAITS
+# ifdef BOOST_NO_CXX11_HDR_TYPE_TRAITS
+# error "Defect macro BOOST_NO_CXX11_HDR_TYPE_TRAITS is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX11_HDR_TYPEINDEX
+# ifdef BOOST_NO_CXX11_HDR_TYPEINDEX
+# error "Defect macro BOOST_NO_CXX11_HDR_TYPEINDEX is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX11_HDR_UNORDERED_MAP
+# ifdef BOOST_NO_CXX11_HDR_UNORDERED_MAP
+# error "Defect macro BOOST_NO_CXX11_HDR_UNORDERED_MAP is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX11_HDR_UNORDERED_SET
+# ifdef BOOST_NO_CXX11_HDR_UNORDERED_SET
+# error "Defect macro BOOST_NO_CXX11_HDR_UNORDERED_SET is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX11_INLINE_NAMESPACES
+# ifdef BOOST_NO_CXX11_INLINE_NAMESPACES
+# error "Defect macro BOOST_NO_CXX11_INLINE_NAMESPACES is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX11_NON_PUBLIC_DEFAULTED_FUNCTIONS
+# ifdef BOOST_NO_CXX11_NON_PUBLIC_DEFAULTED_FUNCTIONS
+# error "Defect macro BOOST_NO_CXX11_NON_PUBLIC_DEFAULTED_FUNCTIONS is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX11_NUMERIC_LIMITS
+# ifdef BOOST_NO_CXX11_NUMERIC_LIMITS
+# error "Defect macro BOOST_NO_CXX11_NUMERIC_LIMITS is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX11_POINTER_TRAITS
+# ifdef BOOST_NO_CXX11_POINTER_TRAITS
+# error "Defect macro BOOST_NO_CXX11_POINTER_TRAITS is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX11_REF_QUALIFIERS
+# ifdef BOOST_NO_CXX11_REF_QUALIFIERS
+# error "Defect macro BOOST_NO_CXX11_REF_QUALIFIERS is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX11_SFINAE_EXPR
+# ifdef BOOST_NO_CXX11_SFINAE_EXPR
+# error "Defect macro BOOST_NO_CXX11_SFINAE_EXPR is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX11_SMART_PTR
+# ifdef BOOST_NO_CXX11_SMART_PTR
+# error "Defect macro BOOST_NO_CXX11_SMART_PTR is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX11_STD_ALIGN
+# ifdef BOOST_NO_CXX11_STD_ALIGN
+# error "Defect macro BOOST_NO_CXX11_STD_ALIGN is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX11_THREAD_LOCAL
+# ifdef BOOST_NO_CXX11_THREAD_LOCAL
+# error "Defect macro BOOST_NO_CXX11_THREAD_LOCAL is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX11_TRAILING_RESULT_TYPES
+# ifdef BOOST_NO_CXX11_TRAILING_RESULT_TYPES
+# error "Defect macro BOOST_NO_CXX11_TRAILING_RESULT_TYPES is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX11_USER_DEFINED_LITERALS
+# ifdef BOOST_NO_CXX11_USER_DEFINED_LITERALS
+# error "Defect macro BOOST_NO_CXX11_USER_DEFINED_LITERALS is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX14_BINARY_LITERALS
+# ifdef BOOST_NO_CXX14_BINARY_LITERALS
+# error "Defect macro BOOST_NO_CXX14_BINARY_LITERALS is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX14_CONSTEXPR
+# ifdef BOOST_NO_CXX14_CONSTEXPR
+# error "Defect macro BOOST_NO_CXX14_CONSTEXPR is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX14_DECLTYPE_AUTO
+# ifdef BOOST_NO_CXX14_DECLTYPE_AUTO
+# error "Defect macro BOOST_NO_CXX14_DECLTYPE_AUTO is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX14_DIGIT_SEPARATORS
+# ifdef BOOST_NO_CXX14_DIGIT_SEPARATORS
+# error "Defect macro BOOST_NO_CXX14_DIGIT_SEPARATORS is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX14_GENERIC_LAMBDAS
+# ifdef BOOST_NO_CXX14_GENERIC_LAMBDAS
+# error "Defect macro BOOST_NO_CXX14_GENERIC_LAMBDAS is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX14_HDR_SHARED_MUTEX
+# ifdef BOOST_NO_CXX14_HDR_SHARED_MUTEX
+# error "Defect macro BOOST_NO_CXX14_HDR_SHARED_MUTEX is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES
+# ifdef BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES
+# error "Defect macro BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX14_AGGREGATE_NSDMI
+# ifdef BOOST_NO_CXX14_AGGREGATE_NSDMI
+# error "Defect macro BOOST_NO_CXX14_AGGREGATE_NSDMI is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION
+# ifdef BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION
+# error "Defect macro BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX14_STD_EXCHANGE
+# ifdef BOOST_NO_CXX14_STD_EXCHANGE
+# error "Defect macro BOOST_NO_CXX14_STD_EXCHANGE is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX14_VARIABLE_TEMPLATES
+# ifdef BOOST_NO_CXX14_VARIABLE_TEMPLATES
+# error "Defect macro BOOST_NO_CXX14_VARIABLE_TEMPLATES is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX17_FOLD_EXPRESSIONS
+# ifdef BOOST_NO_CXX17_FOLD_EXPRESSIONS
+# error "Defect macro BOOST_NO_CXX17_FOLD_EXPRESSIONS is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX17_IF_CONSTEXPR
+# ifdef BOOST_NO_CXX17_IF_CONSTEXPR
+# error "Defect macro BOOST_NO_CXX17_IF_CONSTEXPR is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX17_INLINE_VARIABLES
+# ifdef BOOST_NO_CXX17_INLINE_VARIABLES
+# error "Defect macro BOOST_NO_CXX17_INLINE_VARIABLES is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX17_ITERATOR_TRAITS
+# ifdef BOOST_NO_CXX17_ITERATOR_TRAITS
+# error "Defect macro BOOST_NO_CXX17_ITERATOR_TRAITS is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX17_STD_APPLY
+# ifdef BOOST_NO_CXX17_STD_APPLY
+# error "Defect macro BOOST_NO_CXX17_STD_APPLY is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX17_STD_INVOKE
+# ifdef BOOST_NO_CXX17_STD_INVOKE
+# error "Defect macro BOOST_NO_CXX17_STD_INVOKE is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX17_STRUCTURED_BINDINGS
+# ifdef BOOST_NO_CXX17_STRUCTURED_BINDINGS
+# error "Defect macro BOOST_NO_CXX17_STRUCTURED_BINDINGS is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX98_BINDERS
+# ifdef BOOST_NO_CXX98_BINDERS
+# error "Defect macro BOOST_NO_CXX98_BINDERS is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX98_FUNCTION_BASE
+# ifdef BOOST_NO_CXX98_FUNCTION_BASE
+# error "Defect macro BOOST_NO_CXX98_FUNCTION_BASE is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX98_RANDOM_SHUFFLE
+# ifdef BOOST_NO_CXX98_RANDOM_SHUFFLE
+# error "Defect macro BOOST_NO_CXX98_RANDOM_SHUFFLE is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX11_HDR_FUNCTIONAL
+# ifdef BOOST_NO_CXX11_HDR_FUNCTIONAL
+# error "Defect macro BOOST_NO_CXX11_HDR_FUNCTIONAL is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX11_DECLTYPE
+# ifdef BOOST_NO_CXX11_DECLTYPE
+# error "Defect macro BOOST_NO_CXX11_DECLTYPE is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX11_DECLTYPE_N3276
+# ifdef BOOST_NO_CXX11_DECLTYPE_N3276
+# error "Defect macro BOOST_NO_CXX11_DECLTYPE_N3276 is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_DEDUCED_TYPENAME
+# ifdef BOOST_DEDUCED_TYPENAME
+# error "Defect macro BOOST_DEDUCED_TYPENAME is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
+# ifdef BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
+# error "Defect macro BOOST_NO_CXX11_DEFAULTED_FUNCTIONS is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX11_DELETED_FUNCTIONS
+# ifdef BOOST_NO_CXX11_DELETED_FUNCTIONS
+# error "Defect macro BOOST_NO_CXX11_DELETED_FUNCTIONS is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_DEPENDENT_NESTED_DERIVATIONS
+# ifdef BOOST_NO_DEPENDENT_NESTED_DERIVATIONS
+# error "Defect macro BOOST_NO_DEPENDENT_NESTED_DERIVATIONS is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS
+# ifdef BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS
+# error "Defect macro BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_EXCEPTION_STD_NAMESPACE
+# ifdef BOOST_NO_EXCEPTION_STD_NAMESPACE
+# error "Defect macro BOOST_NO_EXCEPTION_STD_NAMESPACE is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_EXCEPTIONS
+# ifdef BOOST_NO_EXCEPTIONS
+# error "Defect macro BOOST_NO_EXCEPTIONS is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS
+# ifdef BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS
+# error "Defect macro BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
+# ifdef BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
+# error "Defect macro BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX11_EXTERN_TEMPLATE
+# ifdef BOOST_NO_CXX11_EXTERN_TEMPLATE
+# error "Defect macro BOOST_NO_CXX11_EXTERN_TEMPLATE is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_FENV_H
+# ifdef BOOST_NO_FENV_H
+# error "Defect macro BOOST_NO_FENV_H is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX11_FIXED_LENGTH_VARIADIC_TEMPLATE_EXPANSION_PACKS
+# ifdef BOOST_NO_CXX11_FIXED_LENGTH_VARIADIC_TEMPLATE_EXPANSION_PACKS
+# error "Defect macro BOOST_NO_CXX11_FIXED_LENGTH_VARIADIC_TEMPLATE_EXPANSION_PACKS is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_FUNCTION_TEMPLATE_ORDERING
+# ifdef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
+# error "Defect macro BOOST_NO_FUNCTION_TEMPLATE_ORDERING is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
+# ifdef BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
+# error "Defect macro BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS
+# ifdef BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS
+# error "Defect macro BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_MS_INT64_NUMERIC_LIMITS
+# ifdef BOOST_NO_MS_INT64_NUMERIC_LIMITS
+# error "Defect macro BOOST_NO_MS_INT64_NUMERIC_LIMITS is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_INCLASS_MEMBER_INITIALIZATION
+# ifdef BOOST_NO_INCLASS_MEMBER_INITIALIZATION
+# error "Defect macro BOOST_NO_INCLASS_MEMBER_INITIALIZATION is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_INTEGRAL_INT64_T
+# ifdef BOOST_NO_INTEGRAL_INT64_T
+# error "Defect macro BOOST_NO_INTEGRAL_INT64_T is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_IOSFWD
+# ifdef BOOST_NO_IOSFWD
+# error "Defect macro BOOST_NO_IOSFWD is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_IOSTREAM
+# ifdef BOOST_NO_IOSTREAM
+# error "Defect macro BOOST_NO_IOSTREAM is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_IS_ABSTRACT
+# ifdef BOOST_NO_IS_ABSTRACT
+# error "Defect macro BOOST_NO_IS_ABSTRACT is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
+# ifdef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
+# error "Defect macro BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX11_LAMBDAS
+# ifdef BOOST_NO_CXX11_LAMBDAS
+# error "Defect macro BOOST_NO_CXX11_LAMBDAS is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_LIMITS
+# ifdef BOOST_NO_LIMITS
+# error "Defect macro BOOST_NO_LIMITS is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
+# ifdef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
+# error "Defect macro BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_LONG_LONG_NUMERIC_LIMITS
+# ifdef BOOST_NO_LONG_LONG_NUMERIC_LIMITS
+# error "Defect macro BOOST_NO_LONG_LONG_NUMERIC_LIMITS is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_LONG_LONG
+# ifdef BOOST_NO_LONG_LONG
+# error "Defect macro BOOST_NO_LONG_LONG is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS
+# ifdef BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS
+# error "Defect macro BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_MEMBER_TEMPLATE_KEYWORD
+# ifdef BOOST_NO_MEMBER_TEMPLATE_KEYWORD
+# error "Defect macro BOOST_NO_MEMBER_TEMPLATE_KEYWORD is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS
+# ifdef BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS
+# error "Defect macro BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_MEMBER_TEMPLATE_FRIENDS
+# ifdef BOOST_NO_MEMBER_TEMPLATE_FRIENDS
+# error "Defect macro BOOST_NO_MEMBER_TEMPLATE_FRIENDS is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_MEMBER_TEMPLATES
+# ifdef BOOST_NO_MEMBER_TEMPLATES
+# error "Defect macro BOOST_NO_MEMBER_TEMPLATES is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_NESTED_FRIENDSHIP
+# ifdef BOOST_NO_NESTED_FRIENDSHIP
+# error "Defect macro BOOST_NO_NESTED_FRIENDSHIP is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX11_NOEXCEPT
+# ifdef BOOST_NO_CXX11_NOEXCEPT
+# error "Defect macro BOOST_NO_CXX11_NOEXCEPT is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX11_NULLPTR
+# ifdef BOOST_NO_CXX11_NULLPTR
+# error "Defect macro BOOST_NO_CXX11_NULLPTR is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_OPERATORS_IN_NAMESPACE
+# ifdef BOOST_NO_OPERATORS_IN_NAMESPACE
+# error "Defect macro BOOST_NO_OPERATORS_IN_NAMESPACE is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS
+# ifdef BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS
+# error "Defect macro BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+# ifdef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+# error "Defect macro BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_PRIVATE_IN_AGGREGATE
+# ifdef BOOST_NO_PRIVATE_IN_AGGREGATE
+# error "Defect macro BOOST_NO_PRIVATE_IN_AGGREGATE is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_POINTER_TO_MEMBER_CONST
+# ifdef BOOST_NO_POINTER_TO_MEMBER_CONST
+# error "Defect macro BOOST_NO_POINTER_TO_MEMBER_CONST is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX11_RANGE_BASED_FOR
+# ifdef BOOST_NO_CXX11_RANGE_BASED_FOR
+# error "Defect macro BOOST_NO_CXX11_RANGE_BASED_FOR is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX11_RAW_LITERALS
+# ifdef BOOST_NO_CXX11_RAW_LITERALS
+# error "Defect macro BOOST_NO_CXX11_RAW_LITERALS is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_RESTRICT_REFERENCES
+# ifdef BOOST_NO_RESTRICT_REFERENCES
+# error "Defect macro BOOST_NO_RESTRICT_REFERENCES is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_UNREACHABLE_RETURN_DETECTION
+# ifdef BOOST_NO_UNREACHABLE_RETURN_DETECTION
+# error "Defect macro BOOST_NO_UNREACHABLE_RETURN_DETECTION is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_RTTI
+# ifdef BOOST_NO_RTTI
+# error "Defect macro BOOST_NO_RTTI is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX11_RVALUE_REFERENCES
+# ifdef BOOST_NO_CXX11_RVALUE_REFERENCES
+# error "Defect macro BOOST_NO_CXX11_RVALUE_REFERENCES is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX11_SCOPED_ENUMS
+# ifdef BOOST_NO_CXX11_SCOPED_ENUMS
+# error "Defect macro BOOST_NO_CXX11_SCOPED_ENUMS is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_SFINAE
+# ifdef BOOST_NO_SFINAE
+# error "Defect macro BOOST_NO_SFINAE is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_SFINAE_EXPR
+# ifdef BOOST_NO_SFINAE_EXPR
+# error "Defect macro BOOST_NO_SFINAE_EXPR is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_STRINGSTREAM
+# ifdef BOOST_NO_STRINGSTREAM
+# error "Defect macro BOOST_NO_STRINGSTREAM is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX11_STATIC_ASSERT
+# ifdef BOOST_NO_CXX11_STATIC_ASSERT
+# error "Defect macro BOOST_NO_CXX11_STATIC_ASSERT is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_STD_ALLOCATOR
+# ifdef BOOST_NO_STD_ALLOCATOR
+# error "Defect macro BOOST_NO_STD_ALLOCATOR is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_STD_DISTANCE
+# ifdef BOOST_NO_STD_DISTANCE
+# error "Defect macro BOOST_NO_STD_DISTANCE is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_STD_ITERATOR_TRAITS
+# ifdef BOOST_NO_STD_ITERATOR_TRAITS
+# error "Defect macro BOOST_NO_STD_ITERATOR_TRAITS is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_STD_ITERATOR
+# ifdef BOOST_NO_STD_ITERATOR
+# error "Defect macro BOOST_NO_STD_ITERATOR is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_STD_LOCALE
+# ifdef BOOST_NO_STD_LOCALE
+# error "Defect macro BOOST_NO_STD_LOCALE is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_STD_MESSAGES
+# ifdef BOOST_NO_STD_MESSAGES
+# error "Defect macro BOOST_NO_STD_MESSAGES is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_STD_MIN_MAX
+# ifdef BOOST_NO_STD_MIN_MAX
+# error "Defect macro BOOST_NO_STD_MIN_MAX is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN
+# ifdef BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN
+# error "Defect macro BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_STD_TYPEINFO
+# ifdef BOOST_NO_STD_TYPEINFO
+# error "Defect macro BOOST_NO_STD_TYPEINFO is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_STD_USE_FACET
+# ifdef BOOST_NO_STD_USE_FACET
+# error "Defect macro BOOST_NO_STD_USE_FACET is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_STD_WSTREAMBUF
+# ifdef BOOST_NO_STD_WSTREAMBUF
+# error "Defect macro BOOST_NO_STD_WSTREAMBUF is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_STD_WSTRING
+# ifdef BOOST_NO_STD_WSTRING
+# error "Defect macro BOOST_NO_STD_WSTRING is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_STDC_NAMESPACE
+# ifdef BOOST_NO_STDC_NAMESPACE
+# error "Defect macro BOOST_NO_STDC_NAMESPACE is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_SWPRINTF
+# ifdef BOOST_NO_SWPRINTF
+# error "Defect macro BOOST_NO_SWPRINTF is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
+# ifdef BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
+# error "Defect macro BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX11_TEMPLATE_ALIASES
+# ifdef BOOST_NO_CXX11_TEMPLATE_ALIASES
+# error "Defect macro BOOST_NO_CXX11_TEMPLATE_ALIASES is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_TEMPLATED_IOSTREAMS
+# ifdef BOOST_NO_TEMPLATED_IOSTREAMS
+# error "Defect macro BOOST_NO_TEMPLATED_IOSTREAMS is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_TEMPLATE_TEMPLATES
+# ifdef BOOST_NO_TEMPLATE_TEMPLATES
+# error "Defect macro BOOST_NO_TEMPLATE_TEMPLATES is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_TWO_PHASE_NAME_LOOKUP
+# ifdef BOOST_NO_TWO_PHASE_NAME_LOOKUP
+# error "Defect macro BOOST_NO_TWO_PHASE_NAME_LOOKUP is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_TYPEID
+# ifdef BOOST_NO_TYPEID
+# error "Defect macro BOOST_NO_TYPEID is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_TYPENAME_WITH_CTOR
+# ifdef BOOST_NO_TYPENAME_WITH_CTOR
+# error "Defect macro BOOST_NO_TYPENAME_WITH_CTOR is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX11_UNICODE_LITERALS
+# ifdef BOOST_NO_CXX11_UNICODE_LITERALS
+# error "Defect macro BOOST_NO_CXX11_UNICODE_LITERALS is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
+# ifdef BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
+# error "Defect macro BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
+# ifdef BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
+# error "Defect macro BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE
+# ifdef BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE
+# error "Defect macro BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_USING_TEMPLATE
+# ifdef BOOST_NO_USING_TEMPLATE
+# error "Defect macro BOOST_NO_USING_TEMPLATE is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX11_VARIADIC_MACROS
+# ifdef BOOST_NO_CXX11_VARIADIC_MACROS
+# error "Defect macro BOOST_NO_CXX11_VARIADIC_MACROS is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_CXX11_VARIADIC_TEMPLATES
+# ifdef BOOST_NO_CXX11_VARIADIC_TEMPLATES
+# error "Defect macro BOOST_NO_CXX11_VARIADIC_TEMPLATES is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_VOID_RETURNS
+# ifdef BOOST_NO_VOID_RETURNS
+# error "Defect macro BOOST_NO_VOID_RETURNS is defined."
+# endif
+#endif
+#ifdef TEST_BOOST_NO_INTRINSIC_WCHAR_T
+# ifdef BOOST_NO_INTRINSIC_WCHAR_T
+# error "Defect macro BOOST_NO_INTRINSIC_WCHAR_T is defined."
+# endif
+#endif
+
+int main( int, char *[] )
+{
+ return 0;
+}
+
diff --git a/config.htm b/config.htm
new file mode 100644
index 0000000..df7430b
--- /dev/null
+++ b/config.htm
@@ -0,0 +1,15 @@
+<html>
+ <head>
+ <meta http-equiv="refresh" content="0; URL=doc/html/index.html">
+ </head>
+ <body>
+ <P>
+ Automatic redirection failed, please go to <a href="doc/html/index.html">doc/html/index.html</a>.
+ </P>
+ <P>Copyright John Maddock 2001</P>
+ <P>Distributed under the Boost Software License, Version 1.0. (See accompanying file <A href="../../LICENSE_1_0.txt">
+ LICENSE_1_0.txt</A> or copy at <A href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</A>).</P>
+ </body>
+</html>
+
+
diff --git a/configure b/configure
new file mode 100644
index 0000000..85e2307
--- /dev/null
+++ b/configure
@@ -0,0 +1,3894 @@
+#! /bin/sh
+# Guess values for system-dependent variables and create Makefiles.
+# Generated by GNU Autoconf 2.61.
+#
+# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+# This configure script is free software; the Free Software Foundation
+# gives unlimited permission to copy, distribute and modify it.
+## --------------------- ##
+## M4sh Initialization. ##
+## --------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in
+ *posix*) set -o posix ;;
+esac
+
+fi
+
+
+
+
+# PATH needs CR
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ echo "#! /bin/sh" >conf$$.sh
+ echo "exit 0" >>conf$$.sh
+ chmod +x conf$$.sh
+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+ PATH_SEPARATOR=';'
+ else
+ PATH_SEPARATOR=:
+ fi
+ rm -f conf$$.sh
+fi
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+ as_unset=unset
+else
+ as_unset=false
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order. Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+as_nl='
+'
+IFS=" "" $as_nl"
+
+# Find who we are. Look in the path if we contain no directory separator.
+case $0 in
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+IFS=$as_save_IFS
+
+ ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+ as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+ echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ { (exit 1); exit 1; }
+fi
+
+# Work around bugs in pre-3.0 UWIN ksh.
+for as_var in ENV MAIL MAILPATH
+do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+for as_var in \
+ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+ LC_TELEPHONE LC_TIME
+do
+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+ eval $as_var=C; export $as_var
+ else
+ ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+ fi
+done
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+
+# CDPATH.
+$as_unset CDPATH
+
+
+if test "x$CONFIG_SHELL" = x; then
+ if (eval ":") 2>/dev/null; then
+ as_have_required=yes
+else
+ as_have_required=no
+fi
+
+ if test $as_have_required = yes && (eval ":
+(as_func_return () {
+ (exit \$1)
+}
+as_func_success () {
+ as_func_return 0
+}
+as_func_failure () {
+ as_func_return 1
+}
+as_func_ret_success () {
+ return 0
+}
+as_func_ret_failure () {
+ return 1
+}
+
+exitcode=0
+if as_func_success; then
+ :
+else
+ exitcode=1
+ echo as_func_success failed.
+fi
+
+if as_func_failure; then
+ exitcode=1
+ echo as_func_failure succeeded.
+fi
+
+if as_func_ret_success; then
+ :
+else
+ exitcode=1
+ echo as_func_ret_success failed.
+fi
+
+if as_func_ret_failure; then
+ exitcode=1
+ echo as_func_ret_failure succeeded.
+fi
+
+if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
+ :
+else
+ exitcode=1
+ echo positional parameters were not saved.
+fi
+
+test \$exitcode = 0) || { (exit 1); exit 1; }
+
+(
+ as_lineno_1=\$LINENO
+ as_lineno_2=\$LINENO
+ test \"x\$as_lineno_1\" != \"x\$as_lineno_2\" &&
+ test \"x\`expr \$as_lineno_1 + 1\`\" = \"x\$as_lineno_2\") || { (exit 1); exit 1; }
+") 2> /dev/null; then
+ :
+else
+ as_candidate_shells=
+ as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ case $as_dir in
+ /*)
+ for as_base in sh bash ksh sh5; do
+ as_candidate_shells="$as_candidate_shells $as_dir/$as_base"
+ done;;
+ esac
+done
+IFS=$as_save_IFS
+
+
+ for as_shell in $as_candidate_shells $SHELL; do
+ # Try only shells that exist, to save several forks.
+ if { test -f "$as_shell" || test -f "$as_shell.exe"; } &&
+ { ("$as_shell") 2> /dev/null <<\_ASEOF
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in
+ *posix*) set -o posix ;;
+esac
+
+fi
+
+
+:
+_ASEOF
+}; then
+ CONFIG_SHELL=$as_shell
+ as_have_required=yes
+ if { "$as_shell" 2> /dev/null <<\_ASEOF
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in
+ *posix*) set -o posix ;;
+esac
+
+fi
+
+
+:
+(as_func_return () {
+ (exit $1)
+}
+as_func_success () {
+ as_func_return 0
+}
+as_func_failure () {
+ as_func_return 1
+}
+as_func_ret_success () {
+ return 0
+}
+as_func_ret_failure () {
+ return 1
+}
+
+exitcode=0
+if as_func_success; then
+ :
+else
+ exitcode=1
+ echo as_func_success failed.
+fi
+
+if as_func_failure; then
+ exitcode=1
+ echo as_func_failure succeeded.
+fi
+
+if as_func_ret_success; then
+ :
+else
+ exitcode=1
+ echo as_func_ret_success failed.
+fi
+
+if as_func_ret_failure; then
+ exitcode=1
+ echo as_func_ret_failure succeeded.
+fi
+
+if ( set x; as_func_ret_success y && test x = "$1" ); then
+ :
+else
+ exitcode=1
+ echo positional parameters were not saved.
+fi
+
+test $exitcode = 0) || { (exit 1); exit 1; }
+
+(
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2") || { (exit 1); exit 1; }
+
+_ASEOF
+}; then
+ break
+fi
+
+fi
+
+ done
+
+ if test "x$CONFIG_SHELL" != x; then
+ for as_var in BASH_ENV ENV
+ do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+ done
+ export CONFIG_SHELL
+ exec "$CONFIG_SHELL" "$as_myself" ${1+"$@"}
+fi
+
+
+ if test $as_have_required = no; then
+ echo This script requires a shell more modern than all the
+ echo shells that I found on your system. Please install a
+ echo modern shell, or manually run the script under such a
+ echo shell if you do have one.
+ { (exit 1); exit 1; }
+fi
+
+
+fi
+
+fi
+
+
+
+(eval "as_func_return () {
+ (exit \$1)
+}
+as_func_success () {
+ as_func_return 0
+}
+as_func_failure () {
+ as_func_return 1
+}
+as_func_ret_success () {
+ return 0
+}
+as_func_ret_failure () {
+ return 1
+}
+
+exitcode=0
+if as_func_success; then
+ :
+else
+ exitcode=1
+ echo as_func_success failed.
+fi
+
+if as_func_failure; then
+ exitcode=1
+ echo as_func_failure succeeded.
+fi
+
+if as_func_ret_success; then
+ :
+else
+ exitcode=1
+ echo as_func_ret_success failed.
+fi
+
+if as_func_ret_failure; then
+ exitcode=1
+ echo as_func_ret_failure succeeded.
+fi
+
+if ( set x; as_func_ret_success y && test x = \"\$1\" ); then
+ :
+else
+ exitcode=1
+ echo positional parameters were not saved.
+fi
+
+test \$exitcode = 0") || {
+ echo No shell found that supports shell functions.
+ echo Please tell autoconf@gnu.org about your system,
+ echo including any error possibly output before this
+ echo message
+}
+
+
+
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
+
+ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+ # uniformly replaced by the line number. The first 'sed' inserts a
+ # line-number line after each line using $LINENO; the second 'sed'
+ # does the real work. The second script uses 'N' to pair each
+ # line-number line with the line containing $LINENO, and appends
+ # trailing '-' during substitution so that $LINENO is not a special
+ # case at line end.
+ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+ # scripts with optimization help from Paolo Bonzini. Blame Lee
+ # E. McMahon (1931-1989) for sed's syntax. :-)
+ sed -n '
+ p
+ /[$]LINENO/=
+ ' <$as_myself |
+ sed '
+ s/[$]LINENO.*/&-/
+ t lineno
+ b
+ :lineno
+ N
+ :loop
+ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+ t loop
+ s/-\n.*//
+ ' >$as_me.lineno &&
+ chmod +x "$as_me.lineno" ||
+ { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+ { (exit 1); exit 1; }; }
+
+ # Don't try to exec as it changes $[0], causing all sort of problems
+ # (the dirname of $[0] is not the place where we might find the
+ # original and so on. Autoconf is especially sensitive to this).
+ . "./$as_me.lineno"
+ # Exit status is that of the last command.
+ exit
+}
+
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+ as_dirname=dirname
+else
+ as_dirname=false
+fi
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in
+-n*)
+ case `echo 'x\c'` in
+ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
+ *) ECHO_C='\c';;
+ esac;;
+*)
+ ECHO_N='-n';;
+esac
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+ rm -f conf$$.dir/conf$$.file
+else
+ rm -f conf$$.dir
+ mkdir conf$$.dir
+fi
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s='ln -s'
+ # ... but there are two gotchas:
+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+ # In both cases, we have to default to `cp -p'.
+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -p'
+elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+else
+ as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p=:
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+ as_test_x='test -x'
+else
+ if ls -dL / >/dev/null 2>&1; then
+ as_ls_L_option=L
+ else
+ as_ls_L_option=
+ fi
+ as_test_x='
+ eval sh -c '\''
+ if test -d "$1"; then
+ test -d "$1/.";
+ else
+ case $1 in
+ -*)set "./$1";;
+ esac;
+ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
+ ???[sx]*):;;*)false;;esac;fi
+ '\'' sh
+ '
+fi
+as_executable_p=$as_test_x
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+
+exec 7<&0 </dev/null 6>&1
+
+# Name of the host.
+# hostname on some systems (SVR3.2, Linux) returns a bogus exit status,
+# so uname gets run too.
+ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q`
+
+#
+# Initializations.
+#
+ac_default_prefix=/usr/local
+ac_clean_files=
+ac_config_libobj_dir=.
+LIBOBJS=
+cross_compiling=no
+subdirs=
+MFLAGS=
+MAKEFLAGS=
+SHELL=${CONFIG_SHELL-/bin/sh}
+
+# Identity of this package.
+PACKAGE_NAME=
+PACKAGE_TARNAME=
+PACKAGE_VERSION=
+PACKAGE_STRING=
+PACKAGE_BUGREPORT=
+
+ac_unique_file="./tools/configure.in"
+ac_subst_vars='SHELL
+PATH_SEPARATOR
+PACKAGE_NAME
+PACKAGE_TARNAME
+PACKAGE_VERSION
+PACKAGE_STRING
+PACKAGE_BUGREPORT
+exec_prefix
+prefix
+program_transform_name
+bindir
+sbindir
+libexecdir
+datarootdir
+datadir
+sysconfdir
+sharedstatedir
+localstatedir
+includedir
+oldincludedir
+docdir
+infodir
+htmldir
+dvidir
+pdfdir
+psdir
+libdir
+localedir
+mandir
+DEFS
+ECHO_C
+ECHO_N
+ECHO_T
+LIBS
+build_alias
+host_alias
+target_alias
+CXX
+CXXFLAGS
+LDFLAGS
+CPPFLAGS
+ac_ct_CXX
+EXEEXT
+OBJEXT
+LIBOBJS
+LTLIBOBJS'
+ac_subst_files=''
+ ac_precious_vars='build_alias
+host_alias
+target_alias
+CXX
+CXXFLAGS
+LDFLAGS
+LIBS
+CPPFLAGS
+CCC'
+
+
+# Initialize some variables set by options.
+ac_init_help=
+ac_init_version=false
+# The variables have the same names as the options, with
+# dashes changed to underlines.
+cache_file=/dev/null
+exec_prefix=NONE
+no_create=
+no_recursion=
+prefix=NONE
+program_prefix=NONE
+program_suffix=NONE
+program_transform_name=s,x,x,
+silent=
+site=
+srcdir=
+verbose=
+x_includes=NONE
+x_libraries=NONE
+
+# Installation directory options.
+# These are left unexpanded so users can "make install exec_prefix=/foo"
+# and all the variables that are supposed to be based on exec_prefix
+# by default will actually change.
+# Use braces instead of parens because sh, perl, etc. also accept them.
+# (The list follows the same order as the GNU Coding Standards.)
+bindir='${exec_prefix}/bin'
+sbindir='${exec_prefix}/sbin'
+libexecdir='${exec_prefix}/libexec'
+datarootdir='${prefix}/share'
+datadir='${datarootdir}'
+sysconfdir='${prefix}/etc'
+sharedstatedir='${prefix}/com'
+localstatedir='${prefix}/var'
+includedir='${prefix}/include'
+oldincludedir='/usr/include'
+docdir='${datarootdir}/doc/${PACKAGE}'
+infodir='${datarootdir}/info'
+htmldir='${docdir}'
+dvidir='${docdir}'
+pdfdir='${docdir}'
+psdir='${docdir}'
+libdir='${exec_prefix}/lib'
+localedir='${datarootdir}/locale'
+mandir='${datarootdir}/man'
+
+ac_prev=
+ac_dashdash=
+for ac_option
+do
+ # If the previous option needs an argument, assign it.
+ if test -n "$ac_prev"; then
+ eval $ac_prev=\$ac_option
+ ac_prev=
+ continue
+ fi
+
+ case $ac_option in
+ *=*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;;
+ *) ac_optarg=yes ;;
+ esac
+
+ # Accept the important Cygnus configure options, so we can diagnose typos.
+
+ case $ac_dashdash$ac_option in
+ --)
+ ac_dashdash=yes ;;
+
+ -bindir | --bindir | --bindi | --bind | --bin | --bi)
+ ac_prev=bindir ;;
+ -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*)
+ bindir=$ac_optarg ;;
+
+ -build | --build | --buil | --bui | --bu)
+ ac_prev=build_alias ;;
+ -build=* | --build=* | --buil=* | --bui=* | --bu=*)
+ build_alias=$ac_optarg ;;
+
+ -cache-file | --cache-file | --cache-fil | --cache-fi \
+ | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c)
+ ac_prev=cache_file ;;
+ -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \
+ | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*)
+ cache_file=$ac_optarg ;;
+
+ --config-cache | -C)
+ cache_file=config.cache ;;
+
+ -datadir | --datadir | --datadi | --datad)
+ ac_prev=datadir ;;
+ -datadir=* | --datadir=* | --datadi=* | --datad=*)
+ datadir=$ac_optarg ;;
+
+ -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \
+ | --dataroo | --dataro | --datar)
+ ac_prev=datarootdir ;;
+ -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \
+ | --dataroot=* | --dataroo=* | --dataro=* | --datar=*)
+ datarootdir=$ac_optarg ;;
+
+ -disable-* | --disable-*)
+ ac_feature=`expr "x$ac_option" : 'x-*disable-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+ { (exit 1); exit 1; }; }
+ ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'`
+ eval enable_$ac_feature=no ;;
+
+ -docdir | --docdir | --docdi | --doc | --do)
+ ac_prev=docdir ;;
+ -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*)
+ docdir=$ac_optarg ;;
+
+ -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv)
+ ac_prev=dvidir ;;
+ -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*)
+ dvidir=$ac_optarg ;;
+
+ -enable-* | --enable-*)
+ ac_feature=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_feature" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid feature name: $ac_feature" >&2
+ { (exit 1); exit 1; }; }
+ ac_feature=`echo $ac_feature | sed 's/[-.]/_/g'`
+ eval enable_$ac_feature=\$ac_optarg ;;
+
+ -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \
+ | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \
+ | --exec | --exe | --ex)
+ ac_prev=exec_prefix ;;
+ -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \
+ | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \
+ | --exec=* | --exe=* | --ex=*)
+ exec_prefix=$ac_optarg ;;
+
+ -gas | --gas | --ga | --g)
+ # Obsolete; use --with-gas.
+ with_gas=yes ;;
+
+ -help | --help | --hel | --he | -h)
+ ac_init_help=long ;;
+ -help=r* | --help=r* | --hel=r* | --he=r* | -hr*)
+ ac_init_help=recursive ;;
+ -help=s* | --help=s* | --hel=s* | --he=s* | -hs*)
+ ac_init_help=short ;;
+
+ -host | --host | --hos | --ho)
+ ac_prev=host_alias ;;
+ -host=* | --host=* | --hos=* | --ho=*)
+ host_alias=$ac_optarg ;;
+
+ -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht)
+ ac_prev=htmldir ;;
+ -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \
+ | --ht=*)
+ htmldir=$ac_optarg ;;
+
+ -includedir | --includedir | --includedi | --included | --include \
+ | --includ | --inclu | --incl | --inc)
+ ac_prev=includedir ;;
+ -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \
+ | --includ=* | --inclu=* | --incl=* | --inc=*)
+ includedir=$ac_optarg ;;
+
+ -infodir | --infodir | --infodi | --infod | --info | --inf)
+ ac_prev=infodir ;;
+ -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*)
+ infodir=$ac_optarg ;;
+
+ -libdir | --libdir | --libdi | --libd)
+ ac_prev=libdir ;;
+ -libdir=* | --libdir=* | --libdi=* | --libd=*)
+ libdir=$ac_optarg ;;
+
+ -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \
+ | --libexe | --libex | --libe)
+ ac_prev=libexecdir ;;
+ -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \
+ | --libexe=* | --libex=* | --libe=*)
+ libexecdir=$ac_optarg ;;
+
+ -localedir | --localedir | --localedi | --localed | --locale)
+ ac_prev=localedir ;;
+ -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*)
+ localedir=$ac_optarg ;;
+
+ -localstatedir | --localstatedir | --localstatedi | --localstated \
+ | --localstate | --localstat | --localsta | --localst | --locals)
+ ac_prev=localstatedir ;;
+ -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \
+ | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*)
+ localstatedir=$ac_optarg ;;
+
+ -mandir | --mandir | --mandi | --mand | --man | --ma | --m)
+ ac_prev=mandir ;;
+ -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*)
+ mandir=$ac_optarg ;;
+
+ -nfp | --nfp | --nf)
+ # Obsolete; use --without-fp.
+ with_fp=no ;;
+
+ -no-create | --no-create | --no-creat | --no-crea | --no-cre \
+ | --no-cr | --no-c | -n)
+ no_create=yes ;;
+
+ -no-recursion | --no-recursion | --no-recursio | --no-recursi \
+ | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r)
+ no_recursion=yes ;;
+
+ -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \
+ | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \
+ | --oldin | --oldi | --old | --ol | --o)
+ ac_prev=oldincludedir ;;
+ -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \
+ | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \
+ | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*)
+ oldincludedir=$ac_optarg ;;
+
+ -prefix | --prefix | --prefi | --pref | --pre | --pr | --p)
+ ac_prev=prefix ;;
+ -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*)
+ prefix=$ac_optarg ;;
+
+ -program-prefix | --program-prefix | --program-prefi | --program-pref \
+ | --program-pre | --program-pr | --program-p)
+ ac_prev=program_prefix ;;
+ -program-prefix=* | --program-prefix=* | --program-prefi=* \
+ | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*)
+ program_prefix=$ac_optarg ;;
+
+ -program-suffix | --program-suffix | --program-suffi | --program-suff \
+ | --program-suf | --program-su | --program-s)
+ ac_prev=program_suffix ;;
+ -program-suffix=* | --program-suffix=* | --program-suffi=* \
+ | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*)
+ program_suffix=$ac_optarg ;;
+
+ -program-transform-name | --program-transform-name \
+ | --program-transform-nam | --program-transform-na \
+ | --program-transform-n | --program-transform- \
+ | --program-transform | --program-transfor \
+ | --program-transfo | --program-transf \
+ | --program-trans | --program-tran \
+ | --progr-tra | --program-tr | --program-t)
+ ac_prev=program_transform_name ;;
+ -program-transform-name=* | --program-transform-name=* \
+ | --program-transform-nam=* | --program-transform-na=* \
+ | --program-transform-n=* | --program-transform-=* \
+ | --program-transform=* | --program-transfor=* \
+ | --program-transfo=* | --program-transf=* \
+ | --program-trans=* | --program-tran=* \
+ | --progr-tra=* | --program-tr=* | --program-t=*)
+ program_transform_name=$ac_optarg ;;
+
+ -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd)
+ ac_prev=pdfdir ;;
+ -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*)
+ pdfdir=$ac_optarg ;;
+
+ -psdir | --psdir | --psdi | --psd | --ps)
+ ac_prev=psdir ;;
+ -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*)
+ psdir=$ac_optarg ;;
+
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ silent=yes ;;
+
+ -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
+ ac_prev=sbindir ;;
+ -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
+ | --sbi=* | --sb=*)
+ sbindir=$ac_optarg ;;
+
+ -sharedstatedir | --sharedstatedir | --sharedstatedi \
+ | --sharedstated | --sharedstate | --sharedstat | --sharedsta \
+ | --sharedst | --shareds | --shared | --share | --shar \
+ | --sha | --sh)
+ ac_prev=sharedstatedir ;;
+ -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \
+ | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \
+ | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \
+ | --sha=* | --sh=*)
+ sharedstatedir=$ac_optarg ;;
+
+ -site | --site | --sit)
+ ac_prev=site ;;
+ -site=* | --site=* | --sit=*)
+ site=$ac_optarg ;;
+
+ -srcdir | --srcdir | --srcdi | --srcd | --src | --sr)
+ ac_prev=srcdir ;;
+ -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*)
+ srcdir=$ac_optarg ;;
+
+ -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \
+ | --syscon | --sysco | --sysc | --sys | --sy)
+ ac_prev=sysconfdir ;;
+ -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \
+ | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*)
+ sysconfdir=$ac_optarg ;;
+
+ -target | --target | --targe | --targ | --tar | --ta | --t)
+ ac_prev=target_alias ;;
+ -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*)
+ target_alias=$ac_optarg ;;
+
+ -v | -verbose | --verbose | --verbos | --verbo | --verb)
+ verbose=yes ;;
+
+ -version | --version | --versio | --versi | --vers | -V)
+ ac_init_version=: ;;
+
+ -with-* | --with-*)
+ ac_package=`expr "x$ac_option" : 'x-*with-\([^=]*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid package name: $ac_package" >&2
+ { (exit 1); exit 1; }; }
+ ac_package=`echo $ac_package | sed 's/[-.]/_/g'`
+ eval with_$ac_package=\$ac_optarg ;;
+
+ -without-* | --without-*)
+ ac_package=`expr "x$ac_option" : 'x-*without-\(.*\)'`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_package" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid package name: $ac_package" >&2
+ { (exit 1); exit 1; }; }
+ ac_package=`echo $ac_package | sed 's/[-.]/_/g'`
+ eval with_$ac_package=no ;;
+
+ --x)
+ # Obsolete; use --with-x.
+ with_x=yes ;;
+
+ -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \
+ | --x-incl | --x-inc | --x-in | --x-i)
+ ac_prev=x_includes ;;
+ -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \
+ | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*)
+ x_includes=$ac_optarg ;;
+
+ -x-libraries | --x-libraries | --x-librarie | --x-librari \
+ | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l)
+ ac_prev=x_libraries ;;
+ -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \
+ | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*)
+ x_libraries=$ac_optarg ;;
+
+ -*) { echo "$as_me: error: unrecognized option: $ac_option
+Try \`$0 --help' for more information." >&2
+ { (exit 1); exit 1; }; }
+ ;;
+
+ *=*)
+ ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='`
+ # Reject names that are not valid shell variable names.
+ expr "x$ac_envvar" : ".*[^_$as_cr_alnum]" >/dev/null &&
+ { echo "$as_me: error: invalid variable name: $ac_envvar" >&2
+ { (exit 1); exit 1; }; }
+ eval $ac_envvar=\$ac_optarg
+ export $ac_envvar ;;
+
+ *)
+ # FIXME: should be removed in autoconf 3.0.
+ echo "$as_me: WARNING: you should use --build, --host, --target" >&2
+ expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null &&
+ echo "$as_me: WARNING: invalid host type: $ac_option" >&2
+ : ${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}
+ ;;
+
+ esac
+done
+
+if test -n "$ac_prev"; then
+ ac_option=--`echo $ac_prev | sed 's/_/-/g'`
+ { echo "$as_me: error: missing argument to $ac_option" >&2
+ { (exit 1); exit 1; }; }
+fi
+
+# Be sure to have absolute directory names.
+for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
+ datadir sysconfdir sharedstatedir localstatedir includedir \
+ oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
+ libdir localedir mandir
+do
+ eval ac_val=\$$ac_var
+ case $ac_val in
+ [\\/$]* | ?:[\\/]* ) continue;;
+ NONE | '' ) case $ac_var in *prefix ) continue;; esac;;
+ esac
+ { echo "$as_me: error: expected an absolute directory name for --$ac_var: $ac_val" >&2
+ { (exit 1); exit 1; }; }
+done
+
+# There might be people who depend on the old broken behavior: `$host'
+# used to hold the argument of --host etc.
+# FIXME: To remove some day.
+build=$build_alias
+host=$host_alias
+target=$target_alias
+
+# FIXME: To remove some day.
+if test "x$host_alias" != x; then
+ if test "x$build_alias" = x; then
+ cross_compiling=maybe
+ echo "$as_me: WARNING: If you wanted to set the --build type, don't use --host.
+ If a cross compiler is detected then cross compile mode will be used." >&2
+ elif test "x$build_alias" != "x$host_alias"; then
+ cross_compiling=yes
+ fi
+fi
+
+ac_tool_prefix=
+test -n "$host_alias" && ac_tool_prefix=$host_alias-
+
+test "$silent" = yes && exec 6>/dev/null
+
+
+ac_pwd=`pwd` && test -n "$ac_pwd" &&
+ac_ls_di=`ls -di .` &&
+ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` ||
+ { echo "$as_me: error: Working directory cannot be determined" >&2
+ { (exit 1); exit 1; }; }
+test "X$ac_ls_di" = "X$ac_pwd_ls_di" ||
+ { echo "$as_me: error: pwd does not report name of working directory" >&2
+ { (exit 1); exit 1; }; }
+
+
+# Find the source files, if location was not specified.
+if test -z "$srcdir"; then
+ ac_srcdir_defaulted=yes
+ # Try the directory containing this script, then the parent directory.
+ ac_confdir=`$as_dirname -- "$0" ||
+$as_expr X"$0" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$0" : 'X\(//\)[^/]' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+echo X"$0" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ srcdir=$ac_confdir
+ if test ! -r "$srcdir/$ac_unique_file"; then
+ srcdir=..
+ fi
+else
+ ac_srcdir_defaulted=no
+fi
+if test ! -r "$srcdir/$ac_unique_file"; then
+ test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .."
+ { echo "$as_me: error: cannot find sources ($ac_unique_file) in $srcdir" >&2
+ { (exit 1); exit 1; }; }
+fi
+ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work"
+ac_abs_confdir=`(
+ cd "$srcdir" && test -r "./$ac_unique_file" || { echo "$as_me: error: $ac_msg" >&2
+ { (exit 1); exit 1; }; }
+ pwd)`
+# When building in place, set srcdir=.
+if test "$ac_abs_confdir" = "$ac_pwd"; then
+ srcdir=.
+fi
+# Remove unnecessary trailing slashes from srcdir.
+# Double slashes in file names in object file debugging info
+# mess up M-x gdb in Emacs.
+case $srcdir in
+*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;;
+esac
+for ac_var in $ac_precious_vars; do
+ eval ac_env_${ac_var}_set=\${${ac_var}+set}
+ eval ac_env_${ac_var}_value=\$${ac_var}
+ eval ac_cv_env_${ac_var}_set=\${${ac_var}+set}
+ eval ac_cv_env_${ac_var}_value=\$${ac_var}
+done
+
+#
+# Report the --help message.
+#
+if test "$ac_init_help" = "long"; then
+ # Omit some internal or obsolete options to make the list less imposing.
+ # This message is too long to be a string in the A/UX 3.1 sh.
+ cat <<_ACEOF
+\`configure' configures this package to adapt to many kinds of systems.
+
+Usage: $0 [OPTION]... [VAR=VALUE]...
+
+To assign environment variables (e.g., CC, CFLAGS...), specify them as
+VAR=VALUE. See below for descriptions of some of the useful variables.
+
+Defaults for the options are specified in brackets.
+
+Configuration:
+ -h, --help display this help and exit
+ --help=short display options specific to this package
+ --help=recursive display the short help of all the included packages
+ -V, --version display version information and exit
+ -q, --quiet, --silent do not print \`checking...' messages
+ --cache-file=FILE cache test results in FILE [disabled]
+ -C, --config-cache alias for \`--cache-file=config.cache'
+ -n, --no-create do not create output files
+ --srcdir=DIR find the sources in DIR [configure dir or \`..']
+
+Installation directories:
+ --prefix=PREFIX install architecture-independent files in PREFIX
+ [$ac_default_prefix]
+ --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
+ [PREFIX]
+
+By default, \`make install' will install all the files in
+\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify
+an installation prefix other than \`$ac_default_prefix' using \`--prefix',
+for instance \`--prefix=\$HOME'.
+
+For better control, use the options below.
+
+Fine tuning of the installation directories:
+ --bindir=DIR user executables [EPREFIX/bin]
+ --sbindir=DIR system admin executables [EPREFIX/sbin]
+ --libexecdir=DIR program executables [EPREFIX/libexec]
+ --sysconfdir=DIR read-only single-machine data [PREFIX/etc]
+ --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
+ --localstatedir=DIR modifiable single-machine data [PREFIX/var]
+ --libdir=DIR object code libraries [EPREFIX/lib]
+ --includedir=DIR C header files [PREFIX/include]
+ --oldincludedir=DIR C header files for non-gcc [/usr/include]
+ --datarootdir=DIR read-only arch.-independent data root [PREFIX/share]
+ --datadir=DIR read-only architecture-independent data [DATAROOTDIR]
+ --infodir=DIR info documentation [DATAROOTDIR/info]
+ --localedir=DIR locale-dependent data [DATAROOTDIR/locale]
+ --mandir=DIR man documentation [DATAROOTDIR/man]
+ --docdir=DIR documentation root [DATAROOTDIR/doc/PACKAGE]
+ --htmldir=DIR html documentation [DOCDIR]
+ --dvidir=DIR dvi documentation [DOCDIR]
+ --pdfdir=DIR pdf documentation [DOCDIR]
+ --psdir=DIR ps documentation [DOCDIR]
+_ACEOF
+
+ cat <<\_ACEOF
+_ACEOF
+fi
+
+if test -n "$ac_init_help"; then
+
+ cat <<\_ACEOF
+
+Optional Features:
+ --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no)
+ --enable-FEATURE[=ARG] include FEATURE [ARG=yes]
+--enable-test tests current settings rather than defining new ones
+--enable-extension=<ext>
+
+Optional Packages:
+ --with-PACKAGE[=ARG] use PACKAGE [ARG=yes]
+ --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no)
+ --with-boost=DIR path to the boost main tree
+
+Some influential environment variables:
+ CXX C++ compiler command
+ CXXFLAGS C++ compiler flags
+ LDFLAGS linker flags, e.g. -L<lib dir> if you have libraries in a
+ nonstandard directory <lib dir>
+ LIBS libraries to pass to the linker, e.g. -l<library>
+ CPPFLAGS C/C++/Objective C preprocessor flags, e.g. -I<include dir> if
+ you have headers in a nonstandard directory <include dir>
+
+Use these variables to override the choices made by `configure' or to help
+it to find libraries and programs with nonstandard names/locations.
+
+_ACEOF
+ac_status=$?
+fi
+
+if test "$ac_init_help" = "recursive"; then
+ # If there are subdirs, report their specific --help.
+ for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue
+ test -d "$ac_dir" || continue
+ ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+ # A ".." for each directory in $ac_dir_suffix.
+ ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`
+ case $ac_top_builddir_sub in
+ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+ esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+ .) # We are building in place.
+ ac_srcdir=.
+ ac_top_srcdir=$ac_top_builddir_sub
+ ac_abs_top_srcdir=$ac_pwd ;;
+ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir
+ ac_abs_top_srcdir=$srcdir ;;
+ *) # Relative name.
+ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_build_prefix$srcdir
+ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+ cd "$ac_dir" || { ac_status=$?; continue; }
+ # Check for guested configure.
+ if test -f "$ac_srcdir/configure.gnu"; then
+ echo &&
+ $SHELL "$ac_srcdir/configure.gnu" --help=recursive
+ elif test -f "$ac_srcdir/configure"; then
+ echo &&
+ $SHELL "$ac_srcdir/configure" --help=recursive
+ else
+ echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2
+ fi || ac_status=$?
+ cd "$ac_pwd" || { ac_status=$?; break; }
+ done
+fi
+
+test -n "$ac_init_help" && exit $ac_status
+if $ac_init_version; then
+ cat <<\_ACEOF
+configure
+generated by GNU Autoconf 2.61
+
+Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
+2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+This configure script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it.
+_ACEOF
+ exit
+fi
+cat >config.log <<_ACEOF
+This file contains any messages produced by compilers while
+running configure, to aid debugging if configure makes a mistake.
+
+It was created by $as_me, which was
+generated by GNU Autoconf 2.61. Invocation command line was
+
+ $ $0 $@
+
+_ACEOF
+exec 5>>config.log
+{
+cat <<_ASUNAME
+## --------- ##
+## Platform. ##
+## --------- ##
+
+hostname = `(hostname || uname -n) 2>/dev/null | sed 1q`
+uname -m = `(uname -m) 2>/dev/null || echo unknown`
+uname -r = `(uname -r) 2>/dev/null || echo unknown`
+uname -s = `(uname -s) 2>/dev/null || echo unknown`
+uname -v = `(uname -v) 2>/dev/null || echo unknown`
+
+/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown`
+/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown`
+
+/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown`
+/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown`
+/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown`
+/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown`
+/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown`
+/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown`
+/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown`
+
+_ASUNAME
+
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ echo "PATH: $as_dir"
+done
+IFS=$as_save_IFS
+
+} >&5
+
+cat >&5 <<_ACEOF
+
+
+## ----------- ##
+## Core tests. ##
+## ----------- ##
+
+_ACEOF
+
+
+# Keep a trace of the command line.
+# Strip out --no-create and --no-recursion so they do not pile up.
+# Strip out --silent because we don't want to record it for future runs.
+# Also quote any args containing shell meta-characters.
+# Make two passes to allow for proper duplicate-argument suppression.
+ac_configure_args=
+ac_configure_args0=
+ac_configure_args1=
+ac_must_keep_next=false
+for ac_pass in 1 2
+do
+ for ac_arg
+ do
+ case $ac_arg in
+ -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil)
+ continue ;;
+ *\'*)
+ ac_arg=`echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;;
+ esac
+ case $ac_pass in
+ 1) ac_configure_args0="$ac_configure_args0 '$ac_arg'" ;;
+ 2)
+ ac_configure_args1="$ac_configure_args1 '$ac_arg'"
+ if test $ac_must_keep_next = true; then
+ ac_must_keep_next=false # Got value, back to normal.
+ else
+ case $ac_arg in
+ *=* | --config-cache | -C | -disable-* | --disable-* \
+ | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \
+ | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \
+ | -with-* | --with-* | -without-* | --without-* | --x)
+ case "$ac_configure_args0 " in
+ "$ac_configure_args1"*" '$ac_arg' "* ) continue ;;
+ esac
+ ;;
+ -* ) ac_must_keep_next=true ;;
+ esac
+ fi
+ ac_configure_args="$ac_configure_args '$ac_arg'"
+ ;;
+ esac
+ done
+done
+$as_unset ac_configure_args0 || test "${ac_configure_args0+set}" != set || { ac_configure_args0=; export ac_configure_args0; }
+$as_unset ac_configure_args1 || test "${ac_configure_args1+set}" != set || { ac_configure_args1=; export ac_configure_args1; }
+
+# When interrupted or exit'd, cleanup temporary files, and complete
+# config.log. We remove comments because anyway the quotes in there
+# would cause problems or look ugly.
+# WARNING: Use '\'' to represent an apostrophe within the trap.
+# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug.
+trap 'exit_status=$?
+ # Save into config.log some information that might help in debugging.
+ {
+ echo
+
+ cat <<\_ASBOX
+## ---------------- ##
+## Cache variables. ##
+## ---------------- ##
+_ASBOX
+ echo
+ # The following way of writing the cache mishandles newlines in values,
+(
+ for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do
+ eval ac_val=\$$ac_var
+ case $ac_val in #(
+ *${as_nl}*)
+ case $ac_var in #(
+ *_cv_*) { echo "$as_me:$LINENO: WARNING: Cache variable $ac_var contains a newline." >&5
+echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;;
+ esac
+ case $ac_var in #(
+ _ | IFS | as_nl) ;; #(
+ *) $as_unset $ac_var ;;
+ esac ;;
+ esac
+ done
+ (set) 2>&1 |
+ case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #(
+ *${as_nl}ac_space=\ *)
+ sed -n \
+ "s/'\''/'\''\\\\'\'''\''/g;
+ s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p"
+ ;; #(
+ *)
+ sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p"
+ ;;
+ esac |
+ sort
+)
+ echo
+
+ cat <<\_ASBOX
+## ----------------- ##
+## Output variables. ##
+## ----------------- ##
+_ASBOX
+ echo
+ for ac_var in $ac_subst_vars
+ do
+ eval ac_val=\$$ac_var
+ case $ac_val in
+ *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ esac
+ echo "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+
+ if test -n "$ac_subst_files"; then
+ cat <<\_ASBOX
+## ------------------- ##
+## File substitutions. ##
+## ------------------- ##
+_ASBOX
+ echo
+ for ac_var in $ac_subst_files
+ do
+ eval ac_val=\$$ac_var
+ case $ac_val in
+ *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;;
+ esac
+ echo "$ac_var='\''$ac_val'\''"
+ done | sort
+ echo
+ fi
+
+ if test -s confdefs.h; then
+ cat <<\_ASBOX
+## ----------- ##
+## confdefs.h. ##
+## ----------- ##
+_ASBOX
+ echo
+ cat confdefs.h
+ echo
+ fi
+ test "$ac_signal" != 0 &&
+ echo "$as_me: caught signal $ac_signal"
+ echo "$as_me: exit $exit_status"
+ } >&5
+ rm -f core *.core core.conftest.* &&
+ rm -f -r conftest* confdefs* conf$$* $ac_clean_files &&
+ exit $exit_status
+' 0
+for ac_signal in 1 2 13 15; do
+ trap 'ac_signal='$ac_signal'; { (exit 1); exit 1; }' $ac_signal
+done
+ac_signal=0
+
+# confdefs.h avoids OS command line length limits that DEFS can exceed.
+rm -f -r conftest* confdefs.h
+
+# Predefined preprocessor variables.
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_NAME "$PACKAGE_NAME"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_TARNAME "$PACKAGE_TARNAME"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_VERSION "$PACKAGE_VERSION"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_STRING "$PACKAGE_STRING"
+_ACEOF
+
+
+cat >>confdefs.h <<_ACEOF
+#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT"
+_ACEOF
+
+
+# Let the site file select an alternate cache file if it wants to.
+# Prefer explicitly selected file to automatically selected ones.
+if test -n "$CONFIG_SITE"; then
+ set x "$CONFIG_SITE"
+elif test "x$prefix" != xNONE; then
+ set x "$prefix/share/config.site" "$prefix/etc/config.site"
+else
+ set x "$ac_default_prefix/share/config.site" \
+ "$ac_default_prefix/etc/config.site"
+fi
+shift
+for ac_site_file
+do
+ if test -r "$ac_site_file"; then
+ { echo "$as_me:$LINENO: loading site script $ac_site_file" >&5
+echo "$as_me: loading site script $ac_site_file" >&6;}
+ sed 's/^/| /' "$ac_site_file" >&5
+ . "$ac_site_file"
+ fi
+done
+
+
+# Check that the precious variables saved in the cache have kept the same
+# value.
+ac_cache_corrupted=false
+for ac_var in $ac_precious_vars; do
+ eval ac_old_set=\$ac_cv_env_${ac_var}_set
+ eval ac_new_set=\$ac_env_${ac_var}_set
+ eval ac_old_val=\$ac_cv_env_${ac_var}_value
+ eval ac_new_val=\$ac_env_${ac_var}_value
+ case $ac_old_set,$ac_new_set in
+ set,)
+ { echo "$as_me:$LINENO: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5
+echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,set)
+ { echo "$as_me:$LINENO: error: \`$ac_var' was not set in the previous run" >&5
+echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;}
+ ac_cache_corrupted=: ;;
+ ,);;
+ *)
+ if test "x$ac_old_val" != "x$ac_new_val"; then
+ { echo "$as_me:$LINENO: error: \`$ac_var' has changed since the previous run:" >&5
+echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;}
+ { echo "$as_me:$LINENO: former value: $ac_old_val" >&5
+echo "$as_me: former value: $ac_old_val" >&2;}
+ { echo "$as_me:$LINENO: current value: $ac_new_val" >&5
+echo "$as_me: current value: $ac_new_val" >&2;}
+ ac_cache_corrupted=:
+ fi;;
+ esac
+ # Pass precious variables to config.status.
+ if test "$ac_new_set" = set; then
+ case $ac_new_val in
+ *\'*) ac_arg=$ac_var=`echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;;
+ *) ac_arg=$ac_var=$ac_new_val ;;
+ esac
+ case " $ac_configure_args " in
+ *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy.
+ *) ac_configure_args="$ac_configure_args '$ac_arg'" ;;
+ esac
+ fi
+done
+if $ac_cache_corrupted; then
+ { echo "$as_me:$LINENO: error: changes in the environment can compromise the build" >&5
+echo "$as_me: error: changes in the environment can compromise the build" >&2;}
+ { { echo "$as_me:$LINENO: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&5
+echo "$as_me: error: run \`make distclean' and/or \`rm $cache_file' and start over" >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
+
+
+# Check whether --enable-test was given.
+if test "${enable_test+set}" = set; then
+ enableval=$enable_test;
+fi
+
+
+if test "foo"$enable_test = "foo"; then
+ enable_test="no"
+fi
+
+cat << EOF
+*** $0: boost configuration utility ***
+
+Please stand by while exploring compiler capabilities...
+Be patient - this could take some time...
+
+Note that this test script only gives an approximate
+configuration - you will need to test the results carefully
+using the boost regression test suite before using the results.
+EOF
+
+if test $enable_test = 'yes'; then
+
+cat << EOF
+
+This script reports only the difference between the detected
+configuration, and the existing boost configuration. Its
+primary aim is to quickly report how well boost is configured
+for one compiler.
+
+***
+
+EOF
+
+else
+
+cat << EOF
+
+***
+
+EOF
+fi
+
+# Check whether --enable-extension was given.
+if test "${enable_extension+set}" = set; then
+ enableval=$enable_extension;
+case "$enableval" in
+ no) { echo "$as_me:$LINENO: result: Info :.cpp used as extension for tests" >&5
+echo "${ECHO_T}Info :.cpp used as extension for tests" >&6; }
+ ac_ext=cpp
+ ;;
+ *) { echo "$as_me:$LINENO: result: Argument : .$enableval used as extension" >&5
+echo "${ECHO_T}Argument : .$enableval used as extension" >&6; }
+ ac_ext=$enableval
+esac
+
+else
+ { echo "$as_me:$LINENO: result: Info : .cpp used as extension for tests" >&5
+echo "${ECHO_T}Info : .cpp used as extension for tests" >&6; }
+ ac_ext=cpp
+
+
+fi
+
+
+
+if test -f /bin/sed ; then
+ SED=/bin/sed
+else
+ if test -f /usr/bin/sed ; then
+ SED=/usr/bin/sed
+ else
+ SED=sed
+ fi
+fi
+
+{ echo "$as_me:$LINENO: checking for boost main tree" >&5
+echo $ECHO_N "checking for boost main tree... $ECHO_C" >&6; }
+boost_base=
+
+# Check whether --with-boost was given.
+if test "${with_boost+set}" = set; then
+ withval=$with_boost;
+ #echo "--with boost is set"
+ if test "x$withval" != "x"; then
+ if test "x$withval" != no; then
+ boost_base=`echo "$withval" | $SED 's,//*,/,g' | $SED 's,/$,,'`
+ #echo boost_base=$boost_base
+ if test -f "$boost_base/boost/config.hpp"; then
+ if test -f "$boost_base/libs/config/configure"; then :; else
+ boost_base=
+ #echo "$boost_base/libs/config/configure" not found
+ fi
+ else
+ #echo "$boost_base/boost/config.hpp" not found
+ boost_base=
+ fi
+ fi
+ fi
+
+
+fi
+
+if test "x$boost_base" = "x"; then
+ #echo '$0 = ' $0
+ boost_base=`expr "x$0" : 'x\(.*\)/[/]*' \| '.'`
+ boost_base="$boost_base/../.."
+ #echo boost_base=$boost_base
+ if test -f "$boost_base/boost/config.hpp"; then
+ if test -f "$boost_base/libs/config/configure"; then :; else
+ boost_base=
+ fi
+ else
+ boost_base=
+ fi
+fi
+if test "x$boost_base" != "x"; then
+ { echo "$as_me:$LINENO: result: $boost_base" >&5
+echo "${ECHO_T}$boost_base" >&6; }
+else
+ { echo "$as_me:$LINENO: result: not found" >&5
+echo "${ECHO_T}not found" >&6; }
+ { { echo "$as_me:$LINENO: error: The boost main tree was not found.
+ Specify its location by the --with-boost option." >&5
+echo "$as_me: error: The boost main tree was not found.
+ Specify its location by the --with-boost option." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+
+
+# Save that, as it is being redefined several times
+use_ac_ext=$ac_ext
+
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+if test -z "$CXX"; then
+ if test -n "$CCC"; then
+ CXX=$CCC
+ else
+ if test -n "$ac_tool_prefix"; then
+ for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
+ do
+ # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args.
+set dummy $ac_tool_prefix$ac_prog; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_CXX+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$CXX"; then
+ ac_cv_prog_CXX="$CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_CXX="$ac_tool_prefix$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+CXX=$ac_cv_prog_CXX
+if test -n "$CXX"; then
+ { echo "$as_me:$LINENO: result: $CXX" >&5
+echo "${ECHO_T}$CXX" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+ test -n "$CXX" && break
+ done
+fi
+if test -z "$CXX"; then
+ ac_ct_CXX=$CXX
+ for ac_prog in g++ c++ gpp aCC CC cxx cc++ cl.exe FCC KCC RCC xlC_r xlC
+do
+ # Extract the first word of "$ac_prog", so it can be a program name with args.
+set dummy $ac_prog; ac_word=$2
+{ echo "$as_me:$LINENO: checking for $ac_word" >&5
+echo $ECHO_N "checking for $ac_word... $ECHO_C" >&6; }
+if test "${ac_cv_prog_ac_ct_CXX+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ if test -n "$ac_ct_CXX"; then
+ ac_cv_prog_ac_ct_CXX="$ac_ct_CXX" # Let the user override the test.
+else
+as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ for ac_exec_ext in '' $ac_executable_extensions; do
+ if { test -f "$as_dir/$ac_word$ac_exec_ext" && $as_test_x "$as_dir/$ac_word$ac_exec_ext"; }; then
+ ac_cv_prog_ac_ct_CXX="$ac_prog"
+ echo "$as_me:$LINENO: found $as_dir/$ac_word$ac_exec_ext" >&5
+ break 2
+ fi
+done
+done
+IFS=$as_save_IFS
+
+fi
+fi
+ac_ct_CXX=$ac_cv_prog_ac_ct_CXX
+if test -n "$ac_ct_CXX"; then
+ { echo "$as_me:$LINENO: result: $ac_ct_CXX" >&5
+echo "${ECHO_T}$ac_ct_CXX" >&6; }
+else
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+fi
+
+
+ test -n "$ac_ct_CXX" && break
+done
+
+ if test "x$ac_ct_CXX" = x; then
+ CXX="g++"
+ else
+ case $cross_compiling:$ac_tool_warned in
+yes:)
+{ echo "$as_me:$LINENO: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet. If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&5
+echo "$as_me: WARNING: In the future, Autoconf will not detect cross-tools
+whose name does not start with the host triplet. If you think this
+configuration is useful to you, please write to autoconf@gnu.org." >&2;}
+ac_tool_warned=yes ;;
+esac
+ CXX=$ac_ct_CXX
+ fi
+fi
+
+ fi
+fi
+# Provide some information about the compiler.
+echo "$as_me:$LINENO: checking for C++ compiler version" >&5
+ac_compiler=`set X $ac_compile; echo $2`
+{ (ac_try="$ac_compiler --version >&5"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compiler --version >&5") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (ac_try="$ac_compiler -v >&5"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compiler -v >&5") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+{ (ac_try="$ac_compiler -V >&5"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compiler -V >&5") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }
+
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files a.out a.exe b.out"
+# Try to create an executable without -o first, disregard a.out.
+# It will help us diagnose broken compilers, and finding out an intuition
+# of exeext.
+{ echo "$as_me:$LINENO: checking for C++ compiler default output file name" >&5
+echo $ECHO_N "checking for C++ compiler default output file name... $ECHO_C" >&6; }
+ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'`
+#
+# List of possible output files, starting from the most likely.
+# The algorithm is not robust to junk in `.', hence go to wildcards (a.*)
+# only as a last resort. b.out is created by i960 compilers.
+ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out'
+#
+# The IRIX 6 linker writes into existing files which may not be
+# executable, retaining their permissions. Remove them first so a
+# subsequent execution test works.
+ac_rmfiles=
+for ac_file in $ac_files
+do
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;;
+ * ) ac_rmfiles="$ac_rmfiles $ac_file";;
+ esac
+done
+rm -f $ac_rmfiles
+
+if { (ac_try="$ac_link_default"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link_default") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ # Autoconf-2.13 could set the ac_cv_exeext variable to `no'.
+# So ignore a value of `no', otherwise this would lead to `EXEEXT = no'
+# in a Makefile. We should not override ac_cv_exeext if it was cached,
+# so that the user can short-circuit this test for compilers unknown to
+# Autoconf.
+for ac_file in $ac_files ''
+do
+ test -f "$ac_file" || continue
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj )
+ ;;
+ [ab].out )
+ # We found the default executable, but exeext='' is most
+ # certainly right.
+ break;;
+ *.* )
+ if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no;
+ then :; else
+ ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ fi
+ # We set ac_cv_exeext here because the later test for it is not
+ # safe: cross compilers may not add the suffix if given an `-o'
+ # argument, so we may need to know it at that point already.
+ # Even if this section looks crufty: it has the advantage of
+ # actually working.
+ break;;
+ * )
+ break;;
+ esac
+done
+test "$ac_cv_exeext" = no && ac_cv_exeext=
+
+else
+ ac_file=''
+fi
+
+{ echo "$as_me:$LINENO: result: $ac_file" >&5
+echo "${ECHO_T}$ac_file" >&6; }
+if test -z "$ac_file"; then
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { echo "$as_me:$LINENO: error: C++ compiler cannot create executables
+See \`config.log' for more details." >&5
+echo "$as_me: error: C++ compiler cannot create executables
+See \`config.log' for more details." >&2;}
+ { (exit 77); exit 77; }; }
+fi
+
+ac_exeext=$ac_cv_exeext
+
+# Check that the compiler produces executables we can run. If not, either
+# the compiler is broken, or we cross compile.
+{ echo "$as_me:$LINENO: checking whether the C++ compiler works" >&5
+echo $ECHO_N "checking whether the C++ compiler works... $ECHO_C" >&6; }
+# FIXME: These cross compiler hacks should be removed for Autoconf 3.0
+# If not cross compiling, check that we can run a simple program.
+if test "$cross_compiling" != yes; then
+ if { ac_try='./$ac_file'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ cross_compiling=no
+ else
+ if test "$cross_compiling" = maybe; then
+ cross_compiling=yes
+ else
+ { { echo "$as_me:$LINENO: error: cannot run C++ compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run C++ compiled programs.
+If you meant to cross compile, use \`--host'.
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+ fi
+ fi
+fi
+{ echo "$as_me:$LINENO: result: yes" >&5
+echo "${ECHO_T}yes" >&6; }
+
+rm -f a.out a.exe conftest$ac_cv_exeext b.out
+ac_clean_files=$ac_clean_files_save
+# Check that the compiler produces executables we can run. If not, either
+# the compiler is broken, or we cross compile.
+{ echo "$as_me:$LINENO: checking whether we are cross compiling" >&5
+echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; }
+{ echo "$as_me:$LINENO: result: $cross_compiling" >&5
+echo "${ECHO_T}$cross_compiling" >&6; }
+
+{ echo "$as_me:$LINENO: checking for suffix of executables" >&5
+echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; }
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ # If both `conftest.exe' and `conftest' are `present' (well, observable)
+# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will
+# work properly (i.e., refer to `conftest.exe'), while it won't with
+# `rm'.
+for ac_file in conftest.exe conftest conftest.*; do
+ test -f "$ac_file" || continue
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;;
+ *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'`
+ break;;
+ * ) break;;
+ esac
+done
+else
+ { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute suffix of executables: cannot compile and link
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+rm -f conftest$ac_cv_exeext
+{ echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5
+echo "${ECHO_T}$ac_cv_exeext" >&6; }
+
+rm -f conftest.$ac_ext
+EXEEXT=$ac_cv_exeext
+ac_exeext=$EXEEXT
+{ echo "$as_me:$LINENO: checking for suffix of object files" >&5
+echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; }
+if test "${ac_cv_objext+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.o conftest.obj
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; then
+ for ac_file in conftest.o conftest.obj conftest.*; do
+ test -f "$ac_file" || continue;
+ case $ac_file in
+ *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf ) ;;
+ *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'`
+ break;;
+ esac
+done
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+{ { echo "$as_me:$LINENO: error: cannot compute suffix of object files: cannot compile
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot compute suffix of object files: cannot compile
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+fi
+
+rm -f conftest.$ac_cv_objext conftest.$ac_ext
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_objext" >&5
+echo "${ECHO_T}$ac_cv_objext" >&6; }
+OBJEXT=$ac_cv_objext
+ac_objext=$OBJEXT
+{ echo "$as_me:$LINENO: checking whether we are using the GNU C++ compiler" >&5
+echo $ECHO_N "checking whether we are using the GNU C++ compiler... $ECHO_C" >&6; }
+if test "${ac_cv_cxx_compiler_gnu+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+#ifndef __GNUC__
+ choke me
+#endif
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_cxx_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_compiler_gnu=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_compiler_gnu=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ac_cv_cxx_compiler_gnu=$ac_compiler_gnu
+
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_cxx_compiler_gnu" >&5
+echo "${ECHO_T}$ac_cv_cxx_compiler_gnu" >&6; }
+GXX=`test $ac_compiler_gnu = yes && echo yes`
+ac_test_CXXFLAGS=${CXXFLAGS+set}
+ac_save_CXXFLAGS=$CXXFLAGS
+{ echo "$as_me:$LINENO: checking whether $CXX accepts -g" >&5
+echo $ECHO_N "checking whether $CXX accepts -g... $ECHO_C" >&6; }
+if test "${ac_cv_prog_cxx_g+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_save_cxx_werror_flag=$ac_cxx_werror_flag
+ ac_cxx_werror_flag=yes
+ ac_cv_prog_cxx_g=no
+ CXXFLAGS="-g"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_cxx_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_prog_cxx_g=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ CXXFLAGS=""
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_cxx_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ :
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+ CXXFLAGS="-g"
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+int
+main ()
+{
+
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext
+if { (ac_try="$ac_compile"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_compile") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_cxx_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest.$ac_objext; then
+ ac_cv_prog_cxx_g=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+ ac_cxx_werror_flag=$ac_save_cxx_werror_flag
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_prog_cxx_g" >&5
+echo "${ECHO_T}$ac_cv_prog_cxx_g" >&6; }
+if test "$ac_test_CXXFLAGS" = set; then
+ CXXFLAGS=$ac_save_CXXFLAGS
+elif test $ac_cv_prog_cxx_g = yes; then
+ if test "$GXX" = yes; then
+ CXXFLAGS="-g -O2"
+ else
+ CXXFLAGS="-g"
+ fi
+else
+ if test "$GXX" = yes; then
+ CXXFLAGS="-O2"
+ else
+ CXXFLAGS=
+ fi
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ac_ext=$use_ac_ext
+
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+
+OLD_CXXFLAGS="$CXXFLAGS"
+
+
+if test $enable_test = 'yes'; then
+ CXXFLAGS="-I$boost_base -I$boost_base/libs/config/test $CXXFLAGS"
+else
+ CXXFLAGS="-I$boost_base -I$boost_base/libs/config/test $CXXFLAGS -DBOOST_NO_CONFIG"
+fi
+
+# add the -AA conformance option to CXXFLAGS for HP aCC only
+if test $CXX = 'aCC'; then
+ CXXFLAGS="-AA $CXXFLAGS"
+fi
+
+
+
+
+{ echo "$as_me:$LINENO: checking for pthread_exit in -lpthread" >&5
+echo $ECHO_N "checking for pthread_exit in -lpthread... $ECHO_C" >&6; }
+if test "${ac_cv_lib_pthread_pthread_exit+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lpthread $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char pthread_exit ();
+int
+main ()
+{
+return pthread_exit ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_cxx_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_lib_pthread_pthread_exit=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_lib_pthread_pthread_exit=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_pthread_pthread_exit" >&5
+echo "${ECHO_T}$ac_cv_lib_pthread_pthread_exit" >&6; }
+if test $ac_cv_lib_pthread_pthread_exit = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBPTHREAD 1
+_ACEOF
+
+ LIBS="-lpthread $LIBS"
+
+fi
+
+
+{ echo "$as_me:$LINENO: checking for cos in -lm" >&5
+echo $ECHO_N "checking for cos in -lm... $ECHO_C" >&6; }
+if test "${ac_cv_lib_m_cos+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lm $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char cos ();
+int
+main ()
+{
+return cos ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_cxx_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_lib_m_cos=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_lib_m_cos=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_m_cos" >&5
+echo "${ECHO_T}$ac_cv_lib_m_cos" >&6; }
+if test $ac_cv_lib_m_cos = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBM 1
+_ACEOF
+
+ LIBS="-lm $LIBS"
+
+fi
+
+
+{ echo "$as_me:$LINENO: checking for clock in -lrt" >&5
+echo $ECHO_N "checking for clock in -lrt... $ECHO_C" >&6; }
+if test "${ac_cv_lib_rt_clock+set}" = set; then
+ echo $ECHO_N "(cached) $ECHO_C" >&6
+else
+ ac_check_lib_save_LIBS=$LIBS
+LIBS="-lrt $LIBS"
+cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+/* Override any GCC internal prototype to avoid an error.
+ Use char because int might match the return type of a GCC
+ builtin and then its argument prototype would still apply. */
+#ifdef __cplusplus
+extern "C"
+#endif
+char clock ();
+int
+main ()
+{
+return clock ();
+ ;
+ return 0;
+}
+_ACEOF
+rm -f conftest.$ac_objext conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>conftest.er1
+ ac_status=$?
+ grep -v '^ *+' conftest.er1 >conftest.err
+ rm -f conftest.er1
+ cat conftest.err >&5
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && {
+ test -z "$ac_cxx_werror_flag" ||
+ test ! -s conftest.err
+ } && test -s conftest$ac_exeext &&
+ $as_test_x conftest$ac_exeext; then
+ ac_cv_lib_rt_clock=yes
+else
+ echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+ ac_cv_lib_rt_clock=no
+fi
+
+rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
+ conftest$ac_exeext conftest.$ac_ext
+LIBS=$ac_check_lib_save_LIBS
+fi
+{ echo "$as_me:$LINENO: result: $ac_cv_lib_rt_clock" >&5
+echo "${ECHO_T}$ac_cv_lib_rt_clock" >&6; }
+if test $ac_cv_lib_rt_clock = yes; then
+ cat >>confdefs.h <<_ACEOF
+#define HAVE_LIBRT 1
+_ACEOF
+
+ LIBS="-lrt $LIBS"
+
+fi
+
+
+#
+# enumerate test files and test each one:
+#
+for file in $boost_base/libs/config/test/boost_no*.ipp; do
+
+ basename=`echo $file | $SED 's/.*boost_\(.*\)\.ipp/\1/'`
+ macroname=`cat $file | grep '^//[ ]*MACRO:' | $SED 's/.*MACRO:[ ]*\([_A-Z0-9]*\).*/\1/'`
+ title=`cat $file | grep '^//[ ]*TITLE:' | $SED 's/.*TITLE:[ ]*\([^ ].*\)/\1/'`
+ namespace=`echo $macroname | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
+
+#echo file = $file
+#echo basename = $basename
+#echo macroname = $macroname
+#echo title = $title
+#echo namespace = $namespace
+
+ ac_ext=$use_ac_ext
+ if test $enable_test = 'yes'; then
+ { echo "$as_me:$LINENO: checking $title (pass expected) " >&5
+echo $ECHO_N "checking $title (pass expected) ... $ECHO_C" >&6; }
+ else
+ { echo "$as_me:$LINENO: checking $title " >&5
+echo $ECHO_N "checking $title ... $ECHO_C" >&6; }
+ fi
+ if test "$cross_compiling" = yes; then
+ { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <boost/config.hpp>
+#include "test.hpp"
+
+#if !defined($macroname) || defined(BOOST_NO_CONFIG)
+#include "boost_$basename.ipp"
+#else
+namespace ${namespace} = empty_boost;
+#endif
+
+int main(){ return ${namespace}::test(); }
+
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ { echo "$as_me:$LINENO: result: OK" >&5
+echo "${ECHO_T}OK" >&6; }
+
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+{ echo "$as_me:$LINENO: result: Failed" >&5
+echo "${ECHO_T}Failed" >&6; }
+ required_defs="$macroname $required_defs"
+
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+
+ if test $enable_test = 'yes'; then
+
+ ac_ext=$use_ac_ext
+ { echo "$as_me:$LINENO: checking $title (fail expected) " >&5
+echo $ECHO_N "checking $title (fail expected) ... $ECHO_C" >&6; }
+ if test "$cross_compiling" = yes; then
+ { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <boost/config.hpp>
+#include "test.hpp"
+
+#ifdef $macroname
+#include "boost_$basename.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main() { return ${namespace}::test(); }
+
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ { echo "$as_me:$LINENO: result: failed" >&5
+echo "${ECHO_T}failed" >&6; }
+ required_undefs="$macroname $required_undefs"
+
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+{ echo "$as_me:$LINENO: result: OK" >&5
+echo "${ECHO_T}OK" >&6; }
+
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+
+ fi
+
+done
+
+#
+# enumerate optional test files and test each one:
+#
+for file in $boost_base/libs/config/test/boost_has*.ipp; do
+
+ basename=`echo $file | $SED 's/.*boost_\(.*\)\.ipp/\1/'`
+ macroname=`cat $file | grep '^//[ ]*MACRO:' | $SED 's/.*MACRO:[ ]*\([_A-Z0-9]*\).*/\1/'`
+ title=`cat $file | grep '^//[ ]*TITLE:' | $SED 's/.*TITLE:[ ]*\([^ ].*\)/\1/'`
+ namespace=`echo $macroname | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
+
+# echo $file
+# echo $basename
+# echo $macroname
+# echo $title
+
+ ac_ext=$use_ac_ext
+ if test $enable_test = 'yes'; then
+ { echo "$as_me:$LINENO: checking $title (pass expected) " >&5
+echo $ECHO_N "checking $title (pass expected) ... $ECHO_C" >&6; }
+ if test "$cross_compiling" = yes; then
+ { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <boost/config.hpp>
+#include "test.hpp"
+
+#ifdef $macroname
+#include "boost_$basename.ipp"
+#else
+namespace ${namespace} = empty_boost;
+#endif
+
+int main(){ return ${namespace}::test(); }
+
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+ { echo "$as_me:$LINENO: result: OK" >&5
+echo "${ECHO_T}OK" >&6; }
+
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+{ echo "$as_me:$LINENO: result: Failed" >&5
+echo "${ECHO_T}Failed" >&6; }
+ required_undefs="$macroname $required_undefs"
+
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+
+ { echo "$as_me:$LINENO: checking $title (fail expected) " >&5
+echo $ECHO_N "checking $title (fail expected) ... $ECHO_C" >&6; }
+ if test "$cross_compiling" = yes; then
+ { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <boost/config.hpp>
+#include "test.hpp"
+
+#ifndef $macroname
+#include "boost_$basename.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main(){ return ${namespace}::test(); }
+
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+ { echo "$as_me:$LINENO: result: failed" >&5
+echo "${ECHO_T}failed" >&6; }
+ required_defs="$macroname $required_defs"
+
+
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+
+ { echo "$as_me:$LINENO: result: OK" >&5
+echo "${ECHO_T}OK" >&6; }
+
+
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+
+ else
+
+ ac_ext=$use_ac_ext
+ { echo "$as_me:$LINENO: checking $title" >&5
+echo $ECHO_N "checking $title... $ECHO_C" >&6; }
+ if test "$cross_compiling" = yes; then
+ { { echo "$as_me:$LINENO: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&5
+echo "$as_me: error: cannot run test program while cross compiling
+See \`config.log' for more details." >&2;}
+ { (exit 1); exit 1; }; }
+else
+ cat >conftest.$ac_ext <<_ACEOF
+/* confdefs.h. */
+_ACEOF
+cat confdefs.h >>conftest.$ac_ext
+cat >>conftest.$ac_ext <<_ACEOF
+/* end confdefs.h. */
+
+#include <boost/config.hpp>
+#include "test.hpp"
+
+#include "boost_$basename.ipp"
+
+int main(){ return ${namespace}::test(); }
+
+_ACEOF
+rm -f conftest$ac_exeext
+if { (ac_try="$ac_link"
+case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_link") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); } && { ac_try='./conftest$ac_exeext'
+ { (case "(($ac_try" in
+ *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+ *) ac_try_echo=$ac_try;;
+esac
+eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5
+ (eval "$ac_try") 2>&5
+ ac_status=$?
+ echo "$as_me:$LINENO: \$? = $ac_status" >&5
+ (exit $ac_status); }; }; then
+
+ { echo "$as_me:$LINENO: result: Yes" >&5
+echo "${ECHO_T}Yes" >&6; }
+ required_defs="$macroname $required_defs"
+
+
+else
+ echo "$as_me: program exited with status $ac_status" >&5
+echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+( exit $ac_status )
+
+ { echo "$as_me:$LINENO: result: no" >&5
+echo "${ECHO_T}no" >&6; }
+
+
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext conftest.$ac_objext conftest.$ac_ext
+fi
+
+
+
+ fi
+
+done
+
+
+#echo $required_defs
+#echo $required_undefs
+
+if test $enable_test = 'yes'; then
+
+if test "$required_defs" = ""; then
+echo no boost macros need to be defined
+echo no boost macros need to be defined >&5
+else
+echo the following macros need to be defined
+echo $required_defs
+echo the following macros need to be defined >&5
+echo $required_defs >&5
+fi
+if test "$required_undefs" = ""; then
+echo no boost macros need to be undefined
+echo no boost macros need to be undefined >&5
+else
+echo "the following macros need to be undef'ed"
+echo $required_undefs
+echo "the following macros need to be undef'ed" >&5
+echo $required_undefs >&5
+fi
+
+else
+
+date_string=`date`
+
+echo boost_base=$boost_base
+
+cat > user.hpp << EOF
+// (C) Copyright Boost.org 2001.
+// Do not check in modified versions of this file,
+// This file may be customised by the end user, but not by boost.
+
+//
+// Use this file to define a site and compiler specific
+// configuration policy, this version was auto-generated by
+// configure on ${date_string}
+// With the following options:
+// CXX = ${CXX}
+// CXXFLAGS = ${CXXFLAGS}
+// LDFLAGS = ${LDFLAGS}
+// LIBS = ${LIBS}
+//
+
+// define this to disable all config options,
+// excluding the user config. Use if your
+// setup is fully ISO complient, and has no
+// useful extentions, or for autoconf generated
+// setups:
+#ifndef BOOST_NO_CONFIG
+# define BOOST_NO_CONFIG
+#endif
+
+
+// define if you want to disable threading support, even
+// when available:
+// #define BOOST_DISABLE_THREADS
+
+// define if you want the regex library to use the C locale
+// even on Win32:
+// #define BOOST_REGEX_USE_C_LOCALE
+
+// define this is you want the regex library to use the C++
+// locale:
+// #define BOOST_REGEX_USE_CPP_LOCALE
+
+
+//
+// options added by configure:
+//
+EOF
+
+for name in $required_defs; do
+echo '#define '"$name" >> user.hpp
+done
+
+cat_conts=`cat user.hpp`
+
+#
+# post configuration step:
+#
+{ echo "$as_me:$LINENO: checking original configuration " >&5
+echo $ECHO_N "checking original configuration ... $ECHO_C" >&6; }
+rm -f conftest$ac_exeext
+$CXX -I$boost_base $OLD_CXXFLAGS -DBOOST_NO_USER_CONFIG -o conftest$ac_exeext $LDFLAGS $boost_base/libs/config/test/config_info.cpp $LIBS >&5 2>&1
+./conftest >&5 2>&1
+{ echo "$as_me:$LINENO: result: done" >&5
+echo "${ECHO_T}done" >&6; }
+{ echo "$as_me:$LINENO: checking new configuration " >&5
+echo $ECHO_N "checking new configuration ... $ECHO_C" >&6; }
+rm -f conftest$ac_exeext
+$CXX -I$boost_base -I$boost_base/libs/config $OLD_CXXFLAGS -DBOOST_USER_CONFIG='"user.hpp"' -o conftest$ac_exeext $LDFLAGS $boost_base/libs/config/test/config_info.cpp $LIBS >&5 2>&1
+./conftest >&5 2>&1
+{ echo "$as_me:$LINENO: result: done" >&5
+echo "${ECHO_T}done" >&6; }
+
+ac_config_commands="$ac_config_commands default"
+
+
+
+test "x$prefix" = xNONE && prefix=$ac_default_prefix
+# Let make expand exec_prefix.
+test "x$exec_prefix" = xNONE && exec_prefix='${prefix}'
+
+# Transform confdefs.h into DEFS.
+# Protect against shell expansion while executing Makefile rules.
+# Protect against Makefile macro expansion.
+#
+# If the first sed substitution is executed (which looks for macros that
+# take arguments), then branch to the quote section. Otherwise,
+# look for a macro that doesn't take arguments.
+ac_script='
+t clear
+:clear
+s/^[ ]*#[ ]*define[ ][ ]*\([^ (][^ (]*([^)]*)\)[ ]*\(.*\)/-D\1=\2/g
+t quote
+s/^[ ]*#[ ]*define[ ][ ]*\([^ ][^ ]*\)[ ]*\(.*\)/-D\1=\2/g
+t quote
+b any
+:quote
+s/[ `~#$^&*(){}\\|;'\''"<>?]/\\&/g
+s/\[/\\&/g
+s/\]/\\&/g
+s/\$/$$/g
+H
+:any
+${
+ g
+ s/^\n//
+ s/\n/ /g
+ p
+}
+'
+DEFS=`sed -n "$ac_script" confdefs.h`
+
+
+ac_libobjs=
+ac_ltlibobjs=
+for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue
+ # 1. Remove the extension, and $U if already installed.
+ ac_script='s/\$U\././;s/\.o$//;s/\.obj$//'
+ ac_i=`echo "$ac_i" | sed "$ac_script"`
+ # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR
+ # will be set to the directory where LIBOBJS objects are built.
+ ac_libobjs="$ac_libobjs \${LIBOBJDIR}$ac_i\$U.$ac_objext"
+ ac_ltlibobjs="$ac_ltlibobjs \${LIBOBJDIR}$ac_i"'$U.lo'
+done
+LIBOBJS=$ac_libobjs
+
+LTLIBOBJS=$ac_ltlibobjs
+
+
+
+: ${CONFIG_STATUS=./config.status}
+ac_clean_files_save=$ac_clean_files
+ac_clean_files="$ac_clean_files $CONFIG_STATUS"
+{ echo "$as_me:$LINENO: creating $CONFIG_STATUS" >&5
+echo "$as_me: creating $CONFIG_STATUS" >&6;}
+cat >$CONFIG_STATUS <<_ACEOF
+#! $SHELL
+# Generated by $as_me.
+# Run this file to recreate the current configuration.
+# Compiler output produced by configure, useful for debugging
+# configure, is in config.log if it exists.
+
+debug=false
+ac_cs_recheck=false
+ac_cs_silent=false
+SHELL=\${CONFIG_SHELL-$SHELL}
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+## --------------------- ##
+## M4sh Initialization. ##
+## --------------------- ##
+
+# Be more Bourne compatible
+DUALCASE=1; export DUALCASE # for MKS sh
+if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
+ emulate sh
+ NULLCMD=:
+ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
+ # is contrary to our usage. Disable this feature.
+ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
+else
+ case `(set -o) 2>/dev/null` in
+ *posix*) set -o posix ;;
+esac
+
+fi
+
+
+
+
+# PATH needs CR
+# Avoid depending upon Character Ranges.
+as_cr_letters='abcdefghijklmnopqrstuvwxyz'
+as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ'
+as_cr_Letters=$as_cr_letters$as_cr_LETTERS
+as_cr_digits='0123456789'
+as_cr_alnum=$as_cr_Letters$as_cr_digits
+
+# The user is always right.
+if test "${PATH_SEPARATOR+set}" != set; then
+ echo "#! /bin/sh" >conf$$.sh
+ echo "exit 0" >>conf$$.sh
+ chmod +x conf$$.sh
+ if (PATH="/nonexistent;."; conf$$.sh) >/dev/null 2>&1; then
+ PATH_SEPARATOR=';'
+ else
+ PATH_SEPARATOR=:
+ fi
+ rm -f conf$$.sh
+fi
+
+# Support unset when possible.
+if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
+ as_unset=unset
+else
+ as_unset=false
+fi
+
+
+# IFS
+# We need space, tab and new line, in precisely that order. Quoting is
+# there to prevent editors from complaining about space-tab.
+# (If _AS_PATH_WALK were called with IFS unset, it would disable word
+# splitting by setting IFS to empty value.)
+as_nl='
+'
+IFS=" "" $as_nl"
+
+# Find who we are. Look in the path if we contain no directory separator.
+case $0 in
+ *[\\/]* ) as_myself=$0 ;;
+ *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+ IFS=$as_save_IFS
+ test -z "$as_dir" && as_dir=.
+ test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break
+done
+IFS=$as_save_IFS
+
+ ;;
+esac
+# We did not find ourselves, most probably we were run as `sh COMMAND'
+# in which case we are not to be found in the path.
+if test "x$as_myself" = x; then
+ as_myself=$0
+fi
+if test ! -f "$as_myself"; then
+ echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2
+ { (exit 1); exit 1; }
+fi
+
+# Work around bugs in pre-3.0 UWIN ksh.
+for as_var in ENV MAIL MAILPATH
+do ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+done
+PS1='$ '
+PS2='> '
+PS4='+ '
+
+# NLS nuisances.
+for as_var in \
+ LANG LANGUAGE LC_ADDRESS LC_ALL LC_COLLATE LC_CTYPE LC_IDENTIFICATION \
+ LC_MEASUREMENT LC_MESSAGES LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER \
+ LC_TELEPHONE LC_TIME
+do
+ if (set +x; test -z "`(eval $as_var=C; export $as_var) 2>&1`"); then
+ eval $as_var=C; export $as_var
+ else
+ ($as_unset $as_var) >/dev/null 2>&1 && $as_unset $as_var
+ fi
+done
+
+# Required to use basename.
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then
+ as_basename=basename
+else
+ as_basename=false
+fi
+
+
+# Name of the executable.
+as_me=`$as_basename -- "$0" ||
+$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \
+ X"$0" : 'X\(//\)$' \| \
+ X"$0" : 'X\(/\)' \| . 2>/dev/null ||
+echo X/"$0" |
+ sed '/^.*\/\([^/][^/]*\)\/*$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\/\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+
+# CDPATH.
+$as_unset CDPATH
+
+
+
+ as_lineno_1=$LINENO
+ as_lineno_2=$LINENO
+ test "x$as_lineno_1" != "x$as_lineno_2" &&
+ test "x`expr $as_lineno_1 + 1`" = "x$as_lineno_2" || {
+
+ # Create $as_me.lineno as a copy of $as_myself, but with $LINENO
+ # uniformly replaced by the line number. The first 'sed' inserts a
+ # line-number line after each line using $LINENO; the second 'sed'
+ # does the real work. The second script uses 'N' to pair each
+ # line-number line with the line containing $LINENO, and appends
+ # trailing '-' during substitution so that $LINENO is not a special
+ # case at line end.
+ # (Raja R Harinath suggested sed '=', and Paul Eggert wrote the
+ # scripts with optimization help from Paolo Bonzini. Blame Lee
+ # E. McMahon (1931-1989) for sed's syntax. :-)
+ sed -n '
+ p
+ /[$]LINENO/=
+ ' <$as_myself |
+ sed '
+ s/[$]LINENO.*/&-/
+ t lineno
+ b
+ :lineno
+ N
+ :loop
+ s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/
+ t loop
+ s/-\n.*//
+ ' >$as_me.lineno &&
+ chmod +x "$as_me.lineno" ||
+ { echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2
+ { (exit 1); exit 1; }; }
+
+ # Don't try to exec as it changes $[0], causing all sort of problems
+ # (the dirname of $[0] is not the place where we might find the
+ # original and so on. Autoconf is especially sensitive to this).
+ . "./$as_me.lineno"
+ # Exit status is that of the last command.
+ exit
+}
+
+
+if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then
+ as_dirname=dirname
+else
+ as_dirname=false
+fi
+
+ECHO_C= ECHO_N= ECHO_T=
+case `echo -n x` in
+-n*)
+ case `echo 'x\c'` in
+ *c*) ECHO_T=' ';; # ECHO_T is single tab character.
+ *) ECHO_C='\c';;
+ esac;;
+*)
+ ECHO_N='-n';;
+esac
+
+if expr a : '\(a\)' >/dev/null 2>&1 &&
+ test "X`expr 00001 : '.*\(...\)'`" = X001; then
+ as_expr=expr
+else
+ as_expr=false
+fi
+
+rm -f conf$$ conf$$.exe conf$$.file
+if test -d conf$$.dir; then
+ rm -f conf$$.dir/conf$$.file
+else
+ rm -f conf$$.dir
+ mkdir conf$$.dir
+fi
+echo >conf$$.file
+if ln -s conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s='ln -s'
+ # ... but there are two gotchas:
+ # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail.
+ # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable.
+ # In both cases, we have to default to `cp -p'.
+ ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe ||
+ as_ln_s='cp -p'
+elif ln conf$$.file conf$$ 2>/dev/null; then
+ as_ln_s=ln
+else
+ as_ln_s='cp -p'
+fi
+rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file
+rmdir conf$$.dir 2>/dev/null
+
+if mkdir -p . 2>/dev/null; then
+ as_mkdir_p=:
+else
+ test -d ./-p && rmdir ./-p
+ as_mkdir_p=false
+fi
+
+if test -x / >/dev/null 2>&1; then
+ as_test_x='test -x'
+else
+ if ls -dL / >/dev/null 2>&1; then
+ as_ls_L_option=L
+ else
+ as_ls_L_option=
+ fi
+ as_test_x='
+ eval sh -c '\''
+ if test -d "$1"; then
+ test -d "$1/.";
+ else
+ case $1 in
+ -*)set "./$1";;
+ esac;
+ case `ls -ld'$as_ls_L_option' "$1" 2>/dev/null` in
+ ???[sx]*):;;*)false;;esac;fi
+ '\'' sh
+ '
+fi
+as_executable_p=$as_test_x
+
+# Sed expression to map a string onto a valid CPP name.
+as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'"
+
+# Sed expression to map a string onto a valid variable name.
+as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'"
+
+
+exec 6>&1
+
+# Save the log message, to keep $[0] and so on meaningful, and to
+# report actual input values of CONFIG_FILES etc. instead of their
+# values after options handling.
+ac_log="
+This file was extended by $as_me, which was
+generated by GNU Autoconf 2.61. Invocation command line was
+
+ CONFIG_FILES = $CONFIG_FILES
+ CONFIG_HEADERS = $CONFIG_HEADERS
+ CONFIG_LINKS = $CONFIG_LINKS
+ CONFIG_COMMANDS = $CONFIG_COMMANDS
+ $ $0 $@
+
+on `(hostname || uname -n) 2>/dev/null | sed 1q`
+"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<_ACEOF
+# Files that config.status was made for.
+config_commands="$ac_config_commands"
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+ac_cs_usage="\
+\`$as_me' instantiates files from templates according to the
+current configuration.
+
+Usage: $0 [OPTIONS] [FILE]...
+
+ -h, --help print this help, then exit
+ -V, --version print version number and configuration settings, then exit
+ -q, --quiet do not print progress messages
+ -d, --debug don't remove temporary files
+ --recheck update $as_me by reconfiguring in the same conditions
+
+Configuration commands:
+$config_commands
+
+Report bugs to <bug-autoconf@gnu.org>."
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+ac_cs_version="\\
+config.status
+configured by $0, generated by GNU Autoconf 2.61,
+ with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
+
+Copyright (C) 2006 Free Software Foundation, Inc.
+This config.status script is free software; the Free Software Foundation
+gives unlimited permission to copy, distribute and modify it."
+
+ac_pwd='$ac_pwd'
+srcdir='$srcdir'
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+# If no file are specified by the user, then we need to provide default
+# value. By we need to know if files were specified by the user.
+ac_need_defaults=:
+while test $# != 0
+do
+ case $1 in
+ --*=*)
+ ac_option=`expr "X$1" : 'X\([^=]*\)='`
+ ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'`
+ ac_shift=:
+ ;;
+ *)
+ ac_option=$1
+ ac_optarg=$2
+ ac_shift=shift
+ ;;
+ esac
+
+ case $ac_option in
+ # Handling of the options.
+ -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
+ ac_cs_recheck=: ;;
+ --version | --versio | --versi | --vers | --ver | --ve | --v | -V )
+ echo "$ac_cs_version"; exit ;;
+ --debug | --debu | --deb | --de | --d | -d )
+ debug=: ;;
+ --he | --h | --help | --hel | -h )
+ echo "$ac_cs_usage"; exit ;;
+ -q | -quiet | --quiet | --quie | --qui | --qu | --q \
+ | -silent | --silent | --silen | --sile | --sil | --si | --s)
+ ac_cs_silent=: ;;
+
+ # This is an error.
+ -*) { echo "$as_me: error: unrecognized option: $1
+Try \`$0 --help' for more information." >&2
+ { (exit 1); exit 1; }; } ;;
+
+ *) ac_config_targets="$ac_config_targets $1"
+ ac_need_defaults=false ;;
+
+ esac
+ shift
+done
+
+ac_configure_extra_args=
+
+if $ac_cs_silent; then
+ exec 6>/dev/null
+ ac_configure_extra_args="$ac_configure_extra_args --silent"
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+if \$ac_cs_recheck; then
+ echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6
+ CONFIG_SHELL=$SHELL
+ export CONFIG_SHELL
+ exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion
+fi
+
+_ACEOF
+cat >>$CONFIG_STATUS <<\_ACEOF
+exec 5>>config.log
+{
+ echo
+ sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX
+## Running $as_me. ##
+_ASBOX
+ echo "$ac_log"
+} >&5
+
+_ACEOF
+cat >>$CONFIG_STATUS <<_ACEOF
+#
+# INIT-COMMANDS
+#
+
+cat_conts="$cat_conts"
+
+
+
+_ACEOF
+
+cat >>$CONFIG_STATUS <<\_ACEOF
+
+# Handling of arguments.
+for ac_config_target in $ac_config_targets
+do
+ case $ac_config_target in
+ "default") CONFIG_COMMANDS="$CONFIG_COMMANDS default" ;;
+
+ *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
+echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
+ { (exit 1); exit 1; }; };;
+ esac
+done
+
+
+# If the user did not use the arguments to specify the items to instantiate,
+# then the envvar interface is used. Set only those that are not.
+# We use the long form for the default assignment because of an extremely
+# bizarre bug on SunOS 4.1.3.
+if $ac_need_defaults; then
+ test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands
+fi
+
+# Have a temporary directory for convenience. Make it in the build tree
+# simply because there is no reason against having it here, and in addition,
+# creating and moving files from /tmp can sometimes cause problems.
+# Hook for its removal unless debugging.
+# Note that there is a small window in which the directory will not be cleaned:
+# after its creation but before its name has been assigned to `$tmp'.
+$debug ||
+{
+ tmp=
+ trap 'exit_status=$?
+ { test -z "$tmp" || test ! -d "$tmp" || rm -fr "$tmp"; } && exit $exit_status
+' 0
+ trap '{ (exit 1); exit 1; }' 1 2 13 15
+}
+# Create a (secure) tmp directory for tmp files.
+
+{
+ tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` &&
+ test -n "$tmp" && test -d "$tmp"
+} ||
+{
+ tmp=./conf$$-$RANDOM
+ (umask 077 && mkdir "$tmp")
+} ||
+{
+ echo "$me: cannot create a temporary directory in ." >&2
+ { (exit 1); exit 1; }
+}
+
+
+for ac_tag in :C $CONFIG_COMMANDS
+do
+ case $ac_tag in
+ :[FHLC]) ac_mode=$ac_tag; continue;;
+ esac
+ case $ac_mode$ac_tag in
+ :[FHL]*:*);;
+ :L* | :C*:*) { { echo "$as_me:$LINENO: error: Invalid tag $ac_tag." >&5
+echo "$as_me: error: Invalid tag $ac_tag." >&2;}
+ { (exit 1); exit 1; }; };;
+ :[FH]-) ac_tag=-:-;;
+ :[FH]*) ac_tag=$ac_tag:$ac_tag.in;;
+ esac
+ ac_save_IFS=$IFS
+ IFS=:
+ set x $ac_tag
+ IFS=$ac_save_IFS
+ shift
+ ac_file=$1
+ shift
+
+ case $ac_mode in
+ :L) ac_source=$1;;
+ :[FH])
+ ac_file_inputs=
+ for ac_f
+ do
+ case $ac_f in
+ -) ac_f="$tmp/stdin";;
+ *) # Look for the file first in the build tree, then in the source tree
+ # (if the path is not absolute). The absolute path cannot be DOS-style,
+ # because $ac_f cannot contain `:'.
+ test -f "$ac_f" ||
+ case $ac_f in
+ [\\/$]*) false;;
+ *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";;
+ esac ||
+ { { echo "$as_me:$LINENO: error: cannot find input file: $ac_f" >&5
+echo "$as_me: error: cannot find input file: $ac_f" >&2;}
+ { (exit 1); exit 1; }; };;
+ esac
+ ac_file_inputs="$ac_file_inputs $ac_f"
+ done
+
+ # Let's still pretend it is `configure' which instantiates (i.e., don't
+ # use $as_me), people would be surprised to read:
+ # /* config.h. Generated by config.status. */
+ configure_input="Generated from "`IFS=:
+ echo $* | sed 's|^[^:]*/||;s|:[^:]*/|, |g'`" by configure."
+ if test x"$ac_file" != x-; then
+ configure_input="$ac_file. $configure_input"
+ { echo "$as_me:$LINENO: creating $ac_file" >&5
+echo "$as_me: creating $ac_file" >&6;}
+ fi
+
+ case $ac_tag in
+ *:-:* | *:-) cat >"$tmp/stdin";;
+ esac
+ ;;
+ esac
+
+ ac_dir=`$as_dirname -- "$ac_file" ||
+$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$ac_file" : 'X\(//\)[^/]' \| \
+ X"$ac_file" : 'X\(//\)$' \| \
+ X"$ac_file" : 'X\(/\)' \| . 2>/dev/null ||
+echo X"$ac_file" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ { as_dir="$ac_dir"
+ case $as_dir in #(
+ -*) as_dir=./$as_dir;;
+ esac
+ test -d "$as_dir" || { $as_mkdir_p && mkdir -p "$as_dir"; } || {
+ as_dirs=
+ while :; do
+ case $as_dir in #(
+ *\'*) as_qdir=`echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #(
+ *) as_qdir=$as_dir;;
+ esac
+ as_dirs="'$as_qdir' $as_dirs"
+ as_dir=`$as_dirname -- "$as_dir" ||
+$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
+ X"$as_dir" : 'X\(//\)[^/]' \| \
+ X"$as_dir" : 'X\(//\)$' \| \
+ X"$as_dir" : 'X\(/\)' \| . 2>/dev/null ||
+echo X"$as_dir" |
+ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)[^/].*/{
+ s//\1/
+ q
+ }
+ /^X\(\/\/\)$/{
+ s//\1/
+ q
+ }
+ /^X\(\/\).*/{
+ s//\1/
+ q
+ }
+ s/.*/./; q'`
+ test -d "$as_dir" && break
+ done
+ test -z "$as_dirs" || eval "mkdir $as_dirs"
+ } || test -d "$as_dir" || { { echo "$as_me:$LINENO: error: cannot create directory $as_dir" >&5
+echo "$as_me: error: cannot create directory $as_dir" >&2;}
+ { (exit 1); exit 1; }; }; }
+ ac_builddir=.
+
+case "$ac_dir" in
+.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;;
+*)
+ ac_dir_suffix=/`echo "$ac_dir" | sed 's,^\.[\\/],,'`
+ # A ".." for each directory in $ac_dir_suffix.
+ ac_top_builddir_sub=`echo "$ac_dir_suffix" | sed 's,/[^\\/]*,/..,g;s,/,,'`
+ case $ac_top_builddir_sub in
+ "") ac_top_builddir_sub=. ac_top_build_prefix= ;;
+ *) ac_top_build_prefix=$ac_top_builddir_sub/ ;;
+ esac ;;
+esac
+ac_abs_top_builddir=$ac_pwd
+ac_abs_builddir=$ac_pwd$ac_dir_suffix
+# for backward compatibility:
+ac_top_builddir=$ac_top_build_prefix
+
+case $srcdir in
+ .) # We are building in place.
+ ac_srcdir=.
+ ac_top_srcdir=$ac_top_builddir_sub
+ ac_abs_top_srcdir=$ac_pwd ;;
+ [\\/]* | ?:[\\/]* ) # Absolute name.
+ ac_srcdir=$srcdir$ac_dir_suffix;
+ ac_top_srcdir=$srcdir
+ ac_abs_top_srcdir=$srcdir ;;
+ *) # Relative name.
+ ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix
+ ac_top_srcdir=$ac_top_build_prefix$srcdir
+ ac_abs_top_srcdir=$ac_pwd/$srcdir ;;
+esac
+ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix
+
+
+ case $ac_mode in
+
+
+
+ :C) { echo "$as_me:$LINENO: executing $ac_file commands" >&5
+echo "$as_me: executing $ac_file commands" >&6;}
+ ;;
+ esac
+
+
+ case $ac_file$ac_mode in
+ "default":C)
+cat > user.hpp << EEEOF
+${cat_conts}
+EEEOF
+cat << EEEOF
+
+Adjustments to boost configuration have been written to
+user.hpp. Copy this to boost/config/user.hpp to use "as is",
+or define BOOST_SITE_CONFIG to point to its location.
+
+TREAT THIS FILE WITH CARE.
+Autoconf generated options are not infallible!
+
+EEEOF
+ ;;
+
+ esac
+done # for ac_tag
+
+
+{ (exit 0); exit 0; }
+_ACEOF
+chmod +x $CONFIG_STATUS
+ac_clean_files=$ac_clean_files_save
+
+
+# configure is writing to config.log, and then calls config.status.
+# config.status does its own redirection, appending to config.log.
+# Unfortunately, on DOS this fails, as config.log is still kept open
+# by configure, so config.status won't be able to write to it; its
+# output is simply discarded. So we exec the FD to /dev/null,
+# effectively closing config.log, so it can be properly (re)opened and
+# appended to by config.status. When coming back to configure, we
+# need to make the FD available again.
+if test "$no_create" != yes; then
+ ac_cs_success=:
+ ac_config_status_args=
+ test "$silent" = yes &&
+ ac_config_status_args="$ac_config_status_args --quiet"
+ exec 5>/dev/null
+ $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false
+ exec 5>>config.log
+ # Use ||, not &&, to avoid exiting from the if with $? = 1, which
+ # would make configure fail if this is the last instruction.
+ $ac_cs_success || { (exit 1); exit 1; }
+fi
+
+
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/doc/Jamfile.v2 b/doc/Jamfile.v2
new file mode 100644
index 0000000..176a5a7
--- /dev/null
+++ b/doc/Jamfile.v2
@@ -0,0 +1,66 @@
+# Boost.Config
+#
+# Copyright (c) 2001 Beman Dawes
+# Copyright (c) 2001 Vesa Karvonen
+# Copyright (c) 2001 John Maddock
+#
+# Distributed under the Boost Software License, Version 1.0.
+# (See accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt)
+
+
+# Quickbook
+# -----------------------------------------------------------------------------
+
+import quickbook ;
+
+path-constant boost-images : ../../../doc/src/images ;
+
+xml config
+ :
+ config.qbk
+ ;
+
+boostbook standalone
+ :
+ config
+ :
+ <xsl:param>toc.max.depth=2
+ <xsl:param>toc.section.depth=2
+ <xsl:param>chunk.section.depth=1
+ <xsl:param>boost.root=../../../..
+
+ # PDF Options:
+ <format>pdf:<xsl:param>xep.extensions=1
+ # TOC generation: this is needed for FOP 0.2, but must not be set to zero for FOP-0.9!
+ <format>pdf:<xsl:param>fop.extensions=0
+ <format>pdf:<xsl:param>fop1.extensions=0
+ # No indent on body text:
+ <format>pdf:<xsl:param>body.start.indent=0pt
+ # Margin size:
+ <format>pdf:<xsl:param>page.margin.inner=0.5in
+ # Margin size:
+ <format>pdf:<xsl:param>page.margin.outer=0.5in
+ # Paper type = A4
+ <format>pdf:<xsl:param>paper.type=A4
+ # Yes, we want graphics for admonishments:
+ <xsl:param>admon.graphics=1
+ # Set this one for PDF generation *only*:
+ # default pnd graphics are awful in PDF form,
+ # better use SVG's instead:
+ <format>pdf:<xsl:param>admon.graphics.extension=".svg"
+ <format>pdf:<xsl:param>use.role.for.mediaobject=1
+ <format>pdf:<xsl:param>preferred.mediaobject.role=print
+ <format>pdf:<xsl:param>admon.graphics.path=$(boost-images)/
+ <format>pdf:<xsl:param>boost.url.prefix=http://www.boost.org/doc/libs/release/libs/config/doc/html
+ ;
+
+
+install pdfinstall : standalone/<format>pdf : <location>. <install-type>PDF ;
+explicit pdfinstall ;
+
+###############################################################################
+alias boostdoc ;
+explicit boostdoc ;
+alias boostrelease : standalone ;
+explicit boostrelease ;
diff --git a/doc/acknowledgements.qbk b/doc/acknowledgements.qbk
new file mode 100644
index 0000000..5c1a25b
--- /dev/null
+++ b/doc/acknowledgements.qbk
@@ -0,0 +1,32 @@
+[/
+ Boost.Config
+
+ Copyright (c) 2001 Beman Dawes
+ Copyright (c) 2001 Vesa Karvonen
+ Copyright (c) 2001 John Maddock
+
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+]
+
+[section Acknowledgements]
+
+Beman Dawes provided the original `config.hpp` and part of this document.
+
+Vesa Karvonen provided a description of the principles (see
+[link boost_config.rationale rationale]) and put together an early version of
+the current configuration setup.
+
+John Maddock put together the configuration current code, the test
+programs, the configuration script and the reference section of this
+document.
+
+Matias Capeletto converted the docs to quickbook format.
+
+Numerous boost members, past and present, have contributed fixes to boost's
+configuration.
+
+[endsect]
+
+
diff --git a/doc/build_time.qbk b/doc/build_time.qbk
new file mode 100644
index 0000000..d0c578a
--- /dev/null
+++ b/doc/build_time.qbk
@@ -0,0 +1,65 @@
+
+[section:build_config Build Time Configuration]
+
+There are times when you want to control whether a build target gets built or not, based
+on what features the compiler supports. For example, suppose you have a test file
+"test_constexpr_128.cpp" which requires three key features in order to build:
+
+* The `constexpr` keyword as detected by BOOST_NO_CXX11_CONSTEXPR.
+* User defined literals, as detected by BOOST_NO_CXX11_USER_DEFINED_LITERALS.
+* The `__int128` data type, as detected by BOOST_HAS_INT128.
+
+Clearly we know that if these features are not supported by the compiler, then
+there's simply no point in even trying to build the test program. The main advantages being:
+
+* Faster compile times - build configuration uses lightweight tests the results of which are also cached.
+* Less noise in build output - there's no reason to be faced with pages of template
+instantiation backtrace if we know the file can never compile anyway.
+* Less noise in the online test results - the test will show up as blank, rather than as a fail
+in the online test matrix.
+* A better experience for end users building all of Boost, if those libraries which can not be built
+for the current target compiler are simply skipped, rather than generating pages of error output.
+
+Returning to our example, the test case is probably executed in it's Jamfile via the "run" rule:
+
+ run test_constexpr_128.cpp ;
+
+We now need to make this target conditional on the necessary features.
+We can do that by first importing the necessary rule at the start of the Jamfile:
+
+ import path-to-config-lib/checks/config : requires ;
+
+Assuming that the test case is in the usual directory:
+
+ libs/yourlib/test
+
+then the import rule will actually be:
+
+ import ../../config/checks/config : requires ;
+
+Then add a "requires" rule invocation to the requirements section of the target:
+
+ run test_constexpr_128.cpp
+ : : : #requirements:
+ [ requires cxx11_constexpr cxx11_user_defined_literals int128 ] ;
+
+Notice that multiple arguments can be added to the requires rule, and that these are
+always the same as the Boost.Config macro name, but in lower case and with the ['boost_no_]
+or ['boost_has_] prefix removed.
+
+When building the above example, you will see at the start of the build process the results
+of the configuration, for example GCC in C++11 mode gives:
+
+ - Boost.Config Feature Check: int128 : yes
+ - Boost.Config Feature Check: cxx11_constexpr : yes
+ - Boost.Config Feature Check: cxx11_user_defined_literals : yes
+
+That's all there is to this handy feature, should at any time you be unsure of the feature-test
+names you can pass to the "requires" rule, then search for the Boost.Config macro of interest in
+libs/config/checks/Jamfiles.v2, and the name of the feature check will follow it.
+
+And finally, this feature is built around the Boost.Build built in rule ['check-target-builds]
+which can be used to perform more generalized build-time feature testing. The checks in this
+library are provided as a convenient shorthand without the need for you to write the test cases yourself.
+
+[endsect]
\ No newline at end of file
diff --git a/doc/config.qbk b/doc/config.qbk
new file mode 100644
index 0000000..3dc11ba
--- /dev/null
+++ b/doc/config.qbk
@@ -0,0 +1,62 @@
+[article Boost.Config
+ [quickbook 1.4]
+ [authors [Beman Dawes, Vesa Karvonen, John Maddock] ]
+ [copyright 2001-2007 Beman Dawes, Vesa Karvonen, John Maddock]
+ [category broken compiler workarounds]
+ [id config]
+ [dirname config]
+ [purpose
+ Helps boost library developers adapt to compiler idiosyncrasies; not intended for library users.
+ ]
+ [source-mode c++]
+ [license
+Distributed under the Boost Software License, Version 1.0.
+(See accompanying file LICENSE_1_0.txt or copy at
+[@http://www.boost.org/LICENSE_1_0.txt])
+ ]
+]
+
+
+[/ Cited Boost resources ]
+
+[def __BOOST_REGRESSION_TEST_DRIVER__ [@../../../../tools/regression/doc/index.html boost regression test driver]]
+[def __BOOST_CONFIG_HEADER__ [@../../../../boost/config.hpp <boost/config.hpp>]]
+[def __BOOST_CONFIG_USER_HEADER__ [@../../../../boost/config/user.hpp <boost/config/user.hpp>]]
+[def __BOOST_CONFIG_SUFFIX_HEADER__ [@../../../../boost/config/detail/suffix.hpp <boost/config/detail/suffix.hpp>]]
+[def __BOOST_CONFIG_DIR__ ['<boost-root>]`/boost/config/`]
+
+
+[/ Other web resources ]
+
+[def __STL_PORT__ [@http://stlport.sourceforge.net STLport]]
+[def __BOOST_TRACKER__ [@https://svn.boost.org/trac/boost/newticket Trac]]
+[def __CORE_LANGUAGE_DR337__ [@http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#337 Core Language DR337]]
+[def __PRINCIPLES_AND_PATTERNS_ARTICLE__ [@http://www.objectmentor.com/resources/articles/Principles_and_Patterns.pdf following article]]
+
+
+[/ Icons ]
+
+[def __NOTE__ [$images/note.png]]
+[def __ALERT__ [$images/caution.png]]
+[def __DETAIL__ [$images/note.png]]
+[def __TIP__ [$images/tip.png]]
+[def __QUESTION_MARK__ [$images/question.png]]
+[def __SPACE__ [$images/space.png]]
+[def __GO_TO__ [$images/callouts/R.png]]
+
+
+[/ Document files ]
+
+
+[include configuring_boost.qbk]
+[include macro_reference.qbk]
+[include build_time.qbk]
+[include cstdint.qbk]
+[include guidelines.qbk]
+[include rationale.qbk]
+[include acknowledgements.qbk]
+
+
+
+
+
diff --git a/doc/configuring_boost.qbk b/doc/configuring_boost.qbk
new file mode 100644
index 0000000..ee86a9a
--- /dev/null
+++ b/doc/configuring_boost.qbk
@@ -0,0 +1,440 @@
+[/
+ Boost.Config
+
+ Copyright (c) 2001 Beman Dawes
+ Copyright (c) 2001 Vesa Karvonen
+ Copyright (c) 2001 John Maddock
+
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+]
+
+
+[section Configuring Boost for Your Platform]
+
+
+[section Using the default boost configuration]
+
+Boost comes already configured for most common compilers and platforms; you
+should be able to use boost "as is". Since the compiler is configured
+separately from the standard library, the default configuration should work
+even if you replace the compiler's standard library with a third-party
+standard library (like __STL_PORT__).
+
+Using boost "as is" without trying to reconfigure is the recommended method
+for using boost. You can, however, run the configure script if you want to,
+and there are regression tests provided that allow you to test the current
+boost configuration with your particular compiler setup.
+
+Boost library users can request support for additional compilers or platforms
+by visiting our __BOOST_TRACKER__ and submitting a support request.
+
+[endsect]
+
+[section The <boost/config.hpp> header]
+
+Boost library implementations access configuration macros via
+
+ #include ``__BOOST_CONFIG_HEADER__``
+
+While Boost library users are not required to include that file directly, or
+use those configuration macros, such use is acceptable. The configuration
+macros are documented as to their purpose, usage, and limitations which makes
+them usable by both Boost library and user code.
+
+Boost [link config_info_macros informational] or [link config_helpers helper]
+macros are designed for use by Boost users as well as for our own internal use.
+Note however, that the [link config_features feature test] and
+[link config_defects defect test] macros were designed for internal use by
+Boost libraries, not user code, so they can change at any time (though no
+gratuitous changes are made to them). Boost library problems resulting from
+changes to the configuration macros are caught by the Boost regression tests,
+so the Boost libraries are updated to account for those changes. By contrast,
+Boost library user code can be adversely affected by changes to the macros
+without warning. The best way to keep abreast of changes to the macros used in
+user code is to monitor the discussions on the Boost developers list.
+
+[endsect]
+
+[#config_config_script]
+
+[section Using the configure script]
+
+[important
+This configure script only sets up the Boost headers for use with a particular
+compiler. It has no effect on Boost.Build, or how the libraries are built.
+]
+
+If you know that boost is incorrectly configured for your particular setup, and
+you are on a UNIX like platform, then you may want to try and improve things by
+running the boost configure script. From a shell command prompt you will need to
+cd into ['<boost-root>]`/libs/config/` and type:
+
+[: `sh ./configure` ]
+
+you will see a list of the items being checked as the script works its way
+through the regression tests. Note that the configure script only really
+auto-detects your compiler if it's called g++, c++ or CC. If you are using
+some other compiler you will need to set one or more of the following
+environment variables:
+
+
+[table
+[[Variable][Description ]]
+[[CXX ][The name of the compiler, for example `c++`. ]]
+[[CXXFLAGS][The compiler flags to use, for example `-O2`. ]]
+[[LDFLAGS ][The linker flags to use, for example `-L/mypath`. ]]
+[[LIBS ][Any libraries to link in, for example `-lpthread`.]]
+]
+
+For example to run the configure script with HP aCC, you might use something
+like:
+
+ export CXX="aCC"
+ export CXXFLAGS="-Aa -DAportable -D__HPACC_THREAD_SAFE_RB_TREE \
+ -DRWSTD_MULTI_THREAD -DRW_MULTI_THREAD -D_REENTRANT -D_THREAD_SAFE"
+ export LDFLAGS="-DAportable"
+ export LIBS="-lpthread"
+ sh ./configure
+
+However you run the configure script, when it finishes you will find a
+new header -`user.hpp`- located in the ['<boost-root>]`/libs/config/`
+directory. [*Note that configure does not install this header into your
+boost include path by default]. This header contains all the options
+generated by the configure script, plus a header-section that contains
+the user settable options from the default version of
+__BOOST_CONFIG_USER_HEADER__ (located under __BOOST_CONFIG_DIR__).
+There are two ways you can use this header:
+
+* [*Option 1:] copy the header into __BOOST_CONFIG_DIR__ so that it replaces
+the default user.hpp provided by boost. This option allows only one
+configure-generated setup; boost developers should avoid this option,
+as it incurs the danger of accidentally committing a configure-modified
+__BOOST_CONFIG_USER_HEADER__ to the svn repository (something you will not
+be thanked for!).
+
+* [*Option 2:] give the header a more memorable name, and place it somewhere
+convenient; then, define the macro `BOOST_USER_CONFIG` to point to it. For
+example create a new sub-directory __BOOST_CONFIG_DIR__ `user/`, and copy
+the header there; for example as `multithread-gcc-config.hpp`. Then, when
+compiling add the command line option:
+`-DBOOST_USER_CONFIG="<boost/config/user/multithread-gcc-config.hpp>"`, and
+boost will use the new configuration header. This option allows you to
+generate more than one configuration header, and to keep them separate
+from the boost source - so that updates to the source do not interfere
+with your configuration.
+
+[endsect]
+
+[#config_user_settable]
+
+[section User settable options]
+
+There are some configuration-options that represent user choices, rather
+than compiler defects or platform specific options. These are listed in
+`<boost/config/user.hpp>` and at the start of a configure-generated `user.hpp`
+header. You can define these on the command line, or by editing
+`<boost/config/user.hpp>`, they are listed in the following table:
+
+
+
+[table
+
+[[Macro ][Description ]]
+
+[[`BOOST_USER_CONFIG`][
+When defined, it should point to the name of the user configuration file
+to include prior to any boost configuration files. When not defined,
+defaults to [@../../../../boost/config/user.hpp `<boost/config/user.hpp>`].
+]]
+[[`BOOST_COMPILER_CONFIG`][
+When defined, it should point to the name of the compiler configuration
+file to use. Defining this cuts out the compiler selection logic, and
+eliminates the dependency on the header containing that logic. For
+example if you are using gcc, then you could define BOOST_COMPILER_CONFIG
+to [@../../../../boost/config/compiler/gcc.hpp `<boost/config/compiler/gcc.hpp>`].
+]]
+[[`BOOST_STDLIB_CONFIG`][
+When defined, it should point to the name of the standard library
+configuration file to use. Defining this cuts out the standard library
+selection logic, and eliminates the dependency on the header containing
+that logic. For example if you are using STLport, then you could define
+`BOOST_STDLIB_CONFIG` to
+[@../../../../boost/config/stdlib/stlport.hpp `<boost/config/stdlib/stlport.hpp>`].
+]]
+[[`BOOST_PLATFORM_CONFIG`][
+When defined, it should point to the name of the platform configuration
+file to use. Defining this cuts out the platform selection logic, and
+eliminates the dependency on the header containing that logic. For example
+if you are compiling on linux, then you could define `BOOST_PLATFORM_CONFIG`
+to [@../../../../boost/config/platform/linux.hpp `<boost/config/platform/linux.hpp>`].
+]]
+[[`BOOST_NO_COMPILER_CONFIG`][
+When defined, no compiler configuration file is selected or included,
+define when the compiler is fully conformant with the standard, or where
+the user header (see `BOOST_USER_CONFIG`), has had any options necessary
+added to it, for example by an autoconf generated configure script.
+]]
+[[`BOOST_NO_STDLIB_CONFIG` ][
+When defined, no standard library configuration file is selected or included,
+define when the standard library is fully conformant with the standard, or
+where the user header (see `BOOST_USER_CONFIG`), has had any options necessary
+added to it, for example by an autoconf generated configure script.
+]]
+[[`BOOST_NO_PLATFORM_CONFIG` ][
+When defined, no platform configuration file is selected or included,
+define when the platform is fully conformant with the standard (and has
+no useful extra features), or where the user header (see
+`BOOST_USER_CONFIG`), has had any options necessary added to it, for example
+by an autoconf generated configure script.
+]]
+[[`BOOST_NO_CONFIG` ][
+Equivalent to defining all of `BOOST_NO_COMPILER_CONFIG`,
+`BOOST_NO_STDLIB_CONFIG` and `BOOST_NO_PLATFORM_CONFIG`.
+]]
+[[`BOOST_STRICT_CONFIG` ][
+The normal behavior for compiler versions that are newer than the last
+known version, is to assume that they have all the same defects as the
+last known version. By setting this define, then compiler versions that
+are newer than the last known version are assumed to be fully conforming
+with the standard. This is probably most useful for boost developers or
+testers, and for those who want to use boost to test beta compiler versions.
+]]
+[[`BOOST_ASSERT_CONFIG` ][
+When this flag is set, if the config finds anything unknown, then it will
+stop with a #error rather than continue. Boost regression testers should
+set this define, as should anyone who wants to quickly check whether boost
+is supported on their platform.
+]]
+[[`BOOST_DISABLE_THREADS` ][
+When defined, disables threading support, even if the compiler in its
+current translation mode supports multiple threads.
+]]
+[[`BOOST_DISABLE_WIN32` ][
+When defined, disables the use of Win32 specific API's, even when these
+are available. Also has the effect of setting `BOOST_DISABLE_THREADS` unless
+`BOOST_HAS_PTHREADS` is set. This option may be set automatically by the
+config system when it detects that the compiler is in "strict mode".
+]]
+[[`BOOST_DISABLE_ABI_HEADERS`][
+Stops boost headers from including any prefix/suffix headers that normally
+control things like struct packing and alignment.
+]]
+[[`BOOST_ABI_PREFIX`][
+A prefix header to include in place of whatever boost.config would normally
+select, any replacement should set up struct packing and alignment options
+as required.
+]]
+[[`BOOST_ABI_SUFFIX` ][
+A suffix header to include in place of whatever boost.config would normally
+select, any replacement should undo the effects of the prefix header.
+]]
+[[`BOOST_ALL_DYN_LINK`][
+Forces all libraries that have separate source, to be linked as dll's rather
+than static libraries on Microsoft Windows (this macro is used to turn on
+`__declspec(dllimport)` modifiers, so that the compiler knows which symbols
+to look for in a dll rather than in a static library).
+Note that there may be some libraries that can only be statically linked
+(Boost.Test for example) and others which may only be dynamically linked
+(Boost.Thread for example), in these cases this macro has no effect.
+]]
+[[`BOOST_`['WHATEVER]`_DYN_LINK`][
+Forces library "whatever" to be linked as a dll rather than a static library
+on Microsoft Windows: replace the ['WHATEVER] part of the macro name with the
+name of the library that you want to dynamically link to, for example use
+`BOOST_DATE_TIME_DYN_LINK` or `BOOST_REGEX_DYN_LINK` etc (this macro is used
+to turn on `__declspec(dllimport)` modifiers, so that the compiler knows
+which symbols to look for in a dll rather than in a static library).
+Note that there may be some libraries that can only be statically linked
+(Boost.Test for example) and others which may only be dynamically linked
+(Boost.Thread for example), in these cases this macro is unsupported.
+]]
+[[`BOOST_ALL_NO_LIB`][
+Tells the config system not to automatically select which libraries to link
+against.
+Normally if a compiler supports #pragma lib, then the correct library build
+variant will be automatically selected and linked against, simply by the act
+of including one of that library's headers. This macro turns that
+feature off.
+]]
+[[`BOOST_`['WHATEVER]`_NO_LIB`][
+Tells the config system not to automatically select which library to link
+against for library "whatever", replace ['WHATEVER] in the macro name with the
+name of the library; for example `BOOST_DATE_TIME_NO_LIB` or `BOOST_REGEX_NO_LIB`.
+Normally if a compiler supports `#pragma lib`, then the correct library build
+variant will be automatically selected and linked against, simply by the
+act of including one of that library's headers. This macro turns that
+feature off.
+]]
+[[`BOOST_LIB_DIAGNOSTIC`][
+Causes the auto-linking code to output diagnostic messages indicating the
+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`][
+Overrides the name of the toolset part of the name of library being linked
+to; note if defined this must be defined to a quoted string literal, for
+example "abc".
+]]
+]
+
+[endsect]
+
+[section Advanced configuration usage]
+
+By setting various macros on the compiler command line or by editing
+__BOOST_CONFIG_USER_HEADER__, the boost configuration setup can be optimised
+in a variety of ways.
+
+Boost's configuration is structured so that the user-configuration is
+included first (defaulting to __BOOST_CONFIG_USER_HEADER__ if `BOOST_USER_CONFIG`
+is not defined). This sets up any user-defined policies, and gives the
+user-configuration a chance to influence what happens next.
+
+Next the compiler, standard library, and platform configuration files are
+included. These are included via macros (`BOOST_COMPILER_CONFIG` etc,
+[link config_user_settable see user settable macros]), and if the corresponding
+macro is undefined then a separate header that detects which compiler/standard
+library/platform is in use is included in order to set these. The config
+can be told to ignore these headers altogether if the corresponding
+`BOOST_NO_XXX` macro is set (for example `BOOST_NO_COMPILER_CONFIG` to
+disable including any compiler configuration file -
+[link config_user_settable see user settable macros]).
+
+Finally the boost configuration header, includes __BOOST_CONFIG_SUFFIX_HEADER__;
+this header contains any boiler plate configuration code - for example where one
+boost macro being set implies that another must be set also.
+
+The following usage examples represent just a few of the possibilities:
+
+[section Example 1: creating our own frozen configuration]
+
+Lets suppose that we're building boost with Visual C++ 6, and STLport 4.0. Lets
+suppose also that we don't intend to update our compiler or standard library
+any time soon. In order to avoid breaking dependencies when we update boost,
+we may want to "freeze" our configuration headers, so that we only have to
+rebuild our project if the boost code itself has changed, and not because the
+boost config has been updated for more recent versions of Visual C++ or STLport.
+We'll start by realising that the configuration files in use are:
+[@../../../../boost/config/compiler/visualc.hpp `<boost/config/compiler/visualc.hpp>`]
+for the compiler,
+[@../../../../boost/config/stdlib/stlport.hpp `<boost/config/stdlib/stlport.hpp>`]
+for the standard library, and
+[@../../../../boost/config/platform/win32.hpp `<boost/config/platform/win32.hpp>`]
+for the platform. Next we'll create our own private configuration directory:
+`boost/config/mysetup/`, and copy the configuration files into there. Finally,
+open up __BOOST_CONFIG_USER_HEADER__ and edit the following defines:
+
+ #define BOOST_COMPILER_CONFIG "boost/config/mysetup/visualc.hpp"
+ #define BOOST_STDLIB_CONFIG "boost/config/mysetup/stlport.hpp"
+ #define BOOST_USER_CONFIG "boost/config/mysetup/win32.hpp"
+
+Now when you use boost, its configuration header will go straight to our "frozen"
+versions, and ignore the default versions, you will now be insulated from any
+configuration changes when you update boost. This technique is also useful if
+you want to modify some of the boost configuration files; for example if you are
+working with a beta compiler release not yet supported by boost.
+
+[endsect]
+
+[section Example 2: skipping files that you don't need]
+
+Lets suppose that you're using boost with a compiler that is fully conformant with
+the standard; you're not interested in the fact that older versions of your compiler
+may have had bugs, because you know that your current version does not need any
+configuration macros setting. In a case like this, you can define
+`BOOST_NO_COMPILER_CONFIG` either on the command line, or in __BOOST_CONFIG_USER_HEADER__,
+and miss out the compiler configuration header altogether (actually you miss out
+two headers, one which works out what the compiler is, and one that configures
+boost for it). This has two consequences: the first is that less code has to be
+compiled, and the second that you have removed a dependency on two boost headers.
+
+[endsect]
+
+[section Example 3: using configure script to freeze the boost configuration]
+
+If you are working on a unix-like platform then you can use the configure script to
+generate a "frozen" configuration based on your current compiler setup -
+[link config_config_script see using the configure script for more details].
+
+[endsect]
+
+[endsect]
+
+[section Testing the boost configuration]
+
+The boost configuration library provides a full set of regression test programs
+under the __BOOST_CONFIG_DIR__ `test/` sub-directory:
+
+
+[table
+[[File][Description]]
+[[`config_info.cpp`][
+Prints out a detailed description of your compiler/standard library/platform
+setup, plus your current boost configuration. The information provided by this
+program is useful in setting up the boost configuration files. If you report that
+boost is incorrectly configured for your compiler/library/platform then please
+include the output from this program when reporting the changes required.
+]]
+[[`config_test.cpp`][
+A monolithic test program that includes most of the individual test cases.
+This provides a quick check to see if boost is correctly configured for your
+compiler/library/platform.
+]]
+[[`limits_test.cpp`][
+Tests your standard library's `std::numeric_limits` implementation (or its boost
+provided replacement if `BOOST_NO_LIMITS` is defined). This test file fails with
+most versions of numeric_limits, mainly due to the way that some compilers
+treat NAN's and infinity.
+]]
+[[`no_*pass.cpp`][
+Individual compiler defect test files. Each of these should compile, if one
+does not then the corresponding `BOOST_NO_XXX` macro needs to be defined - see
+each test file for specific details.
+]]
+[[`no_*fail.cpp`][
+Individual compiler defect test files. Each of these should not compile, if
+one does then the corresponding `BOOST_NO_XXX` macro is defined when it need
+not be - see each test file for specific details.
+]]
+[[`has_*pass.cpp`][
+Individual feature test files. If one of these does not compile then the
+corresponding `BOOST_HAS_XXX` macro is defined when it should not be - see
+each test file for specific details.
+]]
+[[`has_*fail.cpp`][
+Individual feature test files. If one of these does compile then the
+corresponding `BOOST_HAS_XXX` macro can be safely defined - see each test
+file for specific details.
+]]
+]
+
+Although you can run the configuration regression tests as individual test
+files, there are rather a lot of them, so there are a couple of shortcuts to
+help you out:
+
+If you have built the __BOOST_REGRESSION_TEST_DRIVER__, then you can use this to
+produce a nice html formatted report of the results using the supplied test file.
+
+Alternatively you can run the configure script like this:
+
+[: `./configure --enable-test`]
+
+in which case the script will test the current configuration rather than
+creating a new one from scratch.
+
+If you are reporting the results of these tests for a new
+platform/library/compiler then please include a log of the full compiler output,
+the output from `config_info.cpp`, and the pass/fail test results.
+
+
+[endsect]
+
+[endsect]
+
diff --git a/doc/cstdint.qbk b/doc/cstdint.qbk
new file mode 100644
index 0000000..3f35207
--- /dev/null
+++ b/doc/cstdint.qbk
@@ -0,0 +1,139 @@
+[section:cstdint Standard Integer Types]
+
+[section Overview]
+
+The header [^[@../../../../boost/cstdint.hpp <boost/cstdint.hpp>]] provides the typedef's useful
+for writing portable code that requires certain integer widths. All typedef's are in namespace boost.
+
+The specifications for these types are based on the ISO/IEC 9899:1999 C Language standard header <stdint.h>.
+The 64-bit types required by the C standard are ['not required] in the boost header,
+and may not be supplied for all platforms/compilers, because [^long long] is not [yet] included in the C++ standard.
+
+See [@../../test/cstdint_test.cpp cstdint_test.cpp] for a test program.
+
+[endsect]
+
+[section:rationale Rationale]
+
+The organization of the Boost.Integer headers and classes is designed to take advantage of <stdint.h> types from the
+1999 C standard without causing undefined behavior in terms of the 1998 C++ standard.
+The header <boost/cstdint.hpp> makes the standard integer types safely available in namespace [^boost]
+without placing any names in namespace [^std]. The intension is to complement rather than compete
+with the C++ Standard Library. Should some future C++ standard include <stdint.h> and <cstdint>,
+then <boost/cstdint.hpp> will continue to function, but will become redundant and may be safely deprecated.
+
+Because these are boost headers, their names conform to boost header naming conventions rather than
+C++ Standard Library header naming conventions.
+
+[endsect]
+
+[section:ce ['Caveat emptor]]
+
+As an implementation artifact, certain C <limits.h> macro names may possibly be
+visible to users of <boost/cstdint.hpp>. Don't use these macros; they are not part of
+any Boost-specified interface. Use [^boost::integer_traits<>] or [^std::numeric_limits<>] instead.
+
+As another implementation artifact, certain C <stdint.h> typedef names may possibly be visible
+in the global namespace to users of <boost/cstdint.hpp>. Don't use these names, they are not part of
+any Boost-specified interface. Use the respective names in namespace [^boost] instead.
+
+[endsect]
+
+[section Exact-width integer types]
+
+The typedef [^int#_t], with # replaced by the width, designates a signed integer type of exactly # bits;
+for example [^int8_t] denotes an 8-bit signed integer type. Similarly, the typedef [^uint#_t] designates an unsigned
+integer type of exactly # bits.
+
+These types are optional. However, if a platform supports integer types with widths of
+8, 16, 32, 64, or any combination thereof, then <boost/cstdint.hpp> does provide the
+corresponding typedefs.
+
+The absence of int64_t and uint64_t is indicated by the macro `BOOST_NO_INT64_T`.
+
+[endsect]
+
+[section Minimum-width integer types]
+
+The typedef [^int_least#_t], with # replaced by the width, designates a signed integer type with a width
+of at least # bits, such that no signed integer type with lesser size has at least the specified width.
+Thus, [^int_least32_t] denotes the smallest signed integer type with a width of at least 32 bits.
+Similarly, the typedef name [^uint_least#_t] designates an unsigned integer type with a width of at least # bits,
+such that no unsigned integer type with lesser size has at least the specified width.
+
+The following minimum-width integer types are provided for all platforms:
+
+* [^int_least8_t]
+* [^int_least16_t]
+* [^int_least32_t]
+* [^uint_least8_t]
+* [^uint_least16_t]
+* [^uint_least32_t]
+
+The following types are available only if, after including <boost/cstdint.hpp>, the macro BOOST_NO_INT64_T is not defined:
+
+* [^int_least64_t]
+* [^uint_least64_t]
+
+
+All other minimum-width integer types are optional.
+
+[endsect]
+
+[section Fastest minimum-width integer types]
+
+The typedef [^int_fast#_t], with # replaced by the width, designates the fastest signed integer type
+with a width of at least # bits. Similarly, the typedef name [^uint_fast#_t] designates the fastest
+unsigned integer type with a width of at least # bits.
+
+There is no guarantee that these types are fastest for all purposes. In any case, however, they satisfy
+the signedness and width requirements.
+
+The following fastest minimum-width integer types are provided for all platforms:
+
+* [^int_fast8_t]
+* [^int_fast16_t]
+* [^int_fast32_t]
+* [^uint_fast8_t]
+* [^uint_fast16_t]
+* [^uint_fast32_t]
+
+The following types are available only if, after including <boost/cstdint.hpp>, the macro BOOST_NO_INT64_T is not defined:
+
+* [^int_fast64_t]
+* [^uint_fast64_t]
+
+All other fastest minimum-width integer types are optional.
+
+[endsect]
+
+[section Greatest-width integer types]
+
+The typedef [^intmax_t ]designates a signed integer type capable of representing any value of any signed integer type.
+
+The typedef [^uintmax_t] designates an unsigned integer type capable of representing any value of any unsigned integer type.
+
+These types are provided for all platforms.
+
+[endsect]
+
+[section Integer Constant Macros]
+
+The following macros are always defined after inclusion of this header, these allow
+integer constants of at least the specified width to be declared:
+INT8_C, UINT8_C, INT16_C, UINT16_C, INT32_C, UINT32_C, INTMAX_C, UINTMAX_C.
+
+The macros INT64_C and UINT64_C are also defined if the the macro BOOST_NO_INT64_T is not defined.
+
+The C99 macro __STDC_CONSTANT_MACROS is also defined as an artifact of the implementation.
+
+For example:
+
+ #include <boost/cstdint.hpp>
+
+ // Here the constant 0x1FFFFFFFF has the correct suffix applied:
+ static const boost::uint64_t c = INT64_C(0x1FFFFFFFF);
+
+[endsect]
+
+[endsect]
diff --git a/doc/guidelines.qbk b/doc/guidelines.qbk
new file mode 100644
index 0000000..19fefc6
--- /dev/null
+++ b/doc/guidelines.qbk
@@ -0,0 +1,219 @@
+[/
+ Boost.Config
+
+ Copyright (c) 2001 Beman Dawes
+ Copyright (c) 2001 Vesa Karvonen
+ Copyright (c) 2001 John Maddock
+
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+]
+
+
+
+[section Guidelines for Boost Authors]
+
+The __BOOST_CONFIG_HEADER__ header is used to pass configuration information
+to other boost files, allowing them to cope with platform dependencies such
+as arithmetic byte ordering, compiler pragmas, or compiler shortcomings.
+Without such configuration information, many current compilers would not work
+with the Boost libraries.
+
+Centralizing configuration information in this header reduces the number of
+files that must be modified when porting libraries to new platforms, or when
+compilers are updated. Ideally, no other files would have to be modified when
+porting to a new platform.
+
+Configuration headers are controversial because some view them as condoning
+broken compilers and encouraging non-standard subsets. Adding settings for
+additional platforms and maintaining existing settings can also be a problem.
+In other words, configuration headers are a necessary evil rather than a
+desirable feature. The boost config.hpp policy is designed to minimize the
+problems and maximize the benefits of a configuration header.
+
+Note that:
+
+* Boost library implementers are not required to "`#include <boost/config.hpp>`",
+and are not required in any way to support compilers that do not comply
+with the C++ Standard (ISO/IEC 14882).
+* If a library implementer wishes to support some non-conforming compiler,
+or to support some platform specific feature, "`#include <boost/config.hpp>`"
+is the preferred way to obtain configuration information not available from
+the standard headers such as `<climits>`, etc.
+* If configuration information can be deduced from standard headers such as
+`<climits>`, use those standard headers rather than `<boost/config.hpp>`.
+* Boost files that use macros defined in `<boost/config.hpp>` should have
+sensible, standard conforming, default behavior if the macro is not defined.
+This means that the starting point for porting `<boost/config.hpp>` to a new
+platform is simply to define nothing at all specific to that platform. In
+the rare case where there is no sensible default behavior, an #error message
+should describe the problem.
+* If a Boost library implementer wants something added to `config.hpp`, post
+a request on the Boost mailing list. There is no guarantee such a request
+will be honored; the intent is to limit the complexity of config.hpp.
+* The intent is to support only compilers which appear on their way to
+becoming C++ Standard compliant, and only recent releases of those compilers
+at that.
+* The intent is not to disable mainstream features now well-supported by the
+majority of compilers, such as namespaces, exceptions, RTTI, or templates.
+
+
+[section:warnings Disabling Compiler Warnings]
+
+The header `<boost/config/warning_disable.hpp>` can be used to disable
+certain compiler warnings that are hard or impossible to otherwise remove.
+
+Note that:
+
+* This header [*['should never be included by another Boost header]], it should
+only ever be used by a library source file or a test case.
+* The header should be included [*['before you include any other header]].
+* This header only disables warnings that are hard or impossible to otherwise
+ deal with, and which are typically emitted by one compiler only, or
+ in one compilers own standard library headers.
+
+Currently it disables the following warnings:
+
+[table
+[[Compiler][Warning]]
+[[Visual C++ 8 and later][[@http://msdn2.microsoft.com/en-us/library/ttcz0bys(VS.80).aspx C4996]: Error 'function': was declared deprecated]]
+[[Intel C++][Warning 1786: relates to the use of "deprecated" standard
+ library functions rather like C4996 in Visual C++.]]
+]
+
+[endsect]
+
+
+[section Adding New Defect Macros]
+
+When you need to add a new defect macro - either to fix a problem with an
+existing library, or when adding a new library - distil the issue down to
+a simple test case; often, at this point other (possibly better) workarounds
+may become apparent. Secondly always post the test case code to the boost
+mailing list and invite comments; remember that C++ is complex and that
+sometimes what may appear a defect, may in fact turn out to be a problem
+with the authors understanding of the standard.
+
+When you name the macro, follow the `BOOST_NO_`['SOMETHING] naming
+convention, so that it's obvious that this is a macro reporting a defect.
+
+Finally, add the test program to the regression tests. You will need to
+place the test case in a `.ipp` file with the following comments near the top:
+
+ // MACRO: BOOST_NO_FOO
+ // TITLE: foo
+ // DESCRIPTION: If the compiler fails to support foo
+
+These comments are processed by the autoconf script, so make sure the format
+follows the one given. The file should be named "`boost_no_foo.ipp`", where foo
+is the defect description - try and keep the file name under the Mac 30 character
+filename limit though. You will also need to provide a function prototype
+"`int test()`" that is declared in a namespace with the same name as the macro,
+but in all lower case, and which returns zero on success:
+
+
+ namespace boost_no_foo {
+ int test()
+ {
+ // test code goes here:
+ //
+ return 0;
+ }
+
+ }
+
+Once the test code is in place in libs/config/test, updating the configuration
+test system proceeds as:
+
+* cd into `libs/config/tools` and run `bjam`. This generates the `.cpp`
+file test cases from the `.ipp` file, updates the
+libs/config/test/all/Jamfile.v2, `config_test.cpp` and `config_info.cpp`.[br][br]
+
+* cd into `libs/config/test/all` and run `bjam `['MACRONAME` compiler-list`], where
+['MACRONAME] is the name of the new macro, and ['`compiler-list`] is a space separated list of
+compilers to test with.[br][br]
+The xxx_pass_test and the xxx_fail_test [*should both report `**passed**`].[br][br]
+If ['MACRONAME] is not defined when it should be defined, xxx_pass_test will not report `**passed**`.
+If ['MACRONAME] is defined when it should not be defined, xxx_fail_test will not report `**passed**`.[br][br]
+
+* cd into `libs/config/test` and run `bjam config_info config_test `['`compiler-list`].
+`config_info` should build and run cleanly for all the compilers in ['`compiler-list`]
+while `config_test` should fail for those that have the defect, and pass for those
+that do not.
+
+Then you should:
+
+* Define the defect macro in those config headers that require it.
+* Document the macro in this documentation (please do not forget this step!!)
+* Commit everything.
+* Keep an eye on the regression tests for new failures in Boost.Config caused by
+the addition.
+* Start using the macro.
+
+[endsect]
+
+[section Adding New Feature Test Macros]
+
+When you need to add a macro that describes a feature that the standard does
+not require, follow the convention for adding a new defect macro (above), but
+call the macro `BOOST_HAS_FOO`, and name the test file "`boost_has_foo.ipp`".
+Try not to add feature test macros unnecessarily, if there is a platform
+specific macro that can already be used (for example `_WIN32`, `__BEOS__`, or
+`__linux`) to identify the feature then use that. Try to keep the macro to a
+feature group, or header name, rather than one specific API (for example
+`BOOST_HAS_NL_TYPES_H` rather than `BOOST_HAS_CATOPEN`). If the macro
+describes a POSIX feature group, then add boilerplate code to
+__BOOST_CONFIG_SUFFIX_HEADER__ to auto-detect the feature where possible
+(if you are wondering why we can't use POSIX feature test macro directly,
+remember that many of these features can be added by third party libraries,
+and are not therefore identified inside `<unistd.h>`).
+
+[endsect]
+
+[section Modifying the Boost Configuration Headers]
+
+The aim of boost's configuration setup is that the configuration headers should
+be relatively stable - a boost user should not have to recompile their code
+just because the configuration for some compiler that they're not interested
+in has changed. Separating the configuration into separate compiler/standard
+library/platform sections provides for part of this stability, but boost
+authors require some amount of restraint as well, in particular:
+
+__BOOST_CONFIG_HEADER__ should never change, don't alter this file.
+
+__BOOST_CONFIG_USER_HEADER__ is included by default, don't add extra code to
+this file unless you have to. If you do, please remember to update
+[@../../tools/configure.in libs/config/tools/configure.in] as well.
+
+__BOOST_CONFIG_SUFFIX_HEADER__ is always included so be careful about
+modifying this file as it breaks dependencies for everyone. This file should
+include only "boilerplate" configuration code, and generally should change
+only when new macros are added.
+
+[@../../../../boost/config/detail/select_compiler_config.hpp <boost/config/detail/select_compiler_config.hpp>],
+[@../../../../boost/config/detail/select_platform_config.hpp <boost/config/detail/select_platform_config.hpp>] and
+[@../../../../boost/config/detail/select_stdlib_config.hpp <boost/config/detail/select_stdlib_config.hpp>]
+are included by default and should change only if support for a new
+compiler/standard library/platform is added.
+
+The compiler/platform/standard library selection code is set up so that unknown
+platforms are ignored and assumed to be fully standards compliant - this gives
+unknown platforms a "sporting chance" of working "as is" even without running
+the configure script.
+
+When adding or modifying the individual mini-configs, assume that future, as
+yet unreleased versions of compilers, have all the defects of the current
+version. Although this is perhaps unnecessarily pessimistic, it cuts down on
+the maintenance of these files, and experience suggests that pessimism is
+better placed than optimism here!
+
+[endsect]
+
+[endsect]
+
+
+
+
+
+
diff --git a/doc/html/HTML.manifest b/doc/html/HTML.manifest
new file mode 100644
index 0000000..632c78f
--- /dev/null
+++ b/doc/html/HTML.manifest
@@ -0,0 +1,5 @@
+index.html
+boost_config/boost_macro_reference.html
+boost_config/guidelines_for_boost_authors.html
+boost_config/rationale.html
+boost_config/acknowledgements.html
diff --git a/doc/html/boost_config/acknowledgements.html b/doc/html/boost_config/acknowledgements.html
new file mode 100644
index 0000000..8281d05
--- /dev/null
+++ b/doc/html/boost_config/acknowledgements.html
@@ -0,0 +1,62 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Acknowledgements</title>
+<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../index.html" title="Boost.Config">
+<link rel="up" href="../index.html" title="Boost.Config">
+<link rel="prev" href="rationale.html" title="Rationale">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="rationale.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="boost_config.acknowledgements"></a><a class="link" href="acknowledgements.html" title="Acknowledgements">Acknowledgements</a>
+</h2></div></div></div>
+<p>
+ Beman Dawes provided the original <code class="computeroutput"><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span></code> and
+ part of this document.
+ </p>
+<p>
+ Vesa Karvonen provided a description of the principles (see <a class="link" href="rationale.html" title="Rationale">rationale</a>)
+ and put together an early version of the current configuration setup.
+ </p>
+<p>
+ John Maddock put together the configuration current code, the test programs,
+ the configuration script and the reference section of this document.
+ </p>
+<p>
+ Matias Capeletto converted the docs to quickbook format.
+ </p>
+<p>
+ Numerous boost members, past and present, have contributed fixes to boost's
+ configuration.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Beman Dawes, Vesa Karvonen, John
+ Maddock<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="rationale.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a>
+</div>
+</body>
+</html>
diff --git a/doc/html/boost_config/boost_macro_reference.html b/doc/html/boost_config/boost_macro_reference.html
new file mode 100644
index 0000000..ed19e07
--- /dev/null
+++ b/doc/html/boost_config/boost_macro_reference.html
@@ -0,0 +1,6323 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Boost Macro Reference</title>
+<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../index.html" title="Boost.Config">
+<link rel="up" href="../index.html" title="Boost.Config">
+<link rel="prev" href="../index.html" title="Boost.Config">
+<link rel="next" href="build_config.html" title="Build Time Configuration">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../index.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="build_config.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="boost_config.boost_macro_reference"></a><a class="link" href="boost_macro_reference.html" title="Boost Macro Reference">Boost Macro Reference</a>
+</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_c__03_defects">Macros
+ that describe C++03 defects</a></span></dt>
+<dt><span class="section"><a href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_optional_features">Macros
+ that describe optional features</a></span></dt>
+<dt><span class="section"><a href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_possible_c___future_features">Macros
+ that describe possible C++ future features</a></span></dt>
+<dt><span class="section"><a href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_c__11_features_not_supported">Macros
+ that describe C++11 features not supported</a></span></dt>
+<dt><span class="section"><a href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_allow_use_of_c__11_features_with_c__03_compilers">Macros
+ that allow use of C++11 features with C++03 compilers</a></span></dt>
+<dt><span class="section"><a href="boost_macro_reference.html#boost_config.boost_macro_reference.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.macros_that_describe_c__17_features_not_supported">Macros
+ that describe C++17 features not supported</a></span></dt>
+<dt><span class="section"><a href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_features_that_have_been_removed_from_the_standard_">Macros
+ that describe features that have been removed from the standard.</a></span></dt>
+<dt><span class="section"><a href="boost_macro_reference.html#boost_config.boost_macro_reference.boost_helper_macros">Boost
+ Helper Macros</a></span></dt>
+<dt><span class="section"><a href="boost_macro_reference.html#boost_config.boost_macro_reference.boost_informational_macros">Boost
+ Informational Macros</a></span></dt>
+<dt><span class="section"><a href="boost_macro_reference.html#boost_config.boost_macro_reference.boost_deprecated_macros">Boost
+ Deprecated Macros</a></span></dt>
+<dt><span class="section"><a href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code">Macros
+ for libraries with separate source code</a></span></dt>
+</dl></div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.boost_macro_reference.macros_that_describe_c__03_defects"></a><a name="config_defects"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_c__03_defects" title="Macros that describe C++03 defects">Macros
+ that describe C++03 defects</a>
+</h3></div></div></div>
+<p>
+ The following macros all describe features that are required by the C++03
+ standard, if one of the following macros is defined, then it represents a
+ defect in the compiler's conformance with the 2003 standard.
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Macro
+ </p>
+ </th>
+<th>
+ <p>
+ Section
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_BCB_PARTIAL_SPECIALIZATION_BUG</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Compiler
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler exhibits certain partial specialisation bug - probably
+ Borland C++ Builder specific.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Compiler
+ </p>
+ </td>
+<td>
+ <p>
+ Argument dependent lookup fails if there is a using declaration
+ for the symbol being looked up in the current scope. For example,
+ using <code class="computeroutput"><span class="identifier">boost</span><span class="special">::</span><span class="identifier">get_pointer</span></code>; prevents ADL from
+ finding overloads of <code class="computeroutput"><span class="identifier">get_pointer</span></code>
+ in namespaces nested inside boost (but not elsewhere). Probably
+ Borland specific.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_ADL_BARRIER</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Compiler
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler locates and searches namespaces that it should <span class="emphasis"><em>*not*</em></span>
+ in fact search when performing argument dependent lookup.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Compiler
+ </p>
+ </td>
+<td>
+ <p>
+ Compiler does not implement argument-dependent lookup (also named
+ Koenig lookup); see std::3.4.2 [basic.koenig.lookup]
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_AUTO_PTR</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Standard library
+ </p>
+ </td>
+<td>
+ <p>
+ If the compiler / library supplies non-standard or broken <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">auto_ptr</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_COMPLETE_VALUE_INITIALIZATION</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Compiler
+ </p>
+ </td>
+<td>
+ <p>
+ Compiler has not completely implemented value-initialization. See
+ also <a href="../../../../utility/value_init.htm#compiler_issues" target="_top">The
+ Utility/Value Init docs</a>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CTYPE_FUNCTIONS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Platform
+ </p>
+ </td>
+<td>
+ <p>
+ The Platform does not provide functions for the character-classifying
+ operations <code class="computeroutput"><span class="special"><</span><span class="identifier">ctype</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code> and <code class="computeroutput"><span class="special"><</span><span class="identifier">cctype</span><span class="special">></span></code>,
+ only macros.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CV_SPECIALIZATIONS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Compiler
+ </p>
+ </td>
+<td>
+ <p>
+ If template specialisations for cv-qualified types conflict with
+ a specialisation for a cv-unqualififed type.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CV_VOID_SPECIALIZATIONS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Compiler
+ </p>
+ </td>
+<td>
+ <p>
+ If template specialisations for cv-void types conflict with a specialisation
+ for void.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CWCHAR</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Platform
+ </p>
+ </td>
+<td>
+ <p>
+ The Platform does not provide <code class="computeroutput"><span class="special"><</span><span class="identifier">wchar</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code>
+ and <code class="computeroutput"><span class="special"><</span><span class="identifier">cwchar</span><span class="special">></span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CWCTYPE</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Platform
+ </p>
+ </td>
+<td>
+ <p>
+ The Platform does not provide <code class="computeroutput"><span class="special"><</span><span class="identifier">wctype</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code>
+ and <code class="computeroutput"><span class="special"><</span><span class="identifier">cwctype</span><span class="special">></span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_FENV_H</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Platform, Standard library
+ </p>
+ </td>
+<td>
+ <p>
+ The C standard library doesn't provide <code class="computeroutput"><span class="special"><</span><span class="identifier">fenv</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code>.
+ <a href="../../../../../boost/detail/fenv.hpp" target="_top"><code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">detail</span><span class="special">/</span><span class="identifier">fenv</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>
+ should be included instead of <code class="computeroutput"><span class="special"><</span><span class="identifier">fenv</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code>
+ for maximum portability on platforms which do provide <code class="computeroutput"><span class="special"><</span><span class="identifier">fenv</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_DEPENDENT_NESTED_DERIVATIONS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Compiler
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler fails to compile a nested class that has a dependent
+ base class:
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">struct</span> <span class="identifier">foo</span> <span class="special">:</span> <span class="special">{</span>
+ <span class="keyword">template</span><span class="special"><</span><span class="keyword">typename</span> <span class="identifier">U</span><span class="special">></span>
+ <span class="keyword">struct</span> <span class="identifier">bar</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">U</span> <span class="special">{};</span>
+</pre>
+<p>
+ };
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Compiler
+ </p>
+ </td>
+<td>
+ <p>
+ Template value parameters cannot have a dependent type, for example:
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span> <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">::</span><span class="identifier">type</span> <span class="identifier">value</span><span class="special">></span>
+<span class="keyword">class</span> <span class="identifier">X</span> <span class="special">{</span> <span class="special">...</span> <span class="special">};</span>
+</pre>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_EXCEPTION_STD_NAMESPACE</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Standard Library
+ </p>
+ </td>
+<td>
+ <p>
+ The standard library does not put some or all of the contents of
+ <code class="computeroutput"><span class="special"><</span><span class="identifier">exception</span><span class="special">></span></code> in namespace std.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_EXCEPTIONS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Compiler
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler does not support exception handling (this setting
+ is typically required by many C++ compilers for embedded platforms).
+ Note that there is no requirement for boost libraries to honor
+ this configuration setting - indeed doing so may be impossible
+ in some cases. Those libraries that do honor this will typically
+ abort if a critical error occurs - you have been warned!
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_FUNCTION_TEMPLATE_ORDERING</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Compiler
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler does not perform function template ordering or its
+ function template ordering is incorrect.
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="comment">// #1</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">void</span> <span class="identifier">f</span><span class="special">(</span><span class="identifier">T</span><span class="special">);</span>
+
+<span class="comment">// #2</span>
+<span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">,</span><span class="keyword">class</span> <span class="identifier">U</span><span class="special">></span> <span class="keyword">void</span> <span class="identifier">f</span><span class="special">(</span><span class="identifier">T</span><span class="special">(*)(</span><span class="identifier">U</span><span class="special">));</span>
+
+<span class="keyword">void</span> <span class="identifier">bar</span><span class="special">(</span><span class="keyword">int</span><span class="special">);</span>
+
+<span class="identifier">f</span><span class="special">(&</span><span class="identifier">bar</span><span class="special">);</span> <span class="comment">// should choose #2.</span>
+</pre>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_INCLASS_MEMBER_INITIALIZATION</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Compiler
+ </p>
+ </td>
+<td>
+ <p>
+ Compiler violates std::9.4.2/4.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_INTRINSIC_WCHAR_T</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Compiler
+ </p>
+ </td>
+<td>
+ <p>
+ The C++ implementation does not provide <code class="computeroutput"><span class="keyword">wchar_t</span></code>,
+ or it is really a synonym for another integral type. Use this symbol
+ to decide whether it is appropriate to explicitly specialize a
+ template on <code class="computeroutput"><span class="keyword">wchar_t</span></code>
+ if there is already a specialization for other integer types.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_IOSFWD</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ std lib
+ </p>
+ </td>
+<td>
+ <p>
+ The standard library lacks <code class="computeroutput"><span class="special"><</span><span class="identifier">iosfwd</span><span class="special">></span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_IOSTREAM</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ std lib
+ </p>
+ </td>
+<td>
+ <p>
+ The standard library lacks <code class="computeroutput"><span class="special"><</span><span class="identifier">iostream</span><span class="special">></span></code>,
+ <code class="computeroutput"><span class="special"><</span><span class="identifier">istream</span><span class="special">></span></code> or <code class="computeroutput"><span class="special"><</span><span class="identifier">ostream</span><span class="special">></span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_IS_ABSTRACT</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Compiler
+ </p>
+ </td>
+<td>
+ <p>
+ The C++ compiler does not support SFINAE with abstract types, this
+ is covered by <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#337" target="_top">Core
+ Language DR337</a>, but is not part of the current standard.
+ Fortunately most compilers that support SFINAE also support this
+ DR. See also BOOST_NO_SFINAE and BOOST_NO_SFINAE_EXPR
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_LIMITS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Standard library
+ </p>
+ </td>
+<td>
+ <p>
+ The C++ implementation does not provide the <code class="computeroutput"><span class="special"><</span><span class="identifier">limits</span><span class="special">></span></code>
+ header. Never check for this symbol in library code; always include
+ <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">limits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>, which guarantees to provide
+ <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_NUMERIC_LIMITS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Standard library
+ </p>
+ </td>
+<td>
+ <p>
+ C++11 additions to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span></code>
+ are not available for use. <code class="computeroutput"><span class="keyword">static</span>
+ <span class="identifier">function</span> <span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">lowest</span><span class="special">()</span></code> the lowest finite value representable
+ by the numeric type. <code class="computeroutput"><span class="keyword">static</span>
+ <span class="keyword">int</span> <span class="keyword">const</span>
+ <span class="identifier">max_digits10</span></code> the number
+ of decimal digits that are required to make sure that two distinct
+ values of the type have distinct decimal representations. <code class="computeroutput"><span class="keyword">template</span><span class="special"><></span>
+ <span class="keyword">class</span> <span class="identifier">numeric_limits</span><span class="special"><</span><span class="keyword">char16_t</span><span class="special">>;</span></code>, see also <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_CHAR16_T</span></code>,
+ <code class="computeroutput"><span class="keyword">template</span><span class="special"><></span>
+ <span class="keyword">class</span> <span class="identifier">numeric_limits</span><span class="special"><</span><span class="keyword">char32_t</span><span class="special">>;</span></code> see also <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_CHAR32_T</span></code>.
+ Replaces BOOST_NO_NUMERIC_LIMITS_LOWEST.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Standard library
+ </p>
+ </td>
+<td>
+ <p>
+ Constants such as <code class="computeroutput"><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">T</span><span class="special">>::</span><span class="identifier">is_signed</span></code>
+ are not available for use at compile-time.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_LONG_LONG_NUMERIC_LIMITS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Standard library
+ </p>
+ </td>
+<td>
+ <p>
+ There is no specialization for <code class="computeroutput"><span class="identifier">numeric_limits</span><span class="special"><</span><span class="keyword">long</span>
+ <span class="keyword">long</span><span class="special">></span></code>
+ and <code class="computeroutput"><span class="identifier">numeric_limits</span><span class="special"><</span><span class="keyword">unsigned</span>
+ <span class="keyword">long</span> <span class="keyword">long</span><span class="special">></span></code>. <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">limits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>
+ will then add these specializations as a standard library "fix"
+ only if the compiler supports the <code class="computeroutput"><span class="keyword">long</span>
+ <span class="keyword">long</span></code> datatype.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Compiler
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler does not support the specialization of individual
+ member functions of template classes.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_MEMBER_TEMPLATE_KEYWORD</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Compiler
+ </p>
+ </td>
+<td>
+ <p>
+ If the compiler supports member templates, but not the template
+ keyword when accessing member template classes.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_MEMBER_TEMPLATE_FRIENDS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Compiler
+ </p>
+ </td>
+<td>
+ <p>
+ Member template friend syntax (<code class="computeroutput"><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span>
+ <span class="identifier">P</span><span class="special">></span>
+ <span class="keyword">friend</span> <span class="keyword">class</span>
+ <span class="identifier">frd</span><span class="special">;</span></code>)
+ described in the C++ Standard, 14.5.3, not supported.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_MEMBER_TEMPLATES</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Compiler
+ </p>
+ </td>
+<td>
+ <p>
+ Member template functions not fully supported.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_MS_INT64_NUMERIC_LIMITS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Standard library
+ </p>
+ </td>
+<td>
+ <p>
+ There is no specialization for <code class="computeroutput"><span class="identifier">numeric_limits</span><span class="special"><</span><span class="identifier">__int64</span><span class="special">></span></code> and <code class="computeroutput"><span class="identifier">numeric_limits</span><span class="special"><</span><span class="keyword">unsigned</span>
+ <span class="identifier">__int64</span><span class="special">></span></code>.
+ <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">limits</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code> will then add these specializations
+ as a standard library "fix", only if the compiler supports
+ the <code class="computeroutput"><span class="identifier">__int64</span></code> datatype.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_NESTED_FRIENDSHIP</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Compiler
+ </p>
+ </td>
+<td>
+ <p>
+ Compiler doesn't allow a nested class to access private members
+ of its containing class. Probably Borland/CodeGear specific.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_OPERATORS_IN_NAMESPACE</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Compiler
+ </p>
+ </td>
+<td>
+ <p>
+ Compiler requires inherited operator friend functions to be defined
+ at namespace scope, then using'ed to boost. Probably GCC specific.
+ See <a href="../../../../../boost/operators.hpp" target="_top"><code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">operators</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a> for example.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Compiler
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler does not correctly handle partial specializations
+ which depend upon default arguments in the primary template.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_POINTER_TO_MEMBER_CONST</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Compiler
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler does not correctly handle pointers to const member
+ functions, preventing use of these in overloaded function templates.
+ See <a href="../../../../../boost/functional.hpp" target="_top"><code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">functional</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a> for example.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Compiler
+ </p>
+ </td>
+<td>
+ <p>
+ Pointers to members don't work when used as template parameters.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_PRIVATE_IN_AGGREGATE</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Compiler
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler misreads 8.5.1, treating classes as non-aggregate
+ if they contain private or protected member functions.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_RESTRICT_REFERENCES</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Compiler
+ </p>
+ </td>
+<td>
+ <p>
+ Compiler-specific <code class="computeroutput"><span class="identifier">restrict</span></code>
+ keyword can not be applied to references.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_RTTI</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Compiler
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler may (or may not) have the typeid operator, but RTTI
+ on the dynamic type of an object is not supported.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_SFINAE</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Compiler
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler does not support the "Substitution Failure Is
+ Not An Error" meta-programming idiom. This is the lightweight
+ pre-C++11 version of SFINAE.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_SFINAE_EXPR</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Compiler
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler does not support usage of SFINAE with arbitrary expressions.
+ This is the post-C++11 SFINAE, but excludes a few specific corner
+ cases, see also BOOST_NO_CXX11_SFINAE_EXPR.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_STD_ALLOCATOR</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Standard library
+ </p>
+ </td>
+<td>
+ <p>
+ The C++ standard library does not provide a standards conforming
+ <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">allocator</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_STD_DISTANCE</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Standard library
+ </p>
+ </td>
+<td>
+ <p>
+ The platform does not have a conforming version of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">distance</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_STD_ITERATOR</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Standard library
+ </p>
+ </td>
+<td>
+ <p>
+ The C++ implementation fails to provide the <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">iterator</span></code>
+ class. Note that post C++17, this macro is re-purposed to indicate
+ that std::iterator has been removed or deprecated.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_STD_ITERATOR_TRAITS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Standard library
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler does not provide a standard compliant implementation
+ of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">iterator_traits</span></code>. Note that the
+ compiler may still have a non-standard implementation.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_STD_LOCALE</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Standard library
+ </p>
+ </td>
+<td>
+ <p>
+ The standard library lacks <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">locale</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_STD_MESSAGES</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Standard library
+ </p>
+ </td>
+<td>
+ <p>
+ The standard library lacks a conforming <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">messages</span></code>
+ facet.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_STD_MIN_MAX</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Standard library
+ </p>
+ </td>
+<td>
+ <p>
+ The C++ standard library does not provide the <code class="computeroutput"><span class="identifier">min</span><span class="special">()</span></code> and <code class="computeroutput"><span class="identifier">max</span><span class="special">()</span></code> template functions that should
+ be in <code class="computeroutput"><span class="special"><</span><span class="identifier">algorithm</span><span class="special">></span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Standard library
+ </p>
+ </td>
+<td>
+ <p>
+ Defined if the standard library's output iterators are not assignable.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_STD_TYPEINFO</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Standard library
+ </p>
+ </td>
+<td>
+ <p>
+ The <typeinfo> header declares <code class="computeroutput"><span class="identifier">type_info</span></code>
+ in the global namespace instead of namespace std.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_STD_USE_FACET</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Standard library
+ </p>
+ </td>
+<td>
+ <p>
+ The standard library lacks a conforming <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">use_facet</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_STD_WSTREAMBUF</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Standard library
+ </p>
+ </td>
+<td>
+ <p>
+ The standard library's implementation of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">basic_streambuf</span><span class="special"><</span><span class="keyword">wchar_t</span><span class="special">></span></code> is either missing, incomplete,
+ or buggy.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_STD_WSTRING</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Standard library
+ </p>
+ </td>
+<td>
+ <p>
+ The standard library lacks <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">wstring</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_STDC_NAMESPACE</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Compiler, Platform
+ </p>
+ </td>
+<td>
+ <p>
+ The contents of C++ standard headers for C library functions (the
+ <code class="computeroutput"><span class="special"><</span><span class="identifier">c</span><span class="special">...></span></code> headers) have not been placed
+ in namespace std. This test is difficult - some libraries "fake"
+ the std C functions by adding using declarations to import them
+ into namespace std, unfortunately they don't necessarily catch
+ all of them...
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_STRINGSTREAM</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Standard library
+ </p>
+ </td>
+<td>
+ <p>
+ The C++ implementation does not provide the <code class="computeroutput"><span class="special"><</span><span class="identifier">sstream</span><span class="special">></span></code>
+ header.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_SWPRINTF</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Platform
+ </p>
+ </td>
+<td>
+ <p>
+ The platform does not have a conforming version of <code class="computeroutput"><span class="identifier">swprintf</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Compiler
+ </p>
+ </td>
+<td>
+ <p>
+ Class template partial specialization (14.5.4 [temp.class.spec])
+ not supported.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_TEMPLATED_IOSTREAMS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Standard library
+ </p>
+ </td>
+<td>
+ <p>
+ The standard library does not provide templated iostream classes.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Standard library
+ </p>
+ </td>
+<td>
+ <p>
+ The standard library does not provide templated iterator constructors
+ for its containers.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_TEMPLATE_TEMPLATES</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Compiler
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler does not support template template parameters.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_TYPEID</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Compiler
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler does not support the typeid operator at all.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_TYPENAME_WITH_CTOR</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Compiler
+ </p>
+ </td>
+<td>
+ <p>
+ The typename keyword cannot be used when creating a temporary of
+ a Dependent type.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_UNREACHABLE_RETURN_DETECTION</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Compiler
+ </p>
+ </td>
+<td>
+ <p>
+ If a return is unreachable, then no return statement should be
+ required, however some compilers insist on it, while other issue
+ a bunch of warnings if it is in fact present.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Compiler
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler will not accept a using declaration that brings a
+ function from a typename used as a base class into a derived class
+ if functions of the same name are present in the derived class.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_USING_TEMPLATE</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Compiler
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler will not accept a using declaration that imports a
+ template class or function from another namespace. Originally a
+ Borland specific problem with imports to/from the global namespace,
+ extended to MSVC6 which has a specific issue with importing template
+ classes (but not functions).
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_VOID_RETURNS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Compiler
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler does not allow a void function to return the result
+ of calling another void function.
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">void</span> <span class="identifier">f</span><span class="special">()</span> <span class="special">{}</span>
+<span class="keyword">void</span> <span class="identifier">g</span><span class="special">()</span> <span class="special">{</span> <span class="keyword">return</span> <span class="identifier">f</span><span class="special">();</span> <span class="special">}</span>
+</pre>
+<p>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.boost_macro_reference.macros_that_describe_optional_features"></a><a name="config_features"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_optional_features" title="Macros that describe optional features">Macros
+ that describe optional features</a>
+</h3></div></div></div>
+<p>
+ The following macros describe features that are not required by the C++ standard.
+ The macro is only defined if the feature is present.
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Macro
+ </p>
+ </th>
+<th>
+ <p>
+ Section
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_HAS_BETHREADS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Platform
+ </p>
+ </td>
+<td>
+ <p>
+ The platform supports BeOS style threads.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_HAS_CLOCK_GETTIME</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Platform
+ </p>
+ </td>
+<td>
+ <p>
+ The platform has the POSIX API <code class="computeroutput"><span class="identifier">clock_gettime</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_HAS_DIRENT_H</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Platform
+ </p>
+ </td>
+<td>
+ <p>
+ The platform has the POSIX header <code class="computeroutput"><span class="special"><</span><span class="identifier">dirent</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_HAS_EXPM1</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Platform
+ </p>
+ </td>
+<td>
+ <p>
+ The platform has the functions <code class="computeroutput"><span class="identifier">expm1</span></code>,
+ <code class="computeroutput"><span class="identifier">expm1f</span></code> and <code class="computeroutput"><span class="identifier">expm1l</span></code> in <code class="computeroutput"><span class="special"><</span><span class="identifier">math</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_HAS_FLOAT128</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Compiler
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler has <code class="computeroutput"><span class="identifier">__float128</span></code>
+ as a native type which is distinct from all the regular C++ floating
+ point types.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_HAS_FTIME</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Platform
+ </p>
+ </td>
+<td>
+ <p>
+ The platform has the Win32 API type FTIME.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_HAS_GETSYSTEMTIMEASFILETIME</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Platform
+ </p>
+ </td>
+<td>
+ <p>
+ The platform has the Win32 API GetSystemTimeAsFileTime.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_HAS_GETTIMEOFDAY</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Platform
+ </p>
+ </td>
+<td>
+ <p>
+ The platform has the POSIX API <code class="computeroutput"><span class="identifier">gettimeofday</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_HAS_HASH</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Standard library
+ </p>
+ </td>
+<td>
+ <p>
+ The C++ implementation provides the (SGI) hash_set and hash_map
+ classes. When defined, <code class="computeroutput"><span class="identifier">BOOST_HASH_SET_HEADER</span></code>
+ and <code class="computeroutput"><span class="identifier">BOOST_HASH_LIST_HEADER</span></code>
+ will contain the names of the header needed to access hash_set
+ and hash_map; <code class="computeroutput"><span class="identifier">BOOST_STD_EXTENSION_NAMESPACE</span></code>
+ will provide the namespace in which the two class templates reside.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_HAS_INT128</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Compiler
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler has <code class="computeroutput"><span class="identifier">__int128</span></code>
+ and <code class="computeroutput"><span class="keyword">unsigned</span> <span class="identifier">__int128</span></code>
+ as native types which are distinct from all the regular C++ integer
+ types.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_HAS_LOG1P</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Platform
+ </p>
+ </td>
+<td>
+ <p>
+ The platform has the functions <code class="computeroutput"><span class="identifier">log1p</span></code>,
+ <code class="computeroutput"><span class="identifier">log1pf</span></code> and <code class="computeroutput"><span class="identifier">log1pl</span></code> in <code class="computeroutput"><span class="special"><</span><span class="identifier">math</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_HAS_MACRO_USE_FACET</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Standard library
+ </p>
+ </td>
+<td>
+ <p>
+ The standard library lacks a conforming <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">use_facet</span></code>,
+ but has a macro <code class="computeroutput"><span class="identifier">_USE</span><span class="special">(</span><span class="identifier">loc</span><span class="special">,</span> <span class="identifier">Type</span><span class="special">)</span></code> that does the job. This is primarily
+ for the Dinkumware std lib.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_HAS_MS_INT64</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Compiler
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler supports the <code class="computeroutput"><span class="identifier">__int64</span></code>
+ data type.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_HAS_NANOSLEEP</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Platform
+ </p>
+ </td>
+<td>
+ <p>
+ The platform has the POSIX API nanosleep.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_HAS_NL_TYPES_H</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Platform
+ </p>
+ </td>
+<td>
+ <p>
+ The platform has an <code class="computeroutput"><span class="special"><</span><span class="identifier">nl_types</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_HAS_NRVO</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Compiler
+ </p>
+ </td>
+<td>
+ <p>
+ Indicated that the compiler supports the named return value optimization
+ (NRVO). Used to select the most efficient implementation for some
+ function. See <a href="../../../../../boost/operators.hpp" target="_top"><code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">operators</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a> for example.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_HAS_PARTIAL_STD_ALLOCATOR</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Standard Library
+ </p>
+ </td>
+<td>
+ <p>
+ The standard library has a partially conforming <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">allocator</span></code>
+ class, but without any of the member templates.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_HAS_PRAGMA_ONCE</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Compiler
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler recognizes the <code class="computeroutput"><span class="preprocessor">#pragma</span>
+ <span class="identifier">once</span></code> directive which
+ tells that the containing header should be included only once while
+ preprocessing the current translation unit. The pragma may improve
+ compile times of large projects with some compilers.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_HAS_PRAGMA_DETECT_MISMATCH</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Compiler
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler recognizes the <code class="computeroutput"><span class="preprocessor">#pragma</span>
+ <span class="identifier">detect_mismatch</span><span class="special">(</span><span class="string">"name"</span><span class="special">,</span>
+ <span class="string">"value"</span><span class="special">)</span></code>
+ directive which tells that the link stage should be terminated
+ with error if values for provided <code class="computeroutput"><span class="string">"name"</span></code>
+ missmatch. This pragma may be a help in preventing ODR violations
+ and ensuring that different modules are compiled with same flags.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_HAS_PTHREAD_DELAY_NP</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Platform
+ </p>
+ </td>
+<td>
+ <p>
+ The platform has the POSIX API <code class="computeroutput"><span class="identifier">pthread_delay_np</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Platform
+ </p>
+ </td>
+<td>
+ <p>
+ The platform has the POSIX API <code class="computeroutput"><span class="identifier">pthread_mutexattr_settype</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_HAS_PTHREAD_YIELD</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Platform
+ </p>
+ </td>
+<td>
+ <p>
+ The platform has the POSIX API <code class="computeroutput"><span class="identifier">pthread_yield</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_HAS_PTHREADS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Platform
+ </p>
+ </td>
+<td>
+ <p>
+ The platform support POSIX style threads.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_HAS_SCHED_YIELD</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Platform
+ </p>
+ </td>
+<td>
+ <p>
+ The platform has the POSIX API <code class="computeroutput"><span class="identifier">sched_yield</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_HAS_SGI_TYPE_TRAITS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Compiler, Standard library
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler has native support for SGI style type traits.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_HAS_STDINT_H</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Platform
+ </p>
+ </td>
+<td>
+ <p>
+ The platform has a <code class="computeroutput"><span class="special"><</span><span class="identifier">stdint</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_HAS_SLIST</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Standard library
+ </p>
+ </td>
+<td>
+ <p>
+ The C++ implementation provides the (SGI) slist class. When defined,
+ <code class="computeroutput"><span class="identifier">BOOST_SLIST_HEADER</span></code>
+ will contain the name of the header needed to access <code class="computeroutput"><span class="identifier">slist</span></code> and <code class="computeroutput"><span class="identifier">BOOST_STD_EXTENSION_NAMESPACE</span></code>
+ will provide the namespace in which <code class="computeroutput"><span class="identifier">slist</span></code>
+ resides.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_HAS_STLP_USE_FACET</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Standard library
+ </p>
+ </td>
+<td>
+ <p>
+ The standard library lacks a conforming <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">use_facet</span></code>,
+ but has a workaround class-version that does the job. This is primarily
+ for the STLport std lib.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_ARRAY</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Standard library
+ </p>
+ </td>
+<td>
+ <p>
+ The library has a TR1 conforming version of <code class="computeroutput"><span class="special"><</span><span class="identifier">array</span><span class="special">></span></code>.
+ This macro is only guaranteed to be defined after including one
+ of the headers from Boost.TR1. Further this macro is now deprecated
+ in favour of BOOST_NO_CXX11_HDR_ARRAY.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_COMPLEX_OVERLOADS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Standard library
+ </p>
+ </td>
+<td>
+ <p>
+ The library has a version of <code class="computeroutput"><span class="special"><</span><span class="identifier">complex</span><span class="special">></span></code>
+ that supports passing scalars to the complex number algorithms.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Standard library
+ </p>
+ </td>
+<td>
+ <p>
+ The library has a version of <code class="computeroutput"><span class="special"><</span><span class="identifier">complex</span><span class="special">></span></code>
+ that includes the new inverse trig functions from TR1.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_REFERENCE_WRAPPER</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Standard library
+ </p>
+ </td>
+<td>
+ <p>
+ The library has TR1 conforming reference wrappers in <code class="computeroutput"><span class="special"><</span><span class="identifier">functional</span><span class="special">></span></code>. This macro is only guaranteed
+ to be defined after including one of the headers from Boost.TR1.
+ Further this macro is now deprecated in favour of BOOST_NO_CXX11_HDR_FUNCTIONAL.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_RESULT_OF</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Standard library
+ </p>
+ </td>
+<td>
+ <p>
+ The library has a TR1 conforming result_of template in <code class="computeroutput"><span class="special"><</span><span class="identifier">functional</span><span class="special">></span></code>. This macro is only guaranteed
+ to be defined after including one of the headers from Boost.TR1.
+ Further this macro is now deprecated in favour of BOOST_NO_CXX11_HDR_FUNCTIONAL.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_MEM_FN</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Standard library
+ </p>
+ </td>
+<td>
+ <p>
+ The library has a TR1 conforming mem_fn function template in <code class="computeroutput"><span class="special"><</span><span class="identifier">functional</span><span class="special">></span></code>. This macro is only guaranteed
+ to be defined after including one of the headers from Boost.TR1.
+ Further this macro is now deprecated in favour of BOOST_NO_CXX11_HDR_FUNCTIONAL.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_BIND</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Standard library
+ </p>
+ </td>
+<td>
+ <p>
+ The library has a TR1 conforming bind function template in <code class="computeroutput"><span class="special"><</span><span class="identifier">functional</span><span class="special">></span></code>. This macro is only guaranteed
+ to be defined after including one of the headers from Boost.TR1.
+ Further this macro is now deprecated in favour of BOOST_NO_CXX11_HDR_FUNCTIONAL.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_FUNCTION</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Standard library
+ </p>
+ </td>
+<td>
+ <p>
+ The library has a TR1 conforming function class template in <code class="computeroutput"><span class="special"><</span><span class="identifier">functional</span><span class="special">></span></code>. This macro is only guaranteed
+ to be defined after including one of the headers from Boost.TR1.
+ Further this macro is now deprecated in favour of BOOST_NO_CXX11_HDR_FUNCTIONAL.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_HASH</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Standard library
+ </p>
+ </td>
+<td>
+ <p>
+ The library has a TR1 conforming hash function template in <code class="computeroutput"><span class="special"><</span><span class="identifier">functional</span><span class="special">></span></code>. This macro is only guaranteed
+ to be defined after including one of the headers from Boost.TR1.
+ Further this macro is now deprecated in favour of BOOST_NO_CXX11_HDR_FUNCTIONAL.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_SHARED_PTR</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Standard library
+ </p>
+ </td>
+<td>
+ <p>
+ The library has a TR1 conforming <code class="computeroutput"><span class="identifier">shared_ptr</span></code>
+ class template in <code class="computeroutput"><span class="special"><</span><span class="identifier">memory</span><span class="special">></span></code>.
+ This macro is only guaranteed to be defined after including one
+ of the headers from Boost.TR1. Further this macro is now deprecated
+ in favour of BOOST_NO_CXX11_SMART_PTR.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_RANDOM</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Standard library
+ </p>
+ </td>
+<td>
+ <p>
+ The library has a TR1 conforming version of <code class="computeroutput"><span class="special"><</span><span class="identifier">random</span><span class="special">></span></code>.
+ This macro is only guaranteed to be defined after including one
+ of the headers from Boost.TR1. Further this macro is now deprecated
+ in favour of BOOST_NO_CXX11_HDR_RANDOM.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_REGEX</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Standard library
+ </p>
+ </td>
+<td>
+ <p>
+ The library has a TR1 conforming version of <code class="computeroutput"><span class="special"><</span><span class="identifier">regex</span><span class="special">></span></code>.
+ This macro is only guaranteed to be defined after including one
+ of the headers from Boost.TR1. Further this macro is now deprecated
+ in favour of BOOST_NO_CXX11_HDR_REGEX.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_TUPLE</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Standard library
+ </p>
+ </td>
+<td>
+ <p>
+ The library has a TR1 conforming version of <code class="computeroutput"><span class="special"><</span><span class="identifier">tuple</span><span class="special">></span></code>.
+ This macro is only guaranteed to be defined after including one
+ of the headers from Boost.TR1. Further this macro is now deprecated
+ in favour of BOOST_NO_CXX11_HDR_TUPLE.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_TYPE_TRAITS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Standard library
+ </p>
+ </td>
+<td>
+ <p>
+ The library has a TR1 conforming version of <code class="computeroutput"><span class="special"><</span><span class="identifier">type_traits</span><span class="special">></span></code>.
+ This macro is only guaranteed to be defined after including one
+ of the headers from Boost.TR1. Further this macro is now deprecated
+ in favour of BOOST_NO_CXX11_HDR_TYPE_TRAITS.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_UTILITY</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Standard library
+ </p>
+ </td>
+<td>
+ <p>
+ The library has the TR1 additions to <code class="computeroutput"><span class="special"><</span><span class="identifier">utility</span><span class="special">></span></code>
+ (tuple interface to <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">pair</span></code>).
+ This macro is only guaranteed to be defined after including one
+ of the headers from Boost.TR1. Further this macro is now deprecated
+ in favour of BOOST_NO_CXX11_HDR_TUPLE.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_UNORDERED_MAP</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Standard library
+ </p>
+ </td>
+<td>
+ <p>
+ The library has a TR1 conforming version of <code class="computeroutput"><span class="special"><</span><span class="identifier">unordered_map</span><span class="special">></span></code>.
+ This macro is only guaranteed to be defined after including one
+ of the headers from Boost.TR1. Further this macro is now deprecated
+ in favour of BOOST_NO_CXX11_HDR_UNORDERED_MAP.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_UNORDERED_SET</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Standard library
+ </p>
+ </td>
+<td>
+ <p>
+ The library has a TR1 conforming version of <code class="computeroutput"><span class="special"><</span><span class="identifier">unordered_set</span><span class="special">></span></code>.
+ This macro is only guaranteed to be defined after including one
+ of the headers from Boost.TR1. Further this macro is now deprecated
+ in favour of BOOST_NO_CXX11_HDR_UNORDERED_SET.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Standard library
+ </p>
+ </td>
+<td>
+ <p>
+ Implies all the other <code class="computeroutput"><span class="identifier">BOOST_HAS_TR1_</span><span class="special">*</span></code> macros should be set.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_HAS_THREADS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Platform, Compiler
+ </p>
+ </td>
+<td>
+ <p>
+ Defined if the compiler, in its current translation mode, supports
+ multiple threads of execution.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_HAS_TWO_ARG_USE_FACET</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Standard library
+ </p>
+ </td>
+<td>
+ <p>
+ The standard library lacks a conforming std::use_facet, but has
+ a two argument version that does the job. This is primarily for
+ the Rogue Wave std lib.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_HAS_UNISTD_H</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Platform
+ </p>
+ </td>
+<td>
+ <p>
+ The Platform provides <code class="computeroutput"><span class="special"><</span><span class="identifier">unistd</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_HAS_WINTHREADS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Platform
+ </p>
+ </td>
+<td>
+ <p>
+ The platform supports MS Windows style threads.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_MSVC_STD_ITERATOR</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Standard library
+ </p>
+ </td>
+<td>
+ <p>
+ Microsoft's broken version of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">iterator</span></code>
+ is being used. This implies that <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">iterator</span></code>
+ takes no more than two template parameters.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_MSVC6_MEMBER_TEMPLATES</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Compiler
+ </p>
+ </td>
+<td>
+ <p>
+ Microsoft Visual C++ 6.0 has enough member template idiosyncrasies
+ (being polite) that <code class="computeroutput"><span class="identifier">BOOST_NO_MEMBER_TEMPLATES</span></code>
+ is defined for this compiler. <code class="computeroutput"><span class="identifier">BOOST_MSVC6_MEMBER_TEMPLATES</span></code>
+ is defined to allow compiler specific workarounds. This macro gets
+ defined automatically if <code class="computeroutput"><span class="identifier">BOOST_NO_MEMBER_TEMPLATES</span></code>
+ is not defined - in other words this is treated as a strict subset
+ of the features required by the standard.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_HAS_STDINT_H</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Platform
+ </p>
+ </td>
+<td>
+ <p>
+ There are no 1998 C++ Standard headers <code class="computeroutput"><span class="special"><</span><span class="identifier">stdint</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code>
+ or <code class="computeroutput"><span class="special"><</span><span class="identifier">cstdint</span><span class="special">></span></code>, although the 1999 C Standard
+ does include <code class="computeroutput"><span class="special"><</span><span class="identifier">stdint</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code>.
+ If <code class="computeroutput"><span class="special"><</span><span class="identifier">stdint</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code> is present, <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stdint</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code>
+ can make good use of it, so a flag is supplied (signalling presence;
+ thus the default is not present, conforming to the current C++
+ standard).
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.boost_macro_reference.macros_that_describe_possible_c___future_features"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_possible_c___future_features" title="Macros that describe possible C++ future features">Macros
+ that describe possible C++ future features</a>
+</h3></div></div></div>
+<p>
+ The following macros describe features that may be included in some future
+ ISO C++ standard, but have not yet been approved for inclusion in the language.
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Macro
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody><tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_HAS_CONCEPTS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler supports concepts.
+ </p>
+ </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.boost_macro_reference.macros_that_describe_c__11_features_not_supported"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_c__11_features_not_supported" title="Macros that describe C++11 features not supported">Macros
+ that describe C++11 features not supported</a>
+</h3></div></div></div>
+<p>
+ The following macros describe features in the 2011 ISO C++ standard, formerly
+ known as C++0x, that are not yet supported by a particular compiler or library.
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Macro
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_ADDRESSOF</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The standard library header <memory> has no working std::addressof.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_ALIGNAS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler does not support the <code class="computeroutput"><span class="keyword">alignas</span></code>
+ keyword.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_ALLOCATOR</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The standard library does not provide a C++11 version of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">allocator</span></code> in <memory>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_ATOMIC_SMART_PTR</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The standard library <memory> does not support atomic smart
+ pointer operations.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_AUTO_DECLARATIONS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler does not support type deduction for variables declared
+ with the <code class="computeroutput"><span class="keyword">auto</span></code> keyword
+ (<code class="computeroutput"><span class="keyword">auto</span> <span class="identifier">var</span>
+ <span class="special">=</span> <span class="special">...;</span></code>).
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler does not support type deduction for multiple variables
+ declared with the <code class="computeroutput"><span class="keyword">auto</span></code>
+ keyword (<code class="computeroutput"><span class="keyword">auto</span> <span class="identifier">var</span>
+ <span class="special">=</span> <span class="special">...,</span>
+ <span class="special">*</span><span class="identifier">ptr</span>
+ <span class="special">=</span> <span class="special">...;</span></code>).
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_CHAR16_T</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler does not support type <code class="computeroutput"><span class="keyword">char16_t</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_CHAR32_T</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler does not support type <code class="computeroutput"><span class="keyword">char32_t</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_CONSTEXPR</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler does not support <code class="computeroutput"><span class="keyword">constexpr</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_DECLTYPE</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler does not support <code class="computeroutput"><span class="keyword">decltype</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_DECLTYPE_N3276</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler does not support the extension to <code class="computeroutput"><span class="keyword">decltype</span></code>
+ described in <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3276.pdf" target="_top">N3276</a>,
+ accepted in Madrid, March 2011.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_DELETED_FUNCTIONS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler does not support deleted (<code class="computeroutput"><span class="special">=</span>
+ <span class="keyword">delete</span></code>) functions.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_DEFAULTED_FUNCTIONS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler does not support defaulted (<code class="computeroutput"><span class="special">=</span>
+ <span class="keyword">default</span></code>) functions.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_DEFAULTED_MOVES</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler does not support defaulted move constructor or assignment.
+ Other defaulted functions may still be supported.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler does not support explicit conversion operators (<code class="computeroutput"><span class="keyword">explicit</span> <span class="keyword">operator</span>
+ <span class="identifier">T</span><span class="special">()</span></code>).
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_EXTERN_TEMPLATE</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler does not support explicit instantiation forward declarations
+ for templates (<code class="computeroutput"><span class="keyword">extern</span> <span class="keyword">template</span> <span class="special">...</span></code>).
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_FINAL</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler does not support the C++ class-virt-specifier final.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_FIXED_LENGTH_VARIADIC_TEMPLATE_EXPANSION_PACKS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler does not support expanding a variadic template parameter
+ pack into a template containing one or more fixed arguments
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler does not support default template arguments for function
+ templates.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_ATOMIC</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The standard library does not provide header <atomic>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_ARRAY</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The standard library does not provide header <array>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_CHRONO</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The standard library does not provide header <chrono>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_CODECVT</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The standard library does not provide header <codecvt>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_CONDITION_VARIABLE</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The standard library does not provide header <condition_variable>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_FORWARD_LIST</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The standard library does not provide header <forward_list>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_FUNCTIONAL</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The standard library does not provide a C++11 compatible version
+ of <functional>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_FUTURE</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The standard library does not provide header <future>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_INITIALIZER_LIST</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The standard library does not provide header <initializer_list>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_MUTEX</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The standard library does not provide header <mutex>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_RANDOM</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The standard library does not provide header <random>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_RATIO</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The standard library does not provide header <ratio>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_REGEX</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The standard library does not provide header <regex>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_SYSTEM_ERROR</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The standard library does not provide header <system_error>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_THREAD</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The standard library does not provide header <thread>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_TUPLE</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The standard library does not provide header <tuple>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_TYPEINDEX</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The standard library does not provide header <typeindex>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_TYPE_TRAITS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The standard library does not provide header <type_traits>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_UNORDERED_MAP</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The standard library does not provide header <unordered_map>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_UNORDERED_SET</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The standard library does not provide header <unordered_set>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_INLINE_NAMESPACES</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler does not support inline namespaces.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_LAMBDAS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler does not support Lambdas.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler does not allow to pass local classes as template parameters
+ (this macro intentionally does not control passing of unnamed types
+ as template parameters, see also <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2657.htm" target="_top">N2657</a>).
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_NON_PUBLIC_DEFAULTED_FUNCTIONS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler does not support defaulted (<code class="computeroutput"><span class="special">=</span>
+ <span class="keyword">default</span></code>) functions in access
+ control sections other than <code class="computeroutput"><span class="keyword">public</span></code>.
+ Public defaulted functions may still be supported, as indicated
+ by <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_DEFAULTED_FUNCTIONS</span></code>.
+ Some compilers implementing an early draft of the C++11 standard
+ (in particular, incorporating <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#906" target="_top">DR906</a>)
+ are susceptible to this problem.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_NOEXCEPT</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler does not support <code class="computeroutput"><span class="keyword">noexcept</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_NULLPTR</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler does not support <code class="computeroutput"><span class="keyword">nullptr</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_NUMERIC_LIMITS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The standard library <code class="computeroutput"><span class="special"><</span><span class="identifier">limits</span><span class="special">></span></code>
+ header does not support the C++11 version of <code class="computeroutput"><span class="identifier">numeric_limits</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_POINTER_TRAITS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The standard library does not provide a C++11 version of <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">pointer_traits</span></code> in <memory>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_RANGE_BASED_FOR</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler does not support range-based for statements.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_RAW_LITERALS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler does not support raw string literals.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_REF_QUALIFIERS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler does not support ref-qualifiers on member functions
+ as described in <a href="http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2439.htm" target="_top">N2439</a>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_RVALUE_REFERENCES</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler does not support r-value references.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_SCOPED_ENUMS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler does not support scoped enumerations (<code class="computeroutput"><span class="keyword">enum</span> <span class="keyword">class</span></code>).
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_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>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_SMART_PTR</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The standard library header <memory> has no shared_ptr and
+ unique_ptr.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_STATIC_ASSERT</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler does not support <code class="computeroutput"><span class="keyword">static_assert</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_STD_ALIGN</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The standard library header <memory> has no working std::align.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_STD_UNORDERED</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The standard library does not support <unordered_map> and
+ <unordered_set>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_TEMPLATE_ALIASES</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler does not support template aliases.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_THREAD_LOCAL</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler does not support the <code class="computeroutput"><span class="keyword">thread_local</span></code>
+ storage specifier.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_TRAILING_RESULT_TYPES</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler does not support the new function result type specification
+ syntax (e.g. <code class="computeroutput"><span class="keyword">auto</span> <span class="identifier">foo</span><span class="special">(</span><span class="identifier">T</span><span class="special">)</span>
+ <span class="special">-></span> <span class="identifier">T</span><span class="special">;</span></code>).
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_UNICODE_LITERALS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler does not support Unicode (<code class="computeroutput"><span class="identifier">u8</span></code>,
+ <code class="computeroutput"><span class="identifier">u</span></code>, <code class="computeroutput"><span class="identifier">U</span></code>) literals.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler does not support the <a href="http://en.wikipedia.org/wiki/C%2B%2B0x#Uniform_initialization" target="_top">C++11
+ Unified Initialization Syntax</a>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_USER_DEFINED_LITERALS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler does not support user defined literals.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_VARIADIC_TEMPLATES</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler does not support variadic templates.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_VARIADIC_MACROS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler does not support variadic macros.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_LONG_LONG</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler does not support <code class="computeroutput"><span class="keyword">long</span>
+ <span class="keyword">long</span></code>.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.boost_macro_reference.macros_that_allow_use_of_c__11_features_with_c__03_compilers"></a><a name="config_11_for_03"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_allow_use_of_c__11_features_with_c__03_compilers" title="Macros that allow use of C++11 features with C++03 compilers">Macros
+ that allow use of C++11 features with C++03 compilers</a>
+</h3></div></div></div>
+<p>
+ The following macros allow use of C++11 features even with compilers that
+ do not yet provide compliant C++11 support.
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Macro
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_ALIGNMENT</span><span class="special">(</span><span class="identifier">X</span><span class="special">)</span></code>, <code class="computeroutput"><span class="identifier">BOOST_NO_ALIGNMENT</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Some compilers don't support the <code class="computeroutput"><span class="keyword">alignas</span></code>
+ keyword but provide other means to specify alignment (usually,
+ through compiler-specific attributes). The macro <code class="computeroutput"><span class="identifier">BOOST_ALIGNMENT</span><span class="special">(</span><span class="identifier">X</span><span class="special">)</span></code>
+ will expand to the <code class="computeroutput"><span class="keyword">alignas</span><span class="special">(</span><span class="identifier">X</span><span class="special">)</span></code> keyword if the compiler supports
+ it or to some compiler-specific attribute to achieve the specified
+ alignment. If no such compiler-specific attribute is known then
+ <code class="computeroutput"><span class="identifier">BOOST_ALIGNMENT</span><span class="special">(</span><span class="identifier">X</span><span class="special">)</span></code> will expand to nothing and <code class="computeroutput"><span class="identifier">BOOST_NO_ALIGNMENT</span></code> will be defined.
+ Unlike native <code class="computeroutput"><span class="keyword">alignas</span></code>,
+ <code class="computeroutput"><span class="identifier">X</span></code> must always be
+ a compile-time integer constant. The macro can be used to specify
+ alignment of types and data:
+</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">BOOST_ALIGNMENT</span><span class="special">(</span><span class="number">16</span><span class="special">)</span> <span class="identifier">my_data</span>
+<span class="special">{</span>
+ <span class="keyword">char</span> <span class="identifier">c</span><span class="special">[</span><span class="number">16</span><span class="special">];</span>
+<span class="special">};</span>
+<span class="identifier">BOOST_ALIGNMENT</span><span class="special">(</span><span class="number">8</span><span class="special">)</span> <span class="keyword">int</span> <span class="identifier">arr</span><span class="special">[</span><span class="number">32</span><span class="special">];</span>
+</pre>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_CONSTEXPR</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Some compilers don't support the use of <code class="computeroutput"><span class="keyword">constexpr</span></code>.
+ This macro expands to nothing on those compilers, and <code class="computeroutput"><span class="keyword">constexpr</span></code> elsewhere. For example,
+ when defining a constexpr function or constructor replace:
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">constexpr</span> <span class="identifier">tuple</span><span class="special">();</span>
+</pre>
+<p>
+ with:
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">BOOST_CONSTEXPR</span> <span class="identifier">tuple</span><span class="special">();</span>
+</pre>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_CONSTEXPR_OR_CONST</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Some compilers don't support the use of <code class="computeroutput"><span class="keyword">constexpr</span></code>.
+ This macro expands to <code class="computeroutput"><span class="keyword">const</span></code>
+ on those compilers, and <code class="computeroutput"><span class="keyword">constexpr</span></code>
+ elsewhere. For example, when defining const expr variables replace:
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">static</span> <span class="keyword">constexpr</span> <span class="identifier">UIntType</span> <span class="identifier">xor_mask</span> <span class="special">=</span> <span class="identifier">a</span><span class="special">;</span>
+</pre>
+<p>
+ with:
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">static</span> <span class="identifier">BOOST_CONSTEXPR_OR_CONST</span> <span class="identifier">UIntType</span> <span class="identifier">xor_mask</span> <span class="special">=</span> <span class="identifier">a</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_STATIC_CONSTEXPR</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ This is a shortcut for <code class="computeroutput"><span class="keyword">static</span>
+ <span class="identifier">BOOST_CONSTEXPR_OR_CONST</span></code>.
+ For example, when defining const expr variables replace:
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">static</span> <span class="keyword">constexpr</span> <span class="identifier">UIntType</span> <span class="identifier">xor_mask</span> <span class="special">=</span> <span class="identifier">a</span><span class="special">;</span>
+</pre>
+<p>
+ with:
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">BOOST_STATIC_CONSTEXPR</span> <span class="identifier">UIntType</span> <span class="identifier">xor_mask</span> <span class="special">=</span> <span class="identifier">a</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_DEFAULTED_FUNCTION</span><span class="special">(</span><span class="identifier">fun</span><span class="special">,</span> <span class="identifier">body</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ This macro is intended to be used within a class definition in
+ order to declare a default implementation of function <code class="computeroutput"><span class="identifier">fun</span></code>. For the compilers that do
+ not support C++11 defaulted functions the macro will expand into
+ an inline function definition with the <code class="computeroutput"><span class="identifier">body</span></code>
+ implementation. For example:
+</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">my_struct</span>
+<span class="special">{</span>
+ <span class="identifier">BOOST_DEFAULTED_FUNCTION</span><span class="special">(</span><span class="identifier">my_struct</span><span class="special">(),</span> <span class="special">{})</span>
+<span class="special">};</span>
+</pre>
+<p>
+ is equivalent to:
+</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">my_struct</span>
+<span class="special">{</span>
+ <span class="identifier">my_struct</span><span class="special">()</span> <span class="special">=</span> <span class="keyword">default</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+ or:
+</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">my_struct</span>
+<span class="special">{</span>
+ <span class="identifier">my_struct</span><span class="special">()</span> <span class="special">{}</span>
+<span class="special">};</span>
+</pre>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_DELETED_FUNCTION</span><span class="special">(</span><span class="identifier">fun</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ This macro is intended to be used within a class definition in
+ order to declare a deleted function <code class="computeroutput"><span class="identifier">fun</span></code>.
+ For the compilers that do not support C++11 deleted functions the
+ macro will expand into a private function declaration with no definition.
+ Since the macro may change the access mode, it is recommended to
+ use this macro at the end of the class definition. For example:
+</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">noncopyable</span>
+<span class="special">{</span>
+ <span class="identifier">BOOST_DELETED_FUNCTION</span><span class="special">(</span><span class="identifier">noncopyable</span><span class="special">(</span><span class="identifier">noncopyable</span> <span class="keyword">const</span><span class="special">&))</span>
+ <span class="identifier">BOOST_DELETED_FUNCTION</span><span class="special">(</span><span class="identifier">noncopyable</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">=</span> <span class="special">(</span><span class="identifier">noncopyable</span> <span class="keyword">const</span><span class="special">&))</span>
+<span class="special">};</span>
+</pre>
+<p>
+ is equivalent to:
+</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">noncopyable</span>
+<span class="special">{</span>
+ <span class="identifier">noncopyable</span><span class="special">(</span><span class="identifier">noncopyable</span> <span class="keyword">const</span><span class="special">&)</span> <span class="special">=</span> <span class="keyword">delete</span><span class="special">;</span>
+ <span class="identifier">noncopyable</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">=</span> <span class="special">(</span><span class="identifier">noncopyable</span> <span class="keyword">const</span><span class="special">&)</span> <span class="special">=</span> <span class="keyword">delete</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+ or:
+</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">noncopyable</span>
+<span class="special">{</span>
+<span class="keyword">private</span><span class="special">:</span>
+ <span class="identifier">noncopyable</span><span class="special">(</span><span class="identifier">noncopyable</span> <span class="keyword">const</span><span class="special">&);</span>
+ <span class="identifier">noncopyable</span><span class="special">&</span> <span class="keyword">operator</span><span class="special">=</span> <span class="special">(</span><span class="identifier">noncopyable</span> <span class="keyword">const</span><span class="special">&);</span>
+<span class="special">};</span>
+</pre>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">BOOST_NOEXCEPT</span>
+<span class="identifier">BOOST_NOEXCEPT_OR_NOTHROW</span>
+<span class="identifier">BOOST_NOEXCEPT_IF</span><span class="special">(</span><span class="identifier">Predicate</span><span class="special">)</span>
+<span class="identifier">BOOST_NOEXCEPT_EXPR</span><span class="special">(</span><span class="identifier">Expression</span><span class="special">)</span>
+</pre>
+<p>
+ </p>
+ </td>
+<td>
+ <p>
+ If <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_NOEXCEPT</span></code>
+ is defined (i.e. C++03 compliant compilers) these macros are defined
+ as:
+ </p>
+ <div class="blockquote"><blockquote class="blockquote">
+<p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_NOEXCEPT</span>
+<span class="preprocessor">#define</span> <span class="identifier">BOOST_NOEXCEPT_OR_NOTHROW</span> <span class="keyword">throw</span><span class="special">()</span>
+<span class="preprocessor">#define</span> <span class="identifier">BOOST_NOEXCEPT_IF</span><span class="special">(</span><span class="identifier">Predicate</span><span class="special">)</span>
+<span class="preprocessor">#define</span> <span class="identifier">BOOST_NOEXCEPT_EXPR</span><span class="special">(</span><span class="identifier">Expression</span><span class="special">)</span> <span class="keyword">false</span>
+</pre>
+<p>
+ </p>
+</blockquote></div>
+ <p>
+ If <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_NOEXCEPT</span></code>
+ is not defined (i.e. C++11 compliant compilers) they are defined
+ as:
+ </p>
+ <div class="blockquote"><blockquote class="blockquote">
+<p>
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_NOEXCEPT</span> <span class="keyword">noexcept</span>
+<span class="preprocessor">#define</span> <span class="identifier">BOOST_NOEXCEPT_OR_NOTHROW</span> <span class="keyword">noexcept</span>
+<span class="preprocessor">#define</span> <span class="identifier">BOOST_NOEXCEPT_IF</span><span class="special">(</span><span class="identifier">Predicate</span><span class="special">)</span> <span class="keyword">noexcept</span><span class="special">((</span><span class="identifier">Predicate</span><span class="special">))</span>
+<span class="preprocessor">#define</span> <span class="identifier">BOOST_NOEXCEPT_EXPR</span><span class="special">(</span><span class="identifier">Expression</span><span class="special">)</span> <span class="keyword">noexcept</span><span class="special">((</span><span class="identifier">Expression</span><span class="special">))</span>
+</pre>
+<p>
+ </p>
+</blockquote></div>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_MSVC_ENABLE_2012_NOV_CTP</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ For Microsoft Visual C++ 2012, enable the C++11 features supplied
+ by the November 2012 Community Technology Preview. These features
+ are not automatically enabled because the CTP is non-supported
+ alpha code that is not recommended for production use. This macro
+ must be defined before including any Boost headers, and must be
+ defined for all translation units in the program, including Boost
+ library builds. This macro will no longer have any effect once
+ an official Microsoft release supports the CTP features.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.boost_macro_reference.macros_that_describe_c__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_SEPARATORS</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_STD_EXCHANGE</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler does not support <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">exchange</span><span class="special">()</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_HDR_SHARED_MUTEX</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The standard library does not provide header <shared_mutex>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES</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"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></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.macros_that_describe_c__17_features_not_supported"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_c__17_features_not_supported" title="Macros that describe C++17 features not supported">Macros
+ that describe C++17 features not supported</a>
+</h3></div></div></div>
+<p>
+ The following macros describe features in the 2017 ISO C++ standard, formerly
+ known as C++1z, 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_CXX17_STD_APPLY</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler does not support <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">apply</span><span class="special">()</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX17_STD_INVOKE</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler does not support <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">invoke</span><span class="special">()</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX17_ITERATOR_TRAITS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler does not support SFINAE-friendly <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">iterator_traits</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX17_IF_CONSTEXPR</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler does not support <code class="computeroutput"><span class="keyword">if</span>
+ <span class="keyword">constexpr</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_describe_features_that_have_been_removed_from_the_standard_"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_features_that_have_been_removed_from_the_standard_" title="Macros that describe features that have been removed from the standard.">Macros
+ that describe features that have been removed from the standard.</a>
+</h3></div></div></div>
+<p>
+ The following macros describe features which were required by one version
+ of the standard, but have been removed by later versions.
+ </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_CXX98_RANDOM_SHUFFLE</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The standard library no longer supports <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">random_shuffle</span><span class="special">()</span></code>. It was deprecated in C++11 and
+ is removed from C++14.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_AUTO_PTR</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The standard library no longer supports <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">auto_ptr</span></code>.
+ It was deprecated in C++11 and is removed from C++14.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX98_FUNCTION_BASE</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The standard library no longer supports <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">unary_function</span></code>
+ and <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">binary_function</span></code>. They were deprecated
+ in C++11 and is removed from C++14.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX98_BINDERS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The standard library no longer supports <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">bind1st</span></code>,
+ <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">bind2nd</span></code>, <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">ptr_fun</span></code>
+ and <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">mem_fun</span></code>. They were deprecated
+ in C++11 and is removed from C++14.
+ </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
+ Helper Macros</a>
+</h3></div></div></div>
+<p>
+ The following macros are either simple helpers, or macros that provide workarounds
+ for compiler/standard library defects.
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Macro
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_WORKAROUND</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ This macro is used where a compiler specific workaround is required
+ that is not otherwise described by one of the other Boost.Config
+ macros. To use the macro you must first
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">workaround</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+</pre>
+<p>
+ usage is then:
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="preprocessor">#if</span> <span class="identifier">BOOST_WORKAROUND</span><span class="special">(</span><span class="identifier">MACRONAME</span><span class="special">,</span> <span class="identifier">CONDITION</span><span class="special">)</span>
+ <span class="comment">// workaround code goes here...</span>
+<span class="preprocessor">#else</span>
+ <span class="comment">// Standard conforming code goes here...</span>
+<span class="preprocessor">#endif</span>
+</pre>
+<p>
+ where <code class="computeroutput"><span class="identifier">MACRONAME</span></code>
+ is a macro that usually describes the version number to be tested
+ against, and <code class="computeroutput"><span class="identifier">CONDITION</span></code>
+ is a comparison operator followed by a value. For example <code class="computeroutput"><span class="identifier">BOOST_WORKAROUND</span><span class="special">(</span><span class="identifier">BOOST_INTEL</span><span class="special">,</span>
+ <span class="special"><=</span> <span class="number">1010</span><span class="special">)</span></code> would evaluate to <code class="computeroutput"><span class="number">1</span></code> for Intel C++ 10.1 and earlier.
+ </p>
+ <p>
+ The macro can also be used with <code class="computeroutput"><span class="identifier">BOOST_TESTED_AT</span></code>
+ if all current compiler versions exhibit the issue, but the issue
+ is expected to be fixed at some later point.
+ </p>
+ <p>
+ For example <code class="computeroutput"><span class="identifier">BOOST_WORKAROUND</span><span class="special">(</span><span class="identifier">__BORLANDC__</span><span class="special">,</span> <span class="identifier">BOOST_TESTED_AT</span><span class="special">(</span><span class="number">0x590</span><span class="special">))</span></code> would normally evaluate to <code class="computeroutput"><span class="number">1</span></code> for all values of <code class="computeroutput"><span class="identifier">__BORLANDC__</span></code> <span class="emphasis"><em>unless</em></span>
+ the macro <code class="computeroutput"><span class="identifier">BOOST_DETECT_OUTDATED_WORKAROUNDS</span></code>
+ is defined, in which case evaluates to <code class="computeroutput"><span class="special">(</span><span class="identifier">__BORLANDC__</span> <span class="special"><=</span>
+ <span class="number">0x590</span><span class="special">)</span></code>.
+ </p>
+ <p>
+ <span class="bold"><strong>Note</strong></span>: the ultimate source of documentation
+ for this macro is in <a href="../../../../../boost/config/workaround.hpp" target="_top">boost/config/workaround.hpp</a>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_PREVENT_MACRO_SUBSTITUTION</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Sometimes you have a function name with the same name as a C macro,
+ for example "min" and "max" member functions,
+ in which case one can prevent the function being expanded as a
+ macro using:
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">someclass</span><span class="special">.</span><span class="identifier">min</span> <span class="identifier">BOOST_PREVENT_MACRO_SUBSTITUTION</span><span class="special">(</span><span class="identifier">arg1</span><span class="special">,</span> <span class="identifier">arg2</span><span class="special">);</span>
+</pre>
+<p>
+ The following also works in most, but not all, contexts:
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="special">(</span><span class="identifier">someclass</span><span class="special">.</span><span class="identifier">max</span><span class="special">)(</span><span class="identifier">arg1</span><span class="special">,</span> <span class="identifier">arg2</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_DEDUCED_TYPENAME</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Some compilers don't support the use of typename for dependent
+ types in deduced contexts. This macro expands to nothing on those
+ compilers, and typename elsewhere. For example, replace: <code class="computeroutput"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span> <span class="keyword">void</span>
+ <span class="identifier">f</span><span class="special">(</span><span class="identifier">T</span><span class="special">,</span>
+ <span class="keyword">typename</span> <span class="identifier">T</span><span class="special">::</span><span class="identifier">type</span><span class="special">);</span></code> with: <code class="computeroutput"><span class="keyword">template</span>
+ <span class="special"><</span><span class="keyword">class</span>
+ <span class="identifier">T</span><span class="special">></span>
+ <span class="keyword">void</span> <span class="identifier">f</span><span class="special">(</span><span class="identifier">T</span><span class="special">,</span> <span class="identifier">BOOST_DEDUCED_TYPENAME</span>
+ <span class="identifier">T</span><span class="special">::</span><span class="identifier">type</span><span class="special">);</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_HASH_MAP_HEADER</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The header to include to get the SGI <code class="computeroutput"><span class="identifier">hash_map</span></code>
+ class. This macro is only available if <code class="computeroutput"><span class="identifier">BOOST_HAS_HASH</span></code>
+ is defined.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_HASH_SET_HEADER</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The header to include to get the SGI <code class="computeroutput"><span class="identifier">hash_set</span></code>
+ class. This macro is only available if <code class="computeroutput"><span class="identifier">BOOST_HAS_HASH</span></code>
+ is defined.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_SLIST_HEADER</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The header to include to get the SGI <code class="computeroutput"><span class="identifier">slist</span></code>
+ class. This macro is only available if <code class="computeroutput"><span class="identifier">BOOST_HAS_SLIST</span></code>
+ is defined.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_STD_EXTENSION_NAMESPACE</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The namespace used for std library extensions (hashtable classes
+ etc).
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_STATIC_CONSTANT</span><span class="special">(</span><span class="identifier">Type</span><span class="special">,</span> <span class="identifier">assignment</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ On compilers which don't allow in-class initialization of static
+ integral constant members, we must use enums as a workaround if
+ we want the constants to be available at compile-time. This macro
+ gives us a convenient way to declare such constants. For example
+ instead of:
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">struct</span> <span class="identifier">foo</span><span class="special">{</span>
+ <span class="keyword">static</span> <span class="keyword">const</span> <span class="keyword">int</span> <span class="identifier">value</span> <span class="special">=</span> <span class="number">2</span><span class="special">;</span>
+<span class="special">};</span>
+</pre>
+<p>
+ use:
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">struct</span> <span class="identifier">foo</span><span class="special">{</span>
+ <span class="identifier">BOOST_STATIC_CONSTANT</span><span class="special">(</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">value</span> <span class="special">=</span> <span class="number">2</span><span class="special">);</span>
+<span class="special">};</span>
+</pre>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_UNREACHABLE_RETURN</span><span class="special">(</span><span class="identifier">result</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Normally evaluates to nothing, but evaluates to return x; if the
+ compiler requires a return, even when it can never be reached.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_FALLTHROUGH</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The BOOST_FALLTHROUGH macro can be used to annotate implicit fall-through
+ between switch labels:
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">switch</span> <span class="special">(</span><span class="identifier">x</span><span class="special">)</span> <span class="special">{</span>
+<span class="keyword">case</span> <span class="number">40</span><span class="special">:</span>
+<span class="keyword">case</span> <span class="number">41</span><span class="special">:</span>
+ <span class="keyword">if</span> <span class="special">(</span><span class="identifier">truth_is_out_there</span><span class="special">)</span> <span class="special">{</span>
+ <span class="special">++</span><span class="identifier">x</span><span class="special">;</span>
+ <span class="identifier">BOOST_FALLTHROUGH</span><span class="special">;</span> <span class="comment">// Use instead of/along with annotations in </span>
+ <span class="comment">// comments. </span>
+ <span class="special">}</span> <span class="keyword">else</span> <span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">x</span><span class="special">;</span>
+ <span class="special">}</span>
+ <span class="keyword">case</span> <span class="number">42</span><span class="special">:</span>
+ <span class="special">...</span>
+</pre>
+<p>
+ As shown in the example above, the BOOST_FALLTHROUGH macro should
+ be followed by a semicolon. It is designed to mimic control-flow
+ statements like 'break;', so it can be placed in most places where
+ 'break;' can, but only if there are no statements on the execution
+ path between it and the next switch label.
+ </p>
+ <p>
+ When compiled with Clang >3.2 in C++11 mode, the BOOST_FALLTHROUGH
+ macro is expanded to <code class="computeroutput"><span class="special">[[</span><span class="identifier">clang</span><span class="special">::</span><span class="identifier">fallthrough</span><span class="special">]]</span></code>
+ attribute, which is analysed when performing switch labels fall-through
+ diagnostic ('-Wimplicit-fallthrough'). See clang <a href="http://clang.llvm.org/docs/LanguageExtensions.html#clang__fallthrough" target="_top">documentation
+ on language extensions for details.</a>
+ </p>
+ <p>
+ When used with unsupported compilers, the BOOST_FALLTHROUGH macro
+ has no effect on diagnostics.
+ </p>
+ <p>
+ In either case this macro has no effect on runtime behavior and
+ performance of code.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_EXPLICIT_TEMPLATE_TYPE</span><span class="special">(</span><span class="identifier">t</span><span class="special">)</span></code>
+ </p>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_EXPLICIT_TEMPLATE_NON_TYPE</span><span class="special">(</span><span class="identifier">t</span><span class="special">,</span><span class="identifier">v</span><span class="special">)</span></code>
+ </p>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE</span><span class="special">(</span><span class="identifier">t</span><span class="special">)</span></code>
+ </p>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE</span><span class="special">(</span><span class="identifier">t</span><span class="special">,</span><span class="identifier">v</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Some compilers silently "fold" different function template
+ instantiations if some of the template parameters don't appear
+ in the function parameter list. For instance:
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">iostream</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">ostream</span><span class="special">></span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">typeinfo</span><span class="special">></span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">int</span> <span class="identifier">n</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">f</span><span class="special">()</span> <span class="special">{</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="identifier">n</span> <span class="special"><<</span> <span class="char">' '</span><span class="special">;</span> <span class="special">}</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">g</span><span class="special">()</span> <span class="special">{</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">cout</span> <span class="special"><<</span> <span class="keyword">typeid</span><span class="special">(</span><span class="identifier">T</span><span class="special">).</span><span class="identifier">name</span><span class="special">()</span> <span class="special"><<</span> <span class="char">' '</span><span class="special">;</span> <span class="special">}</span>
+
+<span class="keyword">int</span> <span class="identifier">main</span><span class="special">()</span> <span class="special">{</span>
+ <span class="identifier">f</span><span class="special"><</span><span class="number">1</span><span class="special">>();</span>
+ <span class="identifier">f</span><span class="special"><</span><span class="number">2</span><span class="special">>();</span>
+
+ <span class="identifier">g</span><span class="special"><</span><span class="keyword">int</span><span class="special">>();</span>
+ <span class="identifier">g</span><span class="special"><</span><span class="keyword">double</span><span class="special">>();</span>
+<span class="special">}</span>
+</pre>
+<p>
+ incorrectly outputs <code class="literal">2 2 double double</code> on VC++
+ 6. These macros, to be used in the function parameter list, fix
+ the problem without effects on the calling syntax. For instance,
+ in the case above write:
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span> <span class="special"><</span><span class="keyword">int</span> <span class="identifier">n</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">f</span><span class="special">(</span><span class="identifier">BOOST_EXPLICIT_TEMPLATE_NON_TYPE</span><span class="special">(</span><span class="keyword">int</span><span class="special">,</span> <span class="identifier">n</span><span class="special">))</span> <span class="special">{</span> <span class="special">...</span> <span class="special">}</span>
+
+<span class="keyword">template</span> <span class="special"><</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">></span>
+<span class="keyword">void</span> <span class="identifier">g</span><span class="special">(</span><span class="identifier">BOOST_EXPLICIT_TEMPLATE_TYPE</span><span class="special">(</span><span class="identifier">T</span><span class="special">))</span> <span class="special">{</span> <span class="special">...</span> <span class="special">}</span>
+</pre>
+<p>
+ Beware that they can declare (for affected compilers) a dummy defaulted
+ parameter, so they
+ </p>
+ <p>
+ <span class="bold"><strong>a)</strong></span> should be always invoked <span class="bold"><strong>at the end</strong></span> of the parameter list
+ </p>
+ <p>
+ <span class="bold"><strong>b)</strong></span> can't be used if your function
+ template is multiply declared.
+ </p>
+ <p>
+ Furthermore, in order to add any needed comma separator, an <code class="computeroutput"><span class="identifier">APPEND_</span><span class="special">*</span></code>
+ version must be used when the macro invocation appears after a
+ normal parameter declaration or after the invocation of another
+ macro of this same group.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_USE_FACET</span><span class="special">(</span><span class="identifier">Type</span><span class="special">,</span> <span class="identifier">loc</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ When the standard library does not have a conforming <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">use_facet</span></code> there are various workarounds
+ available, but they differ from library to library. This macro
+ provides a consistent way to access a locale's facets. For example,
+ replace: <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">use_facet</span><span class="special"><</span><span class="identifier">Type</span><span class="special">>(</span><span class="identifier">loc</span><span class="special">);</span></code>
+ with: <code class="computeroutput"><span class="identifier">BOOST_USE_FACET</span><span class="special">(</span><span class="identifier">Type</span><span class="special">,</span> <span class="identifier">loc</span><span class="special">);</span></code> Note do not add a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span></code>
+ prefix to the front of <code class="computeroutput"><span class="identifier">BOOST_USE_FACET</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_HAS_FACET</span><span class="special">(</span><span class="identifier">Type</span><span class="special">,</span> <span class="identifier">loc</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ When the standard library does not have a comforming <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">has_facet</span></code> there are various workarounds
+ available, but they differ from library to library. This macro
+ provides a consistent way to check a locale's facets. For example,
+ replace: <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">has_facet</span><span class="special"><</span><span class="identifier">Type</span><span class="special">>(</span><span class="identifier">loc</span><span class="special">);</span></code>
+ with: <code class="computeroutput"><span class="identifier">BOOST_HAS_FACET</span><span class="special">(</span><span class="identifier">Type</span><span class="special">,</span> <span class="identifier">loc</span><span class="special">);</span></code> Note do not add a <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span></code>
+ prefix to the front of <code class="computeroutput"><span class="identifier">BOOST_HAS_FACET</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NESTED_TEMPLATE</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Member templates are supported by some compilers even though they
+ can't use the <code class="computeroutput"><span class="identifier">A</span><span class="special">::</span><span class="keyword">template</span>
+ <span class="identifier">member</span><span class="special"><</span><span class="identifier">U</span><span class="special">></span></code>
+ syntax, as a workaround replace: <code class="computeroutput"><span class="keyword">typedef</span>
+ <span class="keyword">typename</span> <span class="identifier">A</span><span class="special">::</span><span class="keyword">template</span>
+ <span class="identifier">rebind</span><span class="special"><</span><span class="identifier">U</span><span class="special">></span>
+ <span class="identifier">binder</span><span class="special">;</span></code>
+ with: <code class="computeroutput"><span class="keyword">typedef</span> <span class="keyword">typename</span>
+ <span class="identifier">A</span><span class="special">::</span><span class="identifier">BOOST_NESTED_TEMPLATE</span> <span class="identifier">rebind</span><span class="special"><</span><span class="identifier">U</span><span class="special">></span> <span class="identifier">binder</span><span class="special">;</span></code>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_STRINGIZE</span><span class="special">(</span><span class="identifier">X</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Converts the parameter <code class="computeroutput"><span class="identifier">X</span></code>
+ to a string after macro replacement on <code class="computeroutput"><span class="identifier">X</span></code>
+ has been performed.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_JOIN</span><span class="special">(</span><span class="identifier">X</span><span class="special">,</span><span class="identifier">Y</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ This piece of macro magic joins the two arguments together, even
+ when one of the arguments is itself a macro (see 16.3.1 in C++
+ standard). This is normally used to create a mangled name in combination
+ with a predefined macro such a __LINE__.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_RESTRICT</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ This macro can be used in place of the compiler specific variant
+ of the C99 <code class="computeroutput"><span class="identifier">restrict</span></code>
+ 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.
+ </p>
+ <p>
+ Usage example:
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">void</span> <span class="identifier">perform_computation</span><span class="special">(</span> <span class="keyword">float</span><span class="special">*</span> <span class="identifier">BOOST_RESTRICT</span> <span class="identifier">in</span><span class="special">,</span> <span class="keyword">float</span><span class="special">*</span> <span class="identifier">BOOST_RESTRICT</span> <span class="identifier">out</span> <span class="special">)</span>
+<span class="special">{</span>
+ <span class="special">*</span><span class="identifier">out</span> <span class="special">=</span> <span class="special">*</span><span class="identifier">in</span> <span class="special">*</span> <span class="number">0.5f</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_FORCEINLINE</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ This macro can be used in place of the <code class="computeroutput"><span class="keyword">inline</span></code>
+ keyword to instruct the compiler that the function should always
+ be inlined. Overuse of this macro can lead to significant bloat,
+ while good use can increase performance in certain cases, such
+ as computation-intensive code built through generative programming
+ techniques.
+ </p>
+ <p>
+ Usage example:
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">template</span><span class="special"><</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">></span>
+<span class="identifier">BOOST_FORCEINLINE</span> <span class="identifier">T</span><span class="special">&</span> <span class="identifier">f</span><span class="special">(</span><span class="identifier">T</span><span class="special">&</span> <span class="identifier">t</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="keyword">return</span> <span class="identifier">t</span><span class="special">;</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+ <p>
+ Note that use of this macro can lead to cryptic error messages
+ with some compilers. Consider defining it to <code class="computeroutput"><span class="keyword">inline</span></code>
+ before including the Boost.Config header in order to be able to
+ debug errors more easily.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NOINLINE</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ This macro can be used in place of the <code class="computeroutput"><span class="keyword">inline</span></code>
+ keyword to instruct the compiler that the function should never
+ be inlined. One should typically use this macro to mark functions
+ that are unlikely to be called, such as error handling routines.
+ </p>
+ <p>
+ Usage example:
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">BOOST_NOINLINE</span> <span class="keyword">void</span> <span class="identifier">handle_error</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">descr</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="comment">// ...</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NORETURN</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ This macro can be used before the function declaration or definition
+ to instruct the compiler that the function does not return normally
+ (i.e. with a <code class="computeroutput"><span class="keyword">return</span></code>
+ statement or by leaving the function scope, if the function return
+ type is <code class="computeroutput"><span class="keyword">void</span></code>). The
+ macro can be used to mark functions that always throw exceptions
+ or terminate the application. Compilers that support this markup
+ may use this information to specifically organize the code surrounding
+ calls to this function and suppress warnings about missing <code class="computeroutput"><span class="keyword">return</span></code> statements in the functions
+ enclosing such calls.
+ </p>
+ <p>
+ Usage example:
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="identifier">BOOST_NORETURN</span> <span class="keyword">void</span> <span class="identifier">on_error_occurred</span><span class="special">(</span><span class="keyword">const</span> <span class="keyword">char</span><span class="special">*</span> <span class="identifier">descr</span><span class="special">)</span>
+<span class="special">{</span>
+ <span class="keyword">throw</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">runtime_error</span><span class="special">(</span><span class="identifier">descr</span><span class="special">);</span>
+<span class="special">}</span>
+</pre>
+<p>
+ </p>
+ <p>
+ If the compiler does not support this markup, <code class="computeroutput"><span class="identifier">BOOST_NORETURN</span></code>
+ is defined empty and an additional macro <code class="computeroutput"><span class="identifier">BOOST_NO_NORETURN</span></code>
+ is defined.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_LIKELY</span><span class="special">(</span><span class="identifier">X</span><span class="special">)</span></code>
+ </p>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_UNLIKELY</span><span class="special">(</span><span class="identifier">X</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ These macros communicate to the compiler that the conditional expression
+ <code class="computeroutput"><span class="identifier">X</span></code> is likely or
+ unlikely to yield a positive result. The expression should result
+ in a boolean value. The result of the macro is an integer or boolean
+ value equivalent to the result of <code class="computeroutput"><span class="identifier">X</span></code>.
+ </p>
+ <p>
+ The macros are intended to be used in branching statements. The
+ additional hint they provide can be used by the compiler to arrange
+ the compiled code of the branches more effectively.
+ </p>
+ <p>
+ Usage example:
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">if</span> <span class="special">(</span><span class="identifier">BOOST_UNLIKELY</span><span class="special">(</span><span class="identifier">ptr</span> <span class="special">==</span> <span class="identifier">NULL</span><span class="special">))</span>
+ <span class="identifier">handle_error</span><span class="special">(</span><span class="string">"ptr is NULL"</span><span class="special">);</span>
+</pre>
+<p>
+ </p>
+ </td>
+</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>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_MAY_ALIAS</span></code>,
+ <code class="computeroutput"><span class="identifier">BOOST_NO_MAY_ALIAS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_MAY_ALIAS</span></code>
+ expands to a type attribute that can be used to mark types that
+ may alias other types. Pointers or references to such marked types
+ can be used to access objects of other types. If the compiler supports
+ this feature <code class="computeroutput"><span class="identifier">BOOST_NO_MAY_ALIAS</span></code>
+ is not defined. Otherwise <code class="computeroutput"><span class="identifier">BOOST_MAY_ALIAS</span></code>
+ expands to nothing and <code class="computeroutput"><span class="identifier">BOOST_NO_MAY_ALIAS</span></code>
+ is defined.
+ </p>
+ <p>
+ Usage example:
+</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">BOOST_MAY_ALIAS</span> <span class="identifier">aliasing_struct</span><span class="special">;</span>
+<span class="keyword">typedef</span> <span class="keyword">unsigned</span> <span class="keyword">int</span> <span class="identifier">BOOST_MAY_ALIAS</span> <span class="identifier">aliasing_uint</span><span class="special">;</span>
+</pre>
+<p>
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_PRAGMA_MESSAGE</span><span class="special">(</span><span class="identifier">M</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Defined in header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">pragma_message</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>,
+ this macro expands to the equivalent of <code class="computeroutput"><span class="preprocessor">#pragma</span>
+ <span class="identifier">message</span><span class="special">(</span><span class="identifier">M</span><span class="special">)</span></code>.
+ <code class="computeroutput"><span class="identifier">M</span></code> must be a string
+ literal.
+ </p>
+ <p>
+ Example: <code class="computeroutput"><span class="identifier">BOOST_PRAGMA_MESSAGE</span><span class="special">(</span><span class="string">"This header
+ is deprecated."</span><span class="special">)</span></code>
+ </p>
+ <p>
+ The messages issued by <code class="computeroutput"><span class="identifier">BOOST_PRAGMA_MESSAGE</span></code>
+ can be suppressed by defining the macro <code class="computeroutput"><span class="identifier">BOOST_DISABLE_PRAGMA_MESSAGE</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_HEADER_DEPRECATED</span><span class="special">(</span><span class="identifier">A</span><span class="special">)</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Defined in header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">header_deprecated</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>,
+ this macro issues the message "This header is deprecated.
+ Use <code class="computeroutput"><span class="identifier">A</span></code> instead."
+ via <code class="computeroutput"><span class="identifier">BOOST_PRAGMA_MESSAGE</span></code>.
+ <code class="computeroutput"><span class="identifier">A</span></code> must be a string
+ literal.
+ </p>
+ <p>
+ Example: <code class="computeroutput"><span class="identifier">BOOST_HEADER_DEPRECATED</span><span class="special">(</span><span class="string">"<boost/config/workaround.hpp>"</span><span class="special">)</span></code>
+ </p>
+ <p>
+ The messages issued by <code class="computeroutput"><span class="identifier">BOOST_HEADER_DEPRECATED</span></code>
+ can be suppressed by defining the macro <code class="computeroutput"><span class="identifier">BOOST_ALLOW_DEPRECATED_HEADERS</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.boost_informational_macros"></a><a name="config_info_macros"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.boost_informational_macros" title="Boost Informational Macros">Boost
+ Informational Macros</a>
+</h3></div></div></div>
+<p>
+ The following macros describe boost features; these are, generally speaking
+ the only boost macros that should be tested in user code.
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Macro
+ </p>
+ </th>
+<th>
+ <p>
+ Header
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_VERSION</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">version</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Describes the boost version number in XYYYZZ format such that:
+ <code class="computeroutput"><span class="special">(</span><span class="identifier">BOOST_VERSION</span>
+ <span class="special">%</span> <span class="number">100</span><span class="special">)</span></code> is the sub-minor version, <code class="computeroutput"><span class="special">((</span><span class="identifier">BOOST_VERSION</span>
+ <span class="special">/</span> <span class="number">100</span><span class="special">)</span> <span class="special">%</span> <span class="number">1000</span><span class="special">)</span></code>
+ is the minor version, and <code class="computeroutput"><span class="special">(</span><span class="identifier">BOOST_VERSION</span> <span class="special">/</span>
+ <span class="number">100000</span><span class="special">)</span></code>
+ is the major version.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_INT64_T</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">cstdint</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code> <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stdint</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Defined if there are no 64-bit integral types: <code class="computeroutput"><span class="identifier">int64_t</span></code>,
+ <code class="computeroutput"><span class="identifier">uint64_t</span></code> etc.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_INTEGRAL_INT64_T</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">cstdint</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code> <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">stdint</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Defined if <code class="computeroutput"><span class="identifier">int64_t</span></code>
+ as defined by <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">cstdint</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>
+ is not usable in integral constant expressions.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_MSVC</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Defined if the compiler is really Microsoft Visual C++, as opposed
+ to one of the many other compilers that also define <code class="computeroutput"><span class="identifier">_MSC_VER</span></code>. Has the same value
+ as _MSC_VER.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_MSVC_FULL_VER</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Defined to a normalised 9 digit version of _MSC_FULL_VER (which
+ sometimes only has 8 digits), the macro has the form VVMMPPPPP
+ where VV is the major version number, MM is the minor version number,
+ and PPPPP is the compiler build number.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_GCC</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Defined if the compiler is really GCC, as opposed to one of the
+ many other compilers that also define <code class="computeroutput"><span class="identifier">__GNUC__</span></code>.
+ Has the value: <code class="computeroutput"><span class="identifier">__GNUC__</span>
+ <span class="special">*</span> <span class="number">10000</span>
+ <span class="special">+</span> <span class="identifier">__GNUC_MINOR__</span>
+ <span class="special">*</span> <span class="number">100</span>
+ <span class="special">+</span> <span class="identifier">__GNUC_PATCHLEVEL__</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_INTEL</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Defined if the compiler is an Intel compiler, takes the same value
+ as the compiler version macro.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_CLANG</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Defined to 1 if the compiler is the Clang compiler.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_WINDOWS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Defined if the Windows platform API is available.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_DINKUMWARE_STDLIB</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Defined if the dinkumware standard library is in use, takes the
+ same value as the Dinkumware library version macro <code class="computeroutput"><span class="identifier">_CPPLIB_VER</span></code> if defined, otherwise
+ 1.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_WREGEX</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">regex</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Defined if the regex library does not support wide character regular
+ expressions.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_COMPILER</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Defined as a string describing the name and version number of the
+ compiler in use. Mainly for debugging the configuration.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_STDLIB</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Defined as a string describing the name and version number of the
+ standard library in use. Mainly for debugging the configuration.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_PLATFORM</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Defined as a string describing the name of the platform. Mainly
+ for debugging the configuration.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.boost_macro_reference.boost_deprecated_macros"></a><a name="deprecated_macros"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.boost_deprecated_macros" title="Boost Deprecated Macros">Boost
+ Deprecated Macros</a>
+</h3></div></div></div>
+<p>
+ The following have been deprecated; please use the replacements instead.
+ They will be removed in a future version of boost.
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Deprecated Macro
+ </p>
+ </th>
+<th>
+ <p>
+ Replacement
+ </p>
+ </th>
+<th>
+ <p>
+ When deprecated
+ </p>
+ </th>
+<th>
+ <p>
+ When removed
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_ARRAY</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_ARRAY</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Boost 1.50
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_CHRONO</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_CHRONO</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Boost 1.50
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_CODECVT</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_CODECVT</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Boost 1.50
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_CONDITION_VARIABLE</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_CONDITION_VARIABLE</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Boost 1.50
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_FORWARD_LIST</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_FORWARD_LIST</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Boost 1.50
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_FUTURE</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_FUTURE</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Boost 1.50
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_INITIALIZER_LIST</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_INITIALIZER_LIST</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Boost 1.50
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_INITIALIZER_LISTS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_INITIALIZER_LIST</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Boost 1.50
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_MUTEX</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_MUTEX</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Boost 1.50
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_RANDOM</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_RANDOM</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Boost 1.50
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_RATIO</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_RATIO</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Boost 1.50
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_REGEX</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_REGEX</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Boost 1.50
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_SYSTEM_ERROR</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_SYSTEM_ERROR</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Boost 1.50
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_THREAD</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_THREAD</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Boost 1.50
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_TUPLE</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_TUPLE</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Boost 1.50
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_TYPE_TRAITS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_TYPE_TRAITS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Boost 1.50
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_TYPEINDEX</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_TYPEINDEX</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Boost 1.50
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_UNORDERED_SET</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_UNORDERED_SET</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Boost 1.50
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_0X_HDR_UNORDERED_MAP</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_UNORDERED_MAP</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Boost 1.50
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_STD_UNORDERED</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_HDR_UNORDERED_SET</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Boost 1.50
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ </td>
+<td>
+ </td>
+<td>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_AUTO_DECLARATIONS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_AUTO_DECLARATIONS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Boost 1.51
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_AUTO_MULTIDECLARATIONS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Boost 1.51
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CHAR16_T</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_CHAR16_T</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Boost 1.51
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CHAR32_T</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_CHAR32_T</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Boost 1.51
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_TEMPLATE_ALIASES</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_TEMPLATE_ALIASES</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Boost 1.51
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CONSTEXPR</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_CONSTEXPR</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Boost 1.51
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_DECLTYPE</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_DECLTYPE</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Boost 1.51
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_DECLTYPE_N3276</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_DECLTYPE_N3276</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Boost 1.51
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_DEFAULTED_FUNCTIONS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_DEFAULTED_FUNCTIONS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Boost 1.51
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_DELETED_FUNCTIONS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_DELETED_FUNCTIONS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Boost 1.51
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_EXPLICIT_CONVERSION_OPERATORS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Boost 1.51
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_EXTERN_TEMPLATE</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_EXTERN_TEMPLATE</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Boost 1.51
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Boost 1.51
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_LAMBDAS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_LAMBDAS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Boost 1.51
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_LOCAL_CLASS_TEMPLATE_PARAMETERS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Boost 1.51
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_NOEXCEPT</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_NOEXCEPT</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Boost 1.51
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_NULLPTR</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_NULLPTR</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Boost 1.51
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_RAW_LITERALS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_RAW_LITERALS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Boost 1.51
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_RVALUE_REFERENCES</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_RVALUE_REFERENCES</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Boost 1.51
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_SCOPED_ENUMS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_SCOPED_ENUMS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Boost 1.51
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_STATIC_ASSERT</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_STATIC_ASSERT</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Boost 1.51
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_STD_UNORDERED</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_STD_UNORDERED</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Boost 1.51
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_UNICODE_LITERALS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_UNICODE_LITERALS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Boost 1.51
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_UNIFIED_INITIALIZATION_SYNTAX</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Boost 1.51
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_VARIADIC_TEMPLATES</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_VARIADIC_TEMPLATES</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Boost 1.51
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_VARIADIC_MACROS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_VARIADIC_MACROS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Boost 1.51
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_NUMERIC_LIMITS_LOWEST</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_NUMERIC_LIMITS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Boost 1.51
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ </td>
+<td>
+ </td>
+<td>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_HAS_STATIC_ASSERT</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_STATIC_ASSERT</span></code>
+ (negated)
+ </p>
+ </td>
+<td>
+ <p>
+ Boost 1.53
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_HAS_VARIADIC_TMPL</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_VARIADIC_TEMPLATES</span></code>
+ (negated)
+ </p>
+ </td>
+<td>
+ <p>
+ Boost 1.53
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_HAS_RVALUE_REFS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_RVALUE_REFERENCES</span></code>
+ (negated)
+ </p>
+ </td>
+<td>
+ <p>
+ Boost 1.53
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_HAS_CHAR16_T</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_CHAR16_T</span></code>
+ (negated)
+ </p>
+ </td>
+<td>
+ <p>
+ Boost 1.53
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_HAS_CHAR32_T</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CXX11_CHAR32_T</span></code>
+ (negated)
+ </p>
+ </td>
+<td>
+ <p>
+ Boost 1.53
+ </p>
+ </td>
+<td>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code" title="Macros for libraries with separate source code">Macros
+ for libraries with separate source code</a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code.macros_controlling_shared_library_symbol_visibility">Macros
+ controlling shared library symbol visibility</a></span></dt>
+<dt><span class="section"><a href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code.abi_fixing">ABI
+ Fixing</a></span></dt>
+<dt><span class="section"><a href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code.automatic_library_selection">Automatic
+ library selection</a></span></dt>
+</dl></div>
+<p>
+ The following macros and helper headers are of use to authors whose libraries
+ include separate source code, and are intended to address several issues:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Controlling shared library symbol visibility
+ </li>
+<li class="listitem">
+ Fixing the ABI of the compiled library
+ </li>
+<li class="listitem">
+ Selecting which compiled library to link against based upon the compilers
+ settings
+ </li>
+</ul></div>
+<p>
+ See <a href="http://www.boost.org/development/separate_compilation.html" target="_top">Guidelines
+ for Authors of Boost Libraries Containing Separate Source</a>
+ </p>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code.macros_controlling_shared_library_symbol_visibility"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code.macros_controlling_shared_library_symbol_visibility" title="Macros controlling shared library symbol visibility">Macros
+ controlling shared library symbol visibility</a>
+</h4></div></div></div>
+<p>
+ Some compilers support C++ extensions that control which symbols will be
+ exported from shared libraries such as dynamic shared objects (DSO's) on
+ Unix-like systems or dynamic-link libraries (DLL's) on Windows.
+ </p>
+<p>
+ The Microsoft VC++ compiler has long supplied <code class="computeroutput"><span class="identifier">__declspec</span><span class="special">(</span><span class="identifier">dllexport</span><span class="special">)</span></code> and <code class="computeroutput"><span class="identifier">__declspec</span><span class="special">(</span><span class="identifier">dllimport</span><span class="special">)</span></code> extensions for this purpose, as do virtually
+ all other compilers targeting the Windows platform.
+ </p>
+<p>
+ Modern versions of the GNU GCC compiler provide the <code class="computeroutput"><span class="identifier">__attribute__</span><span class="special">((</span><span class="identifier">visibility</span><span class="special">(</span><span class="string">"default"</span><span class="special">)))</span></code> extension to indicate that a symbol
+ should be exported. All other symbols may be hidden by using the <code class="computeroutput"><span class="special">-</span><span class="identifier">fvisibility</span><span class="special">-</span><span class="identifier">hidden</span></code>
+ or <code class="computeroutput"><span class="special">-</span><span class="identifier">fvisibility</span><span class="special">-</span><span class="identifier">ms</span><span class="special">-</span><span class="identifier">compat</span></code> compiler switches.
+ </p>
+<p>
+ Boost supplies several macros to make it easier to manage symbol visibility
+ in a way that is portable between compilers and operating systems.
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Macro
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_SYMBOL_EXPORT</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Defines the syntax of a C++ language extension that indicates
+ a symbol is to be exported from a shared library. If the compiler
+ has no such extension, the macro is defined with no replacement
+ text.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_SYMBOL_IMPORT</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Defines the syntax of a C++ language extension that indicates
+ a symbol is to be imported from a shared library. If the compiler
+ has no such extension, the macro is defined with no replacement
+ text.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_SYMBOL_VISIBLE</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Defines the syntax of a C++ language extension that indicates
+ a symbol is to be globally visible. If the compiler has no such
+ extension, the macro is defined with no replacement text. Needed
+ for classes that are not otherwise exported, but are used by
+ RTTI. Examples include class for objects that will be thrown
+ as exceptions or used in dynamic_casts, across shared library
+ boundaries. For example, a header-only exception class might
+ look like this:
+</p>
+<pre xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" class="table-programlisting"><span class="keyword">class</span> <span class="identifier">BOOST_SYMBOL_VISIBLE</span> <span class="identifier">my_exception</span> <span class="special">:</span> <span class="keyword">public</span> <span class="identifier">std</span><span class="special">::</span><span class="identifier">runtime_error</span> <span class="special">{</span> <span class="special">...</span> <span class="special">};</span>
+</pre>
+<p>
+ Without BOOST_SYMBOL_VISIBLE, it would be impossible to catch
+ my_exception thrown from a shared library compiled by GCC with
+ the -fvisibility=hidden option.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_HAS_DECLSPEC</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler has C++ extensions <code class="computeroutput"><span class="identifier">__declspec</span><span class="special">(</span><span class="identifier">dllexport</span><span class="special">)</span></code> and <code class="computeroutput"><span class="identifier">__declspec</span><span class="special">(</span><span class="identifier">dllimport</span><span class="special">)</span></code> to control export/import of
+ symbols from shared libraries. <span class="emphasis"><em>Deprecated. This macro
+ is no longer necessary since BOOST_SYMBOL_EXPORT and BOOST_SYMBOL_IMPORT
+ are now supplied. It is provided to support legacy code.</em></span>
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+ Typical usage:
+ </p>
+<p>
+ <span class="bold"><strong>boost/foo/config.hpp</strong></span>
+ </p>
+<pre class="programlisting"><span class="special">...</span>
+<span class="preprocessor">#if</span> <span class="identifier">defined</span><span class="special">(</span><span class="identifier">BOOST_ALL_DYN_LINK</span><span class="special">)</span> <span class="special">||</span> <span class="identifier">defined</span><span class="special">(</span><span class="identifier">BOOST_FOO_DYN_LINK</span><span class="special">)</span>
+<span class="preprocessor"># if</span> <span class="identifier">defined</span><span class="special">(</span><span class="identifier">BOOST_FOO_SOURCE</span><span class="special">)</span>
+<span class="preprocessor"># define</span> <span class="identifier">BOOST_FOO_DECL</span> <span class="identifier">BOOST_SYMBOL_EXPORT</span>
+<span class="preprocessor"># else</span>
+<span class="preprocessor"># define</span> <span class="identifier">BOOST_FOO_DECL</span> <span class="identifier">BOOST_SYMBOL_IMPORT</span>
+<span class="preprocessor"># endif</span>
+<span class="preprocessor">#else</span>
+<span class="preprocessor"># define</span> <span class="identifier">BOOST_FOO_DECL</span>
+<span class="preprocessor">#endif</span>
+<span class="special">...</span>
+</pre>
+<p>
+ <span class="bold"><strong>boost/foo/foo.hpp</strong></span>
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">foo</span><span class="special">/</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="special">...</span>
+<span class="keyword">class</span> <span class="identifier">BOOST_FOO_DECL</span> <span class="identifier">bar</span> <span class="special">{</span> <span class="special">...</span> <span class="special">};</span>
+<span class="special">...</span>
+<span class="keyword">void</span> <span class="identifier">BOOST_FOO_DECL</span> <span class="identifier">f</span><span class="special">();</span>
+<span class="special">...</span>
+</pre>
+<p>
+ <span class="bold"><strong>boost/libs/foo/src/foo.cpp</strong></span>
+ </p>
+<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_FOO_SOURCE</span>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">foo</span><span class="special">/</span><span class="identifier">foo</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="special">...</span>
+<span class="keyword">void</span> <span class="identifier">BOOST_FOO_DECL</span> <span class="identifier">f</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="special">...</span>
+<span class="special">}</span>
+<span class="special">...</span>
+</pre>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code.abi_fixing"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code.abi_fixing" title="ABI Fixing">ABI
+ Fixing</a>
+</h4></div></div></div>
+<p>
+ When linking against a pre-compiled library it vital that the ABI used
+ by the compiler when building the library <span class="emphasis"><em>matches exactly</em></span>
+ the ABI used by the code using the library. In this case ABI means things
+ like the struct packing arrangement used, the name mangling scheme used,
+ or the size of some types (enum types for example). This is separate from
+ things like threading support, or runtime library variations, which have
+ to be dealt with by build variants. To put this in perspective there is
+ one compiler (Borland's) that has so many compiler options that make subtle
+ changes to the ABI, that at least in theory there 3200 combinations, and
+ that's without considering runtime library variations. Fortunately these
+ variations can be managed by <code class="computeroutput"><span class="preprocessor">#pragma</span></code>'s
+ that tell the compiler what ABI to use for the types declared in your library.
+ In order to avoid sprinkling <code class="computeroutput"><span class="preprocessor">#pragma</span></code>'s
+ all over the boost headers, there are some prefix and suffix headers that
+ do the job. Typical usage is:
+ </p>
+<p>
+ <span class="bold"><strong>my_library.hpp</strong></span>
+ </p>
+<pre class="programlisting"><span class="preprocessor">#ifndef</span> <span class="identifier">MY_INCLUDE_GUARD</span>
+<span class="preprocessor">#define</span> <span class="identifier">MY_INCLUDE_GUARD</span>
+
+<span class="comment">// all includes go here:</span>
+<code class="literal"><span class="bold"><strong>#include <boost/config.hpp></strong></span></code>
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">whatever</span><span class="special">></span>
+
+<code class="literal"><span class="bold"><strong>#include <boost/config/abi_prefix.hpp></strong></span></code> <span class="comment">// must be the last #include</span>
+
+<span class="keyword">namespace</span> <span class="identifier">boost</span> <span class="special">{</span>
+
+<span class="comment">// your code goes here</span>
+
+<span class="special">}</span>
+
+<code class="literal"><span class="bold"><strong>#include <boost/config/abi_suffix.hpp></strong></span></code> <span class="comment">// pops abi_prefix.hpp pragmas</span>
+
+<span class="preprocessor">#endif</span> <span class="comment">// include guard</span>
+</pre>
+<p>
+ <span class="bold"><strong>my_library.cpp</strong></span>
+ </p>
+<pre class="programlisting"><span class="special">...</span>
+<span class="comment">// nothing special need be done in the implementation file</span>
+<span class="special">...</span>
+</pre>
+<p>
+ The user can disable this mechanism by defining <code class="computeroutput"><span class="identifier">BOOST_DISABLE_ABI_HEADERS</span></code>,
+ or they can define <code class="computeroutput"><span class="identifier">BOOST_ABI_PREFIX</span></code>
+ and/or <code class="computeroutput"><span class="identifier">BOOST_ABI_SUFFIX</span></code>
+ to point to their own prefix/suffix headers if they so wish.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code.automatic_library_selection"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code.automatic_library_selection" title="Automatic library selection">Automatic
+ library selection</a>
+</h4></div></div></div>
+<p>
+ It is essential that users link to a build of a library which was built
+ against the same runtime library that their application will be built against
+ -if this does not happen then the library will not be binary compatible
+ with their own code- and there is a high likelihood that their application
+ will experience runtime crashes. These kinds of problems can be extremely
+ time consuming and difficult to debug, and often lead to frustrated users
+ and authors alike (simply selecting the right library to link against is
+ not as easy as it seems when their are 6-8 of them to chose from, and some
+ users seem to be blissfully unaware that there even are different runtimes
+ available to them).
+ </p>
+<p>
+ To solve this issue, some compilers allow source code to contain <code class="computeroutput"><span class="preprocessor">#pragma</span></code>'s that instruct the linker
+ which library to link against, all the user need do is include the headers
+ they need, place the compiled libraries in their library search path, and
+ the compiler and linker do the rest. Boost.config supports this via the
+ header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">auto_link</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>, before including this header one or
+ more of the following macros need to be defined:
+ </p>
+<div class="variablelist">
+<p class="title"><b></b></p>
+<dl class="variablelist">
+<dt><span class="term"><code class="computeroutput"><span class="identifier">BOOST_LIB_NAME</span></code></span></dt>
+<dd><p>
+ Required: An identifier containing the basename of the library, for
+ example 'boost_regex'.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">BOOST_DYN_LINK</span></code></span></dt>
+<dd><p>
+ Optional: when set link to dll rather than static library.
+ </p></dd>
+<dt><span class="term"><code class="computeroutput"><span class="identifier">BOOST_LIB_DIAGNOSTIC</span></code></span></dt>
+<dd><p>
+ Optional: when set the header will print out the name of the library
+ selected (useful for debugging).
+ </p></dd>
+</dl>
+</div>
+<p>
+ If the compiler supports this mechanism, then it will be told to link against
+ the appropriately named library, the actual algorithm used to mangle the
+ name of the library is documented inside <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">auto_link</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>
+ and has to match that used to create the libraries via bjam 's install
+ rules.
+ </p>
+<p>
+ <span class="bold"><strong>my_library.hpp</strong></span>
+ </p>
+<pre class="programlisting"><span class="special">...</span>
+<span class="comment">//</span>
+<span class="comment">// Don't include auto-linking code if the user has disabled it by</span>
+<span class="comment">// defining BOOST_ALL_NO_LIB, or BOOST_MY_LIBRARY_NO_LIB, or if this </span>
+<span class="comment">// is one of our own source files (signified by BOOST_MY_LIBRARY_SOURCE):</span>
+<span class="comment">//</span>
+<span class="preprocessor">#if</span> <span class="special">!</span><span class="identifier">defined</span><span class="special">(</span><span class="identifier">BOOST_ALL_NO_LIB</span><span class="special">)</span> <span class="special">&&</span> <span class="special">!</span><span class="identifier">defined</span><span class="special">(</span><span class="identifier">BOOST_MY_LIBRARY_NO_LIB</span><span class="special">)</span> <span class="special">&&</span> <span class="special">!</span><span class="identifier">defined</span><span class="special">(</span><span class="identifier">BOOST_MY_LIBRARY_SOURCE</span><span class="special">)</span>
+<span class="preprocessor"># define</span> <span class="identifier">BOOST_LIB_NAME</span> <span class="identifier">boost_my_library</span>
+<span class="preprocessor"># ifdef</span> <span class="identifier">BOOST_MY_LIBRARY_DYN_LINK</span>
+<span class="preprocessor"># define</span> <span class="identifier">BOOST_DYN_LINK</span>
+<span class="preprocessor"># endif</span>
+<span class="preprocessor"># include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">auto_link</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="preprocessor">#endif</span>
+<span class="special">...</span>
+</pre>
+<p>
+ <span class="bold"><strong>my_library.cpp</strong></span>
+ </p>
+<pre class="programlisting"><span class="comment">// define BOOST_MY_LIBRARY_SOURCE so that the header knows that the</span>
+<span class="comment">// library is being built (possibly exporting rather than importing code)</span>
+<span class="comment">//</span>
+<span class="preprocessor">#define</span> <span class="identifier">BOOST_MY_LIBRARY_SOURCE</span>
+
+<span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">my_library</span><span class="special">/</span><span class="identifier">my_library</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+<span class="special">...</span>
+</pre>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Beman Dawes, Vesa Karvonen, John
+ Maddock<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="../index.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="build_config.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/doc/html/boost_config/build_config.html b/doc/html/boost_config/build_config.html
new file mode 100644
index 0000000..2854a54
--- /dev/null
+++ b/doc/html/boost_config/build_config.html
@@ -0,0 +1,144 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Build Time Configuration</title>
+<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../index.html" title="Boost.Config">
+<link rel="up" href="../index.html" title="Boost.Config">
+<link rel="prev" href="boost_macro_reference.html" title="Boost Macro Reference">
+<link rel="next" href="cstdint.html" title="Standard Integer Types">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="boost_macro_reference.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="cstdint.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="boost_config.build_config"></a><a class="link" href="build_config.html" title="Build Time Configuration">Build Time Configuration</a>
+</h2></div></div></div>
+<p>
+ There are times when you want to control whether a build target gets built
+ or not, based on what features the compiler supports. For example, suppose
+ you have a test file "test_constexpr_128.cpp" which requires three
+ key features in order to build:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ The <code class="computeroutput"><span class="keyword">constexpr</span></code> keyword as detected
+ by BOOST_NO_CXX11_CONSTEXPR.
+ </li>
+<li class="listitem">
+ User defined literals, as detected by BOOST_NO_CXX11_USER_DEFINED_LITERALS.
+ </li>
+<li class="listitem">
+ The <code class="computeroutput"><span class="identifier">__int128</span></code> data type,
+ as detected by BOOST_HAS_INT128.
+ </li>
+</ul></div>
+<p>
+ Clearly we know that if these features are not supported by the compiler, then
+ there's simply no point in even trying to build the test program. The main
+ advantages being:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Faster compile times - build configuration uses lightweight tests the results
+ of which are also cached.
+ </li>
+<li class="listitem">
+ Less noise in build output - there's no reason to be faced with pages of
+ template instantiation backtrace if we know the file can never compile
+ anyway.
+ </li>
+<li class="listitem">
+ Less noise in the online test results - the test will show up as blank,
+ rather than as a fail in the online test matrix.
+ </li>
+<li class="listitem">
+ A better experience for end users building all of Boost, if those libraries
+ which can not be built for the current target compiler are simply skipped,
+ rather than generating pages of error output.
+ </li>
+</ul></div>
+<p>
+ Returning to our example, the test case is probably executed in it's Jamfile
+ via the "run" rule:
+ </p>
+<pre class="programlisting"><span class="identifier">run</span> <span class="identifier">test_constexpr_128</span><span class="special">.</span><span class="identifier">cpp</span> <span class="special">;</span>
+</pre>
+<p>
+ We now need to make this target conditional on the necessary features. We can
+ do that by first importing the necessary rule at the start of the Jamfile:
+ </p>
+<pre class="programlisting"><span class="identifier">import</span> <span class="identifier">path</span><span class="special">-</span><span class="identifier">to</span><span class="special">-</span><span class="identifier">config</span><span class="special">-</span><span class="identifier">lib</span><span class="special">/</span><span class="identifier">checks</span><span class="special">/</span><span class="identifier">config</span> <span class="special">:</span> <span class="identifier">requires</span> <span class="special">;</span>
+</pre>
+<p>
+ Assuming that the test case is in the usual directory:
+ </p>
+<pre class="programlisting"><span class="identifier">libs</span><span class="special">/</span><span class="identifier">yourlib</span><span class="special">/</span><span class="identifier">test</span>
+</pre>
+<p>
+ then the import rule will actually be:
+ </p>
+<pre class="programlisting"><span class="identifier">import</span> <span class="special">../../</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">checks</span><span class="special">/</span><span class="identifier">config</span> <span class="special">:</span> <span class="identifier">requires</span> <span class="special">;</span>
+</pre>
+<p>
+ Then add a "requires" rule invocation to the requirements section
+ of the target:
+ </p>
+<pre class="programlisting"><span class="identifier">run</span> <span class="identifier">test_constexpr_128</span><span class="special">.</span><span class="identifier">cpp</span>
+ <span class="special">:</span> <span class="special">:</span> <span class="special">:</span> <span class="special">#</span><span class="identifier">requirements</span><span class="special">:</span>
+ <span class="special">[</span> <span class="identifier">requires</span> <span class="identifier">cxx11_constexpr</span> <span class="identifier">cxx11_user_defined_literals</span> <span class="identifier">int128</span> <span class="special">]</span> <span class="special">;</span>
+</pre>
+<p>
+ Notice that multiple arguments can be added to the requires rule, and that
+ these are always the same as the Boost.Config macro name, but in lower case
+ and with the <span class="emphasis"><em>boost_no_</em></span> or <span class="emphasis"><em>boost_has_</em></span>
+ prefix removed.
+ </p>
+<p>
+ When building the above example, you will see at the start of the build process
+ the results of the configuration, for example GCC in C++11 mode gives:
+ </p>
+<pre class="programlisting"><span class="special">-</span> <span class="identifier">Boost</span><span class="special">.</span><span class="identifier">Config</span> <span class="identifier">Feature</span> <span class="identifier">Check</span><span class="special">:</span> <span class="identifier">int128</span> <span class="special">:</span> <span class="identifier">yes</span>
+<span class="special">-</span> <span class="identifier">Boost</span><span class="special">.</span><span class="identifier">Config</span> <span class="identifier">Feature</span> <span class="identifier">Check</span><span class="special">:</span> <span class="identifier">cxx11_constexpr</span> <span class="special">:</span> <span class="identifier">yes</span>
+<span class="special">-</span> <span class="identifier">Boost</span><span class="special">.</span><span class="identifier">Config</span> <span class="identifier">Feature</span> <span class="identifier">Check</span><span class="special">:</span> <span class="identifier">cxx11_user_defined_literals</span> <span class="special">:</span> <span class="identifier">yes</span>
+</pre>
+<p>
+ That's all there is to this handy feature, should at any time you be unsure
+ of the feature-test names you can pass to the "requires" rule, then
+ search for the Boost.Config macro of interest in libs/config/checks/Jamfiles.v2,
+ and the name of the feature check will follow it.
+ </p>
+<p>
+ And finally, this feature is built around the Boost.Build built in rule <span class="emphasis"><em>check-target-builds</em></span>
+ which can be used to perform more generalized build-time feature testing. The
+ checks in this library are provided as a convenient shorthand without the need
+ for you to write the test cases yourself.
+ </p>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Beman Dawes, Vesa Karvonen, John
+ Maddock<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="boost_macro_reference.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="cstdint.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/doc/html/boost_config/cstdint.html b/doc/html/boost_config/cstdint.html
new file mode 100644
index 0000000..d75a289
--- /dev/null
+++ b/doc/html/boost_config/cstdint.html
@@ -0,0 +1,289 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Standard Integer Types</title>
+<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../index.html" title="Boost.Config">
+<link rel="up" href="../index.html" title="Boost.Config">
+<link rel="prev" href="build_config.html" title="Build Time Configuration">
+<link rel="next" href="guidelines_for_boost_authors.html" title="Guidelines for Boost Authors">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="build_config.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="guidelines_for_boost_authors.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="boost_config.cstdint"></a><a class="link" href="cstdint.html" title="Standard Integer Types">Standard Integer Types</a>
+</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="cstdint.html#boost_config.cstdint.overview">Overview</a></span></dt>
+<dt><span class="section"><a href="cstdint.html#boost_config.cstdint.rationale">Rationale</a></span></dt>
+<dt><span class="section"><a href="cstdint.html#boost_config.cstdint.ce"><span class="emphasis"><em>Caveat emptor</em></span></a></span></dt>
+<dt><span class="section"><a href="cstdint.html#boost_config.cstdint.exact_width_integer_types">Exact-width
+ integer types</a></span></dt>
+<dt><span class="section"><a href="cstdint.html#boost_config.cstdint.minimum_width_integer_types">Minimum-width
+ integer types</a></span></dt>
+<dt><span class="section"><a href="cstdint.html#boost_config.cstdint.fastest_minimum_width_integer_types">Fastest
+ minimum-width integer types</a></span></dt>
+<dt><span class="section"><a href="cstdint.html#boost_config.cstdint.greatest_width_integer_types">Greatest-width
+ integer types</a></span></dt>
+<dt><span class="section"><a href="cstdint.html#boost_config.cstdint.integer_constant_macros">Integer
+ Constant Macros</a></span></dt>
+</dl></div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.cstdint.overview"></a><a class="link" href="cstdint.html#boost_config.cstdint.overview" title="Overview">Overview</a>
+</h3></div></div></div>
+<p>
+ The header <code class="literal"><a href="../../../../../boost/cstdint.hpp" target="_top"><boost/cstdint.hpp></a></code>
+ provides the typedef's useful for writing portable code that requires certain
+ integer widths. All typedef's are in namespace boost.
+ </p>
+<p>
+ The specifications for these types are based on the ISO/IEC 9899:1999 C Language
+ standard header <stdint.h>. The 64-bit types required by the C standard
+ are <span class="emphasis"><em>not required</em></span> in the boost header, and may not be
+ supplied for all platforms/compilers, because <code class="literal">long long</code>
+ is not [yet] included in the C++ standard.
+ </p>
+<p>
+ See <a href="../../../test/cstdint_test.cpp" target="_top">cstdint_test.cpp</a> for
+ a test program.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.cstdint.rationale"></a><a class="link" href="cstdint.html#boost_config.cstdint.rationale" title="Rationale">Rationale</a>
+</h3></div></div></div>
+<p>
+ The organization of the Boost.Integer headers and classes is designed to
+ take advantage of <stdint.h> types from the 1999 C standard without
+ causing undefined behavior in terms of the 1998 C++ standard. The header
+ <boost/cstdint.hpp> makes the standard integer types safely available
+ in namespace <code class="literal">boost</code> without placing any names in namespace
+ <code class="literal">std</code>. The intension is to complement rather than compete
+ with the C++ Standard Library. Should some future C++ standard include <stdint.h>
+ and <cstdint>, then <boost/cstdint.hpp> will continue to function,
+ but will become redundant and may be safely deprecated.
+ </p>
+<p>
+ Because these are boost headers, their names conform to boost header naming
+ conventions rather than C++ Standard Library header naming conventions.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.cstdint.ce"></a><a class="link" href="cstdint.html#boost_config.cstdint.ce" title="Caveat emptor"><span class="emphasis"><em>Caveat emptor</em></span></a>
+</h3></div></div></div>
+<p>
+ As an implementation artifact, certain C <limits.h> macro names may
+ possibly be visible to users of <boost/cstdint.hpp>. Don't use these
+ macros; they are not part of any Boost-specified interface. Use <code class="literal">boost::integer_traits<></code>
+ or <code class="literal">std::numeric_limits<></code> instead.
+ </p>
+<p>
+ As another implementation artifact, certain C <stdint.h> typedef names
+ may possibly be visible in the global namespace to users of <boost/cstdint.hpp>.
+ Don't use these names, they are not part of any Boost-specified interface.
+ Use the respective names in namespace <code class="literal">boost</code> instead.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.cstdint.exact_width_integer_types"></a><a class="link" href="cstdint.html#boost_config.cstdint.exact_width_integer_types" title="Exact-width integer types">Exact-width
+ integer types</a>
+</h3></div></div></div>
+<p>
+ The typedef <code class="literal">int#_t</code>, with # replaced by the width, designates
+ a signed integer type of exactly # bits; for example <code class="literal">int8_t</code>
+ denotes an 8-bit signed integer type. Similarly, the typedef <code class="literal">uint#_t</code>
+ designates an unsigned integer type of exactly # bits.
+ </p>
+<p>
+ These types are optional. However, if a platform supports integer types with
+ widths of 8, 16, 32, 64, or any combination thereof, then <boost/cstdint.hpp>
+ does provide the corresponding typedefs.
+ </p>
+<p>
+ The absence of int64_t and uint64_t is indicated by the macro <code class="computeroutput"><span class="identifier">BOOST_NO_INT64_T</span></code>.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.cstdint.minimum_width_integer_types"></a><a class="link" href="cstdint.html#boost_config.cstdint.minimum_width_integer_types" title="Minimum-width integer types">Minimum-width
+ integer types</a>
+</h3></div></div></div>
+<p>
+ The typedef <code class="literal">int_least#_t</code>, with # replaced by the width,
+ designates a signed integer type with a width of at least # bits, such that
+ no signed integer type with lesser size has at least the specified width.
+ Thus, <code class="literal">int_least32_t</code> denotes the smallest signed integer
+ type with a width of at least 32 bits. Similarly, the typedef name <code class="literal">uint_least#_t</code>
+ designates an unsigned integer type with a width of at least # bits, such
+ that no unsigned integer type with lesser size has at least the specified
+ width.
+ </p>
+<p>
+ The following minimum-width integer types are provided for all platforms:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ <code class="literal">int_least8_t</code>
+ </li>
+<li class="listitem">
+ <code class="literal">int_least16_t</code>
+ </li>
+<li class="listitem">
+ <code class="literal">int_least32_t</code>
+ </li>
+<li class="listitem">
+ <code class="literal">uint_least8_t</code>
+ </li>
+<li class="listitem">
+ <code class="literal">uint_least16_t</code>
+ </li>
+<li class="listitem">
+ <code class="literal">uint_least32_t</code>
+ </li>
+</ul></div>
+<p>
+ The following types are available only if, after including <boost/cstdint.hpp>,
+ the macro BOOST_NO_INT64_T is not defined:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ <code class="literal">int_least64_t</code>
+ </li>
+<li class="listitem">
+ <code class="literal">uint_least64_t</code>
+ </li>
+</ul></div>
+<p>
+ All other minimum-width integer types are optional.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.cstdint.fastest_minimum_width_integer_types"></a><a class="link" href="cstdint.html#boost_config.cstdint.fastest_minimum_width_integer_types" title="Fastest minimum-width integer types">Fastest
+ minimum-width integer types</a>
+</h3></div></div></div>
+<p>
+ The typedef <code class="literal">int_fast#_t</code>, with # replaced by the width,
+ designates the fastest signed integer type with a width of at least # bits.
+ Similarly, the typedef name <code class="literal">uint_fast#_t</code> designates the
+ fastest unsigned integer type with a width of at least # bits.
+ </p>
+<p>
+ There is no guarantee that these types are fastest for all purposes. In any
+ case, however, they satisfy the signedness and width requirements.
+ </p>
+<p>
+ The following fastest minimum-width integer types are provided for all platforms:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ <code class="literal">int_fast8_t</code>
+ </li>
+<li class="listitem">
+ <code class="literal">int_fast16_t</code>
+ </li>
+<li class="listitem">
+ <code class="literal">int_fast32_t</code>
+ </li>
+<li class="listitem">
+ <code class="literal">uint_fast8_t</code>
+ </li>
+<li class="listitem">
+ <code class="literal">uint_fast16_t</code>
+ </li>
+<li class="listitem">
+ <code class="literal">uint_fast32_t</code>
+ </li>
+</ul></div>
+<p>
+ The following types are available only if, after including <boost/cstdint.hpp>,
+ the macro BOOST_NO_INT64_T is not defined:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ <code class="literal">int_fast64_t</code>
+ </li>
+<li class="listitem">
+ <code class="literal">uint_fast64_t</code>
+ </li>
+</ul></div>
+<p>
+ All other fastest minimum-width integer types are optional.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.cstdint.greatest_width_integer_types"></a><a class="link" href="cstdint.html#boost_config.cstdint.greatest_width_integer_types" title="Greatest-width integer types">Greatest-width
+ integer types</a>
+</h3></div></div></div>
+<p>
+ The typedef <code class="literal">intmax_t </code>designates a signed integer type
+ capable of representing any value of any signed integer type.
+ </p>
+<p>
+ The typedef <code class="literal">uintmax_t</code> designates an unsigned integer type
+ capable of representing any value of any unsigned integer type.
+ </p>
+<p>
+ These types are provided for all platforms.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.cstdint.integer_constant_macros"></a><a class="link" href="cstdint.html#boost_config.cstdint.integer_constant_macros" title="Integer Constant Macros">Integer
+ Constant Macros</a>
+</h3></div></div></div>
+<p>
+ The following macros are always defined after inclusion of this header, these
+ allow integer constants of at least the specified width to be declared: INT8_C,
+ UINT8_C, INT16_C, UINT16_C, INT32_C, UINT32_C, INTMAX_C, UINTMAX_C.
+ </p>
+<p>
+ The macros INT64_C and UINT64_C are also defined if the the macro BOOST_NO_INT64_T
+ is not defined.
+ </p>
+<p>
+ The C99 macro __STDC_CONSTANT_MACROS is also defined as an artifact of the
+ implementation.
+ </p>
+<p>
+ For example:
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">cstdint</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span>
+
+<span class="comment">// Here the constant 0x1FFFFFFFF has the correct suffix applied:</span>
+<span class="keyword">static</span> <span class="keyword">const</span> <span class="identifier">boost</span><span class="special">::</span><span class="identifier">uint64_t</span> <span class="identifier">c</span> <span class="special">=</span> <span class="identifier">INT64_C</span><span class="special">(</span><span class="number">0</span><span class="identifier">x1FFFFFFFF</span><span class="special">);</span>
+</pre>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Beman Dawes, Vesa Karvonen, John
+ Maddock<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="build_config.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="guidelines_for_boost_authors.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/doc/html/boost_config/guidelines_for_boost_authors.html b/doc/html/boost_config/guidelines_for_boost_authors.html
new file mode 100644
index 0000000..212c9fb
--- /dev/null
+++ b/doc/html/boost_config/guidelines_for_boost_authors.html
@@ -0,0 +1,377 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Guidelines for Boost Authors</title>
+<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../index.html" title="Boost.Config">
+<link rel="up" href="../index.html" title="Boost.Config">
+<link rel="prev" href="cstdint.html" title="Standard Integer Types">
+<link rel="next" href="rationale.html" title="Rationale">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="cstdint.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="rationale.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="boost_config.guidelines_for_boost_authors"></a><a class="link" href="guidelines_for_boost_authors.html" title="Guidelines for Boost Authors">Guidelines for
+ Boost Authors</a>
+</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.warnings">Disabling
+ Compiler Warnings</a></span></dt>
+<dt><span class="section"><a href="guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.adding_new_defect_macros">Adding
+ New Defect Macros</a></span></dt>
+<dt><span class="section"><a href="guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.adding_new_feature_test_macros">Adding
+ New Feature Test Macros</a></span></dt>
+<dt><span class="section"><a href="guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.modifying_the_boost_configuration_headers">Modifying
+ the Boost Configuration Headers</a></span></dt>
+</dl></div>
+<p>
+ The <a href="../../../../../boost/config.hpp" target="_top"><boost/config.hpp></a>
+ header is used to pass configuration information to other boost files, allowing
+ them to cope with platform dependencies such as arithmetic byte ordering, compiler
+ pragmas, or compiler shortcomings. Without such configuration information,
+ many current compilers would not work with the Boost libraries.
+ </p>
+<p>
+ Centralizing configuration information in this header reduces the number of
+ files that must be modified when porting libraries to new platforms, or when
+ compilers are updated. Ideally, no other files would have to be modified when
+ porting to a new platform.
+ </p>
+<p>
+ Configuration headers are controversial because some view them as condoning
+ broken compilers and encouraging non-standard subsets. Adding settings for
+ additional platforms and maintaining existing settings can also be a problem.
+ In other words, configuration headers are a necessary evil rather than a desirable
+ feature. The boost config.hpp policy is designed to minimize the problems and
+ maximize the benefits of a configuration header.
+ </p>
+<p>
+ Note that:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Boost library implementers are not required to "<code class="computeroutput"><span class="preprocessor">#include</span>
+ <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>", and are not required in any
+ way to support compilers that do not comply with the C++ Standard (ISO/IEC
+ 14882).
+ </li>
+<li class="listitem">
+ If a library implementer wishes to support some non-conforming compiler,
+ or to support some platform specific feature, "<code class="computeroutput"><span class="preprocessor">#include</span>
+ <span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>" is the preferred way to obtain
+ configuration information not available from the standard headers such
+ as <code class="computeroutput"><span class="special"><</span><span class="identifier">climits</span><span class="special">></span></code>, etc.
+ </li>
+<li class="listitem">
+ If configuration information can be deduced from standard headers such
+ as <code class="computeroutput"><span class="special"><</span><span class="identifier">climits</span><span class="special">></span></code>, use those standard headers rather
+ than <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>.
+ </li>
+<li class="listitem">
+ Boost files that use macros defined in <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>
+ should have sensible, standard conforming, default behavior if the macro
+ is not defined. This means that the starting point for porting <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code> to a new platform is simply to define
+ nothing at all specific to that platform. In the rare case where there
+ is no sensible default behavior, an #error message should describe the
+ problem.
+ </li>
+<li class="listitem">
+ If a Boost library implementer wants something added to <code class="computeroutput"><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span></code>,
+ post a request on the Boost mailing list. There is no guarantee such a
+ request will be honored; the intent is to limit the complexity of config.hpp.
+ </li>
+<li class="listitem">
+ The intent is to support only compilers which appear on their way to becoming
+ C++ Standard compliant, and only recent releases of those compilers at
+ that.
+ </li>
+<li class="listitem">
+ The intent is not to disable mainstream features now well-supported by
+ the majority of compilers, such as namespaces, exceptions, RTTI, or templates.
+ </li>
+</ul></div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.guidelines_for_boost_authors.warnings"></a><a class="link" href="guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.warnings" title="Disabling Compiler Warnings">Disabling
+ Compiler Warnings</a>
+</h3></div></div></div>
+<p>
+ The header <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">warning_disable</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>
+ can be used to disable certain compiler warnings that are hard or impossible
+ to otherwise remove.
+ </p>
+<p>
+ Note that:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ This header <span class="bold"><strong><span class="emphasis"><em>should never be included
+ by another Boost header</em></span></strong></span>, it should only ever be
+ used by a library source file or a test case.
+ </li>
+<li class="listitem">
+ The header should be included <span class="bold"><strong><span class="emphasis"><em>before
+ you include any other header</em></span></strong></span>.
+ </li>
+<li class="listitem">
+ This header only disables warnings that are hard or impossible to otherwise
+ deal with, and which are typically emitted by one compiler only, or in
+ one compilers own standard library headers.
+ </li>
+</ul></div>
+<p>
+ Currently it disables the following warnings:
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Compiler
+ </p>
+ </th>
+<th>
+ <p>
+ Warning
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ Visual C++ 8 and later
+ </p>
+ </td>
+<td>
+ <p>
+ <a href="http://msdn2.microsoft.com/en-us/library/ttcz0bys(VS.80).aspx" target="_top">C4996</a>:
+ Error 'function': was declared deprecated
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ Intel C++
+ </p>
+ </td>
+<td>
+ <p>
+ Warning 1786: relates to the use of "deprecated" standard
+ library functions rather like C4996 in Visual C++.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.guidelines_for_boost_authors.adding_new_defect_macros"></a><a class="link" href="guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.adding_new_defect_macros" title="Adding New Defect Macros">Adding
+ New Defect Macros</a>
+</h3></div></div></div>
+<p>
+ When you need to add a new defect macro - either to fix a problem with an
+ existing library, or when adding a new library - distil the issue down to
+ a simple test case; often, at this point other (possibly better) workarounds
+ may become apparent. Secondly always post the test case code to the boost
+ mailing list and invite comments; remember that C++ is complex and that sometimes
+ what may appear a defect, may in fact turn out to be a problem with the authors
+ understanding of the standard.
+ </p>
+<p>
+ When you name the macro, follow the <code class="computeroutput"><span class="identifier">BOOST_NO_</span></code><span class="emphasis"><em>SOMETHING</em></span>
+ naming convention, so that it's obvious that this is a macro reporting a
+ defect.
+ </p>
+<p>
+ Finally, add the test program to the regression tests. You will need to place
+ the test case in a <code class="computeroutput"><span class="special">.</span><span class="identifier">ipp</span></code>
+ file with the following comments near the top:
+ </p>
+<pre class="programlisting"><span class="comment">// MACRO: BOOST_NO_FOO</span>
+<span class="comment">// TITLE: foo</span>
+<span class="comment">// DESCRIPTION: If the compiler fails to support foo</span>
+</pre>
+<p>
+ These comments are processed by the autoconf script, so make sure the format
+ follows the one given. The file should be named "<code class="computeroutput"><span class="identifier">boost_no_foo</span><span class="special">.</span><span class="identifier">ipp</span></code>",
+ where foo is the defect description - try and keep the file name under the
+ Mac 30 character filename limit though. You will also need to provide a function
+ prototype "<code class="computeroutput"><span class="keyword">int</span> <span class="identifier">test</span><span class="special">()</span></code>" that is declared in a namespace with
+ the same name as the macro, but in all lower case, and which returns zero
+ on success:
+ </p>
+<pre class="programlisting"><span class="keyword">namespace</span> <span class="identifier">boost_no_foo</span> <span class="special">{</span>
+<span class="keyword">int</span> <span class="identifier">test</span><span class="special">()</span>
+<span class="special">{</span>
+ <span class="comment">// test code goes here:</span>
+ <span class="comment">//</span>
+ <span class="keyword">return</span> <span class="number">0</span><span class="special">;</span>
+<span class="special">}</span>
+
+<span class="special">}</span>
+</pre>
+<p>
+ Once the test code is in place in libs/config/test, updating the configuration
+ test system proceeds as:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ cd into <code class="computeroutput"><span class="identifier">libs</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">tools</span></code> and run <code class="computeroutput"><span class="identifier">bjam</span></code>.
+ This generates the <code class="computeroutput"><span class="special">.</span><span class="identifier">cpp</span></code>
+ file test cases from the <code class="computeroutput"><span class="special">.</span><span class="identifier">ipp</span></code> file, updates the libs/config/test/all/Jamfile.v2,
+ <code class="computeroutput"><span class="identifier">config_test</span><span class="special">.</span><span class="identifier">cpp</span></code> and <code class="computeroutput"><span class="identifier">config_info</span><span class="special">.</span><span class="identifier">cpp</span></code>.<br>
+ <br>
+ </li>
+<li class="listitem">
+ cd into <code class="computeroutput"><span class="identifier">libs</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">test</span><span class="special">/</span><span class="identifier">all</span></code> and run <code class="computeroutput"><span class="identifier">bjam</span>
+ </code><span class="emphasis"><em>MACRONAME<code class="computeroutput"> <span class="identifier">compiler</span><span class="special">-</span><span class="identifier">list</span></code></em></span>,
+ where <span class="emphasis"><em>MACRONAME</em></span> is the name of the new macro, and
+ <span class="emphasis"><em><code class="computeroutput"><span class="identifier">compiler</span><span class="special">-</span><span class="identifier">list</span></code></em></span> is a space separated
+ list of compilers to test with.<br> <br> The xxx_pass_test and the
+ xxx_fail_test <span class="bold"><strong>should both report <code class="computeroutput"><span class="special">**</span><span class="identifier">passed</span><span class="special">**</span></code></strong></span>.<br> <br> If <span class="emphasis"><em>MACRONAME</em></span>
+ is not defined when it should be defined, xxx_pass_test will not report
+ <code class="computeroutput"><span class="special">**</span><span class="identifier">passed</span><span class="special">**</span></code>. If <span class="emphasis"><em>MACRONAME</em></span>
+ is defined when it should not be defined, xxx_fail_test will not report
+ <code class="computeroutput"><span class="special">**</span><span class="identifier">passed</span><span class="special">**</span></code>.<br> <br>
+ </li>
+<li class="listitem">
+ cd into <code class="computeroutput"><span class="identifier">libs</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">test</span></code> and run <code class="computeroutput"><span class="identifier">bjam</span>
+ <span class="identifier">config_info</span> <span class="identifier">config_test</span>
+ </code><span class="emphasis"><em><code class="computeroutput"><span class="identifier">compiler</span><span class="special">-</span><span class="identifier">list</span></code></em></span>.
+ <code class="computeroutput"><span class="identifier">config_info</span></code> should build
+ and run cleanly for all the compilers in <span class="emphasis"><em><code class="computeroutput"><span class="identifier">compiler</span><span class="special">-</span><span class="identifier">list</span></code></em></span>
+ while <code class="computeroutput"><span class="identifier">config_test</span></code> should
+ fail for those that have the defect, and pass for those that do not.
+ </li>
+</ul></div>
+<p>
+ Then you should:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ Define the defect macro in those config headers that require it.
+ </li>
+<li class="listitem">
+ Document the macro in this documentation (please do not forget this step!!)
+ </li>
+<li class="listitem">
+ Commit everything.
+ </li>
+<li class="listitem">
+ Keep an eye on the regression tests for new failures in Boost.Config
+ caused by the addition.
+ </li>
+<li class="listitem">
+ Start using the macro.
+ </li>
+</ul></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.guidelines_for_boost_authors.adding_new_feature_test_macros"></a><a class="link" href="guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.adding_new_feature_test_macros" title="Adding New Feature Test Macros">Adding
+ New Feature Test Macros</a>
+</h3></div></div></div>
+<p>
+ When you need to add a macro that describes a feature that the standard does
+ not require, follow the convention for adding a new defect macro (above),
+ but call the macro <code class="computeroutput"><span class="identifier">BOOST_HAS_FOO</span></code>,
+ and name the test file "<code class="computeroutput"><span class="identifier">boost_has_foo</span><span class="special">.</span><span class="identifier">ipp</span></code>".
+ Try not to add feature test macros unnecessarily, if there is a platform
+ specific macro that can already be used (for example <code class="computeroutput"><span class="identifier">_WIN32</span></code>,
+ <code class="computeroutput"><span class="identifier">__BEOS__</span></code>, or <code class="computeroutput"><span class="identifier">__linux</span></code>) to identify the feature then use
+ that. Try to keep the macro to a feature group, or header name, rather than
+ one specific API (for example <code class="computeroutput"><span class="identifier">BOOST_HAS_NL_TYPES_H</span></code>
+ rather than <code class="computeroutput"><span class="identifier">BOOST_HAS_CATOPEN</span></code>).
+ If the macro describes a POSIX feature group, then add boilerplate code to
+ <a href="../../../../../boost/config/detail/suffix.hpp" target="_top"><boost/config/detail/suffix.hpp></a>
+ to auto-detect the feature where possible (if you are wondering why we can't
+ use POSIX feature test macro directly, remember that many of these features
+ can be added by third party libraries, and are not therefore identified inside
+ <code class="computeroutput"><span class="special"><</span><span class="identifier">unistd</span><span class="special">.</span><span class="identifier">h</span><span class="special">></span></code>).
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.guidelines_for_boost_authors.modifying_the_boost_configuration_headers"></a><a class="link" href="guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.modifying_the_boost_configuration_headers" title="Modifying the Boost Configuration Headers">Modifying
+ the Boost Configuration Headers</a>
+</h3></div></div></div>
+<p>
+ The aim of boost's configuration setup is that the configuration headers
+ should be relatively stable - a boost user should not have to recompile their
+ code just because the configuration for some compiler that they're not interested
+ in has changed. Separating the configuration into separate compiler/standard
+ library/platform sections provides for part of this stability, but boost
+ authors require some amount of restraint as well, in particular:
+ </p>
+<p>
+ <a href="../../../../../boost/config.hpp" target="_top"><boost/config.hpp></a>
+ should never change, don't alter this file.
+ </p>
+<p>
+ <a href="../../../../../boost/config/user.hpp" target="_top"><boost/config/user.hpp></a>
+ is included by default, don't add extra code to this file unless you have
+ to. If you do, please remember to update <a href="../../../tools/configure.in" target="_top">libs/config/tools/configure.in</a>
+ as well.
+ </p>
+<p>
+ <a href="../../../../../boost/config/detail/suffix.hpp" target="_top"><boost/config/detail/suffix.hpp></a>
+ is always included so be careful about modifying this file as it breaks dependencies
+ for everyone. This file should include only "boilerplate" configuration
+ code, and generally should change only when new macros are added.
+ </p>
+<p>
+ <a href="../../../../../boost/config/detail/select_compiler_config.hpp" target="_top"><boost/config/detail/select_compiler_config.hpp></a>,
+ <a href="../../../../../boost/config/detail/select_platform_config.hpp" target="_top"><boost/config/detail/select_platform_config.hpp></a>
+ and <a href="../../../../../boost/config/detail/select_stdlib_config.hpp" target="_top"><boost/config/detail/select_stdlib_config.hpp></a>
+ are included by default and should change only if support for a new compiler/standard
+ library/platform is added.
+ </p>
+<p>
+ The compiler/platform/standard library selection code is set up so that unknown
+ platforms are ignored and assumed to be fully standards compliant - this
+ gives unknown platforms a "sporting chance" of working "as
+ is" even without running the configure script.
+ </p>
+<p>
+ When adding or modifying the individual mini-configs, assume that future,
+ as yet unreleased versions of compilers, have all the defects of the current
+ version. Although this is perhaps unnecessarily pessimistic, it cuts down
+ on the maintenance of these files, and experience suggests that pessimism
+ is better placed than optimism here!
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Beman Dawes, Vesa Karvonen, John
+ Maddock<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="cstdint.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="rationale.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/doc/html/boost_config/rationale.html b/doc/html/boost_config/rationale.html
new file mode 100644
index 0000000..278516a
--- /dev/null
+++ b/doc/html/boost_config/rationale.html
@@ -0,0 +1,124 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Rationale</title>
+<link rel="stylesheet" href="../../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="../index.html" title="Boost.Config">
+<link rel="up" href="../index.html" title="Boost.Config">
+<link rel="prev" href="guidelines_for_boost_authors.html" title="Guidelines for Boost Authors">
+<link rel="next" href="acknowledgements.html" title="Acknowledgements">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../../boost.png"></td>
+<td align="center"><a href="../../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="guidelines_for_boost_authors.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="acknowledgements.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="boost_config.rationale"></a><a class="link" href="rationale.html" title="Rationale">Rationale</a>
+</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="rationale.html#boost_config.rationale.the_problem">The problem</a></span></dt>
+<dt><span class="section"><a href="rationale.html#boost_config.rationale.the_solution">The solution</a></span></dt>
+</dl></div>
+<p>
+ The problem with many traditional "textbook" implementations of configuration
+ headers (where all the configuration options are in a single "monolithic"
+ header) is that they violate certain fundamental software engineering principles
+ which would have the effect of making boost more fragile, more difficult to
+ maintain and more difficult to use safely. You can find a description of the
+ principles from the <a href="http://www.objectmentor.com/resources/articles/Principles_and_Patterns.pdf" target="_top">following
+ article</a>.
+ </p>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.rationale.the_problem"></a><a class="link" href="rationale.html#boost_config.rationale.the_problem" title="The problem">The problem</a>
+</h3></div></div></div>
+<p>
+ Consider a situation in which you are concurrently developing on multiple
+ platforms. Then consider adding a new platform or changing the platform definitions
+ of an existing platform. What happens? Everything, and this does literally
+ mean everything, recompiles. Isn't it quite absurd that adding a new platform,
+ which has absolutely nothing to do with previously existing platforms, means
+ that all code on all existing platforms needs to be recompiled?
+ </p>
+<p>
+ Effectively, there is an imposed physical dependency between platforms that
+ have nothing to do with each other. Essentially, the traditional solution
+ employed by configuration headers does not conform to the Open-Closed Principle:
+ </p>
+<div class="blockquote"><blockquote class="blockquote"><p>
+ <span class="bold"><strong>"A module should be open for extension but closed
+ for modification."</strong></span>
+ </p></blockquote></div>
+<p>
+ Extending a traditional configuration header implies modifying existing code.
+ </p>
+<p>
+ Furthermore, consider the complexity and fragility of the platform detection
+ code. What if a simple change breaks the detection on some minor platform?
+ What if someone accidentally or on purpose (as a workaround for some other
+ problem) defines some platform dependent macros that are used by the detection
+ code? A traditional configuration header is one of the most volatile headers
+ of the entire library, and more stable elements of Boost would depend on
+ it. This violates the Stable Dependencies Principle:
+ </p>
+<div class="blockquote"><blockquote class="blockquote"><p>
+ <span class="bold"><strong>"Depend in the direction of stability."</strong></span>
+ </p></blockquote></div>
+<p>
+ After even a minor change to a traditional configuration header on one minor
+ platform, almost everything on every platform should be tested if we follow
+ sound software engineering practice.
+ </p>
+<p>
+ Another important issue is that it is not always possible to submit changes
+ to <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>.
+ Some boost users are currently working on platforms using tools and libraries
+ that are under strict Non-Disclosure Agreements. In this situation it is
+ impossible to submit changes to a traditional monolithic configuration header,
+ instead some method by which the user can insert their own configuration
+ code must be provided.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.rationale.the_solution"></a><a class="link" href="rationale.html#boost_config.rationale.the_solution" title="The solution">The solution</a>
+</h3></div></div></div>
+<p>
+ The approach taken by boost's configuration headers is to separate configuration
+ into three orthogonal parts: the compiler, the standard library and the platform.
+ Each compiler/standard library/platform gets its own mini-configuration header,
+ so that changes to one compiler's configuration (for example) does not affect
+ other compilers. In addition there are measures that can be taken both to
+ omit the compiler/standard library/platform detection code (so that adding
+ support to a new platform does not break dependencies), or to freeze the
+ configuration completely; providing almost complete protection against dependency
+ changes.
+ </p>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"></td>
+<td align="right"><div class="copyright-footer">Copyright © 2001-2007 Beman Dawes, Vesa Karvonen, John
+ Maddock<p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav">
+<a accesskey="p" href="guidelines_for_boost_authors.html"><img src="../../../../../doc/src/images/prev.png" alt="Prev"></a><a accesskey="u" href="../index.html"><img src="../../../../../doc/src/images/up.png" alt="Up"></a><a accesskey="h" href="../index.html"><img src="../../../../../doc/src/images/home.png" alt="Home"></a><a accesskey="n" href="acknowledgements.html"><img src="../../../../../doc/src/images/next.png" alt="Next"></a>
+</div>
+</body>
+</html>
diff --git a/doc/html/index.html b/doc/html/index.html
new file mode 100644
index 0000000..a43aa26
--- /dev/null
+++ b/doc/html/index.html
@@ -0,0 +1,1001 @@
+<html>
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
+<title>Boost.Config</title>
+<link rel="stylesheet" href="../../../../doc/src/boostbook.css" type="text/css">
+<meta name="generator" content="DocBook XSL Stylesheets V1.77.1">
+<link rel="home" href="index.html" title="Boost.Config">
+<link rel="next" href="boost_config/boost_macro_reference.html" title="Boost Macro Reference">
+</head>
+<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
+<table cellpadding="2" width="100%"><tr>
+<td valign="top"><img alt="Boost C++ Libraries" width="277" height="86" src="../../../../boost.png"></td>
+<td align="center"><a href="../../../../index.html">Home</a></td>
+<td align="center"><a href="../../../../libs/libraries.htm">Libraries</a></td>
+<td align="center"><a href="http://www.boost.org/users/people.html">People</a></td>
+<td align="center"><a href="http://www.boost.org/users/faq.html">FAQ</a></td>
+<td align="center"><a href="../../../../more/index.htm">More</a></td>
+</tr></table>
+<hr>
+<div class="spirit-nav"><a accesskey="n" href="boost_config/boost_macro_reference.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a></div>
+<div class="article">
+<div class="titlepage">
+<div>
+<div><h2 class="title">
+<a name="config"></a>Boost.Config</h2></div>
+<div><div class="authorgroup"><div class="author"><h3 class="author">
+<span class="firstname">Vesa Karvonen, John Maddock</span> <span class="surname">Beman Dawes</span>
+</h3></div></div></div>
+<div><p class="copyright">Copyright © 2001-2007 Beman Dawes, Vesa Karvonen, John
+ Maddock</p></div>
+<div><div class="legalnotice">
+<a name="config.legal"></a><p>
+ Distributed under the Boost Software License, Version 1.0. (See accompanying
+ file LICENSE_1_0.txt or copy at <a href="http://www.boost.org/LICENSE_1_0.txt" target="_top">http://www.boost.org/LICENSE_1_0.txt</a>)
+ </p>
+</div></div>
+</div>
+<hr>
+</div>
+<div class="toc">
+<p><b>Table of Contents</b></p>
+<dl>
+<dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform">Configuring
+ Boost for Your Platform</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.using_the_default_boost_configuration">Using
+ the default boost configuration</a></span></dt>
+<dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.the__boost_config_hpp__header">The
+ <boost/config.hpp> header</a></span></dt>
+<dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.using_the_configure_script">Using
+ the configure script</a></span></dt>
+<dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.user_settable_options">User
+ settable options</a></span></dt>
+<dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage">Advanced
+ configuration usage</a></span></dt>
+<dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.testing_the_boost_configuration">Testing
+ the boost configuration</a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="boost_config/boost_macro_reference.html">Boost Macro Reference</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_c__03_defects">Macros
+ that describe C++03 defects</a></span></dt>
+<dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_optional_features">Macros
+ that describe optional features</a></span></dt>
+<dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_possible_c___future_features">Macros
+ that describe possible C++ future features</a></span></dt>
+<dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_describe_c__11_features_not_supported">Macros
+ that describe C++11 features not supported</a></span></dt>
+<dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_allow_use_of_c__11_features_with_c__03_compilers">Macros
+ that allow use of C++11 features with C++03 compilers</a></span></dt>
+<dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.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.macros_that_describe_c__17_features_not_supported">Macros
+ that describe C++17 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_describe_features_that_have_been_removed_from_the_standard_">Macros
+ that describe features that have been removed from the standard.</a></span></dt>
+<dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.boost_helper_macros">Boost
+ Helper Macros</a></span></dt>
+<dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.boost_informational_macros">Boost
+ Informational Macros</a></span></dt>
+<dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.boost_deprecated_macros">Boost
+ Deprecated Macros</a></span></dt>
+<dt><span class="section"><a href="boost_config/boost_macro_reference.html#boost_config.boost_macro_reference.macros_for_libraries_with_separate_source_code">Macros
+ for libraries with separate source code</a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="boost_config/build_config.html">Build Time Configuration</a></span></dt>
+<dt><span class="section"><a href="boost_config/cstdint.html">Standard Integer Types</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="boost_config/cstdint.html#boost_config.cstdint.overview">Overview</a></span></dt>
+<dt><span class="section"><a href="boost_config/cstdint.html#boost_config.cstdint.rationale">Rationale</a></span></dt>
+<dt><span class="section"><a href="boost_config/cstdint.html#boost_config.cstdint.ce"><span class="emphasis"><em>Caveat emptor</em></span></a></span></dt>
+<dt><span class="section"><a href="boost_config/cstdint.html#boost_config.cstdint.exact_width_integer_types">Exact-width
+ integer types</a></span></dt>
+<dt><span class="section"><a href="boost_config/cstdint.html#boost_config.cstdint.minimum_width_integer_types">Minimum-width
+ integer types</a></span></dt>
+<dt><span class="section"><a href="boost_config/cstdint.html#boost_config.cstdint.fastest_minimum_width_integer_types">Fastest
+ minimum-width integer types</a></span></dt>
+<dt><span class="section"><a href="boost_config/cstdint.html#boost_config.cstdint.greatest_width_integer_types">Greatest-width
+ integer types</a></span></dt>
+<dt><span class="section"><a href="boost_config/cstdint.html#boost_config.cstdint.integer_constant_macros">Integer
+ Constant Macros</a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="boost_config/guidelines_for_boost_authors.html">Guidelines for
+ Boost Authors</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="boost_config/guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.warnings">Disabling
+ Compiler Warnings</a></span></dt>
+<dt><span class="section"><a href="boost_config/guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.adding_new_defect_macros">Adding
+ New Defect Macros</a></span></dt>
+<dt><span class="section"><a href="boost_config/guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.adding_new_feature_test_macros">Adding
+ New Feature Test Macros</a></span></dt>
+<dt><span class="section"><a href="boost_config/guidelines_for_boost_authors.html#boost_config.guidelines_for_boost_authors.modifying_the_boost_configuration_headers">Modifying
+ the Boost Configuration Headers</a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="boost_config/rationale.html">Rationale</a></span></dt>
+<dd><dl>
+<dt><span class="section"><a href="boost_config/rationale.html#boost_config.rationale.the_problem">The problem</a></span></dt>
+<dt><span class="section"><a href="boost_config/rationale.html#boost_config.rationale.the_solution">The solution</a></span></dt>
+</dl></dd>
+<dt><span class="section"><a href="boost_config/acknowledgements.html">Acknowledgements</a></span></dt>
+</dl>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h2 class="title" style="clear: both">
+<a name="boost_config.configuring_boost_for_your_platform"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform" title="Configuring Boost for Your Platform">Configuring
+ Boost for Your Platform</a>
+</h2></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.using_the_default_boost_configuration">Using
+ the default boost configuration</a></span></dt>
+<dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.the__boost_config_hpp__header">The
+ <boost/config.hpp> header</a></span></dt>
+<dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.using_the_configure_script">Using
+ the configure script</a></span></dt>
+<dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.user_settable_options">User
+ settable options</a></span></dt>
+<dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage">Advanced
+ configuration usage</a></span></dt>
+<dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.testing_the_boost_configuration">Testing
+ the boost configuration</a></span></dt>
+</dl></div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.configuring_boost_for_your_platform.using_the_default_boost_configuration"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.using_the_default_boost_configuration" title="Using the default boost configuration">Using
+ the default boost configuration</a>
+</h3></div></div></div>
+<p>
+ Boost comes already configured for most common compilers and platforms; you
+ should be able to use boost "as is". Since the compiler is configured
+ separately from the standard library, the default configuration should work
+ even if you replace the compiler's standard library with a third-party standard
+ library (like <a href="http://stlport.sourceforge.net" target="_top">STLport</a>).
+ </p>
+<p>
+ Using boost "as is" without trying to reconfigure is the recommended
+ method for using boost. You can, however, run the configure script if you
+ want to, and there are regression tests provided that allow you to test the
+ current boost configuration with your particular compiler setup.
+ </p>
+<p>
+ Boost library users can request support for additional compilers or platforms
+ by visiting our <a href="https://svn.boost.org/trac/boost/newticket" target="_top">Trac</a>
+ and submitting a support request.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.configuring_boost_for_your_platform.the__boost_config_hpp__header"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.the__boost_config_hpp__header" title="The <boost/config.hpp> header">The
+ <boost/config.hpp> header</a>
+</h3></div></div></div>
+<p>
+ Boost library implementations access configuration macros via
+ </p>
+<pre class="programlisting"><span class="preprocessor">#include</span> <a href="../../../../boost/config.hpp" target="_top"><boost/config.hpp></a>
+</pre>
+<p>
+ While Boost library users are not required to include that file directly,
+ or use those configuration macros, such use is acceptable. The configuration
+ macros are documented as to their purpose, usage, and limitations which makes
+ them usable by both Boost library and user code.
+ </p>
+<p>
+ Boost <a class="link" href="boost_config/boost_macro_reference.html#config_info_macros">informational</a> or <a class="link" href="boost_config/boost_macro_reference.html#config_helpers">helper</a>
+ macros are designed for use by Boost users as well as for our own internal
+ use. Note however, that the <a class="link" href="boost_config/boost_macro_reference.html#config_features">feature test</a>
+ and <a class="link" href="boost_config/boost_macro_reference.html#config_defects">defect test</a> macros were designed
+ for internal use by Boost libraries, not user code, so they can change at
+ any time (though no gratuitous changes are made to them). Boost library problems
+ resulting from changes to the configuration macros are caught by the Boost
+ regression tests, so the Boost libraries are updated to account for those
+ changes. By contrast, Boost library user code can be adversely affected by
+ changes to the macros without warning. The best way to keep abreast of changes
+ to the macros used in user code is to monitor the discussions on the Boost
+ developers list.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.configuring_boost_for_your_platform.using_the_configure_script"></a><a name="config_config_script"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.using_the_configure_script" title="Using the configure script">Using
+ the configure script</a>
+</h3></div></div></div>
+<div class="important"><table border="0" summary="Important">
+<tr>
+<td rowspan="2" align="center" valign="top" width="25"><img alt="[Important]" src="../../../../doc/src/images/important.png"></td>
+<th align="left">Important</th>
+</tr>
+<tr><td align="left" valign="top"><p>
+ This configure script only sets up the Boost headers for use with a particular
+ compiler. It has no effect on Boost.Build, or how the libraries are built.
+ </p></td></tr>
+</table></div>
+<p>
+ If you know that boost is incorrectly configured for your particular setup,
+ and you are on a UNIX like platform, then you may want to try and improve
+ things by running the boost configure script. From a shell command prompt
+ you will need to cd into <span class="emphasis"><em><boost-root></em></span><code class="computeroutput"><span class="special">/</span><span class="identifier">libs</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span></code>
+ and type:
+ </p>
+<div class="blockquote"><blockquote class="blockquote"><p>
+ <code class="computeroutput"><span class="identifier">sh</span> <span class="special">./</span><span class="identifier">configure</span></code>
+ </p></blockquote></div>
+<p>
+ you will see a list of the items being checked as the script works its way
+ through the regression tests. Note that the configure script only really
+ auto-detects your compiler if it's called g++, c++ or CC. If you are using
+ some other compiler you will need to set one or more of the following environment
+ variables:
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Variable
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ CXX
+ </p>
+ </td>
+<td>
+ <p>
+ The name of the compiler, for example <code class="computeroutput"><span class="identifier">c</span><span class="special">++</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ CXXFLAGS
+ </p>
+ </td>
+<td>
+ <p>
+ The compiler flags to use, for example <code class="computeroutput"><span class="special">-</span><span class="identifier">O2</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ LDFLAGS
+ </p>
+ </td>
+<td>
+ <p>
+ The linker flags to use, for example <code class="computeroutput"><span class="special">-</span><span class="identifier">L</span><span class="special">/</span><span class="identifier">mypath</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ LIBS
+ </p>
+ </td>
+<td>
+ <p>
+ Any libraries to link in, for example <code class="computeroutput"><span class="special">-</span><span class="identifier">lpthread</span></code>.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+ For example to run the configure script with HP aCC, you might use something
+ like:
+ </p>
+<pre class="programlisting"><span class="keyword">export</span> <span class="identifier">CXX</span><span class="special">=</span><span class="string">"aCC"</span>
+<span class="keyword">export</span> <span class="identifier">CXXFLAGS</span><span class="special">=</span><span class="string">"-Aa -DAportable -D__HPACC_THREAD_SAFE_RB_TREE \
+ -DRWSTD_MULTI_THREAD -DRW_MULTI_THREAD -D_REENTRANT -D_THREAD_SAFE"</span>
+<span class="keyword">export</span> <span class="identifier">LDFLAGS</span><span class="special">=</span><span class="string">"-DAportable"</span>
+<span class="keyword">export</span> <span class="identifier">LIBS</span><span class="special">=</span><span class="string">"-lpthread"</span>
+<span class="identifier">sh</span> <span class="special">./</span><span class="identifier">configure</span>
+</pre>
+<p>
+ However you run the configure script, when it finishes you will find a new
+ header -<code class="computeroutput"><span class="identifier">user</span><span class="special">.</span><span class="identifier">hpp</span></code>- located in the <span class="emphasis"><em><boost-root></em></span><code class="computeroutput"><span class="special">/</span><span class="identifier">libs</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span></code>
+ directory. <span class="bold"><strong>Note that configure does not install this
+ header into your boost include path by default</strong></span>. This header contains
+ all the options generated by the configure script, plus a header-section
+ that contains the user settable options from the default version of <a href="../../../../boost/config/user.hpp" target="_top"><boost/config/user.hpp></a>
+ (located under <span class="emphasis"><em><boost-root></em></span><code class="computeroutput"><span class="special">/</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span></code>).
+ There are two ways you can use this header:
+ </p>
+<div class="itemizedlist"><ul class="itemizedlist" style="list-style-type: disc; ">
+<li class="listitem">
+ <span class="bold"><strong>Option 1:</strong></span> copy the header into <span class="emphasis"><em><boost-root></em></span><code class="computeroutput"><span class="special">/</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span></code> so that it replaces the default user.hpp
+ provided by boost. This option allows only one configure-generated setup;
+ boost developers should avoid this option, as it incurs the danger of
+ accidentally committing a configure-modified <a href="../../../../boost/config/user.hpp" target="_top"><boost/config/user.hpp></a>
+ to the svn repository (something you will not be thanked for!).
+ </li>
+<li class="listitem">
+ <span class="bold"><strong>Option 2:</strong></span> give the header a more memorable
+ name, and place it somewhere convenient; then, define the macro <code class="computeroutput"><span class="identifier">BOOST_USER_CONFIG</span></code> to point to it. For
+ example create a new sub-directory <span class="emphasis"><em><boost-root></em></span><code class="computeroutput"><span class="special">/</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span></code> <code class="computeroutput"><span class="identifier">user</span><span class="special">/</span></code>, and copy the header there; for example
+ as <code class="computeroutput"><span class="identifier">multithread</span><span class="special">-</span><span class="identifier">gcc</span><span class="special">-</span><span class="identifier">config</span><span class="special">.</span><span class="identifier">hpp</span></code>. Then, when compiling add the command
+ line option: <code class="computeroutput"><span class="special">-</span><span class="identifier">DBOOST_USER_CONFIG</span><span class="special">=</span><span class="string">"<boost/config/user/multithread-gcc-config.hpp>"</span></code>,
+ and boost will use the new configuration header. This option allows you
+ to generate more than one configuration header, and to keep them separate
+ from the boost source - so that updates to the source do not interfere
+ with your configuration.
+ </li>
+</ul></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.configuring_boost_for_your_platform.user_settable_options"></a><a name="config_user_settable"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.user_settable_options" title="User settable options">User
+ settable options</a>
+</h3></div></div></div>
+<p>
+ There are some configuration-options that represent user choices, rather
+ than compiler defects or platform specific options. These are listed in
+ <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">user</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>
+ and at the start of a configure-generated <code class="computeroutput"><span class="identifier">user</span><span class="special">.</span><span class="identifier">hpp</span></code> header.
+ You can define these on the command line, or by editing <code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">user</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code>, they are listed in the following table:
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ Macro
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_USER_CONFIG</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ When defined, it should point to the name of the user configuration
+ file to include prior to any boost configuration files. When not
+ defined, defaults to <a href="../../../../boost/config/user.hpp" target="_top"><code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">user</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_COMPILER_CONFIG</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ When defined, it should point to the name of the compiler configuration
+ file to use. Defining this cuts out the compiler selection logic,
+ and eliminates the dependency on the header containing that logic.
+ For example if you are using gcc, then you could define BOOST_COMPILER_CONFIG
+ to <a href="../../../../boost/config/compiler/gcc.hpp" target="_top"><code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">compiler</span><span class="special">/</span><span class="identifier">gcc</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_STDLIB_CONFIG</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ When defined, it should point to the name of the standard library
+ configuration file to use. Defining this cuts out the standard
+ library selection logic, and eliminates the dependency on the header
+ containing that logic. For example if you are using STLport, then
+ you could define <code class="computeroutput"><span class="identifier">BOOST_STDLIB_CONFIG</span></code>
+ to <a href="../../../../boost/config/stdlib/stlport.hpp" target="_top"><code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">stdlib</span><span class="special">/</span><span class="identifier">stlport</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_PLATFORM_CONFIG</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ When defined, it should point to the name of the platform configuration
+ file to use. Defining this cuts out the platform selection logic,
+ and eliminates the dependency on the header containing that logic.
+ For example if you are compiling on linux, then you could define
+ <code class="computeroutput"><span class="identifier">BOOST_PLATFORM_CONFIG</span></code>
+ to <a href="../../../../boost/config/platform/linux.hpp" target="_top"><code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">platform</span><span class="special">/</span><span class="identifier">linux</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_COMPILER_CONFIG</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ When defined, no compiler configuration file is selected or included,
+ define when the compiler is fully conformant with the standard,
+ or where the user header (see <code class="computeroutput"><span class="identifier">BOOST_USER_CONFIG</span></code>),
+ has had any options necessary added to it, for example by an autoconf
+ generated configure script.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_STDLIB_CONFIG</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ When defined, no standard library configuration file is selected
+ or included, define when the standard library is fully conformant
+ with the standard, or where the user header (see <code class="computeroutput"><span class="identifier">BOOST_USER_CONFIG</span></code>), has had any
+ options necessary added to it, for example by an autoconf generated
+ configure script.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_PLATFORM_CONFIG</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ When defined, no platform configuration file is selected or included,
+ define when the platform is fully conformant with the standard
+ (and has no useful extra features), or where the user header (see
+ <code class="computeroutput"><span class="identifier">BOOST_USER_CONFIG</span></code>),
+ has had any options necessary added to it, for example by an autoconf
+ generated configure script.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_NO_CONFIG</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Equivalent to defining all of <code class="computeroutput"><span class="identifier">BOOST_NO_COMPILER_CONFIG</span></code>,
+ <code class="computeroutput"><span class="identifier">BOOST_NO_STDLIB_CONFIG</span></code>
+ and <code class="computeroutput"><span class="identifier">BOOST_NO_PLATFORM_CONFIG</span></code>.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_STRICT_CONFIG</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ The normal behavior for compiler versions that are newer than the
+ last known version, is to assume that they have all the same defects
+ as the last known version. By setting this define, then compiler
+ versions that are newer than the last known version are assumed
+ to be fully conforming with the standard. This is probably most
+ useful for boost developers or testers, and for those who want
+ to use boost to test beta compiler versions.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_ASSERT_CONFIG</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ When this flag is set, if the config finds anything unknown, then
+ it will stop with a #error rather than continue. Boost regression
+ testers should set this define, as should anyone who wants to quickly
+ check whether boost is supported on their platform.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_DISABLE_THREADS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ When defined, disables threading support, even if the compiler
+ in its current translation mode supports multiple threads.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_DISABLE_WIN32</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ When defined, disables the use of Win32 specific API's, even when
+ these are available. Also has the effect of setting <code class="computeroutput"><span class="identifier">BOOST_DISABLE_THREADS</span></code> unless
+ <code class="computeroutput"><span class="identifier">BOOST_HAS_PTHREADS</span></code>
+ is set. This option may be set automatically by the config system
+ when it detects that the compiler is in "strict mode".
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_DISABLE_ABI_HEADERS</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Stops boost headers from including any prefix/suffix headers that
+ normally control things like struct packing and alignment.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_ABI_PREFIX</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A prefix header to include in place of whatever boost.config would
+ normally select, any replacement should set up struct packing and
+ alignment options as required.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_ABI_SUFFIX</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A suffix header to include in place of whatever boost.config would
+ normally select, any replacement should undo the effects of the
+ prefix header.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_ALL_DYN_LINK</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Forces all libraries that have separate source, to be linked as
+ dll's rather than static libraries on Microsoft Windows (this macro
+ is used to turn on <code class="computeroutput"><span class="identifier">__declspec</span><span class="special">(</span><span class="identifier">dllimport</span><span class="special">)</span></code> modifiers, so that the compiler
+ knows which symbols to look for in a dll rather than in a static
+ library). Note that there may be some libraries that can only be
+ statically linked (Boost.Test for example) and others which may
+ only be dynamically linked (Boost.Thread for example), in these
+ cases this macro has no effect.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_</span></code><span class="emphasis"><em>WHATEVER</em></span><code class="computeroutput"><span class="identifier">_DYN_LINK</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Forces library "whatever" to be linked as a dll rather
+ than a static library on Microsoft Windows: replace the <span class="emphasis"><em>WHATEVER</em></span>
+ part of the macro name with the name of the library that you want
+ to dynamically link to, for example use <code class="computeroutput"><span class="identifier">BOOST_DATE_TIME_DYN_LINK</span></code>
+ or <code class="computeroutput"><span class="identifier">BOOST_REGEX_DYN_LINK</span></code>
+ etc (this macro is used to turn on <code class="computeroutput"><span class="identifier">__declspec</span><span class="special">(</span><span class="identifier">dllimport</span><span class="special">)</span></code> modifiers, so that the compiler
+ knows which symbols to look for in a dll rather than in a static
+ library). Note that there may be some libraries that can only be
+ statically linked (Boost.Test for example) and others which may
+ only be dynamically linked (Boost.Thread for example), in these
+ cases this macro is unsupported.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_ALL_NO_LIB</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Tells the config system not to automatically select which libraries
+ to link against. Normally if a compiler supports #pragma lib, then
+ the correct library build variant will be automatically selected
+ and linked against, simply by the act of including one of that
+ library's headers. This macro turns that feature off.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_</span></code><span class="emphasis"><em>WHATEVER</em></span><code class="computeroutput"><span class="identifier">_NO_LIB</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Tells the config system not to automatically select which library
+ to link against for library "whatever", replace <span class="emphasis"><em>WHATEVER</em></span>
+ in the macro name with the name of the library; for example <code class="computeroutput"><span class="identifier">BOOST_DATE_TIME_NO_LIB</span></code> or <code class="computeroutput"><span class="identifier">BOOST_REGEX_NO_LIB</span></code>. Normally
+ if a compiler supports <code class="computeroutput"><span class="preprocessor">#pragma</span>
+ <span class="identifier">lib</span></code>, then the correct
+ library build variant will be automatically selected and linked
+ against, simply by the act of including one of that library's headers.
+ This macro turns that feature off.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_LIB_DIAGNOSTIC</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Causes the auto-linking code to output diagnostic messages indicating
+ the name of the library that is selected for linking.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_LIB_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>
+ <p>
+ <code class="computeroutput"><span class="identifier">BOOST_LIB_TOOLSET</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Overrides the name of the toolset part of the name of library being
+ linked to; note if defined this must be defined to a quoted string
+ literal, for example "abc".
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.configuring_boost_for_your_platform.advanced_configuration_usage"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage" title="Advanced configuration usage">Advanced
+ configuration usage</a>
+</h3></div></div></div>
+<div class="toc"><dl>
+<dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_1__creating_our_own_frozen_configuration">Example
+ 1: creating our own frozen configuration</a></span></dt>
+<dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_2__skipping_files_that_you_don_t_need">Example
+ 2: skipping files that you don't need</a></span></dt>
+<dt><span class="section"><a href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_3__using_configure_script_to_freeze_the_boost_configuration">Example
+ 3: using configure script to freeze the boost configuration</a></span></dt>
+</dl></div>
+<p>
+ By setting various macros on the compiler command line or by editing <a href="../../../../boost/config/user.hpp" target="_top"><boost/config/user.hpp></a>,
+ the boost configuration setup can be optimised in a variety of ways.
+ </p>
+<p>
+ Boost's configuration is structured so that the user-configuration is included
+ first (defaulting to <a href="../../../../boost/config/user.hpp" target="_top"><boost/config/user.hpp></a>
+ if <code class="computeroutput"><span class="identifier">BOOST_USER_CONFIG</span></code> is not
+ defined). This sets up any user-defined policies, and gives the user-configuration
+ a chance to influence what happens next.
+ </p>
+<p>
+ Next the compiler, standard library, and platform configuration files are
+ included. These are included via macros (<code class="computeroutput"><span class="identifier">BOOST_COMPILER_CONFIG</span></code>
+ etc, <a class="link" href="index.html#config_user_settable">see user settable macros</a>),
+ and if the corresponding macro is undefined then a separate header that detects
+ which compiler/standard library/platform is in use is included in order to
+ set these. The config can be told to ignore these headers altogether if the
+ corresponding <code class="computeroutput"><span class="identifier">BOOST_NO_XXX</span></code>
+ macro is set (for example <code class="computeroutput"><span class="identifier">BOOST_NO_COMPILER_CONFIG</span></code>
+ to disable including any compiler configuration file - <a class="link" href="index.html#config_user_settable">see
+ user settable macros</a>).
+ </p>
+<p>
+ Finally the boost configuration header, includes <a href="../../../../boost/config/detail/suffix.hpp" target="_top"><boost/config/detail/suffix.hpp></a>;
+ this header contains any boiler plate configuration code - for example where
+ one boost macro being set implies that another must be set also.
+ </p>
+<p>
+ The following usage examples represent just a few of the possibilities:
+ </p>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_1__creating_our_own_frozen_configuration"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_1__creating_our_own_frozen_configuration" title="Example 1: creating our own frozen configuration">Example
+ 1: creating our own frozen configuration</a>
+</h4></div></div></div>
+<p>
+ Lets suppose that we're building boost with Visual C++ 6, and STLport 4.0.
+ Lets suppose also that we don't intend to update our compiler or standard
+ library any time soon. In order to avoid breaking dependencies when we
+ update boost, we may want to "freeze" our configuration headers,
+ so that we only have to rebuild our project if the boost code itself has
+ changed, and not because the boost config has been updated for more recent
+ versions of Visual C++ or STLport. We'll start by realising that the configuration
+ files in use are: <a href="../../../../boost/config/compiler/visualc.hpp" target="_top"><code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">compiler</span><span class="special">/</span><span class="identifier">visualc</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a> for the compiler, <a href="../../../../boost/config/stdlib/stlport.hpp" target="_top"><code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">stdlib</span><span class="special">/</span><span class="identifier">stlport</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a> for the standard library, and
+ <a href="../../../../boost/config/platform/win32.hpp" target="_top"><code class="computeroutput"><span class="special"><</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">platform</span><span class="special">/</span><span class="identifier">win32</span><span class="special">.</span><span class="identifier">hpp</span><span class="special">></span></code></a> for the platform. Next we'll
+ create our own private configuration directory: <code class="computeroutput"><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span><span class="identifier">mysetup</span><span class="special">/</span></code>, and copy the configuration files into
+ there. Finally, open up <a href="../../../../boost/config/user.hpp" target="_top"><boost/config/user.hpp></a>
+ and edit the following defines:
+ </p>
+<pre class="programlisting"><span class="preprocessor">#define</span> <span class="identifier">BOOST_COMPILER_CONFIG</span> <span class="string">"boost/config/mysetup/visualc.hpp"</span>
+<span class="preprocessor">#define</span> <span class="identifier">BOOST_STDLIB_CONFIG</span> <span class="string">"boost/config/mysetup/stlport.hpp"</span>
+<span class="preprocessor">#define</span> <span class="identifier">BOOST_USER_CONFIG</span> <span class="string">"boost/config/mysetup/win32.hpp"</span>
+</pre>
+<p>
+ Now when you use boost, its configuration header will go straight to our
+ "frozen" versions, and ignore the default versions, you will
+ now be insulated from any configuration changes when you update boost.
+ This technique is also useful if you want to modify some of the boost configuration
+ files; for example if you are working with a beta compiler release not
+ yet supported by boost.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_2__skipping_files_that_you_don_t_need"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_2__skipping_files_that_you_don_t_need" title="Example 2: skipping files that you don't need">Example
+ 2: skipping files that you don't need</a>
+</h4></div></div></div>
+<p>
+ Lets suppose that you're using boost with a compiler that is fully conformant
+ with the standard; you're not interested in the fact that older versions
+ of your compiler may have had bugs, because you know that your current
+ version does not need any configuration macros setting. In a case like
+ this, you can define <code class="computeroutput"><span class="identifier">BOOST_NO_COMPILER_CONFIG</span></code>
+ either on the command line, or in <a href="../../../../boost/config/user.hpp" target="_top"><boost/config/user.hpp></a>,
+ and miss out the compiler configuration header altogether (actually you
+ miss out two headers, one which works out what the compiler is, and one
+ that configures boost for it). This has two consequences: the first is
+ that less code has to be compiled, and the second that you have removed
+ a dependency on two boost headers.
+ </p>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h4 class="title">
+<a name="boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_3__using_configure_script_to_freeze_the_boost_configuration"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.advanced_configuration_usage.example_3__using_configure_script_to_freeze_the_boost_configuration" title="Example 3: using configure script to freeze the boost configuration">Example
+ 3: using configure script to freeze the boost configuration</a>
+</h4></div></div></div>
+<p>
+ If you are working on a unix-like platform then you can use the configure
+ script to generate a "frozen" configuration based on your current
+ compiler setup - <a class="link" href="index.html#config_config_script">see using the configure
+ script for more details</a>.
+ </p>
+</div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.configuring_boost_for_your_platform.testing_the_boost_configuration"></a><a class="link" href="index.html#boost_config.configuring_boost_for_your_platform.testing_the_boost_configuration" title="Testing the boost configuration">Testing
+ the boost configuration</a>
+</h3></div></div></div>
+<p>
+ The boost configuration library provides a full set of regression test programs
+ under the <span class="emphasis"><em><boost-root></em></span><code class="computeroutput"><span class="special">/</span><span class="identifier">boost</span><span class="special">/</span><span class="identifier">config</span><span class="special">/</span></code>
+ <code class="computeroutput"><span class="identifier">test</span><span class="special">/</span></code>
+ sub-directory:
+ </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+ <p>
+ File
+ </p>
+ </th>
+<th>
+ <p>
+ Description
+ </p>
+ </th>
+</tr></thead>
+<tbody>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">config_info</span><span class="special">.</span><span class="identifier">cpp</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Prints out a detailed description of your compiler/standard library/platform
+ setup, plus your current boost configuration. The information provided
+ by this program is useful in setting up the boost configuration
+ files. If you report that boost is incorrectly configured for your
+ compiler/library/platform then please include the output from this
+ program when reporting the changes required.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">config_test</span><span class="special">.</span><span class="identifier">cpp</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ A monolithic test program that includes most of the individual
+ test cases. This provides a quick check to see if boost is correctly
+ configured for your compiler/library/platform.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">limits_test</span><span class="special">.</span><span class="identifier">cpp</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Tests your standard library's <code class="computeroutput"><span class="identifier">std</span><span class="special">::</span><span class="identifier">numeric_limits</span></code>
+ implementation (or its boost provided replacement if <code class="computeroutput"><span class="identifier">BOOST_NO_LIMITS</span></code> is defined).
+ This test file fails with most versions of numeric_limits, mainly
+ due to the way that some compilers treat NAN's and infinity.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">no_</span><span class="special">*</span><span class="identifier">pass</span><span class="special">.</span><span class="identifier">cpp</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Individual compiler defect test files. Each of these should compile,
+ if one does not then the corresponding <code class="computeroutput"><span class="identifier">BOOST_NO_XXX</span></code>
+ macro needs to be defined - see each test file for specific details.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">no_</span><span class="special">*</span><span class="identifier">fail</span><span class="special">.</span><span class="identifier">cpp</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Individual compiler defect test files. Each of these should not
+ compile, if one does then the corresponding <code class="computeroutput"><span class="identifier">BOOST_NO_XXX</span></code>
+ macro is defined when it need not be - see each test file for specific
+ details.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">has_</span><span class="special">*</span><span class="identifier">pass</span><span class="special">.</span><span class="identifier">cpp</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Individual feature test files. If one of these does not compile
+ then the corresponding <code class="computeroutput"><span class="identifier">BOOST_HAS_XXX</span></code>
+ macro is defined when it should not be - see each test file for
+ specific details.
+ </p>
+ </td>
+</tr>
+<tr>
+<td>
+ <p>
+ <code class="computeroutput"><span class="identifier">has_</span><span class="special">*</span><span class="identifier">fail</span><span class="special">.</span><span class="identifier">cpp</span></code>
+ </p>
+ </td>
+<td>
+ <p>
+ Individual feature test files. If one of these does compile then
+ the corresponding <code class="computeroutput"><span class="identifier">BOOST_HAS_XXX</span></code>
+ macro can be safely defined - see each test file for specific details.
+ </p>
+ </td>
+</tr>
+</tbody>
+</table></div>
+<p>
+ Although you can run the configuration regression tests as individual test
+ files, there are rather a lot of them, so there are a couple of shortcuts
+ to help you out:
+ </p>
+<p>
+ If you have built the <a href="../../../../tools/regression/doc/index.html" target="_top">boost
+ regression test driver</a>, then you can use this to produce a nice html
+ formatted report of the results using the supplied test file.
+ </p>
+<p>
+ Alternatively you can run the configure script like this:
+ </p>
+<div class="blockquote"><blockquote class="blockquote"><p>
+ <code class="computeroutput"><span class="special">./</span><span class="identifier">configure</span>
+ <span class="special">--</span><span class="identifier">enable</span><span class="special">-</span><span class="identifier">test</span></code>
+ </p></blockquote></div>
+<p>
+ in which case the script will test the current configuration rather than
+ creating a new one from scratch.
+ </p>
+<p>
+ If you are reporting the results of these tests for a new platform/library/compiler
+ then please include a log of the full compiler output, the output from <code class="computeroutput"><span class="identifier">config_info</span><span class="special">.</span><span class="identifier">cpp</span></code>, and the pass/fail test results.
+ </p>
+</div>
+</div>
+</div>
+<table xmlns:rev="http://www.cs.rpi.edu/~gregod/boost/tools/doc/revision" width="100%"><tr>
+<td align="left"><p><small>Last revised: April 18, 2018 at 18:30:02 GMT</small></p></td>
+<td align="right"><div class="copyright-footer"></div></td>
+</tr></table>
+<hr>
+<div class="spirit-nav"><a accesskey="n" href="boost_config/boost_macro_reference.html"><img src="../../../../doc/src/images/next.png" alt="Next"></a></div>
+</body>
+</html>
diff --git a/doc/macro_reference.qbk b/doc/macro_reference.qbk
new file mode 100644
index 0000000..f44340d
--- /dev/null
+++ b/doc/macro_reference.qbk
@@ -0,0 +1,1667 @@
+[/
+ Boost.Config
+
+ Copyright (c) 2001 Beman Dawes
+ Copyright (c) 2001 Vesa Karvonen
+ Copyright (c) 2001 John Maddock
+
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+]
+
+
+
+[section Boost Macro Reference]
+
+[#config_defects]
+
+[section Macros that describe C++03 defects]
+
+The following macros all describe features that are required by the C++03 standard,
+if one of the following macros is defined, then it represents a defect in the
+compiler's conformance with the 2003 standard.
+
+
+[table
+[[Macro ][Section ][ Description ]]
+
+
+[[`BOOST_BCB_PARTIAL_SPECIALIZATION_BUG`][Compiler][
+The compiler exhibits certain partial specialisation bug - probably Borland
+C++ Builder specific.
+]]
+[[`BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL`][Compiler][
+Argument dependent lookup fails if there is a using declaration for the
+symbol being looked up in the current scope. For example, using
+`boost::get_pointer`; prevents ADL from finding overloads of `get_pointer`
+in namespaces nested inside boost (but not elsewhere). Probably
+Borland specific.
+]]
+[[`BOOST_NO_ADL_BARRIER`][Compiler][
+The compiler locates and searches namespaces that it should /*not*/ in fact
+search when performing argument dependent lookup.
+]]
+[[`BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP`][Compiler][
+Compiler does not implement argument-dependent lookup (also named
+Koenig lookup); see std::3.4.2 \[basic.koenig.lookup\]
+]]
+[[`BOOST_NO_AUTO_PTR`][Standard library][
+If the compiler / library supplies non-standard or broken `std::auto_ptr`.
+]]
+[[`BOOST_NO_COMPLETE_VALUE_INITIALIZATION`][Compiler][
+Compiler has not completely implemented value-initialization.
+See also [@../../../utility/value_init.htm#compiler_issues The Utility\/Value Init docs]
+]]
+[[`BOOST_NO_CTYPE_FUNCTIONS`][Platform][
+The Platform does not provide functions for the character-classifying
+operations `<ctype.h>` and `<cctype>`, only macros.
+]]
+[[`BOOST_NO_CV_SPECIALIZATIONS`][Compiler][
+If template specialisations for cv-qualified types conflict with a
+specialisation for a cv-unqualififed type.
+]]
+[[`BOOST_NO_CV_VOID_SPECIALIZATIONS`][Compiler][
+If template specialisations for cv-void types conflict with a specialisation
+for void.
+]]
+[[`BOOST_NO_CWCHAR`][Platform][
+The Platform does not provide `<wchar.h>` and `<cwchar>`.
+]]
+[[`BOOST_NO_CWCTYPE`][Platform][
+The Platform does not provide `<wctype.h>` and `<cwctype>`.
+]]
+[[`BOOST_NO_FENV_H`][Platform, Standard library][
+The C standard library doesn't provide `<fenv.h>`. [@../../../../boost/detail/fenv.hpp
+`<boost/detail/fenv.hpp>`] should be included instead of `<fenv.h>` for maximum
+portability on platforms which do provide `<fenv.h>`.
+]]
+[[`BOOST_NO_DEPENDENT_NESTED_DERIVATIONS`][Compiler][
+The compiler fails to compile a nested class that has a dependent base class:
+``
+template<typename T>
+struct foo : {
+ template<typename U>
+ struct bar : public U {};
+``
+};
+]]
+[[`BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS`][Compiler][
+Template value parameters cannot have a dependent type, for example:
+``
+template<class T, typename T::type value>
+class X { ... };
+``
+]]
+[[`BOOST_NO_EXCEPTION_STD_NAMESPACE`][Standard Library][
+The standard library does not put some or all of the contents of
+`<exception>` in namespace std.
+]]
+[[`BOOST_NO_EXCEPTIONS`][Compiler][
+The compiler does not support exception handling (this setting is typically
+required by many C++ compilers for embedded platforms). Note that there is
+no requirement for boost libraries to honor this configuration setting -
+indeed doing so may be impossible in some cases. Those libraries that do
+honor this will typically abort if a critical error occurs - you have been
+warned!
+]]
+[[`BOOST_NO_FUNCTION_TEMPLATE_ORDERING`][Compiler][
+The compiler does not perform function template ordering or its function
+template ordering is incorrect.
+``
+// #1
+template<class T> void f(T);
+
+// #2
+template<class T,class U> void f(T(*)(U));
+
+void bar(int);
+
+f(&bar); // should choose #2.
+``
+]]
+[[`BOOST_NO_INCLASS_MEMBER_INITIALIZATION`][Compiler][
+Compiler violates std::9.4.2/4.
+]]
+[[`BOOST_NO_INTRINSIC_WCHAR_T`][Compiler][
+The C++ implementation does not provide `wchar_t`, or it is really a synonym
+for another integral type. Use this symbol to decide whether it is appropriate
+to explicitly specialize a template on `wchar_t` if there is already a
+specialization for other integer types.
+]]
+[[`BOOST_NO_IOSFWD`][std lib][
+The standard library lacks `<iosfwd>`.
+]]
+[[`BOOST_NO_IOSTREAM`][std lib][
+The standard library lacks `<iostream>`, `<istream>` or `<ostream>`.
+]]
+[[`BOOST_NO_IS_ABSTRACT`][Compiler][
+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
+most compilers that support SFINAE also support this DR. See also BOOST_NO_SFINAE and BOOST_NO_SFINAE_EXPR
+]]
+[[`BOOST_NO_LIMITS`][Standard library][
+The C++ implementation does not provide the `<limits>` header. Never check for
+this symbol in library code; always include `<boost/limits.hpp>`, which
+guarantees to provide `std::numeric_limits`.
+]]
+[[`BOOST_NO_CXX11_NUMERIC_LIMITS`][Standard library][
+C++11 additions to `std::numeric_limits` are not available for use.
+`static function numeric_limits<T>::lowest()` the lowest finite value representable by the numeric type.
+`static int const max_digits10` the number of decimal digits that are required to make sure that two distinct values of the type have distinct decimal representations.
+`template<> class numeric_limits<char16_t>;`, see also `BOOST_NO_CXX11_CHAR16_T`,
+`template<> class numeric_limits<char32_t>;` see also `BOOST_NO_CXX11_CHAR32_T`.
+Replaces BOOST_NO_NUMERIC_LIMITS_LOWEST.
+]]
+[[`BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS`][Standard library][
+Constants such as `numeric_limits<T>::is_signed` are not available for use
+at compile-time.
+]]
+[[`BOOST_NO_LONG_LONG_NUMERIC_LIMITS`][Standard library][
+There is no specialization for `numeric_limits<long long>` and
+`numeric_limits<unsigned long long>`. `<boost/limits.hpp>` will then add these
+specializations as a standard library "fix" only if the compiler supports the
+`long long` datatype.
+]]
+[[`BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS`][Compiler][
+The compiler does not support the specialization of individual member
+functions of template classes.
+]]
+[[`BOOST_NO_MEMBER_TEMPLATE_KEYWORD`][Compiler][
+If the compiler supports member templates, but not the template keyword
+when accessing member template classes.
+]]
+[[`BOOST_NO_MEMBER_TEMPLATE_FRIENDS`][Compiler][
+Member template friend syntax (`template<class P> friend class frd;`)
+described in the C++ Standard, 14.5.3, not supported.
+]]
+[[`BOOST_NO_MEMBER_TEMPLATES`][Compiler][
+Member template functions not fully supported.
+]]
+[[`BOOST_NO_MS_INT64_NUMERIC_LIMITS`][Standard library][
+There is no specialization for `numeric_limits<__int64>` and
+`numeric_limits<unsigned __int64>`. `<boost/limits.hpp>` will then add these
+specializations as a standard library "fix", only if the compiler supports
+the `__int64` datatype.
+]]
+[[`BOOST_NO_NESTED_FRIENDSHIP`][Compiler][
+Compiler doesn't allow a nested class to access private members of its
+containing class. Probably Borland/CodeGear specific.
+]]
+[[`BOOST_NO_OPERATORS_IN_NAMESPACE`][Compiler][
+Compiler requires inherited operator friend functions to be defined at
+namespace scope, then using'ed to boost. Probably GCC specific. See
+[@../../../../boost/operators.hpp `<boost/operators.hpp>`] for example.
+]]
+[[`BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS`][Compiler][
+The compiler does not correctly handle partial specializations
+which depend upon default arguments in the primary template.
+]]
+[[`BOOST_NO_POINTER_TO_MEMBER_CONST`][Compiler][
+The compiler does not correctly handle pointers to const member functions,
+preventing use of these in overloaded function templates. See
+[@../../../../boost/functional.hpp `<boost/functional.hpp>`] for example.
+]]
+[[`BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS`][Compiler][
+Pointers to members don't work when used as template parameters.
+]]
+[[`BOOST_NO_PRIVATE_IN_AGGREGATE`][Compiler][
+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.
+]]
+[[`BOOST_NO_SFINAE`][Compiler][
+The compiler does not support the "Substitution Failure Is Not An Error"
+meta-programming idiom. This is the lightweight pre-C++11 version of SFINAE.
+]]
+[[`BOOST_NO_SFINAE_EXPR`][Compiler][
+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][
+The C++ standard library does not provide a standards conforming
+`std::allocator`.
+]]
+[[`BOOST_NO_STD_DISTANCE`][Standard library][
+The platform does not have a conforming version of `std::distance`.
+]]
+[[`BOOST_NO_STD_ITERATOR`][Standard library][
+The C++ implementation fails to provide the `std::iterator` class.
+Note that post C++17, this macro is re-purposed to indicate that std::iterator has been removed or deprecated.
+]]
+[[`BOOST_NO_STD_ITERATOR_TRAITS`][Standard library][
+The compiler does not provide a standard compliant implementation of
+`std::iterator_traits`. Note that the compiler may still have a
+non-standard implementation.
+]]
+[[`BOOST_NO_STD_LOCALE`][Standard library][
+The standard library lacks `std::locale`.
+]]
+[[`BOOST_NO_STD_MESSAGES`][Standard library][
+The standard library lacks a conforming `std::messages` facet.
+]]
+[[`BOOST_NO_STD_MIN_MAX`][Standard library][
+The C++ standard library does not provide the `min()` and `max()` template
+functions that should be in `<algorithm>`.
+]]
+[[`BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN`][Standard library][
+Defined if the standard library's output iterators are not assignable.
+]]
+[[`BOOST_NO_STD_TYPEINFO`][Standard library][
+The <typeinfo> header declares `type_info` in the global namespace instead of namespace std.
+]]
+[[`BOOST_NO_STD_USE_FACET`][Standard library][
+The standard library lacks a conforming `std::use_facet`.
+]]
+[[`BOOST_NO_STD_WSTREAMBUF`][Standard library][
+The standard library's implementation of `std::basic_streambuf<wchar_t>`
+is either missing, incomplete, or buggy.
+]]
+[[`BOOST_NO_STD_WSTRING`][Standard library][
+The standard library lacks `std::wstring`.
+]]
+[[`BOOST_NO_STDC_NAMESPACE`][Compiler, Platform][
+The contents of C++ standard headers for C library functions
+(the `<c...>` headers) have not been placed in namespace std. This test is
+difficult - some libraries "fake" the std C functions by adding using
+declarations to import them into namespace std, unfortunately they don't
+necessarily catch all of them...
+]]
+[[`BOOST_NO_STRINGSTREAM`][Standard library][
+The C++ implementation does not provide the `<sstream>` header.
+]]
+[[`BOOST_NO_SWPRINTF`][Platform][
+The platform does not have a conforming version of `swprintf`.
+]]
+[[`BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION`][Compiler][
+Class template partial specialization (14.5.4 \[temp.class.spec\]) not
+supported.
+]]
+[[`BOOST_NO_TEMPLATED_IOSTREAMS`][Standard library][
+The standard library does not provide templated iostream classes.
+]]
+[[`BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS`][Standard library][
+The standard library does not provide templated iterator constructors
+for its containers.
+]]
+[[`BOOST_NO_TEMPLATE_TEMPLATES`][Compiler][
+The compiler does not support template template parameters.
+]]
+[[`BOOST_NO_TYPEID`][Compiler][
+The compiler does not support the typeid operator at all.
+]]
+[[`BOOST_NO_TYPENAME_WITH_CTOR`][Compiler][
+The typename keyword cannot be used when creating a temporary of a
+Dependent type.
+]]
+[[`BOOST_NO_UNREACHABLE_RETURN_DETECTION`][Compiler][
+If a return is unreachable, then no return statement should be required,
+however some compilers insist on it, while other issue a bunch of warnings
+if it is in fact present.
+]]
+[[`BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE`][Compiler][
+The compiler will not accept a using declaration that brings a function
+from a typename used as a base class into a derived class if functions of
+the same name are present in the derived class.
+]]
+[[`BOOST_NO_USING_TEMPLATE`][Compiler][
+The compiler will not accept a using declaration that imports a template
+class or function from another namespace. Originally a Borland specific
+problem with imports to/from the global namespace, extended to MSVC6
+which has a specific issue with importing template classes (but not
+functions).
+]]
+[[`BOOST_NO_VOID_RETURNS`][Compiler][
+The compiler does not allow a void function to return the result of calling
+another void function.
+``
+void f() {}
+void g() { return f(); }
+``
+]]
+]
+
+[endsect]
+
+[#config_features]
+
+
+[section Macros that describe optional features]
+
+The following macros describe features that are not required by the C++
+standard. The macro is only defined if the feature is present.
+
+
+[table
+[[Macro ][Section ][Description ]]
+
+[[`BOOST_HAS_BETHREADS`][Platform][
+The platform supports BeOS style threads.
+]]
+[[`BOOST_HAS_CLOCK_GETTIME`][Platform][
+The platform has the POSIX API `clock_gettime`.
+]]
+[[`BOOST_HAS_DIRENT_H`][Platform][
+The platform has the POSIX header `<dirent.h>`.
+]]
+[[`BOOST_HAS_EXPM1`][Platform][
+The platform has the functions `expm1`, `expm1f` and `expm1l` in `<math.h>`
+]]
+[[`BOOST_HAS_FLOAT128`][Compiler][
+The compiler has `__float128` as a native type which is distinct
+from all the regular C++ floating point types.]]
+[[`BOOST_HAS_FTIME`][Platform][
+The platform has the Win32 API type FTIME.
+]]
+[[`BOOST_HAS_GETSYSTEMTIMEASFILETIME`][Platform][
+The platform has the Win32 API GetSystemTimeAsFileTime.
+]]
+[[`BOOST_HAS_GETTIMEOFDAY`][Platform][
+The platform has the POSIX API `gettimeofday`.
+]]
+[[`BOOST_HAS_HASH`][Standard library][
+The C++ implementation provides the (SGI) hash_set and hash_map classes.
+When defined, `BOOST_HASH_SET_HEADER` and `BOOST_HASH_LIST_HEADER` will contain
+the names of the header needed to access hash_set and hash_map;
+`BOOST_STD_EXTENSION_NAMESPACE` will provide the namespace in which the two
+class templates reside.
+]]
+[[`BOOST_HAS_INT128`][Compiler][
+The compiler has `__int128` and `unsigned __int128` as native types which are distinct
+from all the regular C++ integer types.]]
+[[`BOOST_HAS_LOG1P`][Platform][
+The platform has the functions `log1p`, `log1pf` and `log1pl` in `<math.h>`.
+]]
+[[`BOOST_HAS_MACRO_USE_FACET`][Standard library][
+The standard library lacks a conforming `std::use_facet`, but has a macro
+`_USE(loc, Type)` that does the job. This is primarily for the Dinkumware
+std lib.
+]]
+[[`BOOST_HAS_MS_INT64`][Compiler][
+The compiler supports the `__int64` data type.
+]]
+[[`BOOST_HAS_NANOSLEEP`][Platform][
+The platform has the POSIX API nanosleep.
+]]
+[[`BOOST_HAS_NL_TYPES_H`][Platform][
+The platform has an `<nl_types.h>`.
+]]
+[[`BOOST_HAS_NRVO`][Compiler][
+Indicated that the compiler supports the named return value optimization
+(NRVO). Used to select the most efficient implementation for some function.
+See [@../../../../boost/operators.hpp `<boost/operators.hpp>`] for example.
+]]
+[[`BOOST_HAS_PARTIAL_STD_ALLOCATOR`][Standard Library][
+The standard library has a partially conforming `std::allocator` class, but
+without any of the member templates.
+]]
+[[`BOOST_HAS_PRAGMA_ONCE`][Compiler][
+The compiler recognizes the `#pragma once` directive which tells that the
+containing header should be included only once while preprocessing the
+current translation unit. The pragma may improve compile times of large projects
+with some compilers.
+]]
+[[`BOOST_HAS_PRAGMA_DETECT_MISMATCH`][Compiler][
+The compiler recognizes the `#pragma detect_mismatch("name", "value")` directive which tells that the
+link stage should be terminated with error if values for provided `"name"` missmatch.
+This pragma may be a help in preventing ODR violations and ensuring that different modules
+are compiled with same flags.
+]]
+
+[[`BOOST_HAS_PTHREAD_DELAY_NP`][Platform][
+The platform has the POSIX API `pthread_delay_np`.
+]]
+[[`BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE`][Platform][
+The platform has the POSIX API `pthread_mutexattr_settype`.
+]]
+[[`BOOST_HAS_PTHREAD_YIELD`][Platform][
+The platform has the POSIX API `pthread_yield`.
+]]
+[[`BOOST_HAS_PTHREADS`][Platform][
+The platform support POSIX style threads.
+]]
+[[`BOOST_HAS_SCHED_YIELD`][Platform][
+The platform has the POSIX API `sched_yield`.
+]]
+[[`BOOST_HAS_SGI_TYPE_TRAITS`][Compiler, Standard library][
+The compiler has native support for SGI style type traits.
+]]
+[[`BOOST_HAS_STDINT_H`][Platform][
+The platform has a `<stdint.h>`
+]]
+[[`BOOST_HAS_SLIST`][Standard library][
+The C++ implementation provides the (SGI) slist class. When defined,
+`BOOST_SLIST_HEADER` will contain the name of the header needed to access
+`slist` and `BOOST_STD_EXTENSION_NAMESPACE` will provide the namespace in
+which `slist` resides.
+]]
+[[`BOOST_HAS_STLP_USE_FACET`][Standard library][
+The standard library lacks a conforming `std::use_facet`, but has a workaround
+class-version that does the job. This is primarily for the STLport std lib.
+]]
+[[`BOOST_HAS_TR1_ARRAY`][Standard library][
+The library has a TR1 conforming version of `<array>`. This macro is only guaranteed
+to be defined after including one of the headers from Boost.TR1. Further this macro
+is now deprecated in favour of BOOST_NO_CXX11_HDR_ARRAY.
+]]
+[[`BOOST_HAS_TR1_COMPLEX_OVERLOADS`][Standard library][
+The library has a version of `<complex>` that supports passing scalars to the
+complex number algorithms.
+]]
+[[`BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG`][Standard library][
+The library has a version of `<complex>` that includes the new inverse trig
+functions from TR1.
+]]
+[[`BOOST_HAS_TR1_REFERENCE_WRAPPER`][Standard library][
+The library has TR1 conforming reference wrappers in `<functional>`. This macro is only guaranteed
+to be defined after including one of the headers from Boost.TR1. Further this macro
+is now deprecated in favour of BOOST_NO_CXX11_HDR_FUNCTIONAL.
+]]
+[[`BOOST_HAS_TR1_RESULT_OF`][Standard library][
+The library has a TR1 conforming result_of template in `<functional>`. This macro is only guaranteed
+to be defined after including one of the headers from Boost.TR1. Further this macro
+is now deprecated in favour of BOOST_NO_CXX11_HDR_FUNCTIONAL.
+]]
+[[`BOOST_HAS_TR1_MEM_FN`][Standard library][
+The library has a TR1 conforming mem_fn function template in `<functional>`. This macro is only guaranteed
+to be defined after including one of the headers from Boost.TR1. Further this macro
+is now deprecated in favour of BOOST_NO_CXX11_HDR_FUNCTIONAL.
+]]
+[[`BOOST_HAS_TR1_BIND`][Standard library][
+The library has a TR1 conforming bind function template in `<functional>`. This macro is only guaranteed
+to be defined after including one of the headers from Boost.TR1. Further this macro
+is now deprecated in favour of BOOST_NO_CXX11_HDR_FUNCTIONAL.
+]]
+[[`BOOST_HAS_TR1_FUNCTION`][Standard library][
+The library has a TR1 conforming function class template in `<functional>`. This macro is only guaranteed
+to be defined after including one of the headers from Boost.TR1. Further this macro
+is now deprecated in favour of BOOST_NO_CXX11_HDR_FUNCTIONAL.
+]]
+[[`BOOST_HAS_TR1_HASH`][Standard library][
+The library has a TR1 conforming hash function template in `<functional>`. This macro is only guaranteed
+to be defined after including one of the headers from Boost.TR1. Further this macro
+is now deprecated in favour of BOOST_NO_CXX11_HDR_FUNCTIONAL.
+]]
+[[`BOOST_HAS_TR1_SHARED_PTR`][Standard library][
+The library has a TR1 conforming `shared_ptr` class template in `<memory>`. This macro is only guaranteed
+to be defined after including one of the headers from Boost.TR1. Further this macro
+is now deprecated in favour of BOOST_NO_CXX11_SMART_PTR.
+]]
+[[`BOOST_HAS_TR1_RANDOM`][Standard library][
+The library has a TR1 conforming version of `<random>`. This macro is only guaranteed
+to be defined after including one of the headers from Boost.TR1. Further this macro
+is now deprecated in favour of BOOST_NO_CXX11_HDR_RANDOM.
+]]
+[[`BOOST_HAS_TR1_REGEX`][Standard library][
+The library has a TR1 conforming version of `<regex>`. This macro is only guaranteed
+to be defined after including one of the headers from Boost.TR1. Further this macro
+is now deprecated in favour of BOOST_NO_CXX11_HDR_REGEX.
+]]
+[[`BOOST_HAS_TR1_TUPLE`][Standard library][
+The library has a TR1 conforming version of `<tuple>`. This macro is only guaranteed
+to be defined after including one of the headers from Boost.TR1. Further this macro
+is now deprecated in favour of BOOST_NO_CXX11_HDR_TUPLE.
+]]
+[[`BOOST_HAS_TR1_TYPE_TRAITS`][Standard library][
+The library has a TR1 conforming version of `<type_traits>`. This macro is only guaranteed
+to be defined after including one of the headers from Boost.TR1. Further this macro
+is now deprecated in favour of BOOST_NO_CXX11_HDR_TYPE_TRAITS.
+]]
+[[`BOOST_HAS_TR1_UTILITY`][Standard library][
+The library has the TR1 additions to `<utility>` (tuple interface to `std::pair`). This macro is only guaranteed
+to be defined after including one of the headers from Boost.TR1. Further this macro
+is now deprecated in favour of BOOST_NO_CXX11_HDR_TUPLE.
+]]
+[[`BOOST_HAS_TR1_UNORDERED_MAP`][Standard library][
+The library has a TR1 conforming version of `<unordered_map>`. This macro is only guaranteed
+to be defined after including one of the headers from Boost.TR1. Further this macro
+is now deprecated in favour of BOOST_NO_CXX11_HDR_UNORDERED_MAP.
+]]
+[[`BOOST_HAS_TR1_UNORDERED_SET`][Standard library][
+The library has a TR1 conforming version of `<unordered_set>`. This macro is only guaranteed
+to be defined after including one of the headers from Boost.TR1. Further this macro
+is now deprecated in favour of BOOST_NO_CXX11_HDR_UNORDERED_SET.
+]]
+[[`BOOST_HAS_TR1`][Standard library][
+Implies all the other `BOOST_HAS_TR1_*` macros should be set.
+]]
+[[`BOOST_HAS_THREADS`][Platform, Compiler][
+Defined if the compiler, in its current translation mode, supports multiple
+threads of execution.
+]]
+[[`BOOST_HAS_TWO_ARG_USE_FACET`][Standard library][
+The standard library lacks a conforming std::use_facet, but has a two
+argument version that does the job. This is primarily for the Rogue Wave
+std lib.
+]]
+[[`BOOST_HAS_UNISTD_H`][Platform][
+The Platform provides `<unistd.h>`.
+]]
+[[`BOOST_HAS_WINTHREADS`][Platform][
+The platform supports MS Windows style threads.
+]]
+[[`BOOST_MSVC_STD_ITERATOR`][Standard library][
+Microsoft's broken version of `std::iterator` is being used. This implies that
+`std::iterator` takes no more than two template parameters.
+]]
+[[`BOOST_MSVC6_MEMBER_TEMPLATES`][Compiler][
+Microsoft Visual C++ 6.0 has enough member template idiosyncrasies
+(being polite) that `BOOST_NO_MEMBER_TEMPLATES` is defined for this compiler.
+`BOOST_MSVC6_MEMBER_TEMPLATES` is defined to allow compiler specific workarounds.
+This macro gets defined automatically if `BOOST_NO_MEMBER_TEMPLATES` is not
+defined - in other words this is treated as a strict subset of the features
+required by the standard.
+]]
+[[`BOOST_HAS_STDINT_H`][Platform][
+There are no 1998 C++ Standard headers `<stdint.h>` or `<cstdint>`, although the
+1999 C Standard does include `<stdint.h>`. If `<stdint.h>` is present,
+`<boost/stdint.h>` can make good use of it, so a flag is supplied (signalling
+presence; thus the default is not present, conforming to the current C++
+standard).
+]]
+]
+
+[endsect]
+
+[section Macros that describe possible C++ future features]
+
+The following macros describe features that may be included in some future
+ISO C++ standard, but have not yet been approved for inclusion in the language.
+
+
+[table
+[[Macro ][Description ]]
+
+[[`BOOST_HAS_CONCEPTS`][
+The compiler supports concepts.
+]]
+]
+
+[endsect]
+
+[section Macros that describe C++11 features not supported]
+
+The following macros describe features in the 2011 ISO C++ standard, formerly known as C++0x,
+that are not yet supported by a particular compiler or library.
+
+[table
+[[Macro ][Description ]]
+
+[[`BOOST_NO_CXX11_ADDRESSOF`][The standard library header <memory> has no working std::addressof.]]
+[[`BOOST_NO_CXX11_ALIGNAS`][The compiler does not support the `alignas` keyword.]]
+[[`BOOST_NO_CXX11_ALLOCATOR`][The standard library does not provide a C++11 version of `std::allocator` in <memory>.]]
+[[`BOOST_NO_CXX11_ATOMIC_SMART_PTR`][The standard library <memory> does not support atomic smart pointer operations.]]
+[[`BOOST_NO_CXX11_AUTO_DECLARATIONS`][The compiler does not support
+type deduction for variables declared with the `auto` keyword (`auto var = ...;`).
+]]
+[[`BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS`][The compiler does not support
+type deduction for multiple variables declared with the `auto` keyword (`auto var = ..., *ptr = ...;`).
+]]
+[[`BOOST_NO_CXX11_CHAR16_T`][The compiler does not support
+type `char16_t`.
+]]
+[[`BOOST_NO_CXX11_CHAR32_T`][The compiler does not support
+type `char32_t`.
+]]
+[[`BOOST_NO_CXX11_CONSTEXPR`][The compiler does not support
+`constexpr`.
+]]
+[[`BOOST_NO_CXX11_DECLTYPE`][The compiler does not support
+`decltype`.
+]]
+[[`BOOST_NO_CXX11_DECLTYPE_N3276`][The compiler does not support the extension to
+`decltype` described in [@http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3276.pdf N3276],
+accepted in Madrid, March 2011.
+]]
+[[`BOOST_NO_CXX11_DELETED_FUNCTIONS`][The compiler does not support
+deleted (`= delete`) functions.
+]]
+[[`BOOST_NO_CXX11_DEFAULTED_FUNCTIONS`][The compiler does not support
+defaulted (`= default`) functions.
+]]
+[[`BOOST_NO_CXX11_DEFAULTED_MOVES`][The compiler does not support
+defaulted move constructor or assignment. Other defaulted functions may still be supported.
+]]
+[[`BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS`][The compiler does not support
+explicit conversion operators (`explicit operator T()`).
+]]
+[[`BOOST_NO_CXX11_EXTERN_TEMPLATE`][The compiler does not support
+explicit instantiation forward declarations for templates (`extern template ...`).
+]]
+[[`BOOST_NO_CXX11_FINAL`][The compiler does not support the C++ class-virt-specifier final.
+]]
+[[`BOOST_NO_CXX11_FIXED_LENGTH_VARIADIC_TEMPLATE_EXPANSION_PACKS`][The compiler does not support
+expanding a variadic template parameter pack into a template containing one or more
+fixed arguments]]
+[[`BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS`][The compiler does not support
+default template arguments for function templates.
+]]
+[[`BOOST_NO_CXX11_HDR_ATOMIC`][The standard library does not provide header <atomic>.]]
+[[`BOOST_NO_CXX11_HDR_ARRAY`][The standard library does not provide header <array>.]]
+[[`BOOST_NO_CXX11_HDR_CHRONO`][The standard library does not provide header <chrono>.]]
+[[`BOOST_NO_CXX11_HDR_CODECVT`][The standard library does not provide header <codecvt>.]]
+[[`BOOST_NO_CXX11_HDR_CONDITION_VARIABLE`][The standard library does not provide header <condition_variable>.]]
+[[`BOOST_NO_CXX11_HDR_FORWARD_LIST`][The standard library does not provide header <forward_list>.]]
+[[`BOOST_NO_CXX11_HDR_FUNCTIONAL`][The standard library does not provide a C++11 compatible version of <functional>.]]
+[[`BOOST_NO_CXX11_HDR_FUTURE`][The standard library does not provide header <future>.]]
+[[`BOOST_NO_CXX11_HDR_INITIALIZER_LIST`][The standard library does not provide header <initializer_list>.]]
+[[`BOOST_NO_CXX11_HDR_MUTEX`][The standard library does not provide header <mutex>.]]
+[[`BOOST_NO_CXX11_HDR_RANDOM`][The standard library does not provide header <random>.]]
+[[`BOOST_NO_CXX11_HDR_RATIO`][The standard library does not provide header <ratio>.]]
+[[`BOOST_NO_CXX11_HDR_REGEX`][The standard library does not provide header <regex>.]]
+[[`BOOST_NO_CXX11_HDR_SYSTEM_ERROR`][The standard library does not provide header <system_error>.]]
+[[`BOOST_NO_CXX11_HDR_THREAD`][The standard library does not provide header <thread>.]]
+[[`BOOST_NO_CXX11_HDR_TUPLE`][The standard library does not provide header <tuple>.]]
+[[`BOOST_NO_CXX11_HDR_TYPEINDEX`][The standard library does not provide header <typeindex>.]]
+[[`BOOST_NO_CXX11_HDR_TYPE_TRAITS`][The standard library does not provide header <type_traits>.]]
+[[`BOOST_NO_CXX11_HDR_UNORDERED_MAP`][The standard library does not provide header <unordered_map>.]]
+[[`BOOST_NO_CXX11_HDR_UNORDERED_SET`][The standard library does not provide header <unordered_set>.]]
+
+[[`BOOST_NO_CXX11_INLINE_NAMESPACES`][The compiler does not support inline namespaces.]]
+[[`BOOST_NO_CXX11_LAMBDAS`][The compiler does not support Lambdas.
+]]
+[[`BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS`][The compiler does not allow to
+pass local classes as template parameters (this macro intentionally does not
+control passing of unnamed types as template parameters, see also
+[@http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2008/n2657.htm N2657]).
+]]
+[[`BOOST_NO_CXX11_NON_PUBLIC_DEFAULTED_FUNCTIONS`][The compiler does not support
+defaulted (`= default`) functions in access control sections other than `public`. Public defaulted
+functions may still be supported, as indicated by `BOOST_NO_CXX11_DEFAULTED_FUNCTIONS`. Some
+compilers implementing an early draft of the C++11 standard (in particular, incorporating
+[@http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_defects.html#906 DR906]) are susceptible to this problem.
+]]
+[[`BOOST_NO_CXX11_NOEXCEPT`][The compiler does not support `noexcept`.
+]]
+[[`BOOST_NO_CXX11_NULLPTR`][The compiler does not support `nullptr`.
+]]
+[[`BOOST_NO_CXX11_NUMERIC_LIMITS`][The standard library `<limits>` header does
+not support the C++11 version of `numeric_limits`.
+]]
+[[`BOOST_NO_CXX11_POINTER_TRAITS`][The standard library does not provide a
+C++11 version of `std::pointer_traits` in <memory>.]]
+[[`BOOST_NO_CXX11_RANGE_BASED_FOR`][The compiler does not support
+range-based for statements.
+]]
+[[`BOOST_NO_CXX11_RAW_LITERALS`][The compiler does not support
+raw string literals.
+]]
+[[`BOOST_NO_CXX11_REF_QUALIFIERS`][The compiler does not support
+ref-qualifiers on member functions as described in
+[@http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2007/n2439.htm N2439].
+]]
+[[`BOOST_NO_CXX11_RVALUE_REFERENCES`][The compiler does not support
+r-value references.
+]]
+[[`BOOST_NO_CXX11_SCOPED_ENUMS`][The compiler does not support
+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_STATIC_ASSERT`][The compiler does not support
+`static_assert`.
+]]
+[[`BOOST_NO_CXX11_STD_ALIGN`][The standard library header <memory> has no working std::align.]]
+[[`BOOST_NO_CXX11_STD_UNORDERED`][The standard library does not support
+<unordered_map> and <unordered_set>.
+]]
+[[`BOOST_NO_CXX11_TEMPLATE_ALIASES`][The compiler does not support template aliases.
+]]
+[[`BOOST_NO_CXX11_THREAD_LOCAL`][The compiler does not support the `thread_local` storage specifier.
+]]
+[[`BOOST_NO_CXX11_TRAILING_RESULT_TYPES`][The compiler does not support the new function result type
+specification syntax (e.g. `auto foo(T) -> T;`).]]
+[[`BOOST_NO_CXX11_UNICODE_LITERALS`][The compiler does not support
+Unicode (`u8`, `u`, `U`) literals.
+]]
+[[`BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX`][The compiler does not support
+the [@http://en.wikipedia.org/wiki/C%2B%2B0x#Uniform_initialization C++11 Unified Initialization Syntax].
+]]
+[[`BOOST_NO_CXX11_USER_DEFINED_LITERALS`][The compiler does not support user defined literals.
+]]
+[[`BOOST_NO_CXX11_VARIADIC_TEMPLATES`][The compiler does not support
+variadic templates.
+]]
+[[`BOOST_NO_CXX11_VARIADIC_MACROS`][The compiler does not support
+variadic macros.
+]]
+[[`BOOST_NO_LONG_LONG`][The compiler does not support `long long`.
+]]
+]
+
+[endsect]
+
+[#config_11_for_03]
+
+[section Macros that allow use of C++11 features with C++03 compilers]
+
+The following macros allow use of C++11 features even with compilers that do not yet
+provide compliant C++11 support.
+
+[table
+[[Macro ][ Description ]]
+
+[[`BOOST_ALIGNMENT(X)`, `BOOST_NO_ALIGNMENT`][
+Some compilers don't support the `alignas` keyword but provide other means to specify alignment
+(usually, through compiler-specific attributes). The macro `BOOST_ALIGNMENT(X)` will expand to the `alignas(X)`
+keyword if the compiler supports it or to some compiler-specific attribute to achieve the specified alignment.
+If no such compiler-specific attribute is known then `BOOST_ALIGNMENT(X)` will expand to nothing and
+`BOOST_NO_ALIGNMENT` will be defined. Unlike native `alignas`, `X` must always be a compile-time integer constant.
+The macro can be used to specify alignment of types and data:
+``
+ struct BOOST_ALIGNMENT(16) my_data
+ {
+ char c[16];
+ };
+ BOOST_ALIGNMENT(8) int arr[32];
+``
+]]
+[[`BOOST_CONSTEXPR`][
+Some compilers don't support the use of `constexpr`. This macro expands to nothing on those compilers, and `constexpr`
+elsewhere. For example, when defining a constexpr function or constructor replace:
+``
+ constexpr tuple();
+``
+with:
+``
+ BOOST_CONSTEXPR tuple();
+``
+]]
+[[`BOOST_CONSTEXPR_OR_CONST`][
+Some compilers don't support the use of `constexpr`. This macro expands to `const` on those compilers, and `constexpr`
+elsewhere. For example, when defining const expr variables replace:
+``
+ static constexpr UIntType xor_mask = a;
+``
+with:
+``
+ static BOOST_CONSTEXPR_OR_CONST UIntType xor_mask = a;
+``
+]]
+[[`BOOST_STATIC_CONSTEXPR`][
+This is a shortcut for `static BOOST_CONSTEXPR_OR_CONST`. For example, when defining const expr variables replace:
+``
+ static constexpr UIntType xor_mask = a;
+``
+with:
+``
+ BOOST_STATIC_CONSTEXPR UIntType xor_mask = a;
+``
+]]
+[[`BOOST_DEFAULTED_FUNCTION(fun, body)`][
+This macro is intended to be used within a class definition in order to declare a default implementation of function `fun`.
+For the compilers that do not support C++11 defaulted functions the macro will expand into an inline function definition
+with the `body` implementation. For example:
+``
+ struct my_struct
+ {
+ BOOST_DEFAULTED_FUNCTION(my_struct(), {})
+ };
+``
+is equivalent to:
+``
+ struct my_struct
+ {
+ my_struct() = default;
+ };
+``
+or:
+``
+ struct my_struct
+ {
+ my_struct() {}
+ };
+``
+]]
+[[`BOOST_DELETED_FUNCTION(fun)`][
+This macro is intended to be used within a class definition in order to declare a deleted function `fun`.
+For the compilers that do not support C++11 deleted functions the macro will expand into a private function
+declaration with no definition. Since the macro may change the access mode, it is recommended to use this macro
+at the end of the class definition. For example:
+``
+ struct noncopyable
+ {
+ BOOST_DELETED_FUNCTION(noncopyable(noncopyable const&))
+ BOOST_DELETED_FUNCTION(noncopyable& operator= (noncopyable const&))
+ };
+``
+is equivalent to:
+``
+ struct noncopyable
+ {
+ noncopyable(noncopyable const&) = delete;
+ noncopyable& operator= (noncopyable const&) = delete;
+ };
+``
+or:
+``
+ struct noncopyable
+ {
+ private:
+ noncopyable(noncopyable const&);
+ noncopyable& operator= (noncopyable const&);
+ };
+``
+]]
+[[
+``
+ BOOST_NOEXCEPT
+ BOOST_NOEXCEPT_OR_NOTHROW
+ BOOST_NOEXCEPT_IF(Predicate)
+ BOOST_NOEXCEPT_EXPR(Expression)
+``
+][
+If `BOOST_NO_CXX11_NOEXCEPT` is defined (i.e. C++03 compliant compilers) these macros are defined as:
+[:
+``
+ #define BOOST_NOEXCEPT
+ #define BOOST_NOEXCEPT_OR_NOTHROW throw()
+ #define BOOST_NOEXCEPT_IF(Predicate)
+ #define BOOST_NOEXCEPT_EXPR(Expression) false
+``
+]
+If `BOOST_NO_CXX11_NOEXCEPT` is not defined (i.e. C++11 compliant compilers) they are defined as:
+[:
+``
+ #define BOOST_NOEXCEPT noexcept
+ #define BOOST_NOEXCEPT_OR_NOTHROW noexcept
+ #define BOOST_NOEXCEPT_IF(Predicate) noexcept((Predicate))
+ #define BOOST_NOEXCEPT_EXPR(Expression) noexcept((Expression))
+``
+]
+]]
+[[`BOOST_MSVC_ENABLE_2012_NOV_CTP`][
+For Microsoft Visual C++ 2012, enable the C++11 features supplied by the
+November 2012 Community Technology Preview. These features are not automatically
+enabled because the CTP is non-supported alpha code that is not recommended
+for production use. This macro must be defined before including any Boost headers,
+and must be defined for all translation units in the program, including Boost library builds.
+This macro will no longer have any effect once an official Microsoft
+release supports the CTP features.
+]]
+]
+
+[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_SEPARATORS`][The compiler does not support digit separators (e.g. `1'000'000`).]]
+[[`BOOST_NO_CXX14_STD_EXCHANGE`][The compiler does not support `std::exchange()`.]]
+[[`BOOST_NO_CXX14_GENERIC_LAMBDAS`][The compiler does not support generic lambda (e.g. `[](auto v){ }`).]]
+[[`BOOST_NO_CXX14_HDR_SHARED_MUTEX`][The standard library does not provide header <shared_mutex>.]]
+[[`BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES`][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]
+
+[section Macros that describe C++17 features not supported]
+
+The following macros describe features in the 2017 ISO C++ standard, formerly known as C++1z,
+that are not yet supported by a particular compiler or library.
+
+[table
+[[Macro ][Description ]]
+[[`BOOST_NO_CXX17_STD_APPLY`][The compiler does not support `std::apply()`.]]
+[[`BOOST_NO_CXX17_STD_INVOKE`][The compiler does not support `std::invoke()`.]]
+[[`BOOST_NO_CXX17_ITERATOR_TRAITS`][The compiler does not support SFINAE-friendly `std::iterator_traits`.]]
+[[`BOOST_NO_CXX17_IF_CONSTEXPR`][The compiler does not support `if constexpr`.]]
+]
+
+[endsect]
+
+[section Macros that describe features that have been removed from the standard.]
+
+The following macros describe features which were required by one version of the standard, but have been removed by later versions.
+
+[table
+[[Macro ][Description ]]
+[[`BOOST_NO_CXX98_RANDOM_SHUFFLE`][The standard library no longer supports `std::random_shuffle()`. It was deprecated in C++11 and is removed from C++14.]]
+[[`BOOST_NO_AUTO_PTR`][The standard library no longer supports `std::auto_ptr`. It was deprecated in C++11 and is removed from C++14.]]
+[[`BOOST_NO_CXX98_FUNCTION_BASE`][The standard library no longer supports `std::unary_function` and `std::binary_function`. They were deprecated in C++11 and is removed from C++14.]]
+[[`BOOST_NO_CXX98_BINDERS`][The standard library no longer supports `std::bind1st`, `std::bind2nd`, `std::ptr_fun` and `std::mem_fun`. They were deprecated in C++11 and is removed from C++14.]]
+]
+
+[endsect]
+
+[#config_helpers]
+
+[section Boost Helper Macros]
+
+The following macros are either simple helpers, or macros that provide
+workarounds for compiler/standard library defects.
+
+
+[table
+[[Macro ][Description ]]
+
+[[`BOOST_WORKAROUND`][
+This macro is used where a compiler specific workaround is required that is not otherwise
+described by one of the other Boost.Config macros. To use the macro you must first
+``
+#include <boost/config/workaround.hpp>
+``
+usage is then:
+``
+#if BOOST_WORKAROUND(MACRONAME, CONDITION)
+ // workaround code goes here...
+#else
+ // Standard conforming code goes here...
+#endif
+``
+where `MACRONAME` is a macro that usually describes the version number to be tested against, and `CONDITION`
+is a comparison operator followed by a value. For example `BOOST_WORKAROUND(BOOST_INTEL, <= 1010)` would
+evaluate to `1` for Intel C++ 10.1 and earlier.
+
+The macro can also be used with `BOOST_TESTED_AT` if all
+current compiler versions exhibit the issue, but the issue is expected to be fixed at some later point.
+
+For example
+`BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x590))` would normally evaluate to `1` for all values
+of `__BORLANDC__` /unless/ the macro `BOOST_DETECT_OUTDATED_WORKAROUNDS` is defined, in which case evaluates to
+`(__BORLANDC__ <= 0x590)`.
+
+[*Note]: the ultimate source of documentation for this macro is in [@../../../../boost/config/workaround.hpp boost/config/workaround.hpp].
+]]
+[[`BOOST_PREVENT_MACRO_SUBSTITUTION`][
+Sometimes you have a function name with the same name as a C macro, for example "min" and "max"
+member functions, in which case one can prevent the function being expanded as a macro using:
+``
+someclass.min BOOST_PREVENT_MACRO_SUBSTITUTION(arg1, arg2);
+``
+The following also works in most, but not all, contexts:
+``
+(someclass.max)(arg1, arg2);
+``
+]]
+[[`BOOST_DEDUCED_TYPENAME`][
+Some compilers don't support the use of typename for dependent types in deduced
+contexts. This macro expands to nothing on those compilers, and typename
+elsewhere. For example, replace:
+`template <class T> void f(T, typename T::type);`
+with:
+`template <class T> void f(T, BOOST_DEDUCED_TYPENAME T::type);`
+]]
+[[`BOOST_HASH_MAP_HEADER`][
+The header to include to get the SGI `hash_map` class. This macro is only
+available if `BOOST_HAS_HASH` is defined.
+]]
+[[`BOOST_HASH_SET_HEADER`][
+The header to include to get the SGI `hash_set` class. This macro is only
+available if `BOOST_HAS_HASH` is defined.
+]]
+[[`BOOST_SLIST_HEADER`][
+The header to include to get the SGI `slist` class. This macro is only
+available if `BOOST_HAS_SLIST` is defined.
+]]
+[[`BOOST_STD_EXTENSION_NAMESPACE`][
+The namespace used for std library extensions (hashtable classes etc).
+]]
+[[`BOOST_STATIC_CONSTANT(Type, assignment)`][
+On compilers which don't allow in-class initialization of static integral
+constant members, we must use enums as a workaround if we want the constants
+to be available at compile-time. This macro gives us a convenient way to
+declare such constants.
+For example instead of:
+``
+struct foo{
+ static const int value = 2;
+};
+``
+use:
+``
+struct foo{
+ BOOST_STATIC_CONSTANT(int, value = 2);
+};
+``
+]]
+[[`BOOST_UNREACHABLE_RETURN(result)`][
+Normally evaluates to nothing, but evaluates to return x; if the compiler
+requires a return, even when it can never be reached.
+]]
+[[`BOOST_FALLTHROUGH`][
+The BOOST_FALLTHROUGH macro can be used to annotate implicit fall-through
+between switch labels:
+``
+ switch (x) {
+ case 40:
+ case 41:
+ if (truth_is_out_there) {
+ ++x;
+ BOOST_FALLTHROUGH; // Use instead of/along with annotations in
+ // comments.
+ } else {
+ return x;
+ }
+ case 42:
+ ...
+``
+As shown in the example above, the BOOST_FALLTHROUGH macro should be
+followed by a semicolon. It is designed to mimic control-flow statements
+like 'break;', so it can be placed in most places where 'break;' can, but
+only if there are no statements on the execution path between it and the
+next switch label.
+
+When compiled with Clang >3.2 in C++11 mode, the BOOST_FALLTHROUGH macro is
+expanded to `[[clang::fallthrough]]` attribute, which is analysed when
+performing switch labels fall-through diagnostic ('-Wimplicit-fallthrough').
+See clang [@http://clang.llvm.org/docs/LanguageExtensions.html#clang__fallthrough
+documentation on language extensions for details.]
+
+When used with unsupported compilers, the BOOST_FALLTHROUGH macro has no
+effect on diagnostics.
+
+In either case this macro has no effect on runtime behavior and performance
+of code.
+]]
+[[`BOOST_EXPLICIT_TEMPLATE_TYPE(t)`
+
+ `BOOST_EXPLICIT_TEMPLATE_NON_TYPE(t,v)`
+
+ `BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE(t)`
+
+ `BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE(t,v)`][
+Some compilers silently "fold" different function template instantiations if
+some of the template parameters don't appear in the function parameter list.
+For instance:
+``
+ #include <iostream>
+ #include <ostream>
+ #include <typeinfo>
+
+ template <int n>
+ void f() { std::cout << n << ' '; }
+
+ template <typename T>
+ void g() { std::cout << typeid(T).name() << ' '; }
+
+ int main() {
+ f<1>();
+ f<2>();
+
+ g<int>();
+ g<double>();
+ }
+``
+incorrectly outputs [^2 2 double double] on VC++ 6. These macros, to be used
+in the function parameter list, fix the problem without effects on the calling
+syntax. For instance, in the case above write:
+``
+ template <int n>
+ void f(BOOST_EXPLICIT_TEMPLATE_NON_TYPE(int, n)) { ... }
+
+ template <typename T>
+ void g(BOOST_EXPLICIT_TEMPLATE_TYPE(T)) { ... }
+``
+Beware that they can declare (for affected compilers) a dummy defaulted
+parameter, so they
+
+[*a)] should be always invoked [*at the end] of the parameter list
+
+[*b)] can't be used if your function template is multiply declared.
+
+Furthermore, in order to add any needed comma separator, an `APPEND_*` version
+must be used when the macro invocation appears after a normal parameter
+declaration or after the invocation of another macro of this same group.
+]]
+[[`BOOST_USE_FACET(Type, loc)`][
+When the standard library does not have a conforming `std::use_facet` there
+are various workarounds available, but they differ from library to library.
+This macro provides a consistent way to access a locale's facets. For example,
+replace:
+`std::use_facet<Type>(loc);`
+with:
+`BOOST_USE_FACET(Type, loc);`
+Note do not add a `std::` prefix to the front of `BOOST_USE_FACET`.
+]]
+[[`BOOST_HAS_FACET(Type, loc)`][
+When the standard library does not have a comforming `std::has_facet` there
+are various workarounds available, but they differ from library to library.
+This macro provides a consistent way to check a locale's facets. For example,
+replace:
+`std::has_facet<Type>(loc);`
+with:
+`BOOST_HAS_FACET(Type, loc);`
+Note do not add a `std::` prefix to the front of `BOOST_HAS_FACET`.
+]]
+[[`BOOST_NESTED_TEMPLATE`][
+Member templates are supported by some compilers even though they can't use
+the `A::template member<U>` syntax, as a workaround replace:
+`typedef typename A::template rebind<U> binder;`
+with:
+`typedef typename A::BOOST_NESTED_TEMPLATE rebind<U> binder;`
+]]
+[[`BOOST_STRINGIZE(X)`][
+Converts the parameter `X` to a string after macro replacement on `X` has
+been performed.
+]]
+[[`BOOST_JOIN(X,Y)`][
+This piece of macro magic joins the two arguments together, even when one of
+the arguments is itself a macro (see 16.3.1 in C++ standard). This is normally
+used to create a mangled name in combination with a predefined macro such a
+\_\_LINE__.
+]]
+[[`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.
+Overuse of this macro can lead to significant bloat, while good use can increase
+performance in certain cases, such as computation-intensive code built through
+generative programming techniques.
+
+Usage example:
+``
+ template<class T>
+ BOOST_FORCEINLINE T& f(T& t)
+ {
+ return t;
+ }
+``
+
+Note that use of this macro can lead to cryptic error messages with some compilers.
+Consider defining it to `inline` before including the Boost.Config header in order to be
+able to debug errors more easily.
+]]
+[[`BOOST_NOINLINE`][
+This macro can be used in place of the `inline` keyword to instruct the compiler
+that the function should never be inlined. One should typically use this macro
+to mark functions that are unlikely to be called, such as error handling routines.
+
+Usage example:
+``
+ BOOST_NOINLINE void handle_error(const char* descr)
+ {
+ // ...
+ }
+``
+]]
+[[`BOOST_NORETURN`][
+This macro can be used before the function declaration or definition to instruct the compiler
+that the function does not return normally (i.e. with a `return` statement or by leaving
+the function scope, if the function return type is `void`). The macro can be used to mark
+functions that always throw exceptions or terminate the application. Compilers that support
+this markup may use this information to specifically organize the code surrounding calls to
+this function and suppress warnings about missing `return` statements in the functions
+enclosing such calls.
+
+Usage example:
+``
+ BOOST_NORETURN void on_error_occurred(const char* descr)
+ {
+ throw std::runtime_error(descr);
+ }
+``
+
+If the compiler does not support this markup, `BOOST_NORETURN` is defined empty and an
+additional macro `BOOST_NO_NORETURN` is defined.
+]]
+[[`BOOST_LIKELY(X)`
+
+ `BOOST_UNLIKELY(X)`][
+These macros communicate to the compiler that the conditional expression `X` is likely
+or unlikely to yield a positive result. The expression should result in a boolean value.
+The result of the macro is an integer or boolean value equivalent to the result of `X`.
+
+The macros are intended to be used in branching statements. The additional hint they provide
+can be used by the compiler to arrange the compiled code of the branches more effectively.
+
+Usage example:
+``
+ if (BOOST_UNLIKELY(ptr == 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.]]
+[[`BOOST_MAY_ALIAS`, `BOOST_NO_MAY_ALIAS`][
+`BOOST_MAY_ALIAS` expands to a type attribute that can be used to mark types that may
+alias other types. Pointers or references to such marked types can be used to access objects
+of other types. If the compiler supports this feature `BOOST_NO_MAY_ALIAS` is not defined.
+Otherwise `BOOST_MAY_ALIAS` expands to nothing and `BOOST_NO_MAY_ALIAS` is defined.
+
+Usage example:
+``
+ struct BOOST_MAY_ALIAS aliasing_struct;
+ typedef unsigned int BOOST_MAY_ALIAS aliasing_uint;
+``
+]]
+[[`BOOST_PRAGMA_MESSAGE(M)`][Defined in header `<boost/config/pragma_message.hpp>`,
+this macro expands to the equivalent of `#pragma message(M)`. `M` must be a string
+literal.
+
+Example: `BOOST_PRAGMA_MESSAGE("This header is deprecated.")`
+
+The messages issued by `BOOST_PRAGMA_MESSAGE` can be suppressed by defining the macro
+`BOOST_DISABLE_PRAGMA_MESSAGE`.]]
+
+[[`BOOST_HEADER_DEPRECATED(A)`][Defined in header `<boost/config/header_deprecated.hpp>`,
+this macro issues the message "This header is deprecated. Use `A` instead." via
+`BOOST_PRAGMA_MESSAGE`. `A` must be a string literal.
+
+Example: `BOOST_HEADER_DEPRECATED("<boost/config/workaround.hpp>")`
+
+The messages issued by `BOOST_HEADER_DEPRECATED` can be suppressed by defining the macro
+`BOOST_ALLOW_DEPRECATED_HEADERS`.]]
+]
+
+[endsect]
+
+[#config_info_macros]
+
+[section Boost Informational Macros]
+
+The following macros describe boost features; these are, generally speaking
+the only boost macros that should be tested in user code.
+
+[table
+
+[[Macro ][Header ][Description ]]
+
+[[`BOOST_VERSION`][`<boost/version.hpp>`][
+Describes the boost version number in XYYYZZ format such that:
+`(BOOST_VERSION % 100)` is the sub-minor version, `((BOOST_VERSION / 100) % 1000)`
+is the minor version, and `(BOOST_VERSION / 100000)` is the major version.
+]]
+[[`BOOST_NO_INT64_T`][`<boost/cstdint.hpp>` `<boost/stdint.h>`][
+Defined if there are no 64-bit integral types: `int64_t`, `uint64_t` etc.
+]]
+[[`BOOST_NO_INTEGRAL_INT64_T`][`<boost/cstdint.hpp>` `<boost/stdint.h>`][
+Defined if `int64_t` as defined by `<boost/cstdint.hpp>` is not usable in
+integral constant expressions.
+]]
+[[`BOOST_MSVC`][`<boost/config.hpp>`][
+Defined if the compiler is really Microsoft Visual C++, as opposed to one
+of the many other compilers that also define `_MSC_VER`. Has the same value as
+_MSC_VER.
+]]
+[[`BOOST_MSVC_FULL_VER`][`<boost/config.hpp>`][
+Defined to a normalised 9 digit version of _MSC_FULL_VER (which sometimes only has 8 digits),
+the macro has the form VVMMPPPPP where VV is the major version number, MM is the minor version number, and
+PPPPP is the compiler build number.
+]]
+[[`BOOST_GCC`][`<boost/config.hpp>`][
+Defined if the compiler is really GCC, as opposed to one
+of the many other compilers that also define `__GNUC__`. Has the value:
+`__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__`.
+]]
+[[`BOOST_INTEL`][`<boost/config.hpp>`][
+Defined if the compiler is an Intel compiler, takes the same value as the
+compiler version macro.
+]]
+[[`BOOST_CLANG`][`<boost/config.hpp>`][
+Defined to 1 if the compiler is the Clang compiler.
+]]
+[[`BOOST_WINDOWS`][`<boost/config.hpp>`][
+Defined if the Windows platform API is available.
+]]
+[[`BOOST_DINKUMWARE_STDLIB`][`<boost/config.hpp>`][
+Defined if the dinkumware standard library is in use, takes the same value
+as the Dinkumware library version macro `_CPPLIB_VER` if defined, otherwise 1.
+]]
+[[`BOOST_NO_WREGEX`][`<boost/regex.hpp>`][
+Defined if the regex library does not support wide character regular
+expressions.
+]]
+[[`BOOST_COMPILER`][`<boost/config.hpp>`][
+Defined as a string describing the name and version number of the compiler
+in use. Mainly for debugging the configuration.
+]]
+[[`BOOST_STDLIB`][`<boost/config.hpp>`][
+Defined as a string describing the name and version number of the standard
+library in use. Mainly for debugging the configuration.
+]]
+[[`BOOST_PLATFORM`][`<boost/config.hpp>`][
+Defined as a string describing the name of the platform. Mainly for debugging
+the configuration.
+]]
+]
+
+[endsect]
+
+[#deprecated_macros]
+
+[section Boost Deprecated Macros]
+
+The following have been deprecated; please use the replacements instead.
+They will be removed in a future version of boost.
+
+[table
+
+[[Deprecated Macro][Replacement][When deprecated][When removed]]
+
+[[`BOOST_NO_0X_HDR_ARRAY`][`BOOST_NO_CXX11_HDR_ARRAY`][Boost 1.50][]]
+[[`BOOST_NO_0X_HDR_CHRONO`][`BOOST_NO_CXX11_HDR_CHRONO`][Boost 1.50][]]
+[[`BOOST_NO_0X_HDR_CODECVT`][`BOOST_NO_CXX11_HDR_CODECVT`][Boost 1.50][]]
+[[`BOOST_NO_0X_HDR_CONDITION_VARIABLE`][`BOOST_NO_CXX11_HDR_CONDITION_VARIABLE`][Boost 1.50][]]
+[[`BOOST_NO_0X_HDR_FORWARD_LIST`][`BOOST_NO_CXX11_HDR_FORWARD_LIST`][Boost 1.50][]]
+[[`BOOST_NO_0X_HDR_FUTURE`][`BOOST_NO_CXX11_HDR_FUTURE`][Boost 1.50][]]
+[[`BOOST_NO_0X_HDR_INITIALIZER_LIST`][`BOOST_NO_CXX11_HDR_INITIALIZER_LIST`][Boost 1.50][]]
+[[`BOOST_NO_INITIALIZER_LISTS`][`BOOST_NO_CXX11_HDR_INITIALIZER_LIST`][Boost 1.50][]]
+[[`BOOST_NO_0X_HDR_MUTEX`][`BOOST_NO_CXX11_HDR_MUTEX`][Boost 1.50][]]
+[[`BOOST_NO_0X_HDR_RANDOM`][`BOOST_NO_CXX11_HDR_RANDOM`][Boost 1.50][]]
+[[`BOOST_NO_0X_HDR_RATIO`][`BOOST_NO_CXX11_HDR_RATIO`][Boost 1.50][]]
+[[`BOOST_NO_0X_HDR_REGEX`][`BOOST_NO_CXX11_HDR_REGEX`][Boost 1.50][]]
+[[`BOOST_NO_0X_HDR_SYSTEM_ERROR`][`BOOST_NO_CXX11_HDR_SYSTEM_ERROR`][Boost 1.50][]]
+[[`BOOST_NO_0X_HDR_THREAD`][`BOOST_NO_CXX11_HDR_THREAD`][Boost 1.50][]]
+[[`BOOST_NO_0X_HDR_TUPLE`][`BOOST_NO_CXX11_HDR_TUPLE`][Boost 1.50][]]
+[[`BOOST_NO_0X_HDR_TYPE_TRAITS`][`BOOST_NO_CXX11_HDR_TYPE_TRAITS`][Boost 1.50][]]
+[[`BOOST_NO_0X_HDR_TYPEINDEX`][`BOOST_NO_CXX11_HDR_TYPEINDEX`][Boost 1.50][]]
+[[`BOOST_NO_0X_HDR_UNORDERED_SET`][`BOOST_NO_CXX11_HDR_UNORDERED_SET`][Boost 1.50][]]
+[[`BOOST_NO_0X_HDR_UNORDERED_MAP`][`BOOST_NO_CXX11_HDR_UNORDERED_MAP`][Boost 1.50][]]
+[[`BOOST_NO_STD_UNORDERED`][`BOOST_NO_CXX11_HDR_UNORDERED_SET`][Boost 1.50][]]
+[[][][][]]
+[[`BOOST_NO_AUTO_DECLARATIONS`][`BOOST_NO_CXX11_AUTO_DECLARATIONS`][Boost 1.51][]]
+[[`BOOST_NO_AUTO_MULTIDECLARATIONS`][`BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS`][Boost 1.51][]]
+[[`BOOST_NO_CHAR16_T`][`BOOST_NO_CXX11_CHAR16_T`][Boost 1.51][]]
+[[`BOOST_NO_CHAR32_T`][`BOOST_NO_CXX11_CHAR32_T`][Boost 1.51][]]
+[[`BOOST_NO_TEMPLATE_ALIASES`][`BOOST_NO_CXX11_TEMPLATE_ALIASES`][Boost 1.51][]]
+[[`BOOST_NO_CONSTEXPR`][`BOOST_NO_CXX11_CONSTEXPR`][Boost 1.51][]]
+[[`BOOST_NO_DECLTYPE`][`BOOST_NO_CXX11_DECLTYPE`][Boost 1.51][]]
+[[`BOOST_NO_DECLTYPE_N3276`][`BOOST_NO_CXX11_DECLTYPE_N3276`][Boost 1.51][]]
+[[`BOOST_NO_DEFAULTED_FUNCTIONS`][`BOOST_NO_CXX11_DEFAULTED_FUNCTIONS`][Boost 1.51][]]
+[[`BOOST_NO_DELETED_FUNCTIONS`][`BOOST_NO_CXX11_DELETED_FUNCTIONS`][Boost 1.51][]]
+[[`BOOST_NO_EXPLICIT_CONVERSION_OPERATORS`][`BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS`][Boost 1.51][]]
+[[`BOOST_NO_EXTERN_TEMPLATE`][`BOOST_NO_CXX11_EXTERN_TEMPLATE`][Boost 1.51][]]
+[[`BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS`][`BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS`][Boost 1.51][]]
+[[`BOOST_NO_LAMBDAS`][`BOOST_NO_CXX11_LAMBDAS`][Boost 1.51][]]
+[[`BOOST_NO_LOCAL_CLASS_TEMPLATE_PARAMETERS`][`BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS`][Boost 1.51][]]
+[[`BOOST_NO_NOEXCEPT`][`BOOST_NO_CXX11_NOEXCEPT`][Boost 1.51][]]
+[[`BOOST_NO_NULLPTR`][`BOOST_NO_CXX11_NULLPTR`][Boost 1.51][]]
+[[`BOOST_NO_RAW_LITERALS`][`BOOST_NO_CXX11_RAW_LITERALS`][Boost 1.51][]]
+[[`BOOST_NO_RVALUE_REFERENCES`][`BOOST_NO_CXX11_RVALUE_REFERENCES`][Boost 1.51][]]
+[[`BOOST_NO_SCOPED_ENUMS`][`BOOST_NO_CXX11_SCOPED_ENUMS`][Boost 1.51][]]
+[[`BOOST_NO_STATIC_ASSERT`][`BOOST_NO_CXX11_STATIC_ASSERT`][Boost 1.51][]]
+[[`BOOST_NO_STD_UNORDERED`][`BOOST_NO_CXX11_STD_UNORDERED`][Boost 1.51][]]
+[[`BOOST_NO_UNICODE_LITERALS`][`BOOST_NO_CXX11_UNICODE_LITERALS`][Boost 1.51][]]
+[[`BOOST_NO_UNIFIED_INITIALIZATION_SYNTAX`][`BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX`][Boost 1.51][]]
+[[`BOOST_NO_VARIADIC_TEMPLATES`][`BOOST_NO_CXX11_VARIADIC_TEMPLATES`][Boost 1.51][]]
+[[`BOOST_NO_VARIADIC_MACROS`][`BOOST_NO_CXX11_VARIADIC_MACROS`][Boost 1.51][]]
+[[`BOOST_NO_NUMERIC_LIMITS_LOWEST`][`BOOST_NO_CXX11_NUMERIC_LIMITS`][Boost 1.51][]]
+[[][][][]]
+[[`BOOST_HAS_STATIC_ASSERT`][`BOOST_NO_CXX11_STATIC_ASSERT` (negated)][Boost 1.53][]]
+[[`BOOST_HAS_VARIADIC_TMPL`][`BOOST_NO_CXX11_VARIADIC_TEMPLATES` (negated)][Boost 1.53][]]
+[[`BOOST_HAS_RVALUE_REFS`][`BOOST_NO_CXX11_RVALUE_REFERENCES` (negated)][Boost 1.53][]]
+[[`BOOST_HAS_CHAR16_T`][`BOOST_NO_CXX11_CHAR16_T` (negated)][Boost 1.53][]]
+[[`BOOST_HAS_CHAR32_T`][`BOOST_NO_CXX11_CHAR32_T` (negated)][Boost 1.53][]]
+]
+
+[endsect]
+
+[section Macros for libraries with separate source code]
+
+The following macros and helper headers are of use to authors whose libraries
+include separate source code, and are intended to address several issues:
+
+* Controlling shared library symbol visibility
+* Fixing the ABI of the compiled library
+* Selecting which compiled library to link against based upon the compilers settings
+
+See [@http://www.boost.org/development/separate_compilation.html Guidelines for Authors of Boost Libraries Containing Separate Source]
+
+[section Macros controlling shared library symbol visibility]
+
+Some compilers support C++ extensions that control which symbols
+will be exported from shared libraries such as dynamic shared objects (DSO's) on Unix-like
+systems or dynamic-link libraries (DLL's) on Windows.
+
+The Microsoft VC++ compiler has long supplied
+`__declspec(dllexport)` and `__declspec(dllimport)` extensions for this purpose,
+as do virtually all other compilers targeting the Windows platform.
+
+Modern versions of the GNU GCC compiler provide the `__attribute__((visibility("default")))`
+extension to indicate that a symbol should be exported. All other symbols may be hidden by using the
+`-fvisibility-hidden` or `-fvisibility-ms-compat` compiler switches.
+
+Boost supplies several macros to make it easier to manage symbol visibility in a way that
+is portable between compilers and operating systems.
+
+[table
+[[Macro ][Description ]]
+[[`BOOST_SYMBOL_EXPORT`][
+Defines the syntax of a C++ language extension that indicates a symbol is to be exported from a shared library.
+If the compiler has no such extension, the macro is defined with no replacement text.
+]]
+[[`BOOST_SYMBOL_IMPORT`][
+Defines the syntax of a C++ language extension that indicates a symbol is to be imported from a shared library.
+If the compiler has no such extension, the macro is defined with no replacement text.
+]]
+[[`BOOST_SYMBOL_VISIBLE`][
+Defines the syntax of a C++ language extension that indicates a symbol is to be globally visible.
+If the compiler has no such extension, the macro is defined with no replacement text.
+Needed for classes that are not otherwise exported, but are used by RTTI. Examples include
+class for objects that will be thrown as exceptions or used in dynamic_casts,
+across shared library boundaries. For example, a header-only exception class might look like this:
+``
+ class BOOST_SYMBOL_VISIBLE my_exception : public std::runtime_error { ... };
+``
+Without BOOST_SYMBOL_VISIBLE, it would be impossible to catch my_exception thrown from a shared library
+compiled by GCC with the -fvisibility=hidden option.
+]]
+[[`BOOST_HAS_DECLSPEC`][
+The compiler has C++ extensions `__declspec(dllexport)` and `__declspec(dllimport)` to control
+export/import of symbols from shared libraries.
+['Deprecated. This macro is no longer necessary since BOOST_SYMBOL_EXPORT and BOOST_SYMBOL_IMPORT
+are now supplied. It is provided to support legacy code.]
+]]
+]
+
+Typical usage:
+
+[*boost/foo/config.hpp]
+
+ ...
+ #if defined(BOOST_ALL_DYN_LINK) || defined(BOOST_FOO_DYN_LINK)
+ # if defined(BOOST_FOO_SOURCE)
+ # define BOOST_FOO_DECL BOOST_SYMBOL_EXPORT
+ # else
+ # define BOOST_FOO_DECL BOOST_SYMBOL_IMPORT
+ # endif
+ #else
+ # define BOOST_FOO_DECL
+ #endif
+ ...
+
+[*boost/foo/foo.hpp]
+
+ #include <boost/foo/config.hpp>
+ ...
+ class BOOST_FOO_DECL bar { ... };
+ ...
+ void BOOST_FOO_DECL f();
+ ...
+
+[*boost/libs/foo/src/foo.cpp]
+
+ #define BOOST_FOO_SOURCE
+ #include <boost/foo/foo.hpp>
+ ...
+ void BOOST_FOO_DECL f()
+ {
+ ...
+ }
+ ...
+
+[endsect]
+
+[section ABI Fixing]
+
+When linking against a pre-compiled library it vital that the ABI used by the
+compiler when building the library ['matches exactly] the ABI used by the code
+using the library. In this case ABI means things like the struct packing
+arrangement used, the name mangling scheme used, or the size of some types
+(enum types for example). This is separate from things like threading support,
+or runtime library variations, which have to be dealt with by build variants.
+To put this in perspective there is one compiler (Borland's) that has so many
+compiler options that make subtle changes to the ABI, that at least in theory
+there 3200 combinations, and that's without considering runtime library
+variations. Fortunately these variations can be managed by `#pragma`'s that
+tell the compiler what ABI to use for the types declared in your library.
+In order to avoid sprinkling `#pragma`'s all over the boost headers, there are
+some prefix and suffix headers that do the job. Typical usage is:
+
+[*my_library.hpp]
+
+ #ifndef MY_INCLUDE_GUARD
+ #define MY_INCLUDE_GUARD
+
+ // all includes go here:
+ ``[^[*#include <boost/config.hpp>]]``
+ #include <whatever>
+
+ ``[^[*#include <boost/config/abi_prefix.hpp>]]`` // must be the last #include
+
+ namespace boost {
+
+ // your code goes here
+
+ }
+
+ ``[^[*#include <boost/config/abi_suffix.hpp>]]`` // pops abi_prefix.hpp pragmas
+
+ #endif // include guard
+
+[*my_library.cpp]
+
+ ...
+ // nothing special need be done in the implementation file
+ ...
+
+The user can disable this mechanism by defining `BOOST_DISABLE_ABI_HEADERS`, or
+they can define `BOOST_ABI_PREFIX` and/or `BOOST_ABI_SUFFIX` to point to their
+own prefix/suffix headers if they so wish.
+
+[endsect]
+
+[section Automatic library selection]
+
+It is essential that users link to a build of a library which was built against
+the same runtime library that their application will be built against -if this
+does not happen then the library will not be binary compatible with their own
+code- and there is a high likelihood that their application will experience
+runtime crashes. These kinds of problems can be extremely time consuming and
+difficult to debug, and often lead to frustrated users and authors alike (simply
+selecting the right library to link against is not as easy as it seems when
+their are 6-8 of them to chose from, and some users seem to be blissfully
+unaware that there even are different runtimes available to them).
+
+To solve this issue, some compilers allow source code to contain `#pragma`'s that
+instruct the linker which library to link against, all the user need do is
+include the headers they need, place the compiled libraries in their library
+search path, and the compiler and linker do the rest. Boost.config supports
+this via the header `<boost/config/auto_link.hpp>`, before including this header
+one or more of the following macros need to be defined:
+
+[variablelist
+[[`BOOST_LIB_NAME`][
+Required: An identifier containing the basename of the library, for
+example 'boost_regex'.
+]]
+[[`BOOST_DYN_LINK`][
+Optional: when set link to dll rather than static library.
+]]
+[[`BOOST_LIB_DIAGNOSTIC`][
+Optional: when set the header will print out the name of the library selected
+(useful for debugging).
+]]
+]
+
+If the compiler supports this mechanism, then it will be told to link against
+the appropriately named library, the actual algorithm used to mangle the name
+of the library is documented inside `<boost/config/auto_link.hpp>` and has to
+match that used to create the libraries via bjam 's install rules.
+
+
+[*my_library.hpp]
+
+ ...
+ //
+ // Don't include auto-linking code if the user has disabled it by
+ // defining BOOST_ALL_NO_LIB, or BOOST_MY_LIBRARY_NO_LIB, or if this
+ // is one of our own source files (signified by BOOST_MY_LIBRARY_SOURCE):
+ //
+ #if !defined(BOOST_ALL_NO_LIB) && !defined(BOOST_MY_LIBRARY_NO_LIB) && !defined(BOOST_MY_LIBRARY_SOURCE)
+ # define BOOST_LIB_NAME boost_my_library
+ # ifdef BOOST_MY_LIBRARY_DYN_LINK
+ # define BOOST_DYN_LINK
+ # endif
+ # include <boost/config/auto_link.hpp>
+ #endif
+ ...
+
+[*my_library.cpp]
+
+ // define BOOST_MY_LIBRARY_SOURCE so that the header knows that the
+ // library is being built (possibly exporting rather than importing code)
+ //
+ #define BOOST_MY_LIBRARY_SOURCE
+
+ #include <boost/my_library/my_library.hpp>
+ ...
+
+[endsect]
+
+[endsect]
+
+[endsect]
+
+
+
diff --git a/doc/rationale.qbk b/doc/rationale.qbk
new file mode 100644
index 0000000..c5c78fe
--- /dev/null
+++ b/doc/rationale.qbk
@@ -0,0 +1,80 @@
+[/
+ Boost.Config
+
+ Copyright (c) 2001 Beman Dawes
+ Copyright (c) 2001 Vesa Karvonen
+ Copyright (c) 2001 John Maddock
+
+ Distributed under the Boost Software License, Version 1.0.
+ (See accompanying file LICENSE_1_0.txt or copy at
+ http://www.boost.org/LICENSE_1_0.txt)
+]
+
+[section Rationale]
+
+The problem with many traditional "textbook" implementations of configuration
+headers (where all the configuration options are in a single "monolithic"
+header) is that they violate certain fundamental software engineering
+principles which would have the effect of making boost more fragile, more
+difficult to maintain and more difficult to use safely. You can find a
+description of the principles from the __PRINCIPLES_AND_PATTERNS_ARTICLE__.
+
+[section The problem]
+
+Consider a situation in which you are concurrently developing on multiple
+platforms. Then consider adding a new platform or changing the platform
+definitions of an existing platform. What happens? Everything, and this does
+literally mean everything, recompiles. Isn't it quite absurd that adding a
+new platform, which has absolutely nothing to do with previously existing
+platforms, means that all code on all existing platforms needs to be
+recompiled?
+
+Effectively, there is an imposed physical dependency between platforms that
+have nothing to do with each other. Essentially, the traditional solution
+employed by configuration headers does not conform to the Open-Closed
+Principle:
+
+[: [*"A module should be open for extension but closed for modification."]]
+
+Extending a traditional configuration header implies modifying existing code.
+
+Furthermore, consider the complexity and fragility of the platform detection
+code. What if a simple change breaks the detection on some minor platform?
+What if someone accidentally or on purpose (as a workaround for some other
+problem) defines some platform dependent macros that are used by the
+detection code? A traditional configuration header is one of the most
+volatile headers of the entire library, and more stable elements of
+Boost would depend on it. This violates the Stable Dependencies Principle:
+
+[: [*"Depend in the direction of stability."]]
+
+After even a minor change to a traditional configuration header on one minor
+platform, almost everything on every platform should be tested if we follow
+sound software engineering practice.
+
+Another important issue is that it is not always possible to submit changes
+to `<boost/config.hpp>`. Some boost users are currently working on platforms
+using tools and libraries that are under strict Non-Disclosure Agreements.
+In this situation it is impossible to submit changes to a traditional
+monolithic configuration header, instead some method by which the user
+can insert their own configuration code must be provided.
+
+[endsect]
+
+[section The solution]
+
+The approach taken by boost's configuration headers is to separate
+configuration into three orthogonal parts: the compiler, the standard
+library and the platform. Each compiler/standard library/platform gets
+its own mini-configuration header, so that changes to one compiler's
+configuration (for example) does not affect other compilers. In addition
+there are measures that can be taken both to omit the compiler/standard
+library/platform detection code (so that adding support to a new platform
+does not break dependencies), or to freeze the configuration completely;
+providing almost complete protection against dependency changes.
+
+[endsect]
+
+[endsect]
+
+
diff --git a/include/boost/config.hpp b/include/boost/config.hpp
new file mode 100644
index 0000000..f00a980
--- /dev/null
+++ b/include/boost/config.hpp
@@ -0,0 +1,67 @@
+// Boost config.hpp configuration header file ------------------------------//
+
+// (C) Copyright John Maddock 2002.
+// 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 most recent version.
+
+// Boost config.hpp policy and rationale documentation has been moved to
+// http://www.boost.org/libs/config
+//
+// CAUTION: This file is intended to be completely stable -
+// DO NOT MODIFY THIS FILE!
+//
+
+#ifndef BOOST_CONFIG_HPP
+#define BOOST_CONFIG_HPP
+
+// if we don't have a user config, then use the default location:
+#if !defined(BOOST_USER_CONFIG) && !defined(BOOST_NO_USER_CONFIG)
+# define BOOST_USER_CONFIG <boost/config/user.hpp>
+#if 0
+// For dependency trackers:
+# include <boost/config/user.hpp>
+#endif
+#endif
+// include it first:
+#ifdef BOOST_USER_CONFIG
+# include BOOST_USER_CONFIG
+#endif
+
+// if we don't have a compiler config set, try and find one:
+#if !defined(BOOST_COMPILER_CONFIG) && !defined(BOOST_NO_COMPILER_CONFIG) && !defined(BOOST_NO_CONFIG)
+# include <boost/config/detail/select_compiler_config.hpp>
+#endif
+// if we have a compiler config, include it now:
+#ifdef BOOST_COMPILER_CONFIG
+# include BOOST_COMPILER_CONFIG
+#endif
+
+// if we don't have a std library config set, try and find one:
+#if !defined(BOOST_STDLIB_CONFIG) && !defined(BOOST_NO_STDLIB_CONFIG) && !defined(BOOST_NO_CONFIG) && defined(__cplusplus)
+# include <boost/config/detail/select_stdlib_config.hpp>
+#endif
+// if we have a std library config, include it now:
+#ifdef BOOST_STDLIB_CONFIG
+# include BOOST_STDLIB_CONFIG
+#endif
+
+// if we don't have a platform config set, try and find one:
+#if !defined(BOOST_PLATFORM_CONFIG) && !defined(BOOST_NO_PLATFORM_CONFIG) && !defined(BOOST_NO_CONFIG)
+# include <boost/config/detail/select_platform_config.hpp>
+#endif
+// if we have a platform config, include it now:
+#ifdef BOOST_PLATFORM_CONFIG
+# include BOOST_PLATFORM_CONFIG
+#endif
+
+// get config suffix code:
+#include <boost/config/detail/suffix.hpp>
+
+#ifdef BOOST_HAS_PRAGMA_ONCE
+#pragma once
+#endif
+
+#endif // BOOST_CONFIG_HPP
diff --git a/include/boost/config/abi/borland_prefix.hpp b/include/boost/config/abi/borland_prefix.hpp
new file mode 100644
index 0000000..3a0e5ae
--- /dev/null
+++ b/include/boost/config/abi/borland_prefix.hpp
@@ -0,0 +1,27 @@
+// (C) Copyright John Maddock 2003.
+// 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)
+
+// for C++ Builder the following options effect the ABI:
+//
+// -b (on or off - effect emum sizes)
+// -Vx (on or off - empty members)
+// -Ve (on or off - empty base classes)
+// -aX (alignment - 5 options).
+// -pX (Calling convention - 4 options)
+// -VmX (member pointer size and layout - 5 options)
+// -VC (on or off, changes name mangling)
+// -Vl (on or off, changes struct layout).
+
+// In addition the following warnings are sufficiently annoying (and
+// unfixable) to have them turned off by default:
+//
+// 8027 - functions containing [for|while] loops are not expanded inline
+// 8026 - functions taking class by value arguments are not expanded inline
+
+#pragma nopushoptwarn
+# pragma option push -a8 -Vx- -Ve- -b- -pc -Vmv -VC- -Vl- -w-8027 -w-8026
+
+
+
diff --git a/include/boost/config/abi/borland_suffix.hpp b/include/boost/config/abi/borland_suffix.hpp
new file mode 100644
index 0000000..940535f
--- /dev/null
+++ b/include/boost/config/abi/borland_suffix.hpp
@@ -0,0 +1,12 @@
+// (C) Copyright John Maddock 2003.
+// 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)
+
+# pragma option pop
+#pragma nopushoptwarn
+
+
+
+
+
diff --git a/include/boost/config/abi/msvc_prefix.hpp b/include/boost/config/abi/msvc_prefix.hpp
new file mode 100644
index 0000000..97f06cd
--- /dev/null
+++ b/include/boost/config/abi/msvc_prefix.hpp
@@ -0,0 +1,22 @@
+// (C) Copyright John Maddock 2003.
+// 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)
+
+//
+// Boost binaries are built with the compiler's default ABI settings,
+// if the user changes their default alignment in the VS IDE then their
+// code will no longer be binary compatible with the bjam built binaries
+// unless this header is included to force Boost code into a consistent ABI.
+//
+// Note that inclusion of this header is only necessary for libraries with
+// separate source, header only libraries DO NOT need this as long as all
+// translation units are built with the same options.
+//
+#if defined(_M_X64)
+# pragma pack(push,16)
+#else
+# pragma pack(push,8)
+#endif
+
+
diff --git a/include/boost/config/abi/msvc_suffix.hpp b/include/boost/config/abi/msvc_suffix.hpp
new file mode 100644
index 0000000..a64d783
--- /dev/null
+++ b/include/boost/config/abi/msvc_suffix.hpp
@@ -0,0 +1,8 @@
+// (C) Copyright John Maddock 2003.
+// 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)
+
+#pragma pack(pop)
+
+
diff --git a/include/boost/config/abi_prefix.hpp b/include/boost/config/abi_prefix.hpp
new file mode 100644
index 0000000..3b13474
--- /dev/null
+++ b/include/boost/config/abi_prefix.hpp
@@ -0,0 +1,25 @@
+// abi_prefix header -------------------------------------------------------//
+
+// (c) Copyright John Maddock 2003
+
+// 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).
+
+#ifndef BOOST_CONFIG_ABI_PREFIX_HPP
+# define BOOST_CONFIG_ABI_PREFIX_HPP
+#else
+# error double inclusion of header boost/config/abi_prefix.hpp is an error
+#endif
+
+#include <boost/config.hpp>
+
+// this must occur after all other includes and before any code appears:
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_PREFIX
+#endif
+
+#if defined( __BORLANDC__ )
+#pragma nopushoptwarn
+#endif
+
diff --git a/include/boost/config/abi_suffix.hpp b/include/boost/config/abi_suffix.hpp
new file mode 100644
index 0000000..9391616
--- /dev/null
+++ b/include/boost/config/abi_suffix.hpp
@@ -0,0 +1,27 @@
+// abi_sufffix header -------------------------------------------------------//
+
+// (c) Copyright John Maddock 2003
+
+// 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).
+
+// This header should be #included AFTER code that was preceded by a #include
+// <boost/config/abi_prefix.hpp>.
+
+#ifndef BOOST_CONFIG_ABI_PREFIX_HPP
+# error Header boost/config/abi_suffix.hpp must only be used after boost/config/abi_prefix.hpp
+#else
+# undef BOOST_CONFIG_ABI_PREFIX_HPP
+#endif
+
+// the suffix header occurs after all of our code:
+#ifdef BOOST_HAS_ABI_HEADERS
+# include BOOST_ABI_SUFFIX
+#endif
+
+#if defined( __BORLANDC__ )
+#pragma nopushoptwarn
+#endif
+
+
diff --git a/include/boost/config/auto_link.hpp b/include/boost/config/auto_link.hpp
new file mode 100644
index 0000000..271f837
--- /dev/null
+++ b/include/boost/config/auto_link.hpp
@@ -0,0 +1,466 @@
+// (C) Copyright John Maddock 2003.
+// 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)
+
+ /*
+ * LOCATION: see http://www.boost.org for most recent version.
+ * FILE auto_link.hpp
+ * VERSION see <boost/version.hpp>
+ * DESCRIPTION: Automatic library inclusion for Borland/Microsoft compilers.
+ */
+
+/*************************************************************************
+
+USAGE:
+~~~~~~
+
+Before including this header you must define one or more of define the following macros:
+
+BOOST_LIB_NAME: Required: A string containing the basename of the library,
+ for example boost_regex.
+BOOST_LIB_TOOLSET: Optional: the base name of the toolset.
+BOOST_DYN_LINK: Optional: when set link to dll rather than static library.
+BOOST_LIB_DIAGNOSTIC: Optional: when set the header will print out the name
+ of the library selected (useful for debugging).
+BOOST_AUTO_LINK_NOMANGLE: Specifies that we should link to BOOST_LIB_NAME.lib,
+ rather than a mangled-name version.
+BOOST_AUTO_LINK_TAGGED: Specifies that we link to libraries built with the --layout=tagged option.
+ This is essentially the same as the default name-mangled version, but without
+ the compiler name and version, or the Boost version. Just the build options.
+
+These macros will be undef'ed at the end of the header, further this header
+has no include guards - so be sure to include it only once from your library!
+
+Algorithm:
+~~~~~~~~~~
+
+Libraries for Borland and Microsoft compilers are automatically
+selected here, the name of the lib is selected according to the following
+formula:
+
+BOOST_LIB_PREFIX
+ + BOOST_LIB_NAME
+ + "_"
+ + BOOST_LIB_TOOLSET
+ + BOOST_LIB_THREAD_OPT
+ + BOOST_LIB_RT_OPT
+ + BOOST_LIB_ARCH_AND_MODEL_OPT
+ "-"
+ + BOOST_LIB_VERSION
+
+These are defined as:
+
+BOOST_LIB_PREFIX: "lib" for static libraries otherwise "".
+
+BOOST_LIB_NAME: The base name of the lib ( for example boost_regex).
+
+BOOST_LIB_TOOLSET: The compiler toolset name (vc6, vc7, bcb5 etc).
+
+BOOST_LIB_THREAD_OPT: "-mt" for multithread builds, otherwise nothing.
+
+BOOST_LIB_RT_OPT: A suffix that indicates the runtime library used,
+ contains one or more of the following letters after
+ a hyphen:
+
+ s static runtime (dynamic if not present).
+ g debug/diagnostic runtime (release if not present).
+ y Python debug/diagnostic runtime (release if not present).
+ d debug build (release if not present).
+ p STLport build.
+ n STLport build without its IOStreams.
+
+BOOST_LIB_ARCH_AND_MODEL_OPT: The architecture and address model
+ (-x32 or -x64 for x86/32 and x86/64 respectively)
+
+BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y.
+
+
+***************************************************************************/
+
+#ifdef __cplusplus
+# ifndef BOOST_CONFIG_HPP
+# include <boost/config.hpp>
+# endif
+#elif defined(_MSC_VER) && !defined(__MWERKS__) && !defined(__EDG_VERSION__)
+//
+// C language compatability (no, honestly)
+//
+# define BOOST_MSVC _MSC_VER
+# define BOOST_STRINGIZE(X) BOOST_DO_STRINGIZE(X)
+# define BOOST_DO_STRINGIZE(X) #X
+#endif
+//
+// Only include what follows for known and supported compilers:
+//
+#if defined(BOOST_MSVC) \
+ || defined(__BORLANDC__) \
+ || (defined(__MWERKS__) && defined(_WIN32) && (__MWERKS__ >= 0x3000)) \
+ || (defined(__ICL) && defined(_MSC_EXTENSIONS) && (_MSC_VER >= 1200))
+
+#ifndef BOOST_VERSION_HPP
+# include <boost/version.hpp>
+#endif
+
+#ifndef BOOST_LIB_NAME
+# error "Macro BOOST_LIB_NAME not set (internal error)"
+#endif
+
+//
+// error check:
+//
+#if defined(__MSVC_RUNTIME_CHECKS) && !defined(_DEBUG)
+# pragma message("Using the /RTC option without specifying a debug runtime will lead to linker errors")
+# pragma message("Hint: go to the code generation options and switch to one of the debugging runtimes")
+# error "Incompatible build options"
+#endif
+//
+// select toolset if not defined already:
+//
+#ifndef BOOST_LIB_TOOLSET
+# if defined(BOOST_MSVC) && (BOOST_MSVC < 1200)
+ // Note: no compilers before 1200 are supported
+# elif defined(BOOST_MSVC) && (BOOST_MSVC < 1300)
+
+# ifdef UNDER_CE
+ // eVC4:
+# define BOOST_LIB_TOOLSET "evc4"
+# else
+ // vc6:
+# define BOOST_LIB_TOOLSET "vc6"
+# endif
+
+# elif defined(BOOST_MSVC) && (BOOST_MSVC < 1310)
+
+ // vc7:
+# define BOOST_LIB_TOOLSET "vc7"
+
+# elif defined(BOOST_MSVC) && (BOOST_MSVC < 1400)
+
+ // vc71:
+# define BOOST_LIB_TOOLSET "vc71"
+
+# elif defined(BOOST_MSVC) && (BOOST_MSVC < 1500)
+
+ // vc80:
+# define BOOST_LIB_TOOLSET "vc80"
+
+# elif defined(BOOST_MSVC) && (BOOST_MSVC < 1600)
+
+ // vc90:
+# define BOOST_LIB_TOOLSET "vc90"
+
+# elif defined(BOOST_MSVC) && (BOOST_MSVC < 1700)
+
+ // vc10:
+# define BOOST_LIB_TOOLSET "vc100"
+
+# elif defined(BOOST_MSVC) && (BOOST_MSVC < 1800)
+
+ // vc11:
+# define BOOST_LIB_TOOLSET "vc110"
+
+# elif defined(BOOST_MSVC) && (BOOST_MSVC < 1900)
+
+ // vc12:
+# define BOOST_LIB_TOOLSET "vc120"
+
+# elif defined(BOOST_MSVC) && (BOOST_MSVC < 1910)
+
+ // vc14:
+# define BOOST_LIB_TOOLSET "vc140"
+
+# elif defined(BOOST_MSVC)
+
+ // vc14.1:
+# define BOOST_LIB_TOOLSET "vc141"
+
+# elif defined(__BORLANDC__)
+
+ // CBuilder 6:
+# define BOOST_LIB_TOOLSET "bcb"
+
+# elif defined(__ICL)
+
+ // Intel C++, no version number:
+# define BOOST_LIB_TOOLSET "iw"
+
+# elif defined(__MWERKS__) && (__MWERKS__ <= 0x31FF )
+
+ // Metrowerks CodeWarrior 8.x
+# define BOOST_LIB_TOOLSET "cw8"
+
+# elif defined(__MWERKS__) && (__MWERKS__ <= 0x32FF )
+
+ // Metrowerks CodeWarrior 9.x
+# define BOOST_LIB_TOOLSET "cw9"
+
+# endif
+#endif // BOOST_LIB_TOOLSET
+
+//
+// select thread opt:
+//
+#if defined(_MT) || defined(__MT__)
+# define BOOST_LIB_THREAD_OPT "-mt"
+#else
+# define BOOST_LIB_THREAD_OPT
+#endif
+
+#if defined(_MSC_VER) || defined(__MWERKS__)
+
+# ifdef _DLL
+
+# if (defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)) && (defined(_STLP_OWN_IOSTREAMS) || defined(__STL_OWN_IOSTREAMS))
+
+# if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))\
+ && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
+# define BOOST_LIB_RT_OPT "-gydp"
+# elif defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))
+# define BOOST_LIB_RT_OPT "-gdp"
+# elif defined(_DEBUG)\
+ && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
+# define BOOST_LIB_RT_OPT "-gydp"
+# pragma message("warning: STLport debug versions are built with /D_STLP_DEBUG=1")
+# error "Build options aren't compatible with pre-built libraries"
+# elif defined(_DEBUG)
+# define BOOST_LIB_RT_OPT "-gdp"
+# pragma message("warning: STLport debug versions are built with /D_STLP_DEBUG=1")
+# error "Build options aren't compatible with pre-built libraries"
+# else
+# define BOOST_LIB_RT_OPT "-p"
+# endif
+
+# elif defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)
+
+# if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))\
+ && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
+# define BOOST_LIB_RT_OPT "-gydpn"
+# elif defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))
+# define BOOST_LIB_RT_OPT "-gdpn"
+# elif defined(_DEBUG)\
+ && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
+# define BOOST_LIB_RT_OPT "-gydpn"
+# pragma message("warning: STLport debug versions are built with /D_STLP_DEBUG=1")
+# error "Build options aren't compatible with pre-built libraries"
+# elif defined(_DEBUG)
+# define BOOST_LIB_RT_OPT "-gdpn"
+# pragma message("warning: STLport debug versions are built with /D_STLP_DEBUG=1")
+# error "Build options aren't compatible with pre-built libraries"
+# else
+# define BOOST_LIB_RT_OPT "-pn"
+# endif
+
+# else
+
+# if defined(_DEBUG) && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
+# define BOOST_LIB_RT_OPT "-gyd"
+# elif defined(_DEBUG)
+# define BOOST_LIB_RT_OPT "-gd"
+# else
+# define BOOST_LIB_RT_OPT
+# endif
+
+# endif
+
+# else
+
+# if (defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)) && (defined(_STLP_OWN_IOSTREAMS) || defined(__STL_OWN_IOSTREAMS))
+
+# if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))\
+ && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
+# define BOOST_LIB_RT_OPT "-sgydp"
+# elif defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))
+# define BOOST_LIB_RT_OPT "-sgdp"
+# elif defined(_DEBUG)\
+ && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
+# define BOOST_LIB_RT_OPT "-sgydp"
+# pragma message("warning: STLport debug versions are built with /D_STLP_DEBUG=1")
+# error "Build options aren't compatible with pre-built libraries"
+# elif defined(_DEBUG)
+# define BOOST_LIB_RT_OPT "-sgdp"
+# pragma message("warning: STLport debug versions are built with /D_STLP_DEBUG=1")
+# error "Build options aren't compatible with pre-built libraries"
+# else
+# define BOOST_LIB_RT_OPT "-sp"
+# endif
+
+# elif defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)
+
+# if defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))\
+ && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
+# define BOOST_LIB_RT_OPT "-sgydpn"
+# elif defined(_DEBUG) && (defined(__STL_DEBUG) || defined(_STLP_DEBUG))
+# define BOOST_LIB_RT_OPT "-sgdpn"
+# elif defined(_DEBUG)\
+ && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
+# define BOOST_LIB_RT_OPT "-sgydpn"
+# pragma message("warning: STLport debug versions are built with /D_STLP_DEBUG=1")
+# error "Build options aren't compatible with pre-built libraries"
+# elif defined(_DEBUG)
+# define BOOST_LIB_RT_OPT "-sgdpn"
+# pragma message("warning: STLport debug versions are built with /D_STLP_DEBUG=1")
+# error "Build options aren't compatible with pre-built libraries"
+# else
+# define BOOST_LIB_RT_OPT "-spn"
+# endif
+
+# else
+
+# if defined(_DEBUG)\
+ && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
+# define BOOST_LIB_RT_OPT "-sgyd"
+# elif defined(_DEBUG)
+# define BOOST_LIB_RT_OPT "-sgd"
+# else
+# define BOOST_LIB_RT_OPT "-s"
+# endif
+
+# endif
+
+# endif
+
+#elif defined(__BORLANDC__)
+
+//
+// figure out whether we want the debug builds or not:
+//
+#if __BORLANDC__ > 0x561
+#pragma defineonoption BOOST_BORLAND_DEBUG -v
+#endif
+//
+// sanity check:
+//
+#if defined(__STL_DEBUG) || defined(_STLP_DEBUG)
+#error "Pre-built versions of the Boost libraries are not provided in STLport-debug form"
+#endif
+
+# ifdef _RTLDLL
+
+# if defined(BOOST_BORLAND_DEBUG)\
+ && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
+# define BOOST_LIB_RT_OPT "-yd"
+# elif defined(BOOST_BORLAND_DEBUG)
+# define BOOST_LIB_RT_OPT "-d"
+# elif defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
+# define BOOST_LIB_RT_OPT -y
+# else
+# define BOOST_LIB_RT_OPT
+# endif
+
+# else
+
+# if defined(BOOST_BORLAND_DEBUG)\
+ && defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
+# define BOOST_LIB_RT_OPT "-syd"
+# elif defined(BOOST_BORLAND_DEBUG)
+# define BOOST_LIB_RT_OPT "-sd"
+# elif defined(BOOST_DEBUG_PYTHON) && defined(BOOST_LINKING_PYTHON)
+# define BOOST_LIB_RT_OPT "-sy"
+# else
+# define BOOST_LIB_RT_OPT "-s"
+# endif
+
+# endif
+
+#endif
+
+//
+// BOOST_LIB_ARCH_AND_MODEL_OPT
+//
+
+#if defined( _M_IX86 )
+# define BOOST_LIB_ARCH_AND_MODEL_OPT "-x32"
+#elif defined( _M_X64 )
+# define BOOST_LIB_ARCH_AND_MODEL_OPT "-x64"
+#elif defined( _M_ARM )
+# define BOOST_LIB_ARCH_AND_MODEL_OPT "-a32"
+#elif defined( _M_ARM64 )
+# define BOOST_LIB_ARCH_AND_MODEL_OPT "-a64"
+#endif
+
+//
+// select linkage opt:
+//
+#if (defined(_DLL) || defined(_RTLDLL)) && defined(BOOST_DYN_LINK)
+# define BOOST_LIB_PREFIX
+#elif defined(BOOST_DYN_LINK)
+# error "Mixing a dll boost library with a static runtime is a really bad idea..."
+#else
+# define BOOST_LIB_PREFIX "lib"
+#endif
+
+//
+// now include the lib:
+//
+#if defined(BOOST_LIB_NAME) \
+ && defined(BOOST_LIB_PREFIX) \
+ && defined(BOOST_LIB_TOOLSET) \
+ && defined(BOOST_LIB_THREAD_OPT) \
+ && defined(BOOST_LIB_RT_OPT) \
+ && defined(BOOST_LIB_ARCH_AND_MODEL_OPT) \
+ && defined(BOOST_LIB_VERSION)
+
+#ifdef BOOST_AUTO_LINK_TAGGED
+# pragma comment(lib, BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT ".lib")
+# ifdef BOOST_LIB_DIAGNOSTIC
+# pragma message ("Linking to lib file: " BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT ".lib")
+# endif
+#elif defined(BOOST_AUTO_LINK_NOMANGLE)
+# pragma comment(lib, BOOST_STRINGIZE(BOOST_LIB_NAME) ".lib")
+# ifdef BOOST_LIB_DIAGNOSTIC
+# pragma message ("Linking to lib file: " BOOST_STRINGIZE(BOOST_LIB_NAME) ".lib")
+# 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_ARCH_AND_MODEL_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_ARCH_AND_MODEL_OPT "-" BOOST_LIB_VERSION "-" BOOST_STRINGIZE(BOOST_LIB_BUILDID) ".lib")
+# endif
+#else
+# pragma comment(lib, BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT BOOST_LIB_ARCH_AND_MODEL_OPT "-" BOOST_LIB_VERSION ".lib")
+# ifdef BOOST_LIB_DIAGNOSTIC
+# pragma message ("Linking to lib file: " BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) "-" BOOST_LIB_TOOLSET BOOST_LIB_THREAD_OPT BOOST_LIB_RT_OPT BOOST_LIB_ARCH_AND_MODEL_OPT "-" BOOST_LIB_VERSION ".lib")
+# endif
+#endif
+
+#else
+# error "some required macros where not defined (internal logic error)."
+#endif
+
+
+#endif // _MSC_VER || __BORLANDC__
+
+//
+// finally undef any macros we may have set:
+//
+#ifdef BOOST_LIB_PREFIX
+# undef BOOST_LIB_PREFIX
+#endif
+#if defined(BOOST_LIB_NAME)
+# undef BOOST_LIB_NAME
+#endif
+// Don't undef this one: it can be set by the user and should be the
+// same for all libraries:
+//#if defined(BOOST_LIB_TOOLSET)
+//# undef BOOST_LIB_TOOLSET
+//#endif
+#if defined(BOOST_LIB_THREAD_OPT)
+# undef BOOST_LIB_THREAD_OPT
+#endif
+#if defined(BOOST_LIB_RT_OPT)
+# undef BOOST_LIB_RT_OPT
+#endif
+#if defined(BOOST_LIB_ARCH_AND_MODEL_OPT)
+# undef BOOST_LIB_ARCH_AND_MODEL_OPT
+#endif
+#if defined(BOOST_LIB_LINK_OPT)
+# undef BOOST_LIB_LINK_OPT
+#endif
+#if defined(BOOST_LIB_DEBUG_OPT)
+# undef BOOST_LIB_DEBUG_OPT
+#endif
+#if defined(BOOST_DYN_LINK)
+# undef BOOST_DYN_LINK
+#endif
+
+
diff --git a/include/boost/config/compiler/borland.hpp b/include/boost/config/compiler/borland.hpp
new file mode 100644
index 0000000..cb164f8
--- /dev/null
+++ b/include/boost/config/compiler/borland.hpp
@@ -0,0 +1,335 @@
+// (C) Copyright John Maddock 2001 - 2003.
+// (C) Copyright David Abrahams 2002 - 2003.
+// (C) Copyright Aleksey Gurtovoy 2002.
+// 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 for most recent version.
+
+// Borland C++ compiler setup:
+
+//
+// versions check:
+// we don't support Borland prior to version 5.4:
+#if __BORLANDC__ < 0x540
+# error "Compiler not supported or configured - please reconfigure"
+#endif
+
+// last known compiler version:
+#if (__BORLANDC__ > 0x613)
+//# if defined(BOOST_ASSERT_CONFIG)
+# error "Unknown compiler version - please run the configure tests and report the results"
+//# else
+//# pragma message( "Unknown compiler version - please run the configure tests and report the results")
+//# endif
+#elif (__BORLANDC__ == 0x600)
+# error "CBuilderX preview compiler is no longer supported"
+#endif
+
+//
+// Support macros to help with standard library detection
+#if (__BORLANDC__ < 0x560) || defined(_USE_OLD_RW_STL)
+# define BOOST_BCB_WITH_ROGUE_WAVE
+#elif __BORLANDC__ < 0x570
+# define BOOST_BCB_WITH_STLPORT
+#else
+# define BOOST_BCB_WITH_DINKUMWARE
+#endif
+
+//
+// Version 5.0 and below:
+# if __BORLANDC__ <= 0x0550
+// Borland C++Builder 4 and 5:
+# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
+# if __BORLANDC__ == 0x0550
+// Borland C++Builder 5, command-line compiler 5.5:
+# define BOOST_NO_OPERATORS_IN_NAMESPACE
+# endif
+// Variadic macros do not exist for C++ Builder versions 5 and below
+#define BOOST_NO_CXX11_VARIADIC_MACROS
+# endif
+
+// Version 5.51 and below:
+#if (__BORLANDC__ <= 0x551)
+# define BOOST_NO_CV_SPECIALIZATIONS
+# define BOOST_NO_CV_VOID_SPECIALIZATIONS
+# define BOOST_NO_DEDUCED_TYPENAME
+// workaround for missing WCHAR_MAX/WCHAR_MIN:
+#ifdef __cplusplus
+#include <climits>
+#include <cwchar>
+#else
+#include <limits.h>
+#include <wchar.h>
+#endif // __cplusplus
+#ifndef WCHAR_MAX
+# define WCHAR_MAX 0xffff
+#endif
+#ifndef WCHAR_MIN
+# define WCHAR_MIN 0
+#endif
+#endif
+
+// Borland C++ Builder 6 and below:
+#if (__BORLANDC__ <= 0x564)
+
+# if defined(NDEBUG) && defined(__cplusplus)
+ // fix broken <cstring> so that Boost.test works:
+# include <cstring>
+# undef strcmp
+# endif
+ // fix broken errno declaration:
+# include <errno.h>
+# ifndef errno
+# define errno errno
+# endif
+
+#endif
+
+//
+// new bug in 5.61:
+#if (__BORLANDC__ >= 0x561) && (__BORLANDC__ <= 0x580)
+ // this seems to be needed by the command line compiler, but not the IDE:
+# define BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS
+#endif
+
+// Borland C++ Builder 2006 Update 2 and below:
+#if (__BORLANDC__ <= 0x582)
+# define BOOST_NO_SFINAE
+# define BOOST_BCB_PARTIAL_SPECIALIZATION_BUG
+# define BOOST_NO_TEMPLATE_TEMPLATES
+
+# define BOOST_NO_PRIVATE_IN_AGGREGATE
+
+# ifdef _WIN32
+# define BOOST_NO_SWPRINTF
+# elif defined(linux) || defined(__linux__) || defined(__linux)
+ // we should really be able to do without this
+ // but the wcs* functions aren't imported into std::
+# define BOOST_NO_STDC_NAMESPACE
+ // _CPPUNWIND doesn't get automatically set for some reason:
+# pragma defineonoption BOOST_CPPUNWIND -x
+# endif
+#endif
+
+#if (__BORLANDC__ <= 0x613) // Beman has asked Alisdair for more info
+ // we shouldn't really need this - but too many things choke
+ // without it, this needs more investigation:
+# define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
+# define BOOST_NO_IS_ABSTRACT
+# define BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS
+# define BOOST_NO_USING_TEMPLATE
+# define BOOST_SP_NO_SP_CONVERTIBLE
+
+// Temporary workaround
+#define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+#endif
+
+// Borland C++ Builder 2008 and below:
+# define BOOST_NO_INTEGRAL_INT64_T
+# define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
+# define BOOST_NO_DEPENDENT_NESTED_DERIVATIONS
+# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
+# define BOOST_NO_TWO_PHASE_NAME_LOOKUP
+# define BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE
+# define BOOST_NO_NESTED_FRIENDSHIP
+# define BOOST_NO_TYPENAME_WITH_CTOR
+#if (__BORLANDC__ < 0x600)
+# define BOOST_ILLEGAL_CV_REFERENCES
+#endif
+
+//
+// Positive Feature detection
+//
+// Borland C++ Builder 2008 and below:
+#if (__BORLANDC__ >= 0x599)
+# pragma defineonoption BOOST_CODEGEAR_0X_SUPPORT -Ax
+#endif
+//
+// C++0x Macros:
+//
+#if !defined( BOOST_CODEGEAR_0X_SUPPORT ) || (__BORLANDC__ < 0x610)
+# define BOOST_NO_CXX11_CHAR16_T
+# define BOOST_NO_CXX11_CHAR32_T
+# define BOOST_NO_CXX11_DECLTYPE
+# define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
+# define BOOST_NO_CXX11_EXTERN_TEMPLATE
+# define BOOST_NO_CXX11_RVALUE_REFERENCES
+# define BOOST_NO_CXX11_SCOPED_ENUMS
+# define BOOST_NO_CXX11_STATIC_ASSERT
+#else
+# define BOOST_HAS_ALIGNOF
+# define BOOST_HAS_CHAR16_T
+# define BOOST_HAS_CHAR32_T
+# define BOOST_HAS_DECLTYPE
+# define BOOST_HAS_EXPLICIT_CONVERSION_OPS
+# define BOOST_HAS_REF_QUALIFIER
+# define BOOST_HAS_RVALUE_REFS
+# define BOOST_HAS_STATIC_ASSERT
+#endif
+
+#define BOOST_NO_CXX11_AUTO_DECLARATIONS
+#define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
+#define BOOST_NO_CXX11_CONSTEXPR
+#define BOOST_NO_CXX11_DECLTYPE_N3276
+#define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
+#define BOOST_NO_CXX11_DEFAULTED_MOVES
+#define BOOST_NO_CXX11_DELETED_FUNCTIONS
+#define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
+#define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+#define BOOST_NO_CXX11_LAMBDAS
+#define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
+#define BOOST_NO_CXX11_NULLPTR
+#define BOOST_NO_CXX11_RANGE_BASED_FOR
+#define BOOST_NO_CXX11_RAW_LITERALS
+#define BOOST_NO_CXX11_RVALUE_REFERENCES
+#define BOOST_NO_CXX11_SCOPED_ENUMS
+#define BOOST_NO_SFINAE_EXPR
+#define BOOST_NO_CXX11_SFINAE_EXPR
+#define BOOST_NO_CXX11_TEMPLATE_ALIASES
+#define BOOST_NO_CXX11_UNICODE_LITERALS // UTF-8 still not supported
+#define BOOST_NO_CXX11_VARIADIC_TEMPLATES
+#define BOOST_NO_CXX11_NOEXCEPT
+#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
+#define BOOST_NO_CXX11_USER_DEFINED_LITERALS
+#define BOOST_NO_CXX11_ALIGNAS
+#define BOOST_NO_CXX11_TRAILING_RESULT_TYPES
+#define BOOST_NO_CXX11_INLINE_NAMESPACES
+#define BOOST_NO_CXX11_REF_QUALIFIERS
+#define BOOST_NO_CXX11_FINAL
+#define BOOST_NO_CXX11_THREAD_LOCAL
+
+// 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_SEPARATORS
+#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
+
+// C++17
+#if !defined(__cpp_structured_bindings) || (__cpp_structured_bindings < 201606)
+# define BOOST_NO_CXX17_STRUCTURED_BINDINGS
+#endif
+#if !defined(__cpp_inline_variables) || (__cpp_inline_variables < 201606)
+# define BOOST_NO_CXX17_INLINE_VARIABLES
+#endif
+#if !defined(__cpp_fold_expressions) || (__cpp_fold_expressions < 201603)
+# define BOOST_NO_CXX17_FOLD_EXPRESSIONS
+#endif
+#if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606)
+# define BOOST_NO_CXX17_IF_CONSTEXPR
+#endif
+
+#if __BORLANDC__ >= 0x590
+# define BOOST_HAS_TR1_HASH
+
+# define BOOST_HAS_MACRO_USE_FACET
+#endif
+
+//
+// Post 0x561 we have long long and stdint.h:
+#if __BORLANDC__ >= 0x561
+# ifndef __NO_LONG_LONG
+# define BOOST_HAS_LONG_LONG
+# else
+# define BOOST_NO_LONG_LONG
+# endif
+ // On non-Win32 platforms let the platform config figure this out:
+# ifdef _WIN32
+# define BOOST_HAS_STDINT_H
+# endif
+#endif
+
+// Borland C++Builder 6 defaults to using STLPort. If _USE_OLD_RW_STL is
+// defined, then we have 0x560 or greater with the Rogue Wave implementation
+// which presumably has the std::DBL_MAX bug.
+#if defined( BOOST_BCB_WITH_ROGUE_WAVE )
+// <climits> is partly broken, some macros define symbols that are really in
+// namespace std, so you end up having to use illegal constructs like
+// std::DBL_MAX, as a fix we'll just include float.h and have done with:
+#include <float.h>
+#endif
+//
+// __int64:
+//
+#if (__BORLANDC__ >= 0x530) && !defined(__STRICT_ANSI__)
+# define BOOST_HAS_MS_INT64
+#endif
+//
+// check for exception handling support:
+//
+#if !defined(_CPPUNWIND) && !defined(BOOST_CPPUNWIND) && !defined(__EXCEPTIONS) && !defined(BOOST_NO_EXCEPTIONS)
+# define BOOST_NO_EXCEPTIONS
+#endif
+//
+// all versions have a <dirent.h>:
+//
+#ifndef __STRICT_ANSI__
+# define BOOST_HAS_DIRENT_H
+#endif
+//
+// all versions support __declspec:
+//
+#if defined(__STRICT_ANSI__)
+// config/platform/win32.hpp will define BOOST_SYMBOL_EXPORT, etc., unless already defined
+# define BOOST_SYMBOL_EXPORT
+#endif
+//
+// ABI fixing headers:
+//
+#if __BORLANDC__ != 0x600 // not implemented for version 6 compiler yet
+#ifndef BOOST_ABI_PREFIX
+# define BOOST_ABI_PREFIX "boost/config/abi/borland_prefix.hpp"
+#endif
+#ifndef BOOST_ABI_SUFFIX
+# define BOOST_ABI_SUFFIX "boost/config/abi/borland_suffix.hpp"
+#endif
+#endif
+//
+// Disable Win32 support in ANSI mode:
+//
+#if __BORLANDC__ < 0x600
+# pragma defineonoption BOOST_DISABLE_WIN32 -A
+#elif defined(__STRICT_ANSI__)
+# define BOOST_DISABLE_WIN32
+#endif
+//
+// MSVC compatibility mode does some nasty things:
+// TODO: look up if this doesn't apply to the whole 12xx range
+//
+#if defined(_MSC_VER) && (_MSC_VER <= 1200)
+# define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
+# define BOOST_NO_VOID_RETURNS
+#endif
+
+// Borland did not implement value-initialization completely, as I reported
+// in 2007, Borland Report 51854, "Value-initialization: POD struct should be
+// zero-initialized", http://qc.embarcadero.com/wc/qcmain.aspx?d=51854
+// See also: http://www.boost.org/libs/utility/value_init.htm#compiler_issues
+// (Niels Dekker, LKEB, April 2010)
+#define BOOST_NO_COMPLETE_VALUE_INITIALIZATION
+
+#define BOOST_COMPILER "Borland C++ version " BOOST_STRINGIZE(__BORLANDC__)
diff --git a/include/boost/config/compiler/clang.hpp b/include/boost/config/compiler/clang.hpp
new file mode 100644
index 0000000..3d893c6
--- /dev/null
+++ b/include/boost/config/compiler/clang.hpp
@@ -0,0 +1,340 @@
+// (C) Copyright Douglas Gregor 2010
+//
+// 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 for most recent version.
+
+// Clang compiler setup.
+
+#define BOOST_HAS_PRAGMA_ONCE
+
+// Detecting `-fms-extension` compiler flag assuming that _MSC_VER defined when that flag is used.
+#if defined (_MSC_VER) && (__clang_major__ > 3 || (__clang_major__ == 3 && __clang_minor__ >= 4))
+# define BOOST_HAS_PRAGMA_DETECT_MISMATCH
+#endif
+
+// When compiling with clang before __has_extension was defined,
+// even if one writes 'defined(__has_extension) && __has_extension(xxx)',
+// clang reports a compiler error. So the only workaround found is:
+
+#ifndef __has_extension
+#define __has_extension __has_feature
+#endif
+
+#ifndef __has_attribute
+#define __has_attribute(x) 0
+#endif
+
+#ifndef __has_cpp_attribute
+#define __has_cpp_attribute(x) 0
+#endif
+
+#if !__has_feature(cxx_exceptions) && !defined(BOOST_NO_EXCEPTIONS)
+# define BOOST_NO_EXCEPTIONS
+#endif
+
+#if !__has_feature(cxx_rtti) && !defined(BOOST_NO_RTTI)
+# define BOOST_NO_RTTI
+#endif
+
+#if !__has_feature(cxx_rtti) && !defined(BOOST_NO_TYPEID)
+# define BOOST_NO_TYPEID
+#endif
+
+#if !__has_feature(cxx_thread_local)
+# define BOOST_NO_CXX11_THREAD_LOCAL
+#endif
+
+#ifdef __is_identifier
+#if !__is_identifier(__int64) && !defined(__GNUC__)
+# define BOOST_HAS_MS_INT64
+#endif
+#endif
+
+#if __has_include(<stdint.h>)
+# define BOOST_HAS_STDINT_H
+#endif
+
+
+#define BOOST_HAS_NRVO
+
+// Branch prediction hints
+#if !defined (__c2__) && defined(__has_builtin)
+#if __has_builtin(__builtin_expect)
+#define BOOST_LIKELY(x) __builtin_expect(x, 1)
+#define BOOST_UNLIKELY(x) __builtin_expect(x, 0)
+#endif
+#endif
+
+// Clang supports "long long" in all compilation modes.
+#define BOOST_HAS_LONG_LONG
+
+//
+// We disable this if the compiler is really nvcc with C++03 as it
+// doesn't actually support __int128 as of CUDA_VERSION=7500
+// even though it defines __SIZEOF_INT128__.
+// See https://svn.boost.org/trac/boost/ticket/10418
+// https://svn.boost.org/trac/boost/ticket/11852
+// Only re-enable this for nvcc if you're absolutely sure
+// of the circumstances under which it's supported.
+// Similarly __SIZEOF_INT128__ is defined when targetting msvc
+// compatibility even though the required support functions are absent.
+//
+#if defined(__CUDACC__)
+# if defined(BOOST_GCC_CXX11)
+# define BOOST_NVCC_CXX11
+# else
+# define BOOST_NVCC_CXX03
+# endif
+#endif
+
+#if defined(__SIZEOF_INT128__) && !defined(BOOST_NVCC_CXX03) && !defined(_MSC_VER)
+# define BOOST_HAS_INT128
+#endif
+
+
+//
+// Dynamic shared object (DSO) and dynamic-link library (DLL) support
+//
+#if defined(_WIN32) || defined(__WIN32__) || defined(WIN32) || defined(__CYGWIN__)
+# define BOOST_HAS_DECLSPEC
+# define BOOST_SYMBOL_EXPORT __attribute__((__dllexport__))
+# define BOOST_SYMBOL_IMPORT __attribute__((__dllimport__))
+#else
+# define BOOST_SYMBOL_EXPORT __attribute__((__visibility__("default")))
+# define BOOST_SYMBOL_IMPORT
+#endif
+#define BOOST_SYMBOL_VISIBLE __attribute__((__visibility__("default")))
+
+//
+// The BOOST_FALLTHROUGH macro can be used to annotate implicit fall-through
+// between switch labels.
+//
+#if __cplusplus >= 201103L && defined(__has_warning)
+# if __has_feature(cxx_attributes) && __has_warning("-Wimplicit-fallthrough")
+# define BOOST_FALLTHROUGH [[clang::fallthrough]]
+# endif
+#endif
+
+#if !__has_feature(cxx_auto_type)
+# define BOOST_NO_CXX11_AUTO_DECLARATIONS
+# define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
+#endif
+
+//
+// Currently clang on Windows using VC++ RTL does not support C++11's char16_t or char32_t
+//
+#if (defined(_MSC_VER) && (_MSC_VER < 1900)) || !(defined(__GXX_EXPERIMENTAL_CXX0X__) || __cplusplus >= 201103L)
+# define BOOST_NO_CXX11_CHAR16_T
+# define BOOST_NO_CXX11_CHAR32_T
+#endif
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1800) && !defined(__GNUC__)
+#define BOOST_HAS_EXPM1
+#define BOOST_HAS_LOG1P
+#endif
+
+#if !__has_feature(cxx_constexpr)
+# define BOOST_NO_CXX11_CONSTEXPR
+#endif
+
+#if !__has_feature(cxx_decltype)
+# define BOOST_NO_CXX11_DECLTYPE
+#endif
+
+#if !__has_feature(cxx_decltype_incomplete_return_types)
+# define BOOST_NO_CXX11_DECLTYPE_N3276
+#endif
+
+#if !__has_feature(cxx_defaulted_functions)
+# define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
+#endif
+
+#if !__has_feature(cxx_deleted_functions)
+# define BOOST_NO_CXX11_DELETED_FUNCTIONS
+#endif
+
+#if !__has_feature(cxx_explicit_conversions)
+# define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
+#endif
+
+#if !__has_feature(cxx_default_function_template_args)
+# define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
+#endif
+
+#if !__has_feature(cxx_generalized_initializers)
+# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+#endif
+
+#if !__has_feature(cxx_lambdas)
+# define BOOST_NO_CXX11_LAMBDAS
+#endif
+
+#if !__has_feature(cxx_local_type_template_args)
+# define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
+#endif
+
+#if !__has_feature(cxx_noexcept)
+# define BOOST_NO_CXX11_NOEXCEPT
+#endif
+
+#if !__has_feature(cxx_nullptr)
+# define BOOST_NO_CXX11_NULLPTR
+#endif
+
+#if !__has_feature(cxx_range_for)
+# define BOOST_NO_CXX11_RANGE_BASED_FOR
+#endif
+
+#if !__has_feature(cxx_raw_string_literals)
+# define BOOST_NO_CXX11_RAW_LITERALS
+#endif
+
+#if !__has_feature(cxx_reference_qualified_functions)
+# define BOOST_NO_CXX11_REF_QUALIFIERS
+#endif
+
+#if !__has_feature(cxx_generalized_initializers)
+# define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
+#endif
+
+#if !__has_feature(cxx_rvalue_references)
+# define BOOST_NO_CXX11_RVALUE_REFERENCES
+#endif
+
+#if !__has_feature(cxx_strong_enums)
+# define BOOST_NO_CXX11_SCOPED_ENUMS
+#endif
+
+#if !__has_feature(cxx_static_assert)
+# define BOOST_NO_CXX11_STATIC_ASSERT
+#endif
+
+#if !__has_feature(cxx_alias_templates)
+# define BOOST_NO_CXX11_TEMPLATE_ALIASES
+#endif
+
+#if !__has_feature(cxx_unicode_literals)
+# define BOOST_NO_CXX11_UNICODE_LITERALS
+#endif
+
+#if !__has_feature(cxx_variadic_templates)
+# define BOOST_NO_CXX11_VARIADIC_TEMPLATES
+#endif
+
+#if !__has_feature(cxx_user_literals)
+# define BOOST_NO_CXX11_USER_DEFINED_LITERALS
+#endif
+
+#if !__has_feature(cxx_alignas)
+# define BOOST_NO_CXX11_ALIGNAS
+#endif
+
+#if !__has_feature(cxx_trailing_return)
+# define BOOST_NO_CXX11_TRAILING_RESULT_TYPES
+#endif
+
+#if !__has_feature(cxx_inline_namespaces)
+# define BOOST_NO_CXX11_INLINE_NAMESPACES
+#endif
+
+#if !__has_feature(cxx_override_control)
+# define BOOST_NO_CXX11_FINAL
+#endif
+
+#if !(__has_feature(__cxx_binary_literals__) || __has_extension(__cxx_binary_literals__))
+# define BOOST_NO_CXX14_BINARY_LITERALS
+#endif
+
+#if !__has_feature(__cxx_decltype_auto__)
+# define BOOST_NO_CXX14_DECLTYPE_AUTO
+#endif
+
+#if !__has_feature(__cxx_aggregate_nsdmi__)
+# define BOOST_NO_CXX14_AGGREGATE_NSDMI
+#endif
+
+#if !__has_feature(__cxx_init_captures__)
+# define BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES
+#endif
+
+#if !__has_feature(__cxx_generic_lambdas__)
+# define BOOST_NO_CXX14_GENERIC_LAMBDAS
+#endif
+
+// clang < 3.5 has a defect with dependent type, like following.
+//
+// template <class T>
+// constexpr typename enable_if<pred<T> >::type foo(T &)
+// { } // error: no return statement in constexpr function
+//
+// This issue also affects C++11 mode, but C++11 constexpr requires return stmt.
+// Therefore we don't care such case.
+//
+// Note that we can't check Clang version directly as the numbering system changes depending who's
+// creating the Clang release (see https://github.com/boostorg/config/pull/39#issuecomment-59927873)
+// so instead verify that we have a feature that was introduced at the same time as working C++14
+// constexpr (generic lambda's in this case):
+//
+#if !__has_feature(__cxx_generic_lambdas__) || !__has_feature(__cxx_relaxed_constexpr__)
+# define BOOST_NO_CXX14_CONSTEXPR
+#endif
+
+#if !__has_feature(__cxx_return_type_deduction__)
+# define BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION
+#endif
+
+#if !__has_feature(__cxx_variable_templates__)
+# define BOOST_NO_CXX14_VARIABLE_TEMPLATES
+#endif
+
+#if !defined(__cpp_structured_bindings) || (__cpp_structured_bindings < 201606)
+# define BOOST_NO_CXX17_STRUCTURED_BINDINGS
+#endif
+
+#if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606)
+# define BOOST_NO_CXX17_IF_CONSTEXPR
+#endif
+
+// Clang 3.9+ in c++1z
+#if !__has_cpp_attribute(fallthrough) || __cplusplus < 201406L
+# define BOOST_NO_CXX17_INLINE_VARIABLES
+# define BOOST_NO_CXX17_FOLD_EXPRESSIONS
+#endif
+
+#if __cplusplus < 201103L
+#define BOOST_NO_CXX11_SFINAE_EXPR
+#endif
+
+#if __cplusplus < 201400
+// All versions with __cplusplus above this value seem to support this:
+# define BOOST_NO_CXX14_DIGIT_SEPARATORS
+#endif
+//
+// __builtin_unreachable:
+#if defined(__has_builtin) && __has_builtin(__builtin_unreachable)
+#define BOOST_UNREACHABLE_RETURN(x) __builtin_unreachable();
+#endif
+
+#if (__clang_major__ == 3) && (__clang_minor__ == 0)
+// Apparently a clang bug:
+# define BOOST_NO_CXX11_FIXED_LENGTH_VARIADIC_TEMPLATE_EXPANSION_PACKS
+#endif
+
+// Clang has supported the 'unused' attribute since the first release.
+#define BOOST_ATTRIBUTE_UNUSED __attribute__((__unused__))
+
+// Type aliasing hint.
+#if __has_attribute(__may_alias__)
+# define BOOST_MAY_ALIAS __attribute__((__may_alias__))
+#endif
+
+#ifndef BOOST_COMPILER
+# define BOOST_COMPILER "Clang version " __clang_version__
+#endif
+
+// Macro used to identify the Clang compiler.
+#define BOOST_CLANG 1
+
diff --git a/include/boost/config/compiler/codegear.hpp b/include/boost/config/compiler/codegear.hpp
new file mode 100644
index 0000000..c2cfe15
--- /dev/null
+++ b/include/boost/config/compiler/codegear.hpp
@@ -0,0 +1,239 @@
+// (C) Copyright John Maddock 2001 - 2003.
+// (C) Copyright David Abrahams 2002 - 2003.
+// (C) Copyright Aleksey Gurtovoy 2002.
+// 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 for most recent version.
+
+// CodeGear C++ compiler setup:
+
+#if !defined( BOOST_WITH_CODEGEAR_WARNINGS )
+// these warnings occur frequently in optimized template code
+# pragma warn -8004 // var assigned value, but never used
+# pragma warn -8008 // condition always true/false
+# pragma warn -8066 // dead code can never execute
+# pragma warn -8104 // static members with ctors not threadsafe
+# pragma warn -8105 // reference member in class without ctors
+#endif
+//
+// versions check:
+// last known and checked version is 0x621
+#if (__CODEGEARC__ > 0x621)
+# if defined(BOOST_ASSERT_CONFIG)
+# error "Unknown compiler version - please run the configure tests and report the results"
+# else
+# pragma message( "Unknown compiler version - please run the configure tests and report the results")
+# endif
+#endif
+
+// CodeGear C++ Builder 2009
+#if (__CODEGEARC__ <= 0x613)
+# define BOOST_NO_INTEGRAL_INT64_T
+# define BOOST_NO_DEPENDENT_NESTED_DERIVATIONS
+# define BOOST_NO_PRIVATE_IN_AGGREGATE
+# define BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE
+ // we shouldn't really need this - but too many things choke
+ // without it, this needs more investigation:
+# define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
+# define BOOST_SP_NO_SP_CONVERTIBLE
+#endif
+
+// CodeGear C++ Builder 2010
+#if (__CODEGEARC__ <= 0x621)
+# define BOOST_NO_TYPENAME_WITH_CTOR // Cannot use typename keyword when making temporaries of a dependant type
+# define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
+# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
+# define BOOST_NO_NESTED_FRIENDSHIP // TC1 gives nested classes access rights as any other member
+# define BOOST_NO_USING_TEMPLATE
+# define BOOST_NO_TWO_PHASE_NAME_LOOKUP
+// Temporary hack, until specific MPL preprocessed headers are generated
+# define BOOST_MPL_CFG_NO_PREPROCESSED_HEADERS
+
+// CodeGear has not yet completely implemented value-initialization, for
+// example for array types, as I reported in 2010: Embarcadero Report 83751,
+// "Value-initialization: arrays should have each element value-initialized",
+// http://qc.embarcadero.com/wc/qcmain.aspx?d=83751
+// Last checked version: Embarcadero C++ 6.21
+// See also: http://www.boost.org/libs/utility/value_init.htm#compiler_issues
+// (Niels Dekker, LKEB, April 2010)
+# define BOOST_NO_COMPLETE_VALUE_INITIALIZATION
+
+# if defined(NDEBUG) && defined(__cplusplus)
+ // fix broken <cstring> so that Boost.test works:
+# include <cstring>
+# undef strcmp
+# endif
+ // fix broken errno declaration:
+# include <errno.h>
+# ifndef errno
+# define errno errno
+# endif
+
+#endif
+
+// Reportedly, #pragma once is supported since C++ Builder 2010
+#if (__CODEGEARC__ >= 0x620)
+# define BOOST_HAS_PRAGMA_ONCE
+#endif
+
+//
+// C++0x macros:
+//
+#if (__CODEGEARC__ <= 0x620)
+#define BOOST_NO_CXX11_STATIC_ASSERT
+#else
+#define BOOST_HAS_STATIC_ASSERT
+#endif
+#define BOOST_HAS_CHAR16_T
+#define BOOST_HAS_CHAR32_T
+#define BOOST_HAS_LONG_LONG
+// #define BOOST_HAS_ALIGNOF
+#define BOOST_HAS_DECLTYPE
+#define BOOST_HAS_EXPLICIT_CONVERSION_OPS
+// #define BOOST_HAS_RVALUE_REFS
+#define BOOST_HAS_SCOPED_ENUM
+// #define BOOST_HAS_STATIC_ASSERT
+#define BOOST_HAS_STD_TYPE_TRAITS
+
+#define BOOST_NO_CXX11_AUTO_DECLARATIONS
+#define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
+#define BOOST_NO_CXX11_CONSTEXPR
+#define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
+#define BOOST_NO_CXX11_DELETED_FUNCTIONS
+#define BOOST_NO_CXX11_EXTERN_TEMPLATE
+#define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
+#define BOOST_NO_CXX11_LAMBDAS
+#define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
+#define BOOST_NO_CXX11_NOEXCEPT
+#define BOOST_NO_CXX11_NULLPTR
+#define BOOST_NO_CXX11_RANGE_BASED_FOR
+#define BOOST_NO_CXX11_RAW_LITERALS
+#define BOOST_NO_CXX11_RVALUE_REFERENCES
+#define BOOST_NO_SFINAE_EXPR
+#define BOOST_NO_CXX11_SFINAE_EXPR
+#define BOOST_NO_CXX11_TEMPLATE_ALIASES
+#define BOOST_NO_CXX11_UNICODE_LITERALS
+#define BOOST_NO_CXX11_VARIADIC_TEMPLATES
+#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
+#define BOOST_NO_CXX11_USER_DEFINED_LITERALS
+#define BOOST_NO_CXX11_ALIGNAS
+#define BOOST_NO_CXX11_TRAILING_RESULT_TYPES
+#define BOOST_NO_CXX11_INLINE_NAMESPACES
+#define BOOST_NO_CXX11_REF_QUALIFIERS
+#define BOOST_NO_CXX11_FINAL
+#define BOOST_NO_CXX11_THREAD_LOCAL
+
+// 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_SEPARATORS
+#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
+
+// C++17
+#if !defined(__cpp_structured_bindings) || (__cpp_structured_bindings < 201606)
+# define BOOST_NO_CXX17_STRUCTURED_BINDINGS
+#endif
+
+#if !defined(__cpp_inline_variables) || (__cpp_inline_variables < 201606)
+# define BOOST_NO_CXX17_INLINE_VARIABLES
+#endif
+
+#if !defined(__cpp_fold_expressions) || (__cpp_fold_expressions < 201603)
+# define BOOST_NO_CXX17_FOLD_EXPRESSIONS
+#endif
+
+#if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606)
+# define BOOST_NO_CXX17_IF_CONSTEXPR
+#endif
+
+//
+// TR1 macros:
+//
+#define BOOST_HAS_TR1_HASH
+#define BOOST_HAS_TR1_TYPE_TRAITS
+#define BOOST_HAS_TR1_UNORDERED_MAP
+#define BOOST_HAS_TR1_UNORDERED_SET
+
+#define BOOST_HAS_MACRO_USE_FACET
+
+#define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+
+// On non-Win32 platforms let the platform config figure this out:
+#ifdef _WIN32
+# define BOOST_HAS_STDINT_H
+#endif
+
+//
+// __int64:
+//
+#if !defined(__STRICT_ANSI__)
+# define BOOST_HAS_MS_INT64
+#endif
+//
+// check for exception handling support:
+//
+#if !defined(_CPPUNWIND) && !defined(BOOST_CPPUNWIND) && !defined(__EXCEPTIONS) && !defined(BOOST_NO_EXCEPTIONS)
+# define BOOST_NO_EXCEPTIONS
+#endif
+//
+// all versions have a <dirent.h>:
+//
+#if !defined(__STRICT_ANSI__)
+# define BOOST_HAS_DIRENT_H
+#endif
+//
+// all versions support __declspec:
+//
+#if defined(__STRICT_ANSI__)
+// config/platform/win32.hpp will define BOOST_SYMBOL_EXPORT, etc., unless already defined
+# define BOOST_SYMBOL_EXPORT
+#endif
+//
+// ABI fixing headers:
+//
+#ifndef BOOST_ABI_PREFIX
+# define BOOST_ABI_PREFIX "boost/config/abi/borland_prefix.hpp"
+#endif
+#ifndef BOOST_ABI_SUFFIX
+# define BOOST_ABI_SUFFIX "boost/config/abi/borland_suffix.hpp"
+#endif
+//
+// Disable Win32 support in ANSI mode:
+//
+# pragma defineonoption BOOST_DISABLE_WIN32 -A
+//
+// MSVC compatibility mode does some nasty things:
+// TODO: look up if this doesn't apply to the whole 12xx range
+//
+#if defined(_MSC_VER) && (_MSC_VER <= 1200)
+# define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
+# define BOOST_NO_VOID_RETURNS
+#endif
+
+#define BOOST_COMPILER "CodeGear C++ version " BOOST_STRINGIZE(__CODEGEARC__)
+
diff --git a/include/boost/config/compiler/comeau.hpp b/include/boost/config/compiler/comeau.hpp
new file mode 100644
index 0000000..0984160
--- /dev/null
+++ b/include/boost/config/compiler/comeau.hpp
@@ -0,0 +1,59 @@
+// (C) Copyright John Maddock 2001.
+// (C) Copyright Douglas Gregor 2001.
+// (C) Copyright Peter Dimov 2001.
+// (C) Copyright Aleksey Gurtovoy 2003.
+// (C) Copyright Beman Dawes 2003.
+// (C) Copyright Jens Maurer 2003.
+// 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 for most recent version.
+
+// Comeau C++ compiler setup:
+
+#include <boost/config/compiler/common_edg.hpp>
+
+#if (__COMO_VERSION__ <= 4245)
+
+# if defined(_MSC_VER) && _MSC_VER <= 1300
+# if _MSC_VER > 100
+ // only set this in non-strict mode:
+# define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
+# endif
+# endif
+
+// Void returns don't work when emulating VC 6 (Peter Dimov)
+// TODO: look up if this doesn't apply to the whole 12xx range
+# if defined(_MSC_VER) && (_MSC_VER < 1300)
+# define BOOST_NO_VOID_RETURNS
+# endif
+
+#endif // version 4245
+
+//
+// enable __int64 support in VC emulation mode
+//
+# if defined(_MSC_VER) && (_MSC_VER >= 1200)
+# define BOOST_HAS_MS_INT64
+# endif
+
+#define BOOST_COMPILER "Comeau compiler version " BOOST_STRINGIZE(__COMO_VERSION__)
+
+//
+// versions check:
+// we don't know Comeau prior to version 4245:
+#if __COMO_VERSION__ < 4245
+# error "Compiler not configured - please reconfigure"
+#endif
+//
+// last known and checked version is 4245:
+#if (__COMO_VERSION__ > 4245)
+# if defined(BOOST_ASSERT_CONFIG)
+# error "Unknown compiler version - please run the configure tests and report the results"
+# endif
+#endif
+
+
+
+
diff --git a/include/boost/config/compiler/common_edg.hpp b/include/boost/config/compiler/common_edg.hpp
new file mode 100644
index 0000000..88aba9a
--- /dev/null
+++ b/include/boost/config/compiler/common_edg.hpp
@@ -0,0 +1,160 @@
+// (C) Copyright John Maddock 2001 - 2002.
+// (C) Copyright Jens Maurer 2001.
+// (C) Copyright David Abrahams 2002.
+// (C) Copyright Aleksey Gurtovoy 2002.
+// (C) Copyright Markus Schoepflin 2005.
+// 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 for most recent version.
+
+//
+// Options common to all edg based compilers.
+//
+// This is included from within the individual compiler mini-configs.
+
+#ifndef __EDG_VERSION__
+# error This file requires that __EDG_VERSION__ be defined.
+#endif
+
+#if (__EDG_VERSION__ <= 238)
+# define BOOST_NO_INTEGRAL_INT64_T
+# define BOOST_NO_SFINAE
+#endif
+
+#if (__EDG_VERSION__ <= 240)
+# define BOOST_NO_VOID_RETURNS
+#endif
+
+#if (__EDG_VERSION__ <= 241) && !defined(BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP)
+# define BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
+#endif
+
+#if (__EDG_VERSION__ <= 244) && !defined(BOOST_NO_TEMPLATE_TEMPLATES)
+# define BOOST_NO_TEMPLATE_TEMPLATES
+#endif
+
+#if (__EDG_VERSION__ < 300) && !defined(BOOST_NO_IS_ABSTRACT)
+# define BOOST_NO_IS_ABSTRACT
+#endif
+
+#if (__EDG_VERSION__ <= 303) && !defined(BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL)
+# define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
+#endif
+
+// See also kai.hpp which checks a Kai-specific symbol for EH
+# if !defined(__KCC) && !defined(__EXCEPTIONS) && !defined(BOOST_NO_EXCEPTIONS)
+# define BOOST_NO_EXCEPTIONS
+# endif
+
+# if !defined(__NO_LONG_LONG)
+# define BOOST_HAS_LONG_LONG
+# else
+# define BOOST_NO_LONG_LONG
+# endif
+
+// Not sure what version was the first to support #pragma once, but
+// different EDG-based compilers (e.g. Intel) supported it for ages.
+// Add a proper version check if it causes problems.
+#define BOOST_HAS_PRAGMA_ONCE
+
+//
+// C++0x features
+//
+// See above for BOOST_NO_LONG_LONG
+//
+#if (__EDG_VERSION__ < 310)
+# define BOOST_NO_CXX11_EXTERN_TEMPLATE
+#endif
+#if (__EDG_VERSION__ <= 310)
+// No support for initializer lists
+# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+#endif
+#if (__EDG_VERSION__ < 400)
+# define BOOST_NO_CXX11_VARIADIC_MACROS
+#endif
+
+#define BOOST_NO_CXX11_AUTO_DECLARATIONS
+#define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
+#define BOOST_NO_CXX11_CHAR16_T
+#define BOOST_NO_CXX11_CHAR32_T
+#define BOOST_NO_CXX11_CONSTEXPR
+#define BOOST_NO_CXX11_DECLTYPE
+#define BOOST_NO_CXX11_DECLTYPE_N3276
+#define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
+#define BOOST_NO_CXX11_DELETED_FUNCTIONS
+#define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
+#define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
+#define BOOST_NO_CXX11_LAMBDAS
+#define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
+#define BOOST_NO_CXX11_NOEXCEPT
+#define BOOST_NO_CXX11_NULLPTR
+#define BOOST_NO_CXX11_RANGE_BASED_FOR
+#define BOOST_NO_CXX11_RAW_LITERALS
+#define BOOST_NO_CXX11_RVALUE_REFERENCES
+#define BOOST_NO_CXX11_SCOPED_ENUMS
+#define BOOST_NO_SFINAE_EXPR
+#define BOOST_NO_CXX11_SFINAE_EXPR
+#define BOOST_NO_CXX11_STATIC_ASSERT
+#define BOOST_NO_CXX11_TEMPLATE_ALIASES
+#define BOOST_NO_CXX11_UNICODE_LITERALS
+#define BOOST_NO_CXX11_VARIADIC_TEMPLATES
+#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
+#define BOOST_NO_CXX11_USER_DEFINED_LITERALS
+#define BOOST_NO_CXX11_ALIGNAS
+#define BOOST_NO_CXX11_TRAILING_RESULT_TYPES
+#define BOOST_NO_CXX11_INLINE_NAMESPACES
+#define BOOST_NO_CXX11_REF_QUALIFIERS
+#define BOOST_NO_CXX11_FINAL
+#define BOOST_NO_CXX11_THREAD_LOCAL
+
+// 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_SEPARATORS
+#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
+
+// C++17
+#if !defined(__cpp_structured_bindings) || (__cpp_structured_bindings < 201606)
+# define BOOST_NO_CXX17_STRUCTURED_BINDINGS
+#endif
+#if !defined(__cpp_inline_variables) || (__cpp_inline_variables < 201606)
+# define BOOST_NO_CXX17_INLINE_VARIABLES
+#endif
+#if !defined(__cpp_fold_expressions) || (__cpp_fold_expressions < 201603)
+# define BOOST_NO_CXX17_FOLD_EXPRESSIONS
+#endif
+
+#if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606)
+# define BOOST_NO_CXX17_IF_CONSTEXPR
+#endif
+
+#ifdef c_plusplus
+// EDG has "long long" in non-strict mode
+// However, some libraries have insufficient "long long" support
+// #define BOOST_HAS_LONG_LONG
+#endif
diff --git a/include/boost/config/compiler/compaq_cxx.hpp b/include/boost/config/compiler/compaq_cxx.hpp
new file mode 100644
index 0000000..4d6b8ab
--- /dev/null
+++ b/include/boost/config/compiler/compaq_cxx.hpp
@@ -0,0 +1,19 @@
+// (C) Copyright John Maddock 2001 - 2003.
+// 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 for most recent version.
+
+// Tru64 C++ compiler setup (now HP):
+
+#define BOOST_COMPILER "HP Tru64 C++ " BOOST_STRINGIZE(__DECCXX_VER)
+
+#include <boost/config/compiler/common_edg.hpp>
+
+//
+// versions check:
+// Nothing to do here?
+
+
+
diff --git a/include/boost/config/compiler/cray.hpp b/include/boost/config/compiler/cray.hpp
new file mode 100644
index 0000000..412ef9e
--- /dev/null
+++ b/include/boost/config/compiler/cray.hpp
@@ -0,0 +1,440 @@
+// Copyright 2011 John Maddock
+// Copyright 2013, 2017-2018 Cray, Inc.
+// 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 for most recent version.
+
+// Cray C++ compiler setup.
+//
+// There are a few parameters that affect the macros defined in this file:
+//
+// - What version of CCE (Cray Compiling Environment) are we running? This
+// comes from the '_RELEASE_MAJOR', '_RELEASE_MINOR', and
+// '_RELEASE_PATCHLEVEL' macros.
+// - What C++ standards conformance level are we using (e.g. '-h
+// std=c++14')? This comes from the '__cplusplus' macro.
+// - Are we using GCC extensions ('-h gnu' or '-h nognu')? If we have '-h
+// gnu' then CCE emulates GCC, and the macros '__GNUC__',
+// '__GNUC_MINOR__', and '__GNUC_PATCHLEVEL__' are defined.
+//
+// This file is organized as follows:
+//
+// - Verify that the combination of parameters listed above is supported.
+// If we have an unsupported combination, we abort with '#error'.
+// - Establish baseline values for all Boost macros.
+// - Apply changes to the baseline macros based on compiler version. These
+// changes are cummulative so each version section only describes the
+// changes since the previous version.
+// - Within each version section, we may also apply changes based on
+// other parameters (i.e. C++ standards conformance level and GCC
+// extensions).
+//
+// To test changes to this file:
+//
+// ```
+// module load cce/8.6.5 # Pick the version you want to test.
+// cd boost/libs/config/test/all
+// b2 -j 8 toolset=cray cxxstd=03 cxxstd=11 cxxstd=14 cxxstd-dialect=gnu linkflags=-lrt
+// ```
+// Note: Using 'cxxstd-dialect=iso' is not supported at this time (the
+// tests run, but many tests fail).
+//
+// Note: 'linkflags=-lrt' is needed in Cray Linux Environment. Otherwise
+// you get an 'undefined reference to clock_gettime' error.
+//
+// Note: If a test '*_fail.cpp' file compiles, but fails to run, then it is
+// reported as a defect. However, this is not actually a defect. This is an
+// area where the test system is somewhat broken. Tests that are failing
+// because of this problem are noted in the comments.
+//
+// Pay attention to the macro definitions for the macros you wish to
+// modify. For example, only macros categorized as compiler macros should
+// appear in this file; platform macros should not appear in this file.
+// Also, some macros have to be defined to specific values; it is not
+// always enough to define or undefine a macro.
+//
+// Macro definitions are available in the source code at:
+//
+// `boost/libs/config/doc/html/boost_config/boost_macro_reference.html`
+//
+// Macro definitions are also available online at:
+//
+// http://www.boost.org/doc/libs/master/libs/config/doc/html/boost_config/boost_macro_reference.html
+//
+// Typically, if you enable a feature, and the tests pass, then you have
+// nothing to worry about. However, it's sometimes hard to figure out if a
+// disabled feature needs to stay disabled. To get a list of disabled
+// features, run 'b2' in 'boost/libs/config/checks'. These are the macros
+// you should pay attention to (in addition to macros that cause test
+// failures).
+
+////
+//// Front matter
+////
+
+// In a developer build of the Cray compiler (i.e. a compiler built by a
+// Cray employee), the release patch level is reported as "x". This gives
+// versions that look like e.g. "8.6.x".
+//
+// To accomplish this, the the Cray compiler preprocessor inserts:
+//
+// #define _RELEASE_PATCHLEVEL x
+//
+// If we are using a developer build of the compiler, we want to use the
+// configuration macros for the most recent patch level of the release. To
+// accomplish this, we'll pretend that _RELEASE_PATCHLEVEL is 99.
+//
+// However, it's difficult to detect if _RELEASE_PATCHLEVEL is x. We must
+// consider that the x will be expanded if x is defined as a macro
+// elsewhere. For example, imagine if someone put "-D x=3" on the command
+// line, and _RELEASE_PATCHLEVEL is x. Then _RELEASE_PATCHLEVEL would
+// expand to 3, and we could not distinguish it from an actual
+// _RELEASE_PATCHLEVEL of 3. This problem only affects developer builds; in
+// production builds, _RELEASE_PATCHLEVEL is always an integer.
+//
+// IMPORTANT: In developer builds, if x is defined as a macro, you will get
+// an incorrect configuration. The behavior in this case is undefined.
+//
+// Even if x is not defined, we have to use some trickery to detect if
+// _RELEASE_PATCHLEVEL is x. First we define BOOST_CRAY_x to some arbitrary
+// magic value, 9867657. Then we use BOOST_CRAY_APPEND to append the
+// expanded value of _RELEASE_PATCHLEVEL to the string "BOOST_CRAY_".
+//
+// - If _RELEASE_PATCHLEVEL is undefined, we get "BOOST_CRAY_".
+// - If _RELEASE_PATCHLEVEL is 5, we get "BOOST_CRAY_5".
+// - If _RELEASE_PATCHLEVEL is x (and x is not defined) we get
+// "BOOST_CRAY_x":
+//
+// Then we check if BOOST_CRAY_x is equal to the output of
+// BOOST_CRAY_APPEND. In other words, the output of BOOST_CRAY_APPEND is
+// treated as a macro name, and expanded again. If we can safely assume
+// that BOOST_CRAY_ is not a macro defined as our magic number, and
+// BOOST_CRAY_5 is not a macro defined as our magic number, then the only
+// way the equality test can pass is if _RELEASE_PATCHLEVEL expands to x.
+//
+// So, that is how we detect if we are using a developer build of the Cray
+// compiler.
+
+#define BOOST_CRAY_x 9867657 // Arbitrary number
+#define BOOST_CRAY_APPEND(MACRO) BOOST_CRAY_APPEND_INTERNAL(MACRO)
+#define BOOST_CRAY_APPEND_INTERNAL(MACRO) BOOST_CRAY_##MACRO
+
+#if BOOST_CRAY_x == BOOST_CRAY_APPEND(_RELEASE_PATCHLEVEL)
+
+ // This is a developer build.
+ //
+ // - _RELEASE_PATCHLEVEL is defined as x, and x is not defined as a macro.
+
+ // Pretend _RELEASE_PATCHLEVEL is 99, so we get the configuration for the
+ // most recent patch level in this release.
+
+ #define BOOST_CRAY_VERSION (_RELEASE_MAJOR * 10000 + _RELEASE_MINOR * 100 + 99)
+
+#else
+
+ // This is a production build.
+ //
+ // _RELEASE_PATCHLEVEL is not defined as x, or x is defined as a macro.
+
+ #define BOOST_CRAY_VERSION (_RELEASE_MAJOR * 10000 + _RELEASE_MINOR * 100 + _RELEASE_PATCHLEVEL)
+
+#endif // BOOST_CRAY_x == BOOST_CRAY_APPEND(_RELEASE_PATCHLEVEL)
+
+#undef BOOST_CRAY_APPEND_INTERNAL
+#undef BOOST_CRAY_APPEND
+#undef BOOST_CRAY_x
+
+
+#ifdef __GNUC__
+# define BOOST_GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
+#endif
+
+#ifndef BOOST_COMPILER
+# define BOOST_COMPILER "Cray C++ version " BOOST_STRINGIZE(_RELEASE_MAJOR) "." BOOST_STRINGIZE(_RELEASE_MINOR) "." BOOST_STRINGIZE(_RELEASE_PATCHLEVEL)
+#endif
+
+// Since the Cray compiler defines '__GNUC__', we have to emulate some
+// additional GCC macros in order to make everything work.
+//
+// FIXME: Perhaps Cray should fix the compiler to define these additional
+// macros for GCC emulation?
+
+#if __cplusplus >= 201103L && defined(__GNUC__) && !defined(__GXX_EXPERIMENTAL_CXX0X__)
+# define __GXX_EXPERIMENTAL_CXX0X__ 1
+#endif
+
+////
+//// Parameter validation
+////
+
+// FIXME: Do we really need to support compilers before 8.5? Do they pass
+// the Boost.Config tests?
+
+#if BOOST_CRAY_VERSION < 80000
+# error "Boost is not configured for Cray compilers prior to version 8, please try the configure script."
+#endif
+
+// We only support recent EDG based compilers.
+
+#ifndef __EDG__
+# error "Unsupported Cray compiler, please try running the configure script."
+#endif
+
+////
+//// Baseline values
+////
+
+#include <boost/config/compiler/common_edg.hpp>
+
+#define BOOST_HAS_NRVO
+#define BOOST_NO_COMPLETE_VALUE_INITIALIZATION
+#define BOOST_NO_CXX11_AUTO_DECLARATIONS
+#define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
+#define BOOST_NO_CXX11_CHAR16_T
+#define BOOST_NO_CXX11_CHAR32_T
+#define BOOST_NO_CXX11_CONSTEXPR
+#define BOOST_NO_CXX11_DECLTYPE
+#define BOOST_NO_CXX11_DECLTYPE_N3276
+#define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
+#define BOOST_NO_CXX11_DELETED_FUNCTIONS
+#define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
+#define BOOST_NO_CXX11_FINAL
+#define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
+#define BOOST_NO_CXX11_LAMBDAS
+#define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
+#define BOOST_NO_CXX11_NOEXCEPT
+#define BOOST_NO_CXX11_NULLPTR
+#define BOOST_NO_CXX11_RANGE_BASED_FOR
+#define BOOST_NO_CXX11_RAW_LITERALS
+#define BOOST_NO_CXX11_REF_QUALIFIERS
+#define BOOST_NO_CXX11_RVALUE_REFERENCES
+#define BOOST_NO_CXX11_SCOPED_ENUMS
+#define BOOST_NO_CXX11_SFINAE_EXPR
+#define BOOST_NO_CXX11_STATIC_ASSERT
+#define BOOST_NO_CXX11_TEMPLATE_ALIASES
+#define BOOST_NO_CXX11_THREAD_LOCAL
+#define BOOST_NO_CXX11_UNICODE_LITERALS
+#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
+#define BOOST_NO_CXX11_USER_DEFINED_LITERALS
+#define BOOST_NO_CXX11_VARIADIC_MACROS
+#define BOOST_NO_CXX11_VARIADIC_TEMPLATES
+#define BOOST_NO_SFINAE_EXPR
+#define BOOST_NO_TWO_PHASE_NAME_LOOKUP
+
+//#define BOOST_BCB_PARTIAL_SPECIALIZATION_BUG
+#define BOOST_MATH_DISABLE_STD_FPCLASSIFY
+//#define BOOST_HAS_FPCLASSIFY
+
+#define BOOST_SP_USE_PTHREADS
+#define BOOST_AC_USE_PTHREADS
+
+//
+// Everything that follows is working around what are thought to be
+// compiler shortcomings. Revist all of these regularly.
+//
+
+//#define BOOST_USE_ENUM_STATIC_ASSERT
+//#define BOOST_BUGGY_INTEGRAL_CONSTANT_EXPRESSIONS //(this may be implied by the previous #define
+
+// These constants should be provided by the compiler.
+
+#ifndef __ATOMIC_RELAXED
+#define __ATOMIC_RELAXED 0
+#define __ATOMIC_CONSUME 1
+#define __ATOMIC_ACQUIRE 2
+#define __ATOMIC_RELEASE 3
+#define __ATOMIC_ACQ_REL 4
+#define __ATOMIC_SEQ_CST 5
+#endif
+
+////
+//// Version changes
+////
+
+//
+// 8.5.0
+//
+
+#if BOOST_CRAY_VERSION >= 80500
+
+#if __cplusplus >= 201103L
+
+#undef BOOST_HAS_NRVO
+#undef BOOST_NO_COMPLETE_VALUE_INITIALIZATION
+#undef BOOST_NO_CXX11_AUTO_DECLARATIONS
+#undef BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
+#undef BOOST_NO_CXX11_CHAR16_T
+#undef BOOST_NO_CXX11_CHAR32_T
+#undef BOOST_NO_CXX11_CONSTEXPR
+#undef BOOST_NO_CXX11_DECLTYPE
+#undef BOOST_NO_CXX11_DECLTYPE_N3276
+#undef BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
+#undef BOOST_NO_CXX11_DELETED_FUNCTIONS
+#undef BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
+#undef BOOST_NO_CXX11_FINAL
+#undef BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
+#undef BOOST_NO_CXX11_LAMBDAS
+#undef BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
+#undef BOOST_NO_CXX11_NOEXCEPT
+#undef BOOST_NO_CXX11_NULLPTR
+#undef BOOST_NO_CXX11_RANGE_BASED_FOR
+#undef BOOST_NO_CXX11_RAW_LITERALS
+#undef BOOST_NO_CXX11_REF_QUALIFIERS
+#undef BOOST_NO_CXX11_RVALUE_REFERENCES
+#undef BOOST_NO_CXX11_SCOPED_ENUMS
+#undef BOOST_NO_CXX11_SFINAE_EXPR
+#undef BOOST_NO_CXX11_STATIC_ASSERT
+#undef BOOST_NO_CXX11_TEMPLATE_ALIASES
+#undef BOOST_NO_CXX11_THREAD_LOCAL
+#undef BOOST_NO_CXX11_UNICODE_LITERALS
+#undef BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
+#undef BOOST_NO_CXX11_USER_DEFINED_LITERALS
+#undef BOOST_NO_CXX11_VARIADIC_MACROS
+#undef BOOST_NO_CXX11_VARIADIC_TEMPLATES
+#undef BOOST_NO_SFINAE_EXPR
+#undef BOOST_NO_TWO_PHASE_NAME_LOOKUP
+#undef BOOST_MATH_DISABLE_STD_FPCLASSIFY
+#undef BOOST_SP_USE_PTHREADS
+#undef BOOST_AC_USE_PTHREADS
+
+#define BOOST_HAS_VARIADIC_TMPL
+#define BOOST_HAS_UNISTD_H
+#define BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG
+#define BOOST_HAS_TR1_COMPLEX_OVERLOADS
+#define BOOST_HAS_STDINT_H
+#define BOOST_HAS_STATIC_ASSERT
+#define BOOST_HAS_SIGACTION
+#define BOOST_HAS_SCHED_YIELD
+#define BOOST_HAS_RVALUE_REFS
+#define BOOST_HAS_PTHREADS
+#define BOOST_HAS_PTHREAD_YIELD
+#define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
+#define BOOST_HAS_PARTIAL_STD_ALLOCATOR
+#define BOOST_HAS_NRVO
+#define BOOST_HAS_NL_TYPES_H
+#define BOOST_HAS_NANOSLEEP
+#define BOOST_NO_CXX11_SMART_PTR
+#define BOOST_NO_CXX11_HDR_FUNCTIONAL
+#define BOOST_NO_CXX14_CONSTEXPR
+#define BOOST_HAS_LONG_LONG
+#define BOOST_HAS_FLOAT128
+
+#if __cplusplus < 201402L
+#define BOOST_NO_CXX11_DECLTYPE_N3276
+#endif // __cplusplus < 201402L
+
+#endif // __cplusplus >= 201103L
+
+#endif // BOOST_CRAY_VERSION >= 80500
+
+//
+// 8.6.4
+// (versions prior to 8.6.5 do not define _RELEASE_PATCHLEVEL)
+//
+
+#if BOOST_CRAY_VERSION >= 80600
+
+#if __cplusplus >= 199711L
+#define BOOST_HAS_FLOAT128
+#define BOOST_HAS_PTHREAD_YIELD // This is a platform macro, but it improves test results.
+#define BOOST_NO_COMPLETE_VALUE_INITIALIZATION // This is correct. Test compiles, but fails to run.
+#undef BOOST_NO_CXX11_CHAR16_T
+#undef BOOST_NO_CXX11_CHAR32_T
+#undef BOOST_NO_CXX11_INLINE_NAMESPACES
+#undef BOOST_NO_CXX11_FINAL
+#undef BOOST_NO_CXX11_FIXED_LENGTH_VARIADIC_TEMPLATE_EXPANSION_PACKS
+#undef BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
+#define BOOST_NO_CXX11_SFINAE_EXPR // This is correct, even though '*_fail.cpp' test fails.
+#undef BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
+#undef BOOST_NO_CXX11_VARIADIC_MACROS
+#undef BOOST_NO_CXX11_VARIADIC_TEMPLATES
+// 'BOOST_NO_DEDUCED_TYPENAME' test is broken. The test files are enabled /
+// disabled with an '#ifdef BOOST_DEDUCED_TYPENAME'. However,
+// 'boost/libs/config/include/boost/config/detail/suffix.hpp' ensures that
+// 'BOOST_DEDUCED_TYPENAME' is always defined (the value it is defined as
+// depends on 'BOOST_NO_DEDUCED_TYPENAME'). So, modifying
+// 'BOOST_NO_DEDUCED_TYPENAME' has no effect on which tests are run.
+//
+// The 'no_ded_typename_pass.cpp' test should always compile and run
+// successfully, because 'BOOST_DEDUCED_TYPENAME' must always have an
+// appropriate value (it's not just something that you turn on or off).
+// Therefore, if you wish to test changes to 'BOOST_NO_DEDUCED_TYPENAME',
+// you have to modify 'no_ded_typename_pass.cpp' to unconditionally include
+// 'boost_no_ded_typename.ipp'.
+#undef BOOST_NO_DEDUCED_TYPENAME // This is correct. Test is broken.
+#undef BOOST_NO_SFINAE_EXPR
+#undef BOOST_NO_TWO_PHASE_NAME_LOOKUP
+#endif // __cplusplus >= 199711L
+
+#if __cplusplus >= 201103L
+#undef BOOST_NO_CXX11_ALIGNAS
+#undef BOOST_NO_CXX11_DECLTYPE_N3276
+#define BOOST_NO_CXX11_HDR_ATOMIC
+#undef BOOST_NO_CXX11_HDR_FUNCTIONAL
+#define BOOST_NO_CXX11_HDR_REGEX // This is correct. Test compiles, but fails to run.
+#undef BOOST_NO_CXX11_SFINAE_EXPR
+#undef BOOST_NO_CXX11_SMART_PTR
+#undef BOOST_NO_CXX11_TRAILING_RESULT_TYPES
+#endif // __cplusplus >= 201103L
+
+#if __cplusplus >= 201402L
+#undef BOOST_NO_CXX14_CONSTEXPR
+#define BOOST_NO_CXX14_DIGIT_SEPARATORS
+#endif // __cplusplus == 201402L
+
+#endif // BOOST_CRAY_VERSION >= 80600
+
+//
+// 8.6.5
+// (no change from 8.6.4)
+//
+
+//
+// 8.7.0
+//
+
+#if BOOST_CRAY_VERSION >= 80700
+
+#if __cplusplus >= 199711L
+#endif // __cplusplus >= 199711L
+
+#if __cplusplus >= 201103L
+#undef BOOST_NO_CXX11_HDR_ATOMIC
+#undef BOOST_NO_CXX11_HDR_REGEX
+#endif // __cplusplus >= 201103L
+
+#if __cplusplus >= 201402L
+#endif // __cplusplus == 201402L
+
+#endif // BOOST_CRAY_VERSION >= 80700
+
+//
+// Next release
+//
+
+#if BOOST_CRAY_VERSION > 80799
+
+#if __cplusplus >= 199711L
+#endif // __cplusplus >= 199711L
+
+#if __cplusplus >= 201103L
+#endif // __cplusplus >= 201103L
+
+#if __cplusplus >= 201402L
+#endif // __cplusplus == 201402L
+
+#endif // BOOST_CRAY_VERSION > 80799
+
+////
+//// Remove temporary macros
+////
+
+// I've commented out some '#undef' statements to signify that we purposely
+// want to keep certain macros.
+
+//#undef __GXX_EXPERIMENTAL_CXX0X__
+//#undef BOOST_COMPILER
+#undef BOOST_GCC_VERSION
+#undef BOOST_CRAY_VERSION
diff --git a/include/boost/config/compiler/diab.hpp b/include/boost/config/compiler/diab.hpp
new file mode 100644
index 0000000..943db83
--- /dev/null
+++ b/include/boost/config/compiler/diab.hpp
@@ -0,0 +1,26 @@
+// (C) Copyright Brian Kuhl 2016.
+// 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)
+
+// Check this is a recent EDG based compiler, otherwise we don't support it here:
+
+
+#ifndef __EDG_VERSION__
+# error "Unknown Diab compiler version - please run the configure tests and report the results"
+#endif
+
+#include "boost/config/compiler/common_edg.hpp"
+
+#define BOOST_NO_TWO_PHASE_NAME_LOOKUP
+#define BOOST_BUGGY_INTEGRAL_CONSTANT_EXPRESSIONS
+
+#define BOOST_MPL_CFG_NO_HAS_XXX_TEMPLATE
+#define BOOST_LOG_NO_MEMBER_TEMPLATE_FRIENDS
+#define BOOST_REGEX_NO_EXTERNAL_TEMPLATES
+
+#define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+#define BOOST_NO_CXX11_HDR_CODECVT
+#define BOOST_NO_CXX11_NUMERIC_LIMITS
+
+#define BOOST_COMPILER "Wind River Diab " BOOST_STRINGIZE(__VERSION_NUMBER__)
diff --git a/include/boost/config/compiler/digitalmars.hpp b/include/boost/config/compiler/digitalmars.hpp
new file mode 100644
index 0000000..3e9a3ab
--- /dev/null
+++ b/include/boost/config/compiler/digitalmars.hpp
@@ -0,0 +1,140 @@
+// Copyright (C) Christof Meerwald 2003
+// Copyright (C) Dan Watkins 2003
+//
+// 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)
+
+// Digital Mars C++ compiler setup:
+#define BOOST_COMPILER __DMC_VERSION_STRING__
+
+#define BOOST_HAS_LONG_LONG
+#define BOOST_HAS_PRAGMA_ONCE
+
+#if !defined(BOOST_STRICT_CONFIG)
+#define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
+#define BOOST_NO_OPERATORS_IN_NAMESPACE
+#define BOOST_NO_UNREACHABLE_RETURN_DETECTION
+#define BOOST_NO_SFINAE
+#define BOOST_NO_USING_TEMPLATE
+#define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
+#endif
+
+//
+// has macros:
+#define BOOST_HAS_DIRENT_H
+#define BOOST_HAS_STDINT_H
+#define BOOST_HAS_WINTHREADS
+
+#if (__DMC__ >= 0x847)
+#define BOOST_HAS_EXPM1
+#define BOOST_HAS_LOG1P
+#endif
+
+//
+// Is this really the best way to detect whether the std lib is in namespace std?
+//
+#ifdef __cplusplus
+#include <cstddef>
+#endif
+#if !defined(__STL_IMPORT_VENDOR_CSTD) && !defined(_STLP_IMPORT_VENDOR_CSTD)
+# define BOOST_NO_STDC_NAMESPACE
+#endif
+
+
+// check for exception handling support:
+#if !defined(_CPPUNWIND) && !defined(BOOST_NO_EXCEPTIONS)
+# define BOOST_NO_EXCEPTIONS
+#endif
+
+//
+// C++0x features
+//
+#define BOOST_NO_CXX11_AUTO_DECLARATIONS
+#define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
+#define BOOST_NO_CXX11_CHAR16_T
+#define BOOST_NO_CXX11_CHAR32_T
+#define BOOST_NO_CXX11_CONSTEXPR
+#define BOOST_NO_CXX11_DECLTYPE
+#define BOOST_NO_CXX11_DECLTYPE_N3276
+#define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
+#define BOOST_NO_CXX11_DELETED_FUNCTIONS
+#define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
+#define BOOST_NO_CXX11_EXTERN_TEMPLATE
+#define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+#define BOOST_NO_CXX11_LAMBDAS
+#define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
+#define BOOST_NO_CXX11_NOEXCEPT
+#define BOOST_NO_CXX11_NULLPTR
+#define BOOST_NO_CXX11_RANGE_BASED_FOR
+#define BOOST_NO_CXX11_RAW_LITERALS
+#define BOOST_NO_CXX11_RVALUE_REFERENCES
+#define BOOST_NO_CXX11_SCOPED_ENUMS
+#define BOOST_NO_SFINAE_EXPR
+#define BOOST_NO_CXX11_SFINAE_EXPR
+#define BOOST_NO_CXX11_STATIC_ASSERT
+#define BOOST_NO_CXX11_TEMPLATE_ALIASES
+#define BOOST_NO_CXX11_UNICODE_LITERALS
+#define BOOST_NO_CXX11_VARIADIC_TEMPLATES
+#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
+#define BOOST_NO_CXX11_USER_DEFINED_LITERALS
+#define BOOST_NO_CXX11_ALIGNAS
+#define BOOST_NO_CXX11_TRAILING_RESULT_TYPES
+#define BOOST_NO_CXX11_INLINE_NAMESPACES
+#define BOOST_NO_CXX11_REF_QUALIFIERS
+#define BOOST_NO_CXX11_FINAL
+#define BOOST_NO_CXX11_THREAD_LOCAL
+
+// 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_SEPARATORS
+#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
+
+// C++17
+#if !defined(__cpp_structured_bindings) || (__cpp_structured_bindings < 201606)
+# define BOOST_NO_CXX17_STRUCTURED_BINDINGS
+#endif
+#if !defined(__cpp_inline_variables) || (__cpp_inline_variables < 201606)
+# define BOOST_NO_CXX17_INLINE_VARIABLES
+#endif
+#if !defined(__cpp_fold_expressions) || (__cpp_fold_expressions < 201603)
+# define BOOST_NO_CXX17_FOLD_EXPRESSIONS
+#endif
+#if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606)
+# define BOOST_NO_CXX17_IF_CONSTEXPR
+#endif
+
+#if (__DMC__ <= 0x840)
+#error "Compiler not supported or configured - please reconfigure"
+#endif
+//
+// last known and checked version is ...:
+#if (__DMC__ > 0x848)
+# if defined(BOOST_ASSERT_CONFIG)
+# error "Unknown compiler version - please run the configure tests and report the results"
+# endif
+#endif
diff --git a/include/boost/config/compiler/gcc.hpp b/include/boost/config/compiler/gcc.hpp
new file mode 100644
index 0000000..19ccc59
--- /dev/null
+++ b/include/boost/config/compiler/gcc.hpp
@@ -0,0 +1,359 @@
+// (C) Copyright John Maddock 2001 - 2003.
+// (C) Copyright Darin Adler 2001 - 2002.
+// (C) Copyright Jens Maurer 2001 - 2002.
+// (C) Copyright Beman Dawes 2001 - 2003.
+// (C) Copyright Douglas Gregor 2002.
+// (C) Copyright David Abrahams 2002 - 2003.
+// (C) Copyright Synge Todo 2003.
+// 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 for most recent version.
+
+// GNU C++ compiler setup.
+
+//
+// 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__)
+#define BOOST_GCC BOOST_GCC_VERSION
+#endif
+
+#if defined(__GXX_EXPERIMENTAL_CXX0X__) || (__cplusplus >= 201103L)
+# define BOOST_GCC_CXX11
+#endif
+
+#if __GNUC__ == 3
+# if defined (__PATHSCALE__)
+# define BOOST_NO_TWO_PHASE_NAME_LOOKUP
+# define BOOST_NO_IS_ABSTRACT
+# endif
+
+# if __GNUC_MINOR__ < 4
+# define BOOST_NO_IS_ABSTRACT
+# endif
+# define BOOST_NO_CXX11_EXTERN_TEMPLATE
+#endif
+#if __GNUC__ < 4
+//
+// All problems to gcc-3.x and earlier here:
+//
+#define BOOST_NO_TWO_PHASE_NAME_LOOKUP
+# ifdef __OPEN64__
+# define BOOST_NO_IS_ABSTRACT
+# endif
+#endif
+
+// GCC prior to 3.4 had #pragma once too but it didn't work well with filesystem links
+#if BOOST_GCC_VERSION >= 30400
+#define BOOST_HAS_PRAGMA_ONCE
+#endif
+
+#if BOOST_GCC_VERSION < 40400
+// Previous versions of GCC did not completely implement value-initialization:
+// GCC Bug 30111, "Value-initialization of POD base class doesn't initialize
+// members", reported by Jonathan Wakely in 2006,
+// http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30111 (fixed for GCC 4.4)
+// GCC Bug 33916, "Default constructor fails to initialize array members",
+// reported by Michael Elizabeth Chastain in 2007,
+// http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33916 (fixed for GCC 4.2.4)
+// See also: http://www.boost.org/libs/utility/value_init.htm#compiler_issues
+#define BOOST_NO_COMPLETE_VALUE_INITIALIZATION
+#endif
+
+#if !defined(__EXCEPTIONS) && !defined(BOOST_NO_EXCEPTIONS)
+# define BOOST_NO_EXCEPTIONS
+#endif
+
+
+//
+// Threading support: Turn this on unconditionally here (except for
+// those platforms where we can know for sure). It will get turned off again
+// later if no threading API is detected.
+//
+#if !defined(__MINGW32__) && !defined(linux) && !defined(__linux) && !defined(__linux__)
+# define BOOST_HAS_THREADS
+#endif
+
+//
+// gcc has "long long"
+// Except on Darwin with standard compliance enabled (-pedantic)
+// Apple gcc helpfully defines this macro we can query
+//
+#if !defined(__DARWIN_NO_LONG_LONG)
+# define BOOST_HAS_LONG_LONG
+#endif
+
+//
+// gcc implements the named return value optimization since version 3.1
+//
+#define BOOST_HAS_NRVO
+
+// Branch prediction hints
+#define BOOST_LIKELY(x) __builtin_expect(x, 1)
+#define BOOST_UNLIKELY(x) __builtin_expect(x, 0)
+
+//
+// Dynamic shared object (DSO) and dynamic-link library (DLL) support
+//
+#if __GNUC__ >= 4
+# if defined(_WIN32) || defined(__WIN32__) || defined(WIN32) || defined(__CYGWIN__)
+ // All Win32 development environments, including 64-bit Windows and MinGW, define
+ // _WIN32 or one of its variant spellings. Note that Cygwin is a POSIX environment,
+ // so does not define _WIN32 or its variants, but still supports dllexport/dllimport.
+# define BOOST_HAS_DECLSPEC
+# define BOOST_SYMBOL_EXPORT __attribute__((__dllexport__))
+# define BOOST_SYMBOL_IMPORT __attribute__((__dllimport__))
+# else
+# define BOOST_SYMBOL_EXPORT __attribute__((__visibility__("default")))
+# define BOOST_SYMBOL_IMPORT
+# endif
+# define BOOST_SYMBOL_VISIBLE __attribute__((__visibility__("default")))
+#else
+// config/platform/win32.hpp will define BOOST_SYMBOL_EXPORT, etc., unless already defined
+# define BOOST_SYMBOL_EXPORT
+#endif
+
+//
+// RTTI and typeinfo detection is possible post gcc-4.3:
+//
+#if BOOST_GCC_VERSION > 40300
+# ifndef __GXX_RTTI
+# ifndef BOOST_NO_TYPEID
+# define BOOST_NO_TYPEID
+# endif
+# ifndef BOOST_NO_RTTI
+# define BOOST_NO_RTTI
+# endif
+# endif
+#endif
+
+//
+// Recent GCC versions have __int128 when in 64-bit mode.
+//
+// We disable this if the compiler is really nvcc with C++03 as it
+// doesn't actually support __int128 as of CUDA_VERSION=7500
+// even though it defines __SIZEOF_INT128__.
+// See https://svn.boost.org/trac/boost/ticket/8048
+// https://svn.boost.org/trac/boost/ticket/11852
+// Only re-enable this for nvcc if you're absolutely sure
+// of the circumstances under which it's supported:
+//
+#if defined(__CUDACC__)
+# if defined(BOOST_GCC_CXX11)
+# define BOOST_NVCC_CXX11
+# else
+# define BOOST_NVCC_CXX03
+# endif
+#endif
+
+#if defined(__SIZEOF_INT128__) && !defined(BOOST_NVCC_CXX03)
+# define BOOST_HAS_INT128
+#endif
+//
+// Recent GCC versions have a __float128 native type, we need to
+// include a std lib header to detect this - not ideal, but we'll
+// be including <cstddef> later anyway when we select the std lib.
+//
+// Nevertheless, as of CUDA 7.5, using __float128 with the host
+// compiler in pre-C++11 mode is still not supported.
+// See https://svn.boost.org/trac/boost/ticket/11852
+//
+#ifdef __cplusplus
+#include <cstddef>
+#else
+#include <stddef.h>
+#endif
+#if defined(_GLIBCXX_USE_FLOAT128) && !defined(__STRICT_ANSI__) && !defined(BOOST_NVCC_CXX03)
+# define BOOST_HAS_FLOAT128
+#endif
+
+// C++0x features in 4.3.n and later
+//
+#if (BOOST_GCC_VERSION >= 40300) && defined(BOOST_GCC_CXX11)
+// C++0x features are only enabled when -std=c++0x or -std=gnu++0x are
+// passed on the command line, which in turn defines
+// __GXX_EXPERIMENTAL_CXX0X__.
+# define BOOST_HAS_DECLTYPE
+# define BOOST_HAS_RVALUE_REFS
+# define BOOST_HAS_STATIC_ASSERT
+# define BOOST_HAS_VARIADIC_TMPL
+#else
+# define BOOST_NO_CXX11_DECLTYPE
+# define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
+# define BOOST_NO_CXX11_RVALUE_REFERENCES
+# define BOOST_NO_CXX11_STATIC_ASSERT
+#endif
+
+// C++0x features in 4.4.n and later
+//
+#if (BOOST_GCC_VERSION < 40400) || !defined(BOOST_GCC_CXX11)
+# define BOOST_NO_CXX11_AUTO_DECLARATIONS
+# define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
+# define BOOST_NO_CXX11_CHAR16_T
+# define BOOST_NO_CXX11_CHAR32_T
+# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+# define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
+# define BOOST_NO_CXX11_DELETED_FUNCTIONS
+# define BOOST_NO_CXX11_TRAILING_RESULT_TYPES
+# define BOOST_NO_CXX11_INLINE_NAMESPACES
+# define BOOST_NO_CXX11_VARIADIC_TEMPLATES
+#endif
+
+#if BOOST_GCC_VERSION < 40500
+# define BOOST_NO_SFINAE_EXPR
+#endif
+
+// GCC 4.5 forbids declaration of defaulted functions in private or protected sections
+#if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ == 5) || !defined(BOOST_GCC_CXX11)
+# define BOOST_NO_CXX11_NON_PUBLIC_DEFAULTED_FUNCTIONS
+#endif
+
+// C++0x features in 4.5.0 and later
+//
+#if (BOOST_GCC_VERSION < 40500) || !defined(BOOST_GCC_CXX11)
+# define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
+# define BOOST_NO_CXX11_LAMBDAS
+# define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
+# define BOOST_NO_CXX11_RAW_LITERALS
+# define BOOST_NO_CXX11_UNICODE_LITERALS
+#endif
+
+// C++0x features in 4.5.1 and later
+//
+#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
+// See http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38064
+# define BOOST_NO_CXX11_SCOPED_ENUMS
+#endif
+
+// C++0x features in 4.6.n and later
+//
+#if (BOOST_GCC_VERSION < 40600) || !defined(BOOST_GCC_CXX11)
+#define BOOST_NO_CXX11_CONSTEXPR
+#define BOOST_NO_CXX11_DEFAULTED_MOVES
+#define BOOST_NO_CXX11_NOEXCEPT
+#define BOOST_NO_CXX11_NULLPTR
+#define BOOST_NO_CXX11_RANGE_BASED_FOR
+#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
+#endif
+
+// C++0x features in 4.7.n and later
+//
+#if (BOOST_GCC_VERSION < 40700) || !defined(BOOST_GCC_CXX11)
+# define BOOST_NO_CXX11_FINAL
+# define BOOST_NO_CXX11_TEMPLATE_ALIASES
+# define BOOST_NO_CXX11_USER_DEFINED_LITERALS
+# define BOOST_NO_CXX11_FIXED_LENGTH_VARIADIC_TEMPLATE_EXPANSION_PACKS
+#endif
+
+// C++0x features in 4.8.n and later
+//
+#if (BOOST_GCC_VERSION < 40800) || !defined(BOOST_GCC_CXX11)
+# define BOOST_NO_CXX11_ALIGNAS
+# define BOOST_NO_CXX11_THREAD_LOCAL
+# define BOOST_NO_CXX11_SFINAE_EXPR
+#endif
+
+// C++0x features in 4.8.1 and later
+//
+#if (BOOST_GCC_VERSION < 40801) || !defined(BOOST_GCC_CXX11)
+# define BOOST_NO_CXX11_DECLTYPE_N3276
+# 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_SEPARATORS
+# 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 (BOOST_GCC_VERSION < 50200) || !defined(__cpp_variable_templates) || (__cpp_variable_templates < 201304)
+# define BOOST_NO_CXX14_VARIABLE_TEMPLATES
+#endif
+
+// C++17
+#if !defined(__cpp_structured_bindings) || (__cpp_structured_bindings < 201606)
+# define BOOST_NO_CXX17_STRUCTURED_BINDINGS
+#endif
+#if !defined(__cpp_inline_variables) || (__cpp_inline_variables < 201606)
+# define BOOST_NO_CXX17_INLINE_VARIABLES
+#endif
+#if !defined(__cpp_fold_expressions) || (__cpp_fold_expressions < 201603)
+# define BOOST_NO_CXX17_FOLD_EXPRESSIONS
+#endif
+#if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606)
+# define BOOST_NO_CXX17_IF_CONSTEXPR
+#endif
+
+#if __GNUC__ >= 7
+# define BOOST_FALLTHROUGH __attribute__((fallthrough))
+#endif
+
+#ifdef __MINGW32__
+// Currently (June 2017) thread_local is broken on mingw for all current compiler releases, see
+// https://sourceforge.net/p/mingw-w64/bugs/527/
+// Not setting this causes program termination on thread exit.
+#define BOOST_NO_CXX11_THREAD_LOCAL
+#endif
+
+//
+// Unused attribute:
+#if __GNUC__ >= 4
+# define BOOST_ATTRIBUTE_UNUSED __attribute__((__unused__))
+#endif
+
+// Type aliasing hint. Supported since gcc 3.3.
+#define BOOST_MAY_ALIAS __attribute__((__may_alias__))
+
+//
+// __builtin_unreachable:
+#if BOOST_GCC_VERSION >= 40800
+#define BOOST_UNREACHABLE_RETURN(x) __builtin_unreachable();
+#endif
+
+#ifndef BOOST_COMPILER
+# define BOOST_COMPILER "GNU C++ version " __VERSION__
+#endif
+
+// ConceptGCC compiler:
+// http://www.generic-programming.org/software/ConceptGCC/
+#ifdef __GXX_CONCEPTS__
+# define BOOST_HAS_CONCEPTS
+# define BOOST_COMPILER "ConceptGCC version " __VERSION__
+#endif
+
+// versions check:
+// we don't know gcc prior to version 3.30:
+#if (BOOST_GCC_VERSION< 30300)
+# error "Compiler not configured - please reconfigure"
+#endif
+//
+// last known and checked version is 7.1:
+#if (BOOST_GCC_VERSION > 70100)
+# if defined(BOOST_ASSERT_CONFIG)
+# error "Boost.Config is older than your compiler - please check for an updated Boost release."
+# else
+// we don't emit warnings here anymore since there are no defect macros defined for
+// gcc post 3.4, so any failures are gcc regressions...
+//# warning "Unknown compiler version - please run the configure tests and report the results"
+# endif
+#endif
+
diff --git a/include/boost/config/compiler/gcc_xml.hpp b/include/boost/config/compiler/gcc_xml.hpp
new file mode 100644
index 0000000..bdba4ed
--- /dev/null
+++ b/include/boost/config/compiler/gcc_xml.hpp
@@ -0,0 +1,111 @@
+// (C) Copyright John Maddock 2006.
+// 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 for most recent version.
+
+// GCC-XML C++ compiler setup:
+
+# if !defined(__GCCXML_GNUC__) || ((__GCCXML_GNUC__ <= 3) && (__GCCXML_GNUC_MINOR__ <= 3))
+# define BOOST_NO_IS_ABSTRACT
+# endif
+
+//
+// Threading support: Turn this on unconditionally here (except for
+// those platforms where we can know for sure). It will get turned off again
+// later if no threading API is detected.
+//
+#if !defined(__MINGW32__) && !defined(_MSC_VER) && !defined(linux) && !defined(__linux) && !defined(__linux__)
+# define BOOST_HAS_THREADS
+#endif
+
+//
+// gcc has "long long"
+//
+#define BOOST_HAS_LONG_LONG
+
+// C++0x features:
+//
+# define BOOST_NO_CXX11_CONSTEXPR
+# define BOOST_NO_CXX11_NULLPTR
+# define BOOST_NO_CXX11_TEMPLATE_ALIASES
+# define BOOST_NO_CXX11_DECLTYPE
+# define BOOST_NO_CXX11_DECLTYPE_N3276
+# define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
+# define BOOST_NO_CXX11_RVALUE_REFERENCES
+# define BOOST_NO_CXX11_STATIC_ASSERT
+# define BOOST_NO_CXX11_VARIADIC_TEMPLATES
+# define BOOST_NO_CXX11_VARIADIC_MACROS
+# define BOOST_NO_CXX11_AUTO_DECLARATIONS
+# define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
+# define BOOST_NO_CXX11_CHAR16_T
+# define BOOST_NO_CXX11_CHAR32_T
+# define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
+# define BOOST_NO_CXX11_DELETED_FUNCTIONS
+# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+# define BOOST_NO_CXX11_SCOPED_ENUMS
+# define BOOST_NO_SFINAE_EXPR
+# define BOOST_NO_CXX11_SFINAE_EXPR
+# define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
+# define BOOST_NO_CXX11_LAMBDAS
+# define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
+# define BOOST_NO_CXX11_RANGE_BASED_FOR
+# define BOOST_NO_CXX11_RAW_LITERALS
+# define BOOST_NO_CXX11_UNICODE_LITERALS
+# define BOOST_NO_CXX11_NOEXCEPT
+# define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
+# define BOOST_NO_CXX11_USER_DEFINED_LITERALS
+# define BOOST_NO_CXX11_ALIGNAS
+# define BOOST_NO_CXX11_TRAILING_RESULT_TYPES
+# define BOOST_NO_CXX11_INLINE_NAMESPACES
+# define BOOST_NO_CXX11_REF_QUALIFIERS
+# define BOOST_NO_CXX11_FINAL
+# define BOOST_NO_CXX11_THREAD_LOCAL
+
+// 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_SEPARATORS
+#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
+
+// C++17
+#if !defined(__cpp_structured_bindings) || (__cpp_structured_bindings < 201606)
+# define BOOST_NO_CXX17_STRUCTURED_BINDINGS
+#endif
+#if !defined(__cpp_inline_variables) || (__cpp_inline_variables < 201606)
+# define BOOST_NO_CXX17_INLINE_VARIABLES
+#endif
+#if !defined(__cpp_fold_expressions) || (__cpp_fold_expressions < 201603)
+# define BOOST_NO_CXX17_FOLD_EXPRESSIONS
+#endif
+#if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606)
+# define BOOST_NO_CXX17_IF_CONSTEXPR
+#endif
+
+#define BOOST_COMPILER "GCC-XML C++ version " __GCCXML__
+
+
diff --git a/include/boost/config/compiler/greenhills.hpp b/include/boost/config/compiler/greenhills.hpp
new file mode 100644
index 0000000..a76a07c
--- /dev/null
+++ b/include/boost/config/compiler/greenhills.hpp
@@ -0,0 +1,28 @@
+// (C) Copyright John Maddock 2001.
+// 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 for most recent version.
+
+// Greenhills C++ compiler setup:
+
+#define BOOST_COMPILER "Greenhills C++ version " BOOST_STRINGIZE(__ghs)
+
+#include <boost/config/compiler/common_edg.hpp>
+
+//
+// versions check:
+// we don't support Greenhills prior to version 0:
+#if __ghs < 0
+# error "Compiler not supported or configured - please reconfigure"
+#endif
+//
+// last known and checked version is 0:
+#if (__ghs > 0)
+# if defined(BOOST_ASSERT_CONFIG)
+# error "Unknown compiler version - please run the configure tests and report the results"
+# endif
+#endif
+
+
diff --git a/include/boost/config/compiler/hp_acc.hpp b/include/boost/config/compiler/hp_acc.hpp
new file mode 100644
index 0000000..9df18ea
--- /dev/null
+++ b/include/boost/config/compiler/hp_acc.hpp
@@ -0,0 +1,147 @@
+// (C) Copyright John Maddock 2001 - 2003.
+// (C) Copyright Jens Maurer 2001 - 2003.
+// (C) Copyright Aleksey Gurtovoy 2002.
+// (C) Copyright David Abrahams 2002 - 2003.
+// (C) Copyright Toon Knapen 2003.
+// (C) Copyright Boris Gubenko 2006 - 2007.
+// 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 for most recent version.
+
+// HP aCC C++ compiler setup:
+
+#if defined(__EDG__)
+#include <boost/config/compiler/common_edg.hpp>
+#endif
+
+#if (__HP_aCC <= 33100)
+# define BOOST_NO_INTEGRAL_INT64_T
+# define BOOST_NO_OPERATORS_IN_NAMESPACE
+# if !defined(_NAMESPACE_STD)
+# define BOOST_NO_STD_LOCALE
+# define BOOST_NO_STRINGSTREAM
+# endif
+#endif
+
+#if (__HP_aCC <= 33300)
+// member templates are sufficiently broken that we disable them for now
+# define BOOST_NO_MEMBER_TEMPLATES
+# define BOOST_NO_DEPENDENT_NESTED_DERIVATIONS
+# define BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE
+#endif
+
+#if (__HP_aCC <= 38000)
+# define BOOST_NO_TWO_PHASE_NAME_LOOKUP
+#endif
+
+#if (__HP_aCC > 50000) && (__HP_aCC < 60000)
+# define BOOST_NO_UNREACHABLE_RETURN_DETECTION
+# define BOOST_NO_TEMPLATE_TEMPLATES
+# define BOOST_NO_SWPRINTF
+# define BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS
+# define BOOST_NO_IS_ABSTRACT
+# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
+#endif
+
+// optional features rather than defects:
+#if (__HP_aCC >= 33900)
+# define BOOST_HAS_LONG_LONG
+# define BOOST_HAS_PARTIAL_STD_ALLOCATOR
+#endif
+
+#if (__HP_aCC >= 50000 ) && (__HP_aCC <= 53800 ) || (__HP_aCC < 31300 )
+# define BOOST_NO_MEMBER_TEMPLATE_KEYWORD
+#endif
+
+// This macro should not be defined when compiling in strict ansi
+// mode, but, currently, we don't have the ability to determine
+// what standard mode we are compiling with. Some future version
+// of aCC6 compiler will provide predefined macros reflecting the
+// compilation options, including the standard mode.
+#if (__HP_aCC >= 60000) || ((__HP_aCC > 38000) && defined(__hpxstd98))
+# define BOOST_NO_TWO_PHASE_NAME_LOOKUP
+#endif
+
+#define BOOST_COMPILER "HP aCC version " BOOST_STRINGIZE(__HP_aCC)
+
+//
+// versions check:
+// we don't support HP aCC prior to version 33000:
+#if __HP_aCC < 33000
+# error "Compiler not supported or configured - please reconfigure"
+#endif
+
+//
+// Extended checks for supporting aCC on PA-RISC
+#if __HP_aCC > 30000 && __HP_aCC < 50000
+# if __HP_aCC < 38000
+ // versions prior to version A.03.80 not supported
+# error "Compiler version not supported - version A.03.80 or higher is required"
+# elif !defined(__hpxstd98)
+ // must compile using the option +hpxstd98 with version A.03.80 and above
+# error "Compiler option '+hpxstd98' is required for proper support"
+# endif //PA-RISC
+#endif
+
+//
+// C++0x features
+//
+// See boost\config\suffix.hpp for BOOST_NO_LONG_LONG
+//
+#if !defined(__EDG__)
+
+#define BOOST_NO_CXX11_AUTO_DECLARATIONS
+#define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
+#define BOOST_NO_CXX11_CHAR16_T
+#define BOOST_NO_CXX11_CHAR32_T
+#define BOOST_NO_CXX11_CONSTEXPR
+#define BOOST_NO_CXX11_DECLTYPE
+#define BOOST_NO_CXX11_DECLTYPE_N3276
+#define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
+#define BOOST_NO_CXX11_DELETED_FUNCTIONS
+#define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
+#define BOOST_NO_CXX11_EXTERN_TEMPLATE
+#define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
+#define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+#define BOOST_NO_CXX11_LAMBDAS
+#define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
+#define BOOST_NO_CXX11_NOEXCEPT
+#define BOOST_NO_CXX11_NULLPTR
+#define BOOST_NO_CXX11_RANGE_BASED_FOR
+#define BOOST_NO_CXX11_RAW_LITERALS
+#define BOOST_NO_CXX11_RVALUE_REFERENCES
+#define BOOST_NO_CXX11_SCOPED_ENUMS
+#define BOOST_NO_SFINAE_EXPR
+#define BOOST_NO_CXX11_SFINAE_EXPR
+#define BOOST_NO_CXX11_STATIC_ASSERT
+#define BOOST_NO_CXX11_TEMPLATE_ALIASES
+#define BOOST_NO_CXX11_UNICODE_LITERALS
+#define BOOST_NO_CXX11_VARIADIC_TEMPLATES
+#define BOOST_NO_CXX11_USER_DEFINED_LITERALS
+#define BOOST_NO_CXX11_ALIGNAS
+#define BOOST_NO_CXX11_TRAILING_RESULT_TYPES
+#define BOOST_NO_CXX11_INLINE_NAMESPACES
+#define BOOST_NO_CXX11_REF_QUALIFIERS
+#define BOOST_NO_CXX11_THREAD_LOCAL
+
+/*
+ See https://forums13.itrc.hp.com/service/forums/questionanswer.do?threadId=1443331 and
+ https://forums13.itrc.hp.com/service/forums/questionanswer.do?threadId=1443436
+*/
+
+#if (__HP_aCC < 62500) || !defined(HP_CXX0x_SOURCE)
+ #define BOOST_NO_CXX11_VARIADIC_MACROS
+#endif
+
+#endif
+
+//
+// last known and checked version for HP-UX/ia64 is 61300
+// last known and checked version for PA-RISC is 38000
+#if ((__HP_aCC > 61300) || ((__HP_aCC > 38000) && defined(__hpxstd98)))
+# if defined(BOOST_ASSERT_CONFIG)
+# error "Unknown compiler version - please run the configure tests and report the results"
+# endif
+#endif
diff --git a/include/boost/config/compiler/intel.hpp b/include/boost/config/compiler/intel.hpp
new file mode 100644
index 0000000..0eea05b
--- /dev/null
+++ b/include/boost/config/compiler/intel.hpp
@@ -0,0 +1,564 @@
+// (C) Copyright John Maddock 2001-8.
+// (C) Copyright Peter Dimov 2001.
+// (C) Copyright Jens Maurer 2001.
+// (C) Copyright David Abrahams 2002 - 2003.
+// (C) Copyright Aleksey Gurtovoy 2002 - 2003.
+// (C) Copyright Guillaume Melquiond 2002 - 2003.
+// (C) Copyright Beman Dawes 2003.
+// (C) Copyright Martin Wille 2003.
+// 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 for most recent version.
+
+// Intel compiler setup:
+
+#if defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 1500) && (defined(_MSC_VER) || defined(__GNUC__))
+
+#ifdef _MSC_VER
+
+#include <boost/config/compiler/visualc.hpp>
+
+#undef BOOST_MSVC
+#undef BOOST_MSVC_FULL_VER
+
+#if (__INTEL_COMPILER >= 1500) && (_MSC_VER >= 1900)
+//
+// These appear to be supported, even though VC++ may not support them:
+//
+#define BOOST_HAS_EXPM1
+#define BOOST_HAS_LOG1P
+#undef BOOST_NO_CXX14_BINARY_LITERALS
+// This one may be a little risky to enable??
+#undef BOOST_NO_SFINAE_EXPR
+
+#endif
+
+#if (__INTEL_COMPILER <= 1600) && !defined(BOOST_NO_CXX14_VARIABLE_TEMPLATES)
+# define BOOST_NO_CXX14_VARIABLE_TEMPLATES
+#endif
+
+#else // defined(_MSC_VER)
+
+#include <boost/config/compiler/gcc.hpp>
+
+#undef BOOST_GCC_VERSION
+#undef BOOST_GCC_CXX11
+#undef BOOST_GCC
+
+// 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)
+#if __INTEL_COMPILER == 9999
+# define BOOST_INTEL_CXX_VERSION 1200 // Intel bug in 12.1.
+#else
+# define BOOST_INTEL_CXX_VERSION __INTEL_COMPILER
+#endif
+#elif defined(__ICL)
+# define BOOST_INTEL_CXX_VERSION __ICL
+#elif defined(__ICC)
+# define BOOST_INTEL_CXX_VERSION __ICC
+#elif defined(__ECC)
+# define BOOST_INTEL_CXX_VERSION __ECC
+#endif
+
+// Flags determined by comparing output of 'icpc -dM -E' with and without '-std=c++0x'
+#if (!(defined(_WIN32) || defined(_WIN64)) && defined(__STDC_HOSTED__) && (__STDC_HOSTED__ && (BOOST_INTEL_CXX_VERSION <= 1200))) || defined(__GXX_EXPERIMENTAL_CPP0X__) || defined(__GXX_EXPERIMENTAL_CXX0X__)
+# define BOOST_INTEL_STDCXX0X
+#endif
+#if defined(_MSC_VER) && (_MSC_VER >= 1600)
+# define BOOST_INTEL_STDCXX0X
+#endif
+
+#ifdef __GNUC__
+# define BOOST_INTEL_GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
+#endif
+
+#if !defined(BOOST_COMPILER)
+# if defined(BOOST_INTEL_STDCXX0X)
+# define BOOST_COMPILER "Intel C++ C++0x mode version " BOOST_STRINGIZE(BOOST_INTEL_CXX_VERSION)
+# else
+# define BOOST_COMPILER "Intel C++ version " BOOST_STRINGIZE(BOOST_INTEL_CXX_VERSION)
+# endif
+#endif
+
+#define BOOST_INTEL BOOST_INTEL_CXX_VERSION
+
+#if defined(_WIN32) || defined(_WIN64)
+# define BOOST_INTEL_WIN BOOST_INTEL
+#else
+# define BOOST_INTEL_LINUX BOOST_INTEL
+#endif
+
+#else // defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 1500) && (defined(_MSC_VER) || defined(__GNUC__))
+
+#include <boost/config/compiler/common_edg.hpp>
+
+#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
+#endif
+#elif defined(__ICL)
+# define BOOST_INTEL_CXX_VERSION __ICL
+#elif defined(__ICC)
+# define BOOST_INTEL_CXX_VERSION __ICC
+#elif defined(__ECC)
+# define BOOST_INTEL_CXX_VERSION __ECC
+#endif
+
+// Flags determined by comparing output of 'icpc -dM -E' with and without '-std=c++0x'
+#if (!(defined(_WIN32) || defined(_WIN64)) && defined(__STDC_HOSTED__) && (__STDC_HOSTED__ && (BOOST_INTEL_CXX_VERSION <= 1200))) || defined(__GXX_EXPERIMENTAL_CPP0X__) || defined(__GXX_EXPERIMENTAL_CXX0X__)
+# define BOOST_INTEL_STDCXX0X
+#endif
+#if defined(_MSC_VER) && (_MSC_VER >= 1600)
+# define BOOST_INTEL_STDCXX0X
+#endif
+
+#ifdef __GNUC__
+# define BOOST_INTEL_GCC_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
+#endif
+
+#if !defined(BOOST_COMPILER)
+# if defined(BOOST_INTEL_STDCXX0X)
+# define BOOST_COMPILER "Intel C++ C++0x mode version " BOOST_STRINGIZE(BOOST_INTEL_CXX_VERSION)
+# else
+# define BOOST_COMPILER "Intel C++ version " BOOST_STRINGIZE(BOOST_INTEL_CXX_VERSION)
+# endif
+#endif
+
+#define BOOST_INTEL BOOST_INTEL_CXX_VERSION
+
+#if defined(_WIN32) || defined(_WIN64)
+# define BOOST_INTEL_WIN BOOST_INTEL
+#else
+# define BOOST_INTEL_LINUX BOOST_INTEL
+#endif
+
+#if (BOOST_INTEL_CXX_VERSION <= 600)
+
+# if defined(_MSC_VER) && (_MSC_VER <= 1300) // added check for <= VC 7 (Peter Dimov)
+
+// Boost libraries assume strong standard conformance unless otherwise
+// indicated by a config macro. As configured by Intel, the EDG front-end
+// requires certain compiler options be set to achieve that strong conformance.
+// Particularly /Qoption,c,--arg_dep_lookup (reported by Kirk Klobe & Thomas Witt)
+// and /Zc:wchar_t,forScope. See boost-root/tools/build/intel-win32-tools.jam for
+// details as they apply to particular versions of the compiler. When the
+// compiler does not predefine a macro indicating if an option has been set,
+// this config file simply assumes the option has been set.
+// Thus BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP will not be defined, even if
+// the compiler option is not enabled.
+
+# define BOOST_NO_SWPRINTF
+# endif
+
+// Void returns, 64 bit integrals don't work when emulating VC 6 (Peter Dimov)
+
+# if defined(_MSC_VER) && (_MSC_VER <= 1200)
+# define BOOST_NO_VOID_RETURNS
+# define BOOST_NO_INTEGRAL_INT64_T
+# endif
+
+#endif
+
+#if (BOOST_INTEL_CXX_VERSION <= 710) && defined(_WIN32)
+# define BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS
+#endif
+
+// See http://aspn.activestate.com/ASPN/Mail/Message/boost/1614864
+#if BOOST_INTEL_CXX_VERSION < 600
+# define BOOST_NO_INTRINSIC_WCHAR_T
+#else
+// We should test the macro _WCHAR_T_DEFINED to check if the compiler
+// supports wchar_t natively. *BUT* there is a problem here: the standard
+// headers define this macro if they typedef wchar_t. Anyway, we're lucky
+// because they define it without a value, while Intel C++ defines it
+// to 1. So we can check its value to see if the macro was defined natively
+// or not.
+// Under UNIX, the situation is exactly the same, but the macro _WCHAR_T
+// is used instead.
+# if ((_WCHAR_T_DEFINED + 0) == 0) && ((_WCHAR_T + 0) == 0)
+# define BOOST_NO_INTRINSIC_WCHAR_T
+# endif
+#endif
+
+#if defined(__GNUC__) && !defined(BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL)
+//
+// Figure out when Intel is emulating this gcc bug
+// (All Intel versions prior to 9.0.26, and versions
+// later than that if they are set up to emulate gcc 3.2
+// or earlier):
+//
+# if ((__GNUC__ == 3) && (__GNUC_MINOR__ <= 2)) || (BOOST_INTEL < 900) || (__INTEL_COMPILER_BUILD_DATE < 20050912)
+# define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
+# endif
+#endif
+#if (defined(__GNUC__) && (__GNUC__ < 4)) || (defined(_WIN32) && (BOOST_INTEL_CXX_VERSION <= 1200)) || (BOOST_INTEL_CXX_VERSION <= 1200)
+// GCC or VC emulation:
+#define BOOST_NO_TWO_PHASE_NAME_LOOKUP
+#endif
+//
+// Verify that we have actually got BOOST_NO_INTRINSIC_WCHAR_T
+// set correctly, if we don't do this now, we will get errors later
+// in type_traits code among other things, getting this correct
+// for the Intel compiler is actually remarkably fragile and tricky:
+//
+#ifdef __cplusplus
+#if defined(BOOST_NO_INTRINSIC_WCHAR_T)
+#include <cwchar>
+template< typename T > struct assert_no_intrinsic_wchar_t;
+template<> struct assert_no_intrinsic_wchar_t<wchar_t> { typedef void type; };
+// if you see an error here then you need to unset BOOST_NO_INTRINSIC_WCHAR_T
+// where it is defined above:
+typedef assert_no_intrinsic_wchar_t<unsigned short>::type assert_no_intrinsic_wchar_t_;
+#else
+template< typename T > struct assert_intrinsic_wchar_t;
+template<> struct assert_intrinsic_wchar_t<wchar_t> {};
+// if you see an error here then define BOOST_NO_INTRINSIC_WCHAR_T on the command line:
+template<> struct assert_intrinsic_wchar_t<unsigned short> {};
+#endif
+#endif
+
+#if defined(_MSC_VER) && (_MSC_VER+0 >= 1000)
+# if _MSC_VER >= 1200
+# define BOOST_HAS_MS_INT64
+# endif
+# define BOOST_NO_SWPRINTF
+# define BOOST_NO_TWO_PHASE_NAME_LOOKUP
+#elif defined(_WIN32)
+# define BOOST_DISABLE_WIN32
+#endif
+
+// I checked version 6.0 build 020312Z, it implements the NRVO.
+// Correct this as you find out which version of the compiler
+// implemented the NRVO first. (Daniel Frey)
+#if (BOOST_INTEL_CXX_VERSION >= 600)
+# define BOOST_HAS_NRVO
+#endif
+
+// Branch prediction hints
+// I'm not sure 8.0 was the first version to support these builtins,
+// update the condition if the version is not accurate. (Andrey Semashev)
+#if defined(__GNUC__) && BOOST_INTEL_CXX_VERSION >= 800
+#define BOOST_LIKELY(x) __builtin_expect(x, 1)
+#define BOOST_UNLIKELY(x) __builtin_expect(x, 0)
+#endif
+
+// RTTI
+// __RTTI is the EDG macro
+// __INTEL_RTTI__ is the Intel macro
+// __GXX_RTTI is the g++ macro
+// _CPPRTTI is the MSVC++ macro
+#if !defined(__RTTI) && !defined(__INTEL_RTTI__) && !defined(__GXX_RTTI) && !defined(_CPPRTTI)
+
+#if !defined(BOOST_NO_RTTI)
+# define BOOST_NO_RTTI
+#endif
+
+// in MS mode, static typeid works even when RTTI is off
+#if !defined(_MSC_VER) && !defined(BOOST_NO_TYPEID)
+# define BOOST_NO_TYPEID
+#endif
+
+#endif
+
+//
+// versions check:
+// we don't support Intel prior to version 6.0:
+#if BOOST_INTEL_CXX_VERSION < 600
+# error "Compiler not supported or configured - please reconfigure"
+#endif
+
+// Intel on MacOS requires
+#if defined(__APPLE__) && defined(__INTEL_COMPILER)
+# define BOOST_NO_TWO_PHASE_NAME_LOOKUP
+#endif
+
+// Intel on Altix Itanium
+#if defined(__itanium__) && defined(__INTEL_COMPILER)
+# define BOOST_NO_TWO_PHASE_NAME_LOOKUP
+#endif
+
+//
+// An attempt to value-initialize a pointer-to-member may trigger an
+// internal error on Intel <= 11.1 (last checked version), as was
+// reported by John Maddock, Intel support issue 589832, May 2010.
+// Moreover, according to test results from Huang-Vista-x86_32_intel,
+// intel-vc9-win-11.1 may leave a non-POD array uninitialized, in some
+// cases when it should be value-initialized.
+// (Niels Dekker, LKEB, May 2010)
+// Apparently Intel 12.1 (compiler version number 9999 !!) has the same issue (compiler regression).
+#if defined(__INTEL_COMPILER)
+# if (__INTEL_COMPILER <= 1110) || (__INTEL_COMPILER == 9999) || (defined(_WIN32) && (__INTEL_COMPILER < 1600))
+# define BOOST_NO_COMPLETE_VALUE_INITIALIZATION
+# endif
+#endif
+
+//
+// Dynamic shared object (DSO) and dynamic-link library (DLL) support
+//
+#if defined(__GNUC__) && (__GNUC__ >= 4)
+# define BOOST_SYMBOL_EXPORT __attribute__((visibility("default")))
+# define BOOST_SYMBOL_IMPORT
+# define BOOST_SYMBOL_VISIBLE __attribute__((visibility("default")))
+#endif
+
+// Type aliasing hint
+#if defined(__GNUC__) && (BOOST_INTEL_CXX_VERSION >= 1300)
+# define BOOST_MAY_ALIAS __attribute__((__may_alias__))
+#endif
+
+//
+// C++0x features
+// 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)
+// BOOST_NO_CXX11_CONSTEXPR:
+#if (BOOST_INTEL_CXX_VERSION >= 1500) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40600)) && !defined(_MSC_VER)
+// Available in earlier Intel versions, but fail our tests:
+# undef BOOST_NO_CXX11_CONSTEXPR
+#endif
+// BOOST_NO_CXX11_NULLPTR:
+#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_NULLPTR
+#endif
+// 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
+
+// BOOST_NO_CXX11_DECLTYPE
+#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_DECLTYPE
+#endif
+
+// BOOST_NO_CXX11_DECLTYPE_N3276
+#if (BOOST_INTEL_CXX_VERSION >= 1500) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40800)) && (!defined(_MSC_VER) || (_MSC_FULL_VER >= 180020827))
+# undef BOOST_NO_CXX11_DECLTYPE_N3276
+#endif
+
+// 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
+#endif
+
+// 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
+
+// BOOST_NO_CXX11_STATIC_ASSERT
+#if (BOOST_INTEL_CXX_VERSION >= 1110) && (!defined(BOOST_INTEL_GCC_VERSION) || (BOOST_INTEL_GCC_VERSION >= 40300)) && (!defined(_MSC_VER) || (_MSC_VER >= 1600))
+# undef BOOST_NO_CXX11_STATIC_ASSERT
+#endif
+
+// BOOST_NO_CXX11_VARIADIC_TEMPLATES
+#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_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
+#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_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
+#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
+#endif
+
+// BOOST_NO_CXX11_FINAL
+#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_FINAL
+#endif
+
+#endif // defined(BOOST_INTEL_STDCXX0X)
+
+//
+// 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)
+# define BOOST_NO_CXX11_HDR_FUTURE
+# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+#endif
+
+#if defined(BOOST_INTEL_STDCXX0X) && (BOOST_INTEL_CXX_VERSION == 1400)
+// A regression in Intel's compiler means that <tuple> seems to be broken in this release as well as <future> :
+# define BOOST_NO_CXX11_HDR_FUTURE
+# define BOOST_NO_CXX11_HDR_TUPLE
+#endif
+
+#if (BOOST_INTEL_CXX_VERSION < 1200)
+//
+// fenv.h appears not to work with Intel prior to 12.0:
+//
+# define BOOST_NO_FENV_H
+#endif
+
+// Intel 13.10 fails to access defaulted functions of a base class declared in private or protected sections,
+// producing the following errors:
+// error #453: protected function "..." (declared at ...") is not accessible through a "..." pointer or object
+#if (BOOST_INTEL_CXX_VERSION <= 1310)
+# define BOOST_NO_CXX11_NON_PUBLIC_DEFAULTED_FUNCTIONS
+#endif
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1600)
+# define BOOST_HAS_STDINT_H
+#endif
+
+#if defined(__CUDACC__)
+# if defined(BOOST_GCC_CXX11)
+# define BOOST_NVCC_CXX11
+# else
+# define BOOST_NVCC_CXX03
+# endif
+#endif
+
+#if defined(__LP64__) && defined(__GNUC__) && (BOOST_INTEL_CXX_VERSION >= 1310) && !defined(BOOST_NVCC_CXX03)
+# define BOOST_HAS_INT128
+#endif
+
+#endif // defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 1500) && (defined(_MSC_VER) || defined(__GNUC__))
+//
+// last known and checked version:
+#if (BOOST_INTEL_CXX_VERSION > 1700)
+# if defined(BOOST_ASSERT_CONFIG)
+# error "Boost.Config is older than your compiler - please check for an updated Boost release."
+# elif defined(_MSC_VER)
+//
+// We don't emit this warning any more, since we have so few
+// defect macros set anyway (just the one).
+//
+//# pragma message("Unknown compiler version - please run the configure tests and report the results")
+# endif
+#endif
+
diff --git a/include/boost/config/compiler/kai.hpp b/include/boost/config/compiler/kai.hpp
new file mode 100644
index 0000000..960d501
--- /dev/null
+++ b/include/boost/config/compiler/kai.hpp
@@ -0,0 +1,33 @@
+// (C) Copyright John Maddock 2001.
+// (C) Copyright David Abrahams 2002.
+// (C) Copyright Aleksey Gurtovoy 2002.
+// 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 for most recent version.
+
+// Kai C++ compiler setup:
+
+#include <boost/config/compiler/common_edg.hpp>
+
+# if (__KCC_VERSION <= 4001) || !defined(BOOST_STRICT_CONFIG)
+ // at least on Sun, the contents of <cwchar> is not in namespace std
+# define BOOST_NO_STDC_NAMESPACE
+# endif
+
+// see also common_edg.hpp which needs a special check for __KCC
+# if !defined(_EXCEPTIONS) && !defined(BOOST_NO_EXCEPTIONS)
+# define BOOST_NO_EXCEPTIONS
+# endif
+
+//
+// last known and checked version is 4001:
+#if (__KCC_VERSION > 4001)
+# if defined(BOOST_ASSERT_CONFIG)
+# error "Unknown compiler version - please run the configure tests and report the results"
+# endif
+#endif
+
+
+
diff --git a/include/boost/config/compiler/metrowerks.hpp b/include/boost/config/compiler/metrowerks.hpp
new file mode 100644
index 0000000..4bfc01e
--- /dev/null
+++ b/include/boost/config/compiler/metrowerks.hpp
@@ -0,0 +1,195 @@
+// (C) Copyright John Maddock 2001.
+// (C) Copyright Darin Adler 2001.
+// (C) Copyright Peter Dimov 2001.
+// (C) Copyright David Abrahams 2001 - 2002.
+// (C) Copyright Beman Dawes 2001 - 2003.
+// (C) Copyright Stefan Slapeta 2004.
+// 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 for most recent version.
+
+// Metrowerks C++ compiler setup:
+
+// locale support is disabled when linking with the dynamic runtime
+# ifdef _MSL_NO_LOCALE
+# define BOOST_NO_STD_LOCALE
+# endif
+
+# if __MWERKS__ <= 0x2301 // 5.3
+# define BOOST_NO_FUNCTION_TEMPLATE_ORDERING
+# define BOOST_NO_POINTER_TO_MEMBER_CONST
+# define BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS
+# define BOOST_NO_MEMBER_TEMPLATE_KEYWORD
+# endif
+
+# if __MWERKS__ <= 0x2401 // 6.2
+//# define BOOST_NO_FUNCTION_TEMPLATE_ORDERING
+# endif
+
+# if(__MWERKS__ <= 0x2407) // 7.x
+# define BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS
+# define BOOST_NO_UNREACHABLE_RETURN_DETECTION
+# endif
+
+# if(__MWERKS__ <= 0x3003) // 8.x
+# define BOOST_NO_SFINAE
+# endif
+
+// the "|| !defined(BOOST_STRICT_CONFIG)" part should apply to the last
+// tested version *only*:
+# if(__MWERKS__ <= 0x3207) || !defined(BOOST_STRICT_CONFIG) // 9.6
+# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
+# define BOOST_NO_IS_ABSTRACT
+# endif
+
+#if !__option(wchar_type)
+# define BOOST_NO_INTRINSIC_WCHAR_T
+#endif
+
+#if !__option(exceptions) && !defined(BOOST_NO_EXCEPTIONS)
+# define BOOST_NO_EXCEPTIONS
+#endif
+
+#if (__INTEL__ && _WIN32) || (__POWERPC__ && macintosh)
+# if __MWERKS__ == 0x3000
+# define BOOST_COMPILER_VERSION 8.0
+# elif __MWERKS__ == 0x3001
+# define BOOST_COMPILER_VERSION 8.1
+# elif __MWERKS__ == 0x3002
+# define BOOST_COMPILER_VERSION 8.2
+# elif __MWERKS__ == 0x3003
+# define BOOST_COMPILER_VERSION 8.3
+# elif __MWERKS__ == 0x3200
+# define BOOST_COMPILER_VERSION 9.0
+# elif __MWERKS__ == 0x3201
+# define BOOST_COMPILER_VERSION 9.1
+# elif __MWERKS__ == 0x3202
+# define BOOST_COMPILER_VERSION 9.2
+# elif __MWERKS__ == 0x3204
+# define BOOST_COMPILER_VERSION 9.3
+# elif __MWERKS__ == 0x3205
+# define BOOST_COMPILER_VERSION 9.4
+# elif __MWERKS__ == 0x3206
+# define BOOST_COMPILER_VERSION 9.5
+# elif __MWERKS__ == 0x3207
+# define BOOST_COMPILER_VERSION 9.6
+# else
+# define BOOST_COMPILER_VERSION __MWERKS__
+# endif
+#else
+# define BOOST_COMPILER_VERSION __MWERKS__
+#endif
+
+//
+// C++0x features
+//
+// See boost\config\suffix.hpp for BOOST_NO_LONG_LONG
+//
+#if __MWERKS__ > 0x3206 && __option(rvalue_refs)
+# define BOOST_HAS_RVALUE_REFS
+#else
+# define BOOST_NO_CXX11_RVALUE_REFERENCES
+#endif
+#define BOOST_NO_CXX11_AUTO_DECLARATIONS
+#define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
+#define BOOST_NO_CXX11_CHAR16_T
+#define BOOST_NO_CXX11_CHAR32_T
+#define BOOST_NO_CXX11_CONSTEXPR
+#define BOOST_NO_CXX11_DECLTYPE
+#define BOOST_NO_CXX11_DECLTYPE_N3276
+#define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
+#define BOOST_NO_CXX11_DELETED_FUNCTIONS
+#define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
+#define BOOST_NO_CXX11_EXTERN_TEMPLATE
+#define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
+#define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+#define BOOST_NO_CXX11_LAMBDAS
+#define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
+#define BOOST_NO_CXX11_NOEXCEPT
+#define BOOST_NO_CXX11_NULLPTR
+#define BOOST_NO_CXX11_RANGE_BASED_FOR
+#define BOOST_NO_CXX11_RAW_LITERALS
+#define BOOST_NO_CXX11_SCOPED_ENUMS
+#define BOOST_NO_SFINAE_EXPR
+#define BOOST_NO_CXX11_SFINAE_EXPR
+#define BOOST_NO_CXX11_STATIC_ASSERT
+#define BOOST_NO_CXX11_TEMPLATE_ALIASES
+#define BOOST_NO_CXX11_UNICODE_LITERALS
+#define BOOST_NO_CXX11_VARIADIC_TEMPLATES
+#define BOOST_NO_CXX11_VARIADIC_MACROS
+#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
+#define BOOST_NO_CXX11_USER_DEFINED_LITERALS
+#define BOOST_NO_CXX11_ALIGNAS
+#define BOOST_NO_CXX11_TRAILING_RESULT_TYPES
+#define BOOST_NO_CXX11_INLINE_NAMESPACES
+#define BOOST_NO_CXX11_REF_QUALIFIERS
+#define BOOST_NO_CXX11_FINAL
+#define BOOST_NO_CXX11_THREAD_LOCAL
+
+// 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_SEPARATORS
+#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
+
+// C++17
+#if !defined(__cpp_structured_bindings) || (__cpp_structured_bindings < 201606)
+# define BOOST_NO_CXX17_STRUCTURED_BINDINGS
+#endif
+#if !defined(__cpp_inline_variables) || (__cpp_inline_variables < 201606)
+# define BOOST_NO_CXX17_INLINE_VARIABLES
+#endif
+#if !defined(__cpp_fold_expressions) || (__cpp_fold_expressions < 201603)
+# define BOOST_NO_CXX17_FOLD_EXPRESSIONS
+#endif
+#if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606)
+# define BOOST_NO_CXX17_IF_CONSTEXPR
+#endif
+
+#define BOOST_COMPILER "Metrowerks CodeWarrior C++ version " BOOST_STRINGIZE(BOOST_COMPILER_VERSION)
+
+//
+// versions check:
+// we don't support Metrowerks prior to version 5.3:
+#if __MWERKS__ < 0x2301
+# error "Compiler not supported or configured - please reconfigure"
+#endif
+//
+// last known and checked version:
+#if (__MWERKS__ > 0x3205)
+# if defined(BOOST_ASSERT_CONFIG)
+# error "Unknown compiler version - please run the configure tests and report the results"
+# endif
+#endif
+
+
+
+
+
+
+
diff --git a/include/boost/config/compiler/mpw.hpp b/include/boost/config/compiler/mpw.hpp
new file mode 100644
index 0000000..2292ada
--- /dev/null
+++ b/include/boost/config/compiler/mpw.hpp
@@ -0,0 +1,137 @@
+// (C) Copyright John Maddock 2001 - 2002.
+// (C) Copyright Aleksey Gurtovoy 2002.
+// 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 for most recent version.
+
+// MPW C++ compilers setup:
+
+# if defined(__SC__)
+# define BOOST_COMPILER "MPW SCpp version " BOOST_STRINGIZE(__SC__)
+# elif defined(__MRC__)
+# define BOOST_COMPILER "MPW MrCpp version " BOOST_STRINGIZE(__MRC__)
+# else
+# error "Using MPW compiler configuration by mistake. Please update."
+# endif
+
+//
+// MPW 8.90:
+//
+#if (MPW_CPLUS <= 0x890) || !defined(BOOST_STRICT_CONFIG)
+# define BOOST_NO_CV_SPECIALIZATIONS
+# define BOOST_NO_DEPENDENT_NESTED_DERIVATIONS
+# define BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS
+# define BOOST_NO_INCLASS_MEMBER_INITIALIZATION
+# define BOOST_NO_INTRINSIC_WCHAR_T
+# define BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+# define BOOST_NO_USING_TEMPLATE
+
+# define BOOST_NO_CWCHAR
+# define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
+
+# define BOOST_NO_STD_ALLOCATOR /* actually a bug with const reference overloading */
+
+#endif
+
+//
+// C++0x features
+//
+// See boost\config\suffix.hpp for BOOST_NO_LONG_LONG
+//
+#define BOOST_NO_CXX11_AUTO_DECLARATIONS
+#define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
+#define BOOST_NO_CXX11_CHAR16_T
+#define BOOST_NO_CXX11_CHAR32_T
+#define BOOST_NO_CXX11_CONSTEXPR
+#define BOOST_NO_CXX11_DECLTYPE
+#define BOOST_NO_CXX11_DECLTYPE_N3276
+#define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
+#define BOOST_NO_CXX11_DELETED_FUNCTIONS
+#define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
+#define BOOST_NO_CXX11_EXTERN_TEMPLATE
+#define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
+#define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+#define BOOST_NO_CXX11_LAMBDAS
+#define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
+#define BOOST_NO_CXX11_NOEXCEPT
+#define BOOST_NO_CXX11_NULLPTR
+#define BOOST_NO_CXX11_RANGE_BASED_FOR
+#define BOOST_NO_CXX11_RAW_LITERALS
+#define BOOST_NO_CXX11_RVALUE_REFERENCES
+#define BOOST_NO_CXX11_SCOPED_ENUMS
+#define BOOST_NO_SFINAE_EXPR
+#define BOOST_NO_CXX11_SFINAE_EXPR
+#define BOOST_NO_CXX11_STATIC_ASSERT
+#define BOOST_NO_CXX11_TEMPLATE_ALIASES
+#define BOOST_NO_CXX11_UNICODE_LITERALS
+#define BOOST_NO_CXX11_VARIADIC_TEMPLATES
+#define BOOST_NO_CXX11_VARIADIC_MACROS
+#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
+#define BOOST_NO_CXX11_USER_DEFINED_LITERALS
+#define BOOST_NO_CXX11_ALIGNAS
+#define BOOST_NO_CXX11_TRAILING_RESULT_TYPES
+#define BOOST_NO_CXX11_INLINE_NAMESPACES
+#define BOOST_NO_CXX11_REF_QUALIFIERS
+#define BOOST_NO_CXX11_FINAL
+#define BOOST_NO_CXX11_THREAD_LOCAL
+
+// 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_SEPARATORS
+#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
+
+// C++17
+#if !defined(__cpp_structured_bindings) || (__cpp_structured_bindings < 201606)
+# define BOOST_NO_CXX17_STRUCTURED_BINDINGS
+#endif
+#if !defined(__cpp_inline_variables) || (__cpp_inline_variables < 201606)
+# define BOOST_NO_CXX17_INLINE_VARIABLES
+#endif
+#if !defined(__cpp_fold_expressions) || (__cpp_fold_expressions < 201603)
+# define BOOST_NO_CXX17_FOLD_EXPRESSIONS
+#endif
+#if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606)
+# define BOOST_NO_CXX17_IF_CONSTEXPR
+#endif
+
+//
+// versions check:
+// we don't support MPW prior to version 8.9:
+#if MPW_CPLUS < 0x890
+# error "Compiler not supported or configured - please reconfigure"
+#endif
+//
+// last known and checked version is 0x890:
+#if (MPW_CPLUS > 0x890)
+# if defined(BOOST_ASSERT_CONFIG)
+# error "Unknown compiler version - please run the configure tests and report the results"
+# endif
+#endif
+
+
diff --git a/include/boost/config/compiler/nvcc.hpp b/include/boost/config/compiler/nvcc.hpp
new file mode 100644
index 0000000..ed035fc
--- /dev/null
+++ b/include/boost/config/compiler/nvcc.hpp
@@ -0,0 +1,58 @@
+// (C) Copyright Eric Jourdanneau, Joel Falcou 2010
+// 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 for most recent version.
+
+// NVIDIA CUDA C++ compiler setup
+
+#ifndef BOOST_COMPILER
+# define BOOST_COMPILER "NVIDIA CUDA C++ Compiler"
+#endif
+
+#if defined(__CUDACC_VER_MAJOR__) && defined(__CUDACC_VER_MINOR__) && defined(__CUDACC_VER_BUILD__)
+# define BOOST_CUDA_VERSION (__CUDACC_VER_MAJOR__ * 1000000 + __CUDACC_VER_MINOR__ * 10000 + __CUDACC_VER_BUILD__)
+#else
+// We don't really know what the CUDA version is, but it's definitely before 7.5:
+# define BOOST_CUDA_VERSION 7000000
+#endif
+
+// NVIDIA Specific support
+// BOOST_GPU_ENABLED : Flag a function or a method as being enabled on the host and device
+#define BOOST_GPU_ENABLED __host__ __device__
+
+// A bug in version 7.0 of CUDA prevents use of variadic templates in some occasions
+// https://svn.boost.org/trac/boost/ticket/11897
+// This is fixed in 7.5. As the following version macro was introduced in 7.5 an existance
+// check is enough to detect versions < 7.5
+#if BOOST_CUDA_VERSION < 7050000
+# define BOOST_NO_CXX11_VARIADIC_TEMPLATES
+#endif
+// The same bug is back again in 8.0:
+#if (BOOST_CUDA_VERSION > 8000000) && (BOOST_CUDA_VERSION < 8010000)
+# define BOOST_NO_CXX11_VARIADIC_TEMPLATES
+#endif
+// CUDA (8.0) has no constexpr support in msvc mode:
+#if defined(_MSC_VER) && (BOOST_CUDA_VERSION < 9000000)
+# define BOOST_NO_CXX11_CONSTEXPR
+#endif
+
+#ifdef __CUDACC__
+//
+// When compiing .cu files, there's a bunch of stuff that doesn't work with msvc:
+//
+#if defined(_MSC_VER)
+# define BOOST_NO_CXX14_DIGIT_SEPARATORS
+# define BOOST_NO_CXX11_UNICODE_LITERALS
+#endif
+//
+// And this one effects the NVCC front end,
+// See https://svn.boost.org/trac/boost/ticket/13049
+//
+#if (BOOST_CUDA_VERSION >= 8000000) && (BOOST_CUDA_VERSION < 8010000)
+# define BOOST_NO_CXX11_NOEXCEPT
+#endif
+
+#endif
+
diff --git a/include/boost/config/compiler/pathscale.hpp b/include/boost/config/compiler/pathscale.hpp
new file mode 100644
index 0000000..1318d27
--- /dev/null
+++ b/include/boost/config/compiler/pathscale.hpp
@@ -0,0 +1,135 @@
+// (C) Copyright Bryce Lelbach 2011
+
+// 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 for most recent version.
+
+// PathScale EKOPath C++ Compiler
+
+#ifndef BOOST_COMPILER
+# define BOOST_COMPILER "PathScale EKOPath C++ Compiler version " __PATHSCALE__
+#endif
+
+#if __PATHCC__ >= 6
+// PathCC is based on clang, and supports the __has_*() builtins used
+// to detect features in clang.hpp. Since the clang toolset is much
+// better maintained, it is more convenient to reuse its definitions.
+# include "boost/config/compiler/clang.hpp"
+#elif __PATHCC__ >= 4
+# define BOOST_MSVC6_MEMBER_TEMPLATES
+# define BOOST_HAS_UNISTD_H
+# define BOOST_HAS_STDINT_H
+# define BOOST_HAS_SIGACTION
+# define BOOST_HAS_SCHED_YIELD
+# define BOOST_HAS_THREADS
+# define BOOST_HAS_PTHREADS
+# define BOOST_HAS_PTHREAD_YIELD
+# define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
+# define BOOST_HAS_PARTIAL_STD_ALLOCATOR
+# define BOOST_HAS_NRVO
+# define BOOST_HAS_NL_TYPES_H
+# define BOOST_HAS_NANOSLEEP
+# define BOOST_HAS_LONG_LONG
+# define BOOST_HAS_LOG1P
+# define BOOST_HAS_GETTIMEOFDAY
+# define BOOST_HAS_EXPM1
+# define BOOST_HAS_DIRENT_H
+# define BOOST_HAS_CLOCK_GETTIME
+# define BOOST_NO_CXX11_VARIADIC_TEMPLATES
+# define BOOST_NO_CXX11_UNICODE_LITERALS
+# define BOOST_NO_CXX11_TEMPLATE_ALIASES
+# define BOOST_NO_CXX11_STATIC_ASSERT
+# define BOOST_NO_SFINAE_EXPR
+# define BOOST_NO_CXX11_SFINAE_EXPR
+# define BOOST_NO_CXX11_SCOPED_ENUMS
+# define BOOST_NO_CXX11_RVALUE_REFERENCES
+# define BOOST_NO_CXX11_RANGE_BASED_FOR
+# define BOOST_NO_CXX11_RAW_LITERALS
+# define BOOST_NO_CXX11_NULLPTR
+# define BOOST_NO_CXX11_NUMERIC_LIMITS
+# define BOOST_NO_CXX11_NOEXCEPT
+# define BOOST_NO_CXX11_LAMBDAS
+# define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
+# define BOOST_NO_MS_INT64_NUMERIC_LIMITS
+# define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
+# define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
+# define BOOST_NO_CXX11_DELETED_FUNCTIONS
+# define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
+# define BOOST_NO_CXX11_DECLTYPE
+# define BOOST_NO_CXX11_DECLTYPE_N3276
+# define BOOST_NO_CXX11_CONSTEXPR
+# define BOOST_NO_COMPLETE_VALUE_INITIALIZATION
+# define BOOST_NO_CXX11_CHAR32_T
+# define BOOST_NO_CXX11_CHAR16_T
+# define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
+# define BOOST_NO_CXX11_AUTO_DECLARATIONS
+# define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
+# define BOOST_NO_CXX11_HDR_UNORDERED_SET
+# define BOOST_NO_CXX11_HDR_UNORDERED_MAP
+# define BOOST_NO_CXX11_HDR_TYPEINDEX
+# define BOOST_NO_CXX11_HDR_TUPLE
+# define BOOST_NO_CXX11_HDR_THREAD
+# define BOOST_NO_CXX11_HDR_SYSTEM_ERROR
+# define BOOST_NO_CXX11_HDR_REGEX
+# define BOOST_NO_CXX11_HDR_RATIO
+# define BOOST_NO_CXX11_HDR_RANDOM
+# define BOOST_NO_CXX11_HDR_MUTEX
+# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+# define BOOST_NO_CXX11_HDR_FUTURE
+# define BOOST_NO_CXX11_HDR_FORWARD_LIST
+# define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
+# define BOOST_NO_CXX11_HDR_CODECVT
+# define BOOST_NO_CXX11_HDR_CHRONO
+# define BOOST_NO_CXX11_USER_DEFINED_LITERALS
+# define BOOST_NO_CXX11_ALIGNAS
+# define BOOST_NO_CXX11_TRAILING_RESULT_TYPES
+# define BOOST_NO_CXX11_INLINE_NAMESPACES
+# define BOOST_NO_CXX11_REF_QUALIFIERS
+# define BOOST_NO_CXX11_FINAL
+# define BOOST_NO_CXX11_THREAD_LOCAL
+
+// 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_SEPARATORS
+#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
+
+// C++17
+#if !defined(__cpp_structured_bindings) || (__cpp_structured_bindings < 201606)
+# define BOOST_NO_CXX17_STRUCTURED_BINDINGS
+#endif
+#if !defined(__cpp_inline_variables) || (__cpp_inline_variables < 201606)
+# define BOOST_NO_CXX17_INLINE_VARIABLES
+#endif
+#if !defined(__cpp_fold_expressions) || (__cpp_fold_expressions < 201603)
+# define BOOST_NO_CXX17_FOLD_EXPRESSIONS
+#endif
+#if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606)
+# define BOOST_NO_CXX17_IF_CONSTEXPR
+#endif
+#endif
diff --git a/include/boost/config/compiler/pgi.hpp b/include/boost/config/compiler/pgi.hpp
new file mode 100644
index 0000000..4e909d8
--- /dev/null
+++ b/include/boost/config/compiler/pgi.hpp
@@ -0,0 +1,23 @@
+// (C) Copyright Noel Belcourt 2007.
+// Copyright 2017, NVIDIA CORPORATION.
+// 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 for most recent version.
+
+// PGI C++ compiler setup:
+
+#define BOOST_COMPILER_VERSION __PGIC__##__PGIC_MINOR__
+#define BOOST_COMPILER "PGI compiler version " BOOST_STRINGIZE(BOOST_COMPILER_VERSION)
+
+// PGI is mostly GNU compatible. So start with that.
+#include <boost/config/compiler/gcc.hpp>
+
+// Now adjust for things that are different.
+
+// __float128 is a typedef, not a distinct type.
+#undef BOOST_HAS_FLOAT128
+
+// __int128 is not supported.
+#undef BOOST_HAS_INT128
diff --git a/include/boost/config/compiler/sgi_mipspro.hpp b/include/boost/config/compiler/sgi_mipspro.hpp
new file mode 100644
index 0000000..54433c9
--- /dev/null
+++ b/include/boost/config/compiler/sgi_mipspro.hpp
@@ -0,0 +1,29 @@
+// (C) Copyright John Maddock 2001 - 2002.
+// 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 for most recent version.
+
+// SGI C++ compiler setup:
+
+#define BOOST_COMPILER "SGI Irix compiler version " BOOST_STRINGIZE(_COMPILER_VERSION)
+
+#include <boost/config/compiler/common_edg.hpp>
+
+//
+// Threading support:
+// Turn this on unconditionally here, it will get turned off again later
+// if no threading API is detected.
+//
+#define BOOST_HAS_THREADS
+#define BOOST_NO_TWO_PHASE_NAME_LOOKUP
+
+#undef BOOST_NO_SWPRINTF
+#undef BOOST_DEDUCED_TYPENAME
+
+//
+// version check:
+// probably nothing to do here?
+
+
diff --git a/include/boost/config/compiler/sunpro_cc.hpp b/include/boost/config/compiler/sunpro_cc.hpp
new file mode 100644
index 0000000..41b7bca
--- /dev/null
+++ b/include/boost/config/compiler/sunpro_cc.hpp
@@ -0,0 +1,213 @@
+// (C) Copyright John Maddock 2001.
+// (C) Copyright Jens Maurer 2001 - 2003.
+// (C) Copyright Peter Dimov 2002.
+// (C) Copyright Aleksey Gurtovoy 2002 - 2003.
+// (C) Copyright David Abrahams 2002.
+// 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 for most recent version.
+
+// Sun C++ compiler setup:
+
+# if __SUNPRO_CC <= 0x500
+# define BOOST_NO_MEMBER_TEMPLATES
+# define BOOST_NO_FUNCTION_TEMPLATE_ORDERING
+# endif
+
+# if (__SUNPRO_CC <= 0x520)
+ //
+ // Sunpro 5.2 and earler:
+ //
+ // although sunpro 5.2 supports the syntax for
+ // inline initialization it often gets the value
+ // wrong, especially where the value is computed
+ // from other constants (J Maddock 6th May 2001)
+# define BOOST_NO_INCLASS_MEMBER_INITIALIZATION
+
+ // Although sunpro 5.2 supports the syntax for
+ // partial specialization, it often seems to
+ // bind to the wrong specialization. Better
+ // to disable it until suppport becomes more stable
+ // (J Maddock 6th May 2001).
+# define BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+# endif
+
+# if (__SUNPRO_CC <= 0x530)
+ // Requesting debug info (-g) with Boost.Python results
+ // in an internal compiler error for "static const"
+ // initialized in-class.
+ // >> Assertion: (../links/dbg_cstabs.cc, line 611)
+ // while processing ../test.cpp at line 0.
+ // (Jens Maurer according to Gottfried Ganssauge 04 Mar 2002)
+# define BOOST_NO_INCLASS_MEMBER_INITIALIZATION
+
+ // SunPro 5.3 has better support for partial specialization,
+ // but breaks when compiling std::less<shared_ptr<T> >
+ // (Jens Maurer 4 Nov 2001).
+
+ // std::less specialization fixed as reported by George
+ // Heintzelman; partial specialization re-enabled
+ // (Peter Dimov 17 Jan 2002)
+
+//# define BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+
+ // integral constant expressions with 64 bit numbers fail
+# define BOOST_NO_INTEGRAL_INT64_T
+# endif
+
+# if (__SUNPRO_CC < 0x570)
+# define BOOST_NO_TEMPLATE_TEMPLATES
+ // see http://lists.boost.org/MailArchives/boost/msg47184.php
+ // and http://lists.boost.org/MailArchives/boost/msg47220.php
+# define BOOST_NO_INCLASS_MEMBER_INITIALIZATION
+# define BOOST_NO_SFINAE
+# define BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS
+# endif
+# if (__SUNPRO_CC <= 0x580)
+# define BOOST_NO_IS_ABSTRACT
+# endif
+
+# if (__SUNPRO_CC <= 0x5100)
+ // Sun 5.10 may not correctly value-initialize objects of
+ // some user defined types, as was reported in April 2010
+ // (CR 6947016), and confirmed by Steve Clamage.
+ // (Niels Dekker, LKEB, May 2010).
+# define BOOST_NO_COMPLETE_VALUE_INITIALIZATION
+# endif
+
+//
+// Dynamic shared object (DSO) and dynamic-link library (DLL) support
+//
+#if __SUNPRO_CC > 0x500
+# define BOOST_SYMBOL_EXPORT __global
+# define BOOST_SYMBOL_IMPORT __global
+# define BOOST_SYMBOL_VISIBLE __global
+#endif
+
+#if (__SUNPRO_CC < 0x5130)
+// C++03 features in 12.4:
+#define BOOST_NO_TWO_PHASE_NAME_LOOKUP
+#define BOOST_NO_SFINAE_EXPR
+#define BOOST_NO_ADL_BARRIER
+#define BOOST_NO_CXX11_VARIADIC_MACROS
+#endif
+
+#if (__SUNPRO_CC < 0x5130) || (__cplusplus < 201100)
+// C++11 only featuires in 12.4:
+#define BOOST_NO_CXX11_AUTO_DECLARATIONS
+#define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
+#define BOOST_NO_CXX11_CHAR16_T
+#define BOOST_NO_CXX11_CHAR32_T
+#define BOOST_NO_CXX11_CONSTEXPR
+#define BOOST_NO_CXX11_DECLTYPE
+#define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
+#define BOOST_NO_CXX11_DELETED_FUNCTIONS
+#define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
+#define BOOST_NO_CXX11_EXTERN_TEMPLATE
+#define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
+#define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+#define BOOST_NO_CXX11_LAMBDAS
+#define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
+#define BOOST_NO_CXX11_NOEXCEPT
+#define BOOST_NO_CXX11_NULLPTR
+#define BOOST_NO_CXX11_RANGE_BASED_FOR
+#define BOOST_NO_CXX11_RAW_LITERALS
+#define BOOST_NO_CXX11_RVALUE_REFERENCES
+#define BOOST_NO_CXX11_SCOPED_ENUMS
+#define BOOST_NO_CXX11_STATIC_ASSERT
+#define BOOST_NO_CXX11_TEMPLATE_ALIASES
+#define BOOST_NO_CXX11_UNICODE_LITERALS
+#define BOOST_NO_CXX11_ALIGNAS
+#define BOOST_NO_CXX11_TRAILING_RESULT_TYPES
+#define BOOST_NO_CXX11_INLINE_NAMESPACES
+#define BOOST_NO_CXX11_FINAL
+#endif
+
+#if (__SUNPRO_CC < 0x5140) || (__cplusplus < 201103)
+#define BOOST_NO_CXX11_VARIADIC_TEMPLATES
+#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
+#define BOOST_NO_CXX11_FIXED_LENGTH_VARIADIC_TEMPLATE_EXPANSION_PACKS
+#define BOOST_NO_CXX11_DECLTYPE_N3276
+#define BOOST_NO_CXX11_USER_DEFINED_LITERALS
+#define BOOST_NO_CXX11_REF_QUALIFIERS
+#define BOOST_NO_CXX11_THREAD_LOCAL
+#endif
+
+#define BOOST_NO_COMPLETE_VALUE_INITIALIZATION
+//
+// C++0x features
+//
+# define BOOST_HAS_LONG_LONG
+
+#define BOOST_NO_CXX11_SFINAE_EXPR
+
+// 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) || (__cplusplus < 201402L)
+# define BOOST_NO_CXX14_DECLTYPE_AUTO
+#endif
+#if (__cplusplus < 201304) // There's no SD6 check for this....
+# define BOOST_NO_CXX14_DIGIT_SEPARATORS
+#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
+
+// C++17
+#if !defined(__cpp_structured_bindings) || (__cpp_structured_bindings < 201606)
+# define BOOST_NO_CXX17_STRUCTURED_BINDINGS
+#endif
+#if !defined(__cpp_inline_variables) || (__cpp_inline_variables < 201606)
+# define BOOST_NO_CXX17_INLINE_VARIABLES
+#endif
+#if !defined(__cpp_fold_expressions) || (__cpp_fold_expressions < 201603)
+# define BOOST_NO_CXX17_FOLD_EXPRESSIONS
+#endif
+#if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606)
+# define BOOST_NO_CXX17_IF_CONSTEXPR
+#endif
+
+// Turn on threading support for Solaris 12.
+// Ticket #11972
+#if (__SUNPRO_CC >= 0x5140) && defined(__SunOS_5_12) && !defined(BOOST_HAS_THREADS)
+# define BOOST_HAS_THREADS
+#endif
+
+//
+// Version
+//
+
+#define BOOST_COMPILER "Sun compiler version " BOOST_STRINGIZE(__SUNPRO_CC)
+
+//
+// versions check:
+// we don't support sunpro prior to version 4:
+#if __SUNPRO_CC < 0x400
+#error "Compiler not supported or configured - please reconfigure"
+#endif
+//
+// last known and checked version:
+#if (__SUNPRO_CC > 0x5150)
+# if defined(BOOST_ASSERT_CONFIG)
+# error "Boost.Config is older than your compiler - please check for an updated Boost release."
+# endif
+#endif
diff --git a/include/boost/config/compiler/vacpp.hpp b/include/boost/config/compiler/vacpp.hpp
new file mode 100644
index 0000000..cabe844
--- /dev/null
+++ b/include/boost/config/compiler/vacpp.hpp
@@ -0,0 +1,183 @@
+// (C) Copyright John Maddock 2001 - 2003.
+// (C) Copyright Toon Knapen 2001 - 2003.
+// (C) Copyright Lie-Quan Lee 2001.
+// (C) Copyright Markus Schoepflin 2002 - 2003.
+// (C) Copyright Beman Dawes 2002 - 2003.
+// 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 for most recent version.
+
+// Visual Age (IBM) C++ compiler setup:
+
+#if __IBMCPP__ <= 501
+# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
+# define BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS
+#endif
+
+#if (__IBMCPP__ <= 502)
+// Actually the compiler supports inclass member initialization but it
+// requires a definition for the class member and it doesn't recognize
+// it as an integral constant expression when used as a template argument.
+# define BOOST_NO_INCLASS_MEMBER_INITIALIZATION
+# define BOOST_NO_INTEGRAL_INT64_T
+# define BOOST_NO_MEMBER_TEMPLATE_KEYWORD
+#endif
+
+#if (__IBMCPP__ <= 600) || !defined(BOOST_STRICT_CONFIG)
+# define BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS
+#endif
+
+#if (__IBMCPP__ <= 1110)
+// XL C++ V11.1 and earlier versions may not always value-initialize
+// a temporary object T(), when T is a non-POD aggregate class type.
+// Michael Wong (IBM Canada Ltd) has confirmed this issue and gave it
+// high priority. -- Niels Dekker (LKEB), May 2010.
+# define BOOST_NO_COMPLETE_VALUE_INITIALIZATION
+#endif
+
+//
+// On AIX thread support seems to be indicated by _THREAD_SAFE:
+//
+#ifdef _THREAD_SAFE
+# define BOOST_HAS_THREADS
+#endif
+
+#define BOOST_COMPILER "IBM Visual Age version " BOOST_STRINGIZE(__IBMCPP__)
+
+//
+// versions check:
+// we don't support Visual age prior to version 5:
+#if __IBMCPP__ < 500
+#error "Compiler not supported or configured - please reconfigure"
+#endif
+//
+// last known and checked version is 1210:
+#if (__IBMCPP__ > 1210)
+# if defined(BOOST_ASSERT_CONFIG)
+# error "Unknown compiler version - please run the configure tests and report the results"
+# endif
+#endif
+
+// Some versions of the compiler have issues with default arguments on partial specializations
+#if __IBMCPP__ <= 1010
+#define BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS
+#endif
+
+// Type aliasing hint. Supported since XL C++ 13.1
+#if (__IBMCPP__ >= 1310)
+# define BOOST_MAY_ALIAS __attribute__((__may_alias__))
+#endif
+
+//
+// C++0x features
+//
+// See boost\config\suffix.hpp for BOOST_NO_LONG_LONG
+//
+#if ! __IBMCPP_AUTO_TYPEDEDUCTION
+# define BOOST_NO_CXX11_AUTO_DECLARATIONS
+# define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
+#endif
+#if ! __IBMCPP_UTF_LITERAL__
+# define BOOST_NO_CXX11_CHAR16_T
+# define BOOST_NO_CXX11_CHAR32_T
+#endif
+#if ! __IBMCPP_CONSTEXPR
+# define BOOST_NO_CXX11_CONSTEXPR
+#endif
+#if ! __IBMCPP_DECLTYPE
+# define BOOST_NO_CXX11_DECLTYPE
+#else
+# define BOOST_HAS_DECLTYPE
+#endif
+#define BOOST_NO_CXX11_DECLTYPE_N3276
+#define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
+#define BOOST_NO_CXX11_DELETED_FUNCTIONS
+#if ! __IBMCPP_EXPLICIT_CONVERSION_OPERATORS
+# define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
+#endif
+#if ! __IBMCPP_EXTERN_TEMPLATE
+# define BOOST_NO_CXX11_EXTERN_TEMPLATE
+#endif
+#if ! __IBMCPP_VARIADIC_TEMPLATES
+// not enabled separately at this time
+# define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
+#endif
+#define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+#define BOOST_NO_CXX11_LAMBDAS
+#define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
+#define BOOST_NO_CXX11_NOEXCEPT
+#define BOOST_NO_CXX11_NULLPTR
+#define BOOST_NO_CXX11_RANGE_BASED_FOR
+#define BOOST_NO_CXX11_RAW_LITERALS
+#define BOOST_NO_CXX11_USER_DEFINED_LITERALS
+#if ! __IBMCPP_RVALUE_REFERENCES
+# define BOOST_NO_CXX11_RVALUE_REFERENCES
+#endif
+#if ! __IBMCPP_SCOPED_ENUM
+# define BOOST_NO_CXX11_SCOPED_ENUMS
+#endif
+#define BOOST_NO_SFINAE_EXPR
+#define BOOST_NO_CXX11_SFINAE_EXPR
+#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
+#if ! __IBMCPP_STATIC_ASSERT
+# define BOOST_NO_CXX11_STATIC_ASSERT
+#endif
+#define BOOST_NO_CXX11_TEMPLATE_ALIASES
+#define BOOST_NO_CXX11_UNICODE_LITERALS
+#if ! __IBMCPP_VARIADIC_TEMPLATES
+# define BOOST_NO_CXX11_VARIADIC_TEMPLATES
+#endif
+#if ! __C99_MACRO_WITH_VA_ARGS
+# define BOOST_NO_CXX11_VARIADIC_MACROS
+#endif
+#define BOOST_NO_CXX11_ALIGNAS
+#define BOOST_NO_CXX11_TRAILING_RESULT_TYPES
+#define BOOST_NO_CXX11_INLINE_NAMESPACES
+#define BOOST_NO_CXX11_REF_QUALIFIERS
+#define BOOST_NO_CXX11_FINAL
+#define BOOST_NO_CXX11_THREAD_LOCAL
+
+// 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_SEPARATORS
+#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
+
+// C++17
+#if !defined(__cpp_structured_bindings) || (__cpp_structured_bindings < 201606)
+# define BOOST_NO_CXX17_STRUCTURED_BINDINGS
+#endif
+#if !defined(__cpp_inline_variables) || (__cpp_inline_variables < 201606)
+# define BOOST_NO_CXX17_INLINE_VARIABLES
+#endif
+#if !defined(__cpp_fold_expressions) || (__cpp_fold_expressions < 201603)
+# define BOOST_NO_CXX17_FOLD_EXPRESSIONS
+#endif
+#if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606)
+# define BOOST_NO_CXX17_IF_CONSTEXPR
+#endif
diff --git a/include/boost/config/compiler/visualc.hpp b/include/boost/config/compiler/visualc.hpp
new file mode 100644
index 0000000..ded7284
--- /dev/null
+++ b/include/boost/config/compiler/visualc.hpp
@@ -0,0 +1,355 @@
+// (C) Copyright John Maddock 2001 - 2003.
+// (C) Copyright Darin Adler 2001 - 2002.
+// (C) Copyright Peter Dimov 2001.
+// (C) Copyright Aleksey Gurtovoy 2002.
+// (C) Copyright David Abrahams 2002 - 2003.
+// (C) Copyright Beman Dawes 2002 - 2003.
+// 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 for most recent version.
+//
+// Microsoft Visual C++ compiler setup:
+//
+// We need to be careful with the checks in this file, as contrary
+// to popular belief there are versions with _MSC_VER with the final
+// digit non-zero (mainly the MIPS cross compiler).
+//
+// So we either test _MSC_VER >= XXXX or else _MSC_VER < XXXX.
+// No other comparisons (==, >, or <=) are safe.
+//
+
+#define BOOST_MSVC _MSC_VER
+
+//
+// Helper macro BOOST_MSVC_FULL_VER for use in Boost code:
+//
+#if _MSC_FULL_VER > 100000000
+# define BOOST_MSVC_FULL_VER _MSC_FULL_VER
+#else
+# define BOOST_MSVC_FULL_VER (_MSC_FULL_VER * 10)
+#endif
+
+// Attempt to suppress VC6 warnings about the length of decorated names (obsolete):
+#pragma warning( disable : 4503 ) // warning: decorated name length exceeded
+
+#define BOOST_HAS_PRAGMA_ONCE
+
+//
+// versions check:
+// we don't support Visual C++ prior to version 7.1:
+#if _MSC_VER < 1310
+# error "Compiler not supported or configured - please reconfigure"
+#endif
+
+#if _MSC_FULL_VER < 180020827
+# define BOOST_NO_FENV_H
+#endif
+
+#if _MSC_VER < 1400
+// although a conforming signature for swprint exists in VC7.1
+// it appears not to actually work:
+# define BOOST_NO_SWPRINTF
+// Our extern template tests also fail for this compiler:
+# define BOOST_NO_CXX11_EXTERN_TEMPLATE
+// Variadic macros do not exist for VC7.1 and lower
+# define BOOST_NO_CXX11_VARIADIC_MACROS
+# define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
+#endif
+
+#if _MSC_VER < 1500 // 140X == VC++ 8.0
+# define BOOST_NO_MEMBER_TEMPLATE_FRIENDS
+#endif
+
+#if _MSC_VER < 1600 // 150X == VC++ 9.0
+ // A bug in VC9:
+# define BOOST_NO_ADL_BARRIER
+#endif
+
+
+#ifndef _NATIVE_WCHAR_T_DEFINED
+# define BOOST_NO_INTRINSIC_WCHAR_T
+#endif
+
+//
+// check for exception handling support:
+#if !defined(_CPPUNWIND) && !defined(BOOST_NO_EXCEPTIONS)
+# define BOOST_NO_EXCEPTIONS
+#endif
+
+//
+// __int64 support:
+//
+#define BOOST_HAS_MS_INT64
+#if defined(_MSC_EXTENSIONS) || (_MSC_VER >= 1400)
+# define BOOST_HAS_LONG_LONG
+#else
+# define BOOST_NO_LONG_LONG
+#endif
+#if (_MSC_VER >= 1400) && !defined(_DEBUG)
+# define BOOST_HAS_NRVO
+#endif
+#if _MSC_VER >= 1600 // 160X == VC++ 10.0
+# define BOOST_HAS_PRAGMA_DETECT_MISMATCH
+#endif
+//
+// disable Win32 API's if compiler extensions are
+// turned off:
+//
+#if !defined(_MSC_EXTENSIONS) && !defined(BOOST_DISABLE_WIN32)
+# define BOOST_DISABLE_WIN32
+#endif
+#if !defined(_CPPRTTI) && !defined(BOOST_NO_RTTI)
+# define BOOST_NO_RTTI
+#endif
+
+//
+// TR1 features:
+//
+#if (_MSC_VER >= 1700) && defined(_HAS_CXX17) && (_HAS_CXX17 > 0)
+// # define BOOST_HAS_TR1_HASH // don't know if this is true yet.
+// # define BOOST_HAS_TR1_TYPE_TRAITS // don't know if this is true yet.
+# define BOOST_HAS_TR1_UNORDERED_MAP
+# define BOOST_HAS_TR1_UNORDERED_SET
+#endif
+
+//
+// C++0x features
+//
+// See above for BOOST_NO_LONG_LONG
+
+// C++ features supported by VC++ 10 (aka 2010)
+//
+#if _MSC_VER < 1600
+# define BOOST_NO_CXX11_AUTO_DECLARATIONS
+# define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
+# define BOOST_NO_CXX11_LAMBDAS
+# define BOOST_NO_CXX11_RVALUE_REFERENCES
+# define BOOST_NO_CXX11_STATIC_ASSERT
+# define BOOST_NO_CXX11_NULLPTR
+# define BOOST_NO_CXX11_DECLTYPE
+#endif // _MSC_VER < 1600
+
+#if _MSC_VER >= 1600
+# define BOOST_HAS_STDINT_H
+#endif
+
+// C++11 features supported by VC++ 11 (aka 2012)
+//
+#if _MSC_VER < 1700
+# define BOOST_NO_CXX11_FINAL
+# define BOOST_NO_CXX11_RANGE_BASED_FOR
+# define BOOST_NO_CXX11_SCOPED_ENUMS
+#endif // _MSC_VER < 1700
+
+// C++11 features supported by VC++ 12 (aka 2013).
+//
+#if _MSC_FULL_VER < 180020827
+# define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
+# define BOOST_NO_CXX11_DELETED_FUNCTIONS
+# define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
+# define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
+# define BOOST_NO_CXX11_RAW_LITERALS
+# define BOOST_NO_CXX11_TEMPLATE_ALIASES
+# define BOOST_NO_CXX11_TRAILING_RESULT_TYPES
+# define BOOST_NO_CXX11_VARIADIC_TEMPLATES
+# define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
+# define BOOST_NO_CXX11_DECLTYPE_N3276
+#endif
+
+#if _MSC_FULL_VER >= 180020827
+#define BOOST_HAS_EXPM1
+#define BOOST_HAS_LOG1P
+#endif
+
+// C++11 features supported by VC++ 14 (aka 2015)
+//
+#if (_MSC_FULL_VER < 190023026)
+# define BOOST_NO_CXX11_NOEXCEPT
+# define BOOST_NO_CXX11_DEFAULTED_MOVES
+# define BOOST_NO_CXX11_REF_QUALIFIERS
+# define BOOST_NO_CXX11_USER_DEFINED_LITERALS
+# define BOOST_NO_CXX11_ALIGNAS
+# define BOOST_NO_CXX11_INLINE_NAMESPACES
+# define BOOST_NO_CXX11_CHAR16_T
+# define BOOST_NO_CXX11_CHAR32_T
+# define BOOST_NO_CXX11_UNICODE_LITERALS
+# define BOOST_NO_CXX14_DECLTYPE_AUTO
+# define BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES
+# define BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION
+# define BOOST_NO_CXX14_BINARY_LITERALS
+# define BOOST_NO_CXX14_GENERIC_LAMBDAS
+# define BOOST_NO_CXX14_DIGIT_SEPARATORS
+# define BOOST_NO_CXX11_THREAD_LOCAL
+#endif
+// C++11 features supported by VC++ 14 update 3 (aka 2015)
+//
+#if (_MSC_FULL_VER < 190024210)
+# define BOOST_NO_CXX14_VARIABLE_TEMPLATES
+# define BOOST_NO_SFINAE_EXPR
+# define BOOST_NO_CXX11_CONSTEXPR
+#endif
+
+// C++14 features supported by VC++ 14.1 (Visual Studio 2017)
+//
+#if (_MSC_VER < 1910)
+# define BOOST_NO_CXX14_AGGREGATE_NSDMI
+#endif
+
+// C++17 features supported by VC++ 14.1 (Visual Studio 2017) Update 3
+//
+#if (_MSC_VER < 1911) || (_MSVC_LANG < 201703)
+# define BOOST_NO_CXX17_STRUCTURED_BINDINGS
+# define BOOST_NO_CXX17_IF_CONSTEXPR
+#endif
+
+// MSVC including version 14 has not yet completely
+// implemented value-initialization, as is reported:
+// "VC++ does not value-initialize members of derived classes without
+// user-declared constructor", reported in 2009 by Sylvester Hesp:
+// https://connect.microsoft.com/VisualStudio/feedback/details/484295
+// "Presence of copy constructor breaks member class initialization",
+// reported in 2009 by Alex Vakulenko:
+// https://connect.microsoft.com/VisualStudio/feedback/details/499606
+// "Value-initialization in new-expression", reported in 2005 by
+// Pavel Kuznetsov (MetaCommunications Engineering):
+// https://connect.microsoft.com/VisualStudio/feedback/details/100744
+// Reported again by John Maddock in 2015 for VC14:
+// https://connect.microsoft.com/VisualStudio/feedback/details/1582233/c-subobjects-still-not-value-initialized-correctly
+// See also: http://www.boost.org/libs/utility/value_init.htm#compiler_issues
+// (Niels Dekker, LKEB, May 2010)
+// Still present in VC15.5, Dec 2017.
+#define BOOST_NO_COMPLETE_VALUE_INITIALIZATION
+//
+// C++ 11:
+//
+// This is supported with /permissive- for 15.5 onwards, unfortunately we appear to have no way to tell
+// if this is in effect or not, in any case nothing in Boost is currently using this, so we'll just go
+// on defining it for now:
+//
+# define BOOST_NO_TWO_PHASE_NAME_LOOKUP
+
+#if (_MSC_VER < 1912) || (_MSVC_LANG < 201402)
+// Supported from msvc-15.5 onwards:
+#define BOOST_NO_CXX11_SFINAE_EXPR
+#endif
+// C++ 14:
+// Still gives internal compiler error for msvc-15.5:
+# define BOOST_NO_CXX14_CONSTEXPR
+// C++ 17:
+#if (_MSC_VER < 1912) || (_MSVC_LANG < 201703)
+#define BOOST_NO_CXX17_INLINE_VARIABLES
+#define BOOST_NO_CXX17_FOLD_EXPRESSIONS
+#endif
+
+//
+// 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:
+//
+#ifndef BOOST_ABI_PREFIX
+# define BOOST_ABI_PREFIX "boost/config/abi/msvc_prefix.hpp"
+#endif
+#ifndef BOOST_ABI_SUFFIX
+# define BOOST_ABI_SUFFIX "boost/config/abi/msvc_suffix.hpp"
+#endif
+
+#ifndef BOOST_COMPILER
+// TODO:
+// these things are mostly bogus. 1200 means version 12.0 of the compiler. The
+// artificial versions assigned to them only refer to the versions of some IDE
+// these compilers have been shipped with, and even that is not all of it. Some
+// were shipped with freely downloadable SDKs, others as crosscompilers in eVC.
+// IOW, you can't use these 'versions' in any sensible way. Sorry.
+# if defined(UNDER_CE)
+# if _MSC_VER < 1400
+ // Note: I'm not aware of any CE compiler with version 13xx
+# if defined(BOOST_ASSERT_CONFIG)
+# error "Unknown EVC++ compiler version - please run the configure tests and report the results"
+# else
+# pragma message("Unknown EVC++ compiler version - please run the configure tests and report the results")
+# endif
+# elif _MSC_VER < 1500
+# define BOOST_COMPILER_VERSION evc8
+# elif _MSC_VER < 1600
+# define BOOST_COMPILER_VERSION evc9
+# elif _MSC_VER < 1700
+# define BOOST_COMPILER_VERSION evc10
+# elif _MSC_VER < 1800
+# define BOOST_COMPILER_VERSION evc11
+# elif _MSC_VER < 1900
+# define BOOST_COMPILER_VERSION evc12
+# elif _MSC_VER < 2000
+# define BOOST_COMPILER_VERSION evc14
+# else
+# if defined(BOOST_ASSERT_CONFIG)
+# error "Unknown EVC++ compiler version - please run the configure tests and report the results"
+# else
+# pragma message("Unknown EVC++ compiler version - please run the configure tests and report the results")
+# endif
+# endif
+# else
+# if _MSC_VER < 1200
+ // Note: Versions up to 7.0 aren't supported.
+# define BOOST_COMPILER_VERSION 5.0
+# elif _MSC_VER < 1300
+# define BOOST_COMPILER_VERSION 6.0
+# elif _MSC_VER < 1310
+# define BOOST_COMPILER_VERSION 7.0
+# elif _MSC_VER < 1400
+# define BOOST_COMPILER_VERSION 7.1
+# elif _MSC_VER < 1500
+# define BOOST_COMPILER_VERSION 8.0
+# elif _MSC_VER < 1600
+# define BOOST_COMPILER_VERSION 9.0
+# elif _MSC_VER < 1700
+# define BOOST_COMPILER_VERSION 10.0
+# elif _MSC_VER < 1800
+# define BOOST_COMPILER_VERSION 11.0
+# elif _MSC_VER < 1900
+# define BOOST_COMPILER_VERSION 12.0
+# elif _MSC_VER < 1910
+# define BOOST_COMPILER_VERSION 14.0
+# elif _MSC_VER < 1920
+# define BOOST_COMPILER_VERSION 14.1
+# else
+# define BOOST_COMPILER_VERSION _MSC_VER
+# endif
+# endif
+
+# define BOOST_COMPILER "Microsoft Visual C++ version " BOOST_STRINGIZE(BOOST_COMPILER_VERSION)
+#endif
+
+#include <boost/config/pragma_message.hpp>
+
+//
+// last known and checked version is 19.12.25830.2 (VC++ 2017.3):
+#if (_MSC_VER > 1912)
+# if defined(BOOST_ASSERT_CONFIG)
+# error "Boost.Config is older than your current compiler version."
+# elif !defined(BOOST_CONFIG_SUPPRESS_OUTDATED_MESSAGE)
+ //
+ // Disabled as of March 2018 - the pace of VS releases is hard to keep up with
+ // and in any case, we have relatively few defect macros defined now.
+ // BOOST_PRAGMA_MESSAGE("Info: Boost.Config is older than your compiler version - probably nothing bad will happen - but you may wish to look for an updated Boost version. Define BOOST_CONFIG_SUPPRESS_OUTDATED_MESSAGE to suppress this message.")
+# endif
+#endif
diff --git a/include/boost/config/compiler/xlcpp.hpp b/include/boost/config/compiler/xlcpp.hpp
new file mode 100644
index 0000000..ee7aa12
--- /dev/null
+++ b/include/boost/config/compiler/xlcpp.hpp
@@ -0,0 +1,285 @@
+// (C) Copyright Douglas Gregor 2010
+//
+// 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 for most recent version.
+
+// compiler setup for IBM XL C/C++ for Linux (Little Endian) based on clang.
+
+#define BOOST_HAS_PRAGMA_ONCE
+
+// Detecting `-fms-extension` compiler flag assuming that _MSC_VER defined when that flag is used.
+#if defined (_MSC_VER) && (__clang_major__ > 3 || (__clang_major__ == 3 && __clang_minor__ >= 4))
+# define BOOST_HAS_PRAGMA_DETECT_MISMATCH
+#endif
+
+// When compiling with clang before __has_extension was defined,
+// even if one writes 'defined(__has_extension) && __has_extension(xxx)',
+// clang reports a compiler error. So the only workaround found is:
+
+#ifndef __has_extension
+#define __has_extension __has_feature
+#endif
+
+#ifndef __has_cpp_attribute
+#define __has_cpp_attribute(x) 0
+#endif
+
+#if !__has_feature(cxx_exceptions) && !defined(BOOST_NO_EXCEPTIONS)
+# define BOOST_NO_EXCEPTIONS
+#endif
+
+#if !__has_feature(cxx_rtti) && !defined(BOOST_NO_RTTI)
+# define BOOST_NO_RTTI
+#endif
+
+#if !__has_feature(cxx_rtti) && !defined(BOOST_NO_TYPEID)
+# define BOOST_NO_TYPEID
+#endif
+
+#if defined(__int64) && !defined(__GNUC__)
+# define BOOST_HAS_MS_INT64
+#endif
+
+#define BOOST_HAS_NRVO
+
+// Branch prediction hints
+#if defined(__has_builtin)
+#if __has_builtin(__builtin_expect)
+#define BOOST_LIKELY(x) __builtin_expect(x, 1)
+#define BOOST_UNLIKELY(x) __builtin_expect(x, 0)
+#endif
+#endif
+
+// Clang supports "long long" in all compilation modes.
+#define BOOST_HAS_LONG_LONG
+
+//
+// Dynamic shared object (DSO) and dynamic-link library (DLL) support
+//
+#if !defined(_WIN32) && !defined(__WIN32__) && !defined(WIN32)
+# define BOOST_SYMBOL_EXPORT __attribute__((__visibility__("default")))
+# define BOOST_SYMBOL_IMPORT
+# define BOOST_SYMBOL_VISIBLE __attribute__((__visibility__("default")))
+#endif
+
+//
+// The BOOST_FALLTHROUGH macro can be used to annotate implicit fall-through
+// between switch labels.
+//
+#if __cplusplus >= 201103L && defined(__has_warning)
+# if __has_feature(cxx_attributes) && __has_warning("-Wimplicit-fallthrough")
+# define BOOST_FALLTHROUGH [[clang::fallthrough]]
+# endif
+#endif
+
+#if !__has_feature(cxx_auto_type)
+# define BOOST_NO_CXX11_AUTO_DECLARATIONS
+# define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
+#endif
+
+//
+// Currently clang on Windows using VC++ RTL does not support C++11's char16_t or char32_t
+//
+#if defined(_MSC_VER) || !(defined(__GXX_EXPERIMENTAL_CXX0X__) || __cplusplus >= 201103L)
+# define BOOST_NO_CXX11_CHAR16_T
+# define BOOST_NO_CXX11_CHAR32_T
+#endif
+
+#if !__has_feature(cxx_constexpr)
+# define BOOST_NO_CXX11_CONSTEXPR
+#endif
+
+#if !__has_feature(cxx_decltype)
+# define BOOST_NO_CXX11_DECLTYPE
+#endif
+
+#if !__has_feature(cxx_decltype_incomplete_return_types)
+# define BOOST_NO_CXX11_DECLTYPE_N3276
+#endif
+
+#if !__has_feature(cxx_defaulted_functions)
+# define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
+#endif
+
+#if !__has_feature(cxx_deleted_functions)
+# define BOOST_NO_CXX11_DELETED_FUNCTIONS
+#endif
+
+#if !__has_feature(cxx_explicit_conversions)
+# define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
+#endif
+
+#if !__has_feature(cxx_default_function_template_args)
+# define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
+#endif
+
+#if !__has_feature(cxx_generalized_initializers)
+# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+#endif
+
+#if !__has_feature(cxx_lambdas)
+# define BOOST_NO_CXX11_LAMBDAS
+#endif
+
+#if !__has_feature(cxx_local_type_template_args)
+# define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
+#endif
+
+#if !__has_feature(cxx_noexcept)
+# define BOOST_NO_CXX11_NOEXCEPT
+#endif
+
+#if !__has_feature(cxx_nullptr)
+# define BOOST_NO_CXX11_NULLPTR
+#endif
+
+#if !__has_feature(cxx_range_for)
+# define BOOST_NO_CXX11_RANGE_BASED_FOR
+#endif
+
+#if !__has_feature(cxx_raw_string_literals)
+# define BOOST_NO_CXX11_RAW_LITERALS
+#endif
+
+#if !__has_feature(cxx_reference_qualified_functions)
+# define BOOST_NO_CXX11_REF_QUALIFIERS
+#endif
+
+#if !__has_feature(cxx_generalized_initializers)
+# define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
+#endif
+
+#if !__has_feature(cxx_rvalue_references)
+# define BOOST_NO_CXX11_RVALUE_REFERENCES
+#endif
+
+#if !__has_feature(cxx_strong_enums)
+# define BOOST_NO_CXX11_SCOPED_ENUMS
+#endif
+
+#if !__has_feature(cxx_static_assert)
+# define BOOST_NO_CXX11_STATIC_ASSERT
+#endif
+
+#if !__has_feature(cxx_alias_templates)
+# define BOOST_NO_CXX11_TEMPLATE_ALIASES
+#endif
+
+#if !__has_feature(cxx_unicode_literals)
+# define BOOST_NO_CXX11_UNICODE_LITERALS
+#endif
+
+#if !__has_feature(cxx_variadic_templates)
+# define BOOST_NO_CXX11_VARIADIC_TEMPLATES
+#endif
+
+#if !__has_feature(cxx_user_literals)
+# define BOOST_NO_CXX11_USER_DEFINED_LITERALS
+#endif
+
+#if !__has_feature(cxx_alignas)
+# define BOOST_NO_CXX11_ALIGNAS
+#endif
+
+#if !__has_feature(cxx_trailing_return)
+# define BOOST_NO_CXX11_TRAILING_RESULT_TYPES
+#endif
+
+#if !__has_feature(cxx_inline_namespaces)
+# define BOOST_NO_CXX11_INLINE_NAMESPACES
+#endif
+
+#if !__has_feature(cxx_override_control)
+# define BOOST_NO_CXX11_FINAL
+#endif
+
+#if !(__has_feature(__cxx_binary_literals__) || __has_extension(__cxx_binary_literals__))
+# define BOOST_NO_CXX14_BINARY_LITERALS
+#endif
+
+#if !__has_feature(__cxx_decltype_auto__)
+# define BOOST_NO_CXX14_DECLTYPE_AUTO
+#endif
+
+#if !__has_feature(__cxx_aggregate_nsdmi__)
+# define BOOST_NO_CXX14_AGGREGATE_NSDMI
+#endif
+
+#if !__has_feature(__cxx_init_captures__)
+# define BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES
+#endif
+
+#if !__has_feature(__cxx_generic_lambdas__)
+# define BOOST_NO_CXX14_GENERIC_LAMBDAS
+#endif
+
+// clang < 3.5 has a defect with dependent type, like following.
+//
+// template <class T>
+// constexpr typename enable_if<pred<T> >::type foo(T &)
+// { } // error: no return statement in constexpr function
+//
+// This issue also affects C++11 mode, but C++11 constexpr requires return stmt.
+// Therefore we don't care such case.
+//
+// Note that we can't check Clang version directly as the numbering system changes depending who's
+// creating the Clang release (see https://github.com/boostorg/config/pull/39#issuecomment-59927873)
+// so instead verify that we have a feature that was introduced at the same time as working C++14
+// constexpr (generic lambda's in this case):
+//
+#if !__has_feature(__cxx_generic_lambdas__) || !__has_feature(__cxx_relaxed_constexpr__)
+# define BOOST_NO_CXX14_CONSTEXPR
+#endif
+
+#if !__has_feature(__cxx_return_type_deduction__)
+# define BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION
+#endif
+
+#if !__has_feature(__cxx_variable_templates__)
+# define BOOST_NO_CXX14_VARIABLE_TEMPLATES
+#endif
+
+#if !defined(__cpp_structured_bindings) || (__cpp_structured_bindings < 201606)
+# define BOOST_NO_CXX17_STRUCTURED_BINDINGS
+#endif
+
+#if !defined(__cpp_if_constexpr) || (__cpp_if_constexpr < 201606)
+# define BOOST_NO_CXX17_IF_CONSTEXPR
+#endif
+
+// Clang 3.9+ in c++1z
+#if !__has_cpp_attribute(fallthrough) || __cplusplus < 201406L
+# define BOOST_NO_CXX17_INLINE_VARIABLES
+# define BOOST_NO_CXX17_FOLD_EXPRESSIONS
+#endif
+
+#if !__has_feature(cxx_thread_local)
+# define BOOST_NO_CXX11_THREAD_LOCAL
+#endif
+
+#if __cplusplus < 201400
+// All versions with __cplusplus above this value seem to support this:
+# define BOOST_NO_CXX14_DIGIT_SEPARATORS
+#endif
+
+
+// Unused attribute:
+#if defined(__GNUC__) && (__GNUC__ >= 4)
+# define BOOST_ATTRIBUTE_UNUSED __attribute__((unused))
+#endif
+
+// Type aliasing hint.
+#if __has_attribute(__may_alias__)
+# define BOOST_MAY_ALIAS __attribute__((__may_alias__))
+#endif
+
+#ifndef BOOST_COMPILER
+# define BOOST_COMPILER "Clang version " __clang_version__
+#endif
+
+// Macro used to identify the Clang compiler.
+#define BOOST_CLANG 1
+
diff --git a/include/boost/config/compiler/xlcpp_zos.hpp b/include/boost/config/compiler/xlcpp_zos.hpp
new file mode 100644
index 0000000..eb1bf2e
--- /dev/null
+++ b/include/boost/config/compiler/xlcpp_zos.hpp
@@ -0,0 +1,170 @@
+// Copyright (c) 2017 Dynatrace
+//
+// Distributed under the Boost Software License, Version 1.0.
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+
+// See http://www.boost.org for most recent version.
+
+// Compiler setup for IBM z/OS XL C/C++ compiler.
+
+// Oldest compiler version currently supported is 2.1 (V2R1)
+#if !defined(__IBMCPP__) || !defined(__COMPILER_VER__) || __COMPILER_VER__ < 0x42010000
+# error "Compiler not supported or configured - please reconfigure"
+#endif
+
+#if __COMPILER_VER__ > 0x42010000
+# if defined(BOOST_ASSERT_CONFIG)
+# error "Unknown compiler version - please run the configure tests and report the results"
+# endif
+#endif
+
+#define BOOST_COMPILER "IBM z/OS XL C/C++ version " BOOST_STRINGIZE(__COMPILER_VER__)
+#define BOOST_XLCPP_ZOS __COMPILER_VER__
+
+// -------------------------------------
+
+#include <features.h> // For __UU, __C99, __TR1, ...
+
+#if !defined(__IBMCPP_DEFAULTED_AND_DELETED_FUNCTIONS)
+# define BOOST_NO_CXX11_DELETED_FUNCTIONS
+# define BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
+# define BOOST_NO_CXX11_NON_PUBLIC_DEFAULTED_FUNCTIONS
+#endif
+
+// -------------------------------------
+
+#if defined(__UU) || defined(__C99) || defined(__TR1)
+# define BOOST_HAS_LOG1P
+# define BOOST_HAS_EXPM1
+#endif
+
+#if defined(__C99) || defined(__TR1)
+# define BOOST_HAS_STDINT_H
+#else
+# define BOOST_NO_FENV_H
+#endif
+
+// -------------------------------------
+
+#define BOOST_HAS_NRVO
+
+#if !defined(__RTTI_ALL__)
+# define BOOST_NO_RTTI
+#endif
+
+#if !defined(_CPPUNWIND) && !defined(__EXCEPTIONS)
+# define BOOST_NO_EXCEPTIONS
+#endif
+
+#if defined(_LONG_LONG) || defined(__IBMCPP_C99_LONG_LONG) || defined(__LL)
+# define BOOST_HAS_LONG_LONG
+#else
+# define BOOST_NO_LONG_LONG
+#endif
+
+#if defined(_LONG_LONG) || defined(__IBMCPP_C99_LONG_LONG) || defined(__LL) || defined(_LP64)
+# define BOOST_HAS_MS_INT64
+#endif
+
+#define BOOST_NO_SFINAE_EXPR
+#define BOOST_NO_CXX11_SFINAE_EXPR
+
+#if defined(__IBMCPP_VARIADIC_TEMPLATES)
+# define BOOST_HAS_VARIADIC_TMPL
+#else
+# define BOOST_NO_CXX11_VARIADIC_TEMPLATES
+# define BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
+#endif
+
+#if defined(__IBMCPP_STATIC_ASSERT)
+# define BOOST_HAS_STATIC_ASSERT
+#else
+# define BOOST_NO_CXX11_STATIC_ASSERT
+#endif
+
+#if defined(__IBMCPP_RVALUE_REFERENCES)
+# define BOOST_HAS_RVALUE_REFS
+#else
+# define BOOST_NO_CXX11_RVALUE_REFERENCES
+#endif
+
+#if !defined(__IBMCPP_SCOPED_ENUM)
+# define BOOST_NO_CXX11_SCOPED_ENUMS
+#endif
+
+#define BOOST_NO_CXX11_FIXED_LENGTH_VARIADIC_TEMPLATE_EXPANSION_PACKS
+#define BOOST_NO_CXX11_TEMPLATE_ALIASES
+#define BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
+
+#if !defined(__IBMCPP_EXPLICIT_CONVERSION_OPERATORS)
+# define BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
+#endif
+
+#if !defined(__IBMCPP_DECLTYPE)
+# define BOOST_NO_CXX11_DECLTYPE
+#else
+# define BOOST_HAS_DECLTYPE
+#endif
+#define BOOST_NO_CXX11_DECLTYPE_N3276
+
+#if !defined(__IBMCPP_INLINE_NAMESPACE)
+# define BOOST_NO_CXX11_INLINE_NAMESPACES
+#endif
+
+#if !defined(__IBMCPP_AUTO_TYPEDEDUCTION)
+# define BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
+# define BOOST_NO_CXX11_AUTO_DECLARATIONS
+# define BOOST_NO_CXX11_TRAILING_RESULT_TYPES
+#endif
+
+#if !defined(__IBM_CHAR32_T__)
+# define BOOST_NO_CXX11_CHAR32_T
+#endif
+#if !defined(__IBM_CHAR16_T__)
+# define BOOST_NO_CXX11_CHAR16_T
+#endif
+
+#if !defined(__IBMCPP_CONSTEXPR)
+# define BOOST_NO_CXX11_CONSTEXPR
+#endif
+
+#define BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
+#define BOOST_NO_CXX11_UNICODE_LITERALS
+#define BOOST_NO_CXX11_RAW_LITERALS
+#define BOOST_NO_CXX11_RANGE_BASED_FOR
+#define BOOST_NO_CXX11_NULLPTR
+#define BOOST_NO_CXX11_NOEXCEPT
+#define BOOST_NO_CXX11_LAMBDAS
+#define BOOST_NO_CXX11_USER_DEFINED_LITERALS
+#define BOOST_NO_CXX11_THREAD_LOCAL
+#define BOOST_NO_CXX11_REF_QUALIFIERS
+#define BOOST_NO_CXX11_FINAL
+#define BOOST_NO_CXX11_ALIGNAS
+#define BOOST_NO_CXX14_VARIABLE_TEMPLATES
+#define BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION
+#define BOOST_NO_CXX14_AGGREGATE_NSDMI
+#define BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES
+#define BOOST_NO_CXX14_GENERIC_LAMBDAS
+#define BOOST_NO_CXX14_DIGIT_SEPARATORS
+#define BOOST_NO_CXX14_DECLTYPE_AUTO
+#define BOOST_NO_CXX14_CONSTEXPR
+#define BOOST_NO_CXX14_BINARY_LITERALS
+#define BOOST_NO_CXX17_STRUCTURED_BINDINGS
+#define BOOST_NO_CXX17_INLINE_VARIABLES
+#define BOOST_NO_CXX17_FOLD_EXPRESSIONS
+#define BOOST_NO_CXX17_IF_CONSTEXPR
+
+// -------------------------------------
+
+#if defined(__IBM_ATTRIBUTES)
+# define BOOST_FORCEINLINE inline __attribute__ ((__always_inline__))
+# define BOOST_NOINLINE __attribute__ ((__noinline__))
+# define BOOST_MAY_ALIAS __attribute__((__may_alias__))
+// No BOOST_ALIGNMENT - explicit alignment support is broken (V2R1).
+#endif
+
+extern "builtin" long __builtin_expect(long, long);
+
+#define BOOST_LIKELY(x) __builtin_expect((x) && true, 1)
+#define BOOST_UNLIKELY(x) __builtin_expect((x) && true, 0)
diff --git a/include/boost/config/detail/posix_features.hpp b/include/boost/config/detail/posix_features.hpp
new file mode 100644
index 0000000..d129547
--- /dev/null
+++ b/include/boost/config/detail/posix_features.hpp
@@ -0,0 +1,95 @@
+// (C) Copyright John Maddock 2001 - 2003.
+// 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 for most recent version.
+
+// All POSIX feature tests go in this file,
+// Note that we test _POSIX_C_SOURCE and _XOPEN_SOURCE as well
+// _POSIX_VERSION and _XOPEN_VERSION: on some systems POSIX API's
+// may be present but none-functional unless _POSIX_C_SOURCE and
+// _XOPEN_SOURCE have been defined to the right value (it's up
+// to the user to do this *before* including any header, although
+// in most cases the compiler will do this for you).
+
+# if defined(BOOST_HAS_UNISTD_H)
+# include <unistd.h>
+
+ // XOpen has <nl_types.h>, but is this the correct version check?
+# if defined(_XOPEN_VERSION) && (_XOPEN_VERSION >= 3)
+# define BOOST_HAS_NL_TYPES_H
+# endif
+
+ // POSIX version 6 requires <stdint.h>
+# if defined(_POSIX_VERSION) && (_POSIX_VERSION >= 200100)
+# define BOOST_HAS_STDINT_H
+# endif
+
+ // POSIX version 2 requires <dirent.h>
+# if defined(_POSIX_VERSION) && (_POSIX_VERSION >= 199009L)
+# define BOOST_HAS_DIRENT_H
+# endif
+
+ // POSIX version 3 requires <signal.h> to have sigaction:
+# if defined(_POSIX_VERSION) && (_POSIX_VERSION >= 199506L)
+# define BOOST_HAS_SIGACTION
+# endif
+ // POSIX defines _POSIX_THREADS > 0 for pthread support,
+ // however some platforms define _POSIX_THREADS without
+ // a value, hence the (_POSIX_THREADS+0 >= 0) check.
+ // Strictly speaking this may catch platforms with a
+ // non-functioning stub <pthreads.h>, but such occurrences should
+ // occur very rarely if at all.
+# if defined(_POSIX_THREADS) && (_POSIX_THREADS+0 >= 0) && !defined(BOOST_HAS_WINTHREADS) && !defined(BOOST_HAS_MPTASKS)
+# define BOOST_HAS_PTHREADS
+# endif
+
+ // BOOST_HAS_NANOSLEEP:
+ // This is predicated on _POSIX_TIMERS or _XOPEN_REALTIME:
+# if (defined(_POSIX_TIMERS) && (_POSIX_TIMERS+0 >= 0)) \
+ || (defined(_XOPEN_REALTIME) && (_XOPEN_REALTIME+0 >= 0))
+# define BOOST_HAS_NANOSLEEP
+# endif
+
+ // BOOST_HAS_CLOCK_GETTIME:
+ // This is predicated on _POSIX_TIMERS (also on _XOPEN_REALTIME
+ // but at least one platform - linux - defines that flag without
+ // defining clock_gettime):
+# if (defined(_POSIX_TIMERS) && (_POSIX_TIMERS+0 >= 0))
+# define BOOST_HAS_CLOCK_GETTIME
+# endif
+
+ // BOOST_HAS_SCHED_YIELD:
+ // This is predicated on _POSIX_PRIORITY_SCHEDULING or
+ // on _POSIX_THREAD_PRIORITY_SCHEDULING or on _XOPEN_REALTIME.
+# if defined(_POSIX_PRIORITY_SCHEDULING) && (_POSIX_PRIORITY_SCHEDULING+0 > 0)\
+ || (defined(_POSIX_THREAD_PRIORITY_SCHEDULING) && (_POSIX_THREAD_PRIORITY_SCHEDULING+0 > 0))\
+ || (defined(_XOPEN_REALTIME) && (_XOPEN_REALTIME+0 >= 0))
+# define BOOST_HAS_SCHED_YIELD
+# endif
+
+ // BOOST_HAS_GETTIMEOFDAY:
+ // BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE:
+ // These are predicated on _XOPEN_VERSION, and appears to be first released
+ // in issue 4, version 2 (_XOPEN_VERSION > 500).
+ // Likewise for the functions log1p and expm1.
+# if defined(_XOPEN_VERSION) && (_XOPEN_VERSION+0 >= 500)
+# define BOOST_HAS_GETTIMEOFDAY
+# if defined(_XOPEN_SOURCE) && (_XOPEN_SOURCE+0 >= 500)
+# define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
+# endif
+# ifndef BOOST_HAS_LOG1P
+# define BOOST_HAS_LOG1P
+# endif
+# ifndef BOOST_HAS_EXPM1
+# define BOOST_HAS_EXPM1
+# endif
+# endif
+
+# endif
+
+
+
+
diff --git a/include/boost/config/detail/select_compiler_config.hpp b/include/boost/config/detail/select_compiler_config.hpp
new file mode 100644
index 0000000..ced8443
--- /dev/null
+++ b/include/boost/config/detail/select_compiler_config.hpp
@@ -0,0 +1,158 @@
+// Boost compiler configuration selection header file
+
+// (C) Copyright John Maddock 2001 - 2003.
+// (C) Copyright Martin Wille 2003.
+// (C) Copyright Guillaume Melquiond 2003.
+//
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/ for most recent version.
+
+// locate which compiler we are using and define
+// BOOST_COMPILER_CONFIG as needed:
+
+#if defined __CUDACC__
+// NVIDIA CUDA C++ compiler for GPU
+# include "boost/config/compiler/nvcc.hpp"
+
+#endif
+
+#if defined(__GCCXML__)
+// GCC-XML emulates other compilers, it has to appear first here!
+# define BOOST_COMPILER_CONFIG "boost/config/compiler/gcc_xml.hpp"
+
+#elif defined(_CRAYC)
+// EDG based Cray compiler:
+# define BOOST_COMPILER_CONFIG "boost/config/compiler/cray.hpp"
+
+#elif defined __COMO__
+// Comeau C++
+# define BOOST_COMPILER_CONFIG "boost/config/compiler/comeau.hpp"
+
+#elif defined(__PATHSCALE__) && (__PATHCC__ >= 4)
+// PathScale EKOPath compiler (has to come before clang and gcc)
+# define BOOST_COMPILER_CONFIG "boost/config/compiler/pathscale.hpp"
+
+#elif defined(__INTEL_COMPILER) || defined(__ICL) || defined(__ICC) || defined(__ECC)
+// Intel
+# define BOOST_COMPILER_CONFIG "boost/config/compiler/intel.hpp"
+
+#elif defined __clang__ && !defined(__CUDACC__) && !defined(__ibmxl__)
+// when using clang and cuda at same time, you want to appear as gcc
+// Clang C++ emulates GCC, so it has to appear early.
+# define BOOST_COMPILER_CONFIG "boost/config/compiler/clang.hpp"
+
+#elif defined __DMC__
+// Digital Mars C++
+# define BOOST_COMPILER_CONFIG "boost/config/compiler/digitalmars.hpp"
+
+#elif defined __DCC__
+// Wind River Diab C++
+# define BOOST_COMPILER_CONFIG "boost/config/compiler/diab.hpp"
+
+#elif defined(__PGI)
+// Portland Group Inc.
+# define BOOST_COMPILER_CONFIG "boost/config/compiler/pgi.hpp"
+
+# elif defined(__GNUC__) && !defined(__ibmxl__)
+// GNU C++:
+# define BOOST_COMPILER_CONFIG "boost/config/compiler/gcc.hpp"
+
+#elif defined __KCC
+// Kai C++
+# define BOOST_COMPILER_CONFIG "boost/config/compiler/kai.hpp"
+
+#elif defined __sgi
+// SGI MIPSpro C++
+# define BOOST_COMPILER_CONFIG "boost/config/compiler/sgi_mipspro.hpp"
+
+#elif defined __DECCXX
+// Compaq Tru64 Unix cxx
+# define BOOST_COMPILER_CONFIG "boost/config/compiler/compaq_cxx.hpp"
+
+#elif defined __ghs
+// Greenhills C++
+# define BOOST_COMPILER_CONFIG "boost/config/compiler/greenhills.hpp"
+
+#elif defined __CODEGEARC__
+// CodeGear - must be checked for before Borland
+# define BOOST_COMPILER_CONFIG "boost/config/compiler/codegear.hpp"
+
+#elif defined __BORLANDC__
+// Borland
+# define BOOST_COMPILER_CONFIG "boost/config/compiler/borland.hpp"
+
+#elif defined __MWERKS__
+// Metrowerks CodeWarrior
+# define BOOST_COMPILER_CONFIG "boost/config/compiler/metrowerks.hpp"
+
+#elif defined __SUNPRO_CC
+// Sun Workshop Compiler C++
+# define BOOST_COMPILER_CONFIG "boost/config/compiler/sunpro_cc.hpp"
+
+#elif defined __HP_aCC
+// HP aCC
+# define BOOST_COMPILER_CONFIG "boost/config/compiler/hp_acc.hpp"
+
+#elif defined(__MRC__) || defined(__SC__)
+// MPW MrCpp or SCpp
+# define BOOST_COMPILER_CONFIG "boost/config/compiler/mpw.hpp"
+
+#elif defined(__IBMCPP__) && defined(__COMPILER_VER__) && defined(__MVS__)
+// IBM z/OS XL C/C++
+# define BOOST_COMPILER_CONFIG "boost/config/compiler/xlcpp_zos.hpp"
+
+#elif defined(__ibmxl__)
+// IBM XL C/C++ for Linux (Little Endian)
+# define BOOST_COMPILER_CONFIG "boost/config/compiler/xlcpp.hpp"
+
+#elif defined(__IBMCPP__)
+// IBM Visual Age or IBM XL C/C++ for Linux (Big Endian)
+# define BOOST_COMPILER_CONFIG "boost/config/compiler/vacpp.hpp"
+
+#elif defined _MSC_VER
+// Microsoft Visual C++
+//
+// Must remain the last #elif since some other vendors (Metrowerks, for
+// example) also #define _MSC_VER
+# define BOOST_COMPILER_CONFIG "boost/config/compiler/visualc.hpp"
+
+#elif defined (BOOST_ASSERT_CONFIG)
+// this must come last - generate an error if we don't
+// recognise the compiler:
+# error "Unknown compiler - please configure (http://www.boost.org/libs/config/config.htm#configuring) and report the results to the main boost mailing list (http://www.boost.org/more/mailing_lists.htm#main)"
+
+#endif
+
+#if 0
+//
+// This section allows dependency scanners to find all the headers we *might* include:
+//
+#include <boost/config/compiler/gcc_xml.hpp>
+#include <boost/config/compiler/cray.hpp>
+#include <boost/config/compiler/comeau.hpp>
+#include <boost/config/compiler/pathscale.hpp>
+#include <boost/config/compiler/intel.hpp>
+#include <boost/config/compiler/clang.hpp>
+#include <boost/config/compiler/digitalmars.hpp>
+#include <boost/config/compiler/gcc.hpp>
+#include <boost/config/compiler/kai.hpp>
+#include <boost/config/compiler/sgi_mipspro.hpp>
+#include <boost/config/compiler/compaq_cxx.hpp>
+#include <boost/config/compiler/greenhills.hpp>
+#include <boost/config/compiler/codegear.hpp>
+#include <boost/config/compiler/borland.hpp>
+#include <boost/config/compiler/metrowerks.hpp>
+#include <boost/config/compiler/sunpro_cc.hpp>
+#include <boost/config/compiler/hp_acc.hpp>
+#include <boost/config/compiler/mpw.hpp>
+#include <boost/config/compiler/xlcpp_zos.hpp>
+#include <boost/config/compiler/xlcpp.hpp>
+#include <boost/config/compiler/vacpp.hpp>
+#include <boost/config/compiler/pgi.hpp>
+#include <boost/config/compiler/visualc.hpp>
+
+#endif
+
diff --git a/include/boost/config/detail/select_platform_config.hpp b/include/boost/config/detail/select_platform_config.hpp
new file mode 100644
index 0000000..b36eca5
--- /dev/null
+++ b/include/boost/config/detail/select_platform_config.hpp
@@ -0,0 +1,142 @@
+// Boost compiler configuration selection header file
+
+// (C) Copyright John Maddock 2001 - 2002.
+// (C) Copyright Jens Maurer 2001.
+// 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 for most recent version.
+
+// locate which platform we are on and define BOOST_PLATFORM_CONFIG as needed.
+// Note that we define the headers to include using "header_name" not
+// <header_name> in order to prevent macro expansion within the header
+// name (for example "linux" is a macro on linux systems).
+
+#if (defined(linux) || defined(__linux) || defined(__linux__) || defined(__GNU__) || defined(__GLIBC__)) && !defined(_CRAYC)
+// linux, also other platforms (Hurd etc) that use GLIBC, should these really have their own config headers though?
+# define BOOST_PLATFORM_CONFIG "boost/config/platform/linux.hpp"
+
+#elif defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__)
+// BSD:
+# define BOOST_PLATFORM_CONFIG "boost/config/platform/bsd.hpp"
+
+#elif defined(sun) || defined(__sun)
+// solaris:
+# define BOOST_PLATFORM_CONFIG "boost/config/platform/solaris.hpp"
+
+#elif defined(__sgi)
+// SGI Irix:
+# define BOOST_PLATFORM_CONFIG "boost/config/platform/irix.hpp"
+
+#elif defined(__hpux)
+// hp unix:
+# define BOOST_PLATFORM_CONFIG "boost/config/platform/hpux.hpp"
+
+#elif defined(__CYGWIN__)
+// cygwin is not win32:
+# define BOOST_PLATFORM_CONFIG "boost/config/platform/cygwin.hpp"
+
+#elif defined(_WIN32) || defined(__WIN32__) || defined(WIN32)
+// win32:
+# define BOOST_PLATFORM_CONFIG "boost/config/platform/win32.hpp"
+
+#elif defined(__HAIKU__)
+// Haiku
+# define BOOST_PLATFORM_CONFIG "boost/config/platform/haiku.hpp"
+
+#elif defined(__BEOS__)
+// BeOS
+# define BOOST_PLATFORM_CONFIG "boost/config/platform/beos.hpp"
+
+#elif defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__)
+// MacOS
+# define BOOST_PLATFORM_CONFIG "boost/config/platform/macos.hpp"
+
+#elif defined(__TOS_MVS__)
+// IBM z/OS
+# define BOOST_PLATFORM_CONFIG "boost/config/platform/zos.hpp"
+
+#elif defined(__IBMCPP__) || defined(_AIX)
+// IBM AIX
+# define BOOST_PLATFORM_CONFIG "boost/config/platform/aix.hpp"
+
+#elif defined(__amigaos__)
+// AmigaOS
+# define BOOST_PLATFORM_CONFIG "boost/config/platform/amigaos.hpp"
+
+#elif defined(__QNXNTO__)
+// QNX:
+# define BOOST_PLATFORM_CONFIG "boost/config/platform/qnxnto.hpp"
+
+#elif defined(__VXWORKS__)
+// vxWorks:
+# define BOOST_PLATFORM_CONFIG "boost/config/platform/vxworks.hpp"
+
+#elif defined(__SYMBIAN32__)
+// Symbian:
+# define BOOST_PLATFORM_CONFIG "boost/config/platform/symbian.hpp"
+
+#elif defined(_CRAYC)
+// Cray:
+# define BOOST_PLATFORM_CONFIG "boost/config/platform/cray.hpp"
+
+#elif defined(__VMS)
+// VMS:
+# define BOOST_PLATFORM_CONFIG "boost/config/platform/vms.hpp"
+
+#elif defined(__CloudABI__)
+// Nuxi CloudABI:
+# define BOOST_PLATFORM_CONFIG "boost/config/platform/cloudabi.hpp"
+#else
+
+# if defined(unix) \
+ || defined(__unix) \
+ || defined(_XOPEN_SOURCE) \
+ || defined(_POSIX_SOURCE)
+
+ // generic unix platform:
+
+# ifndef BOOST_HAS_UNISTD_H
+# define BOOST_HAS_UNISTD_H
+# endif
+
+# include <boost/config/detail/posix_features.hpp>
+
+# endif
+
+# if defined (BOOST_ASSERT_CONFIG)
+ // this must come last - generate an error if we don't
+ // recognise the platform:
+# error "Unknown platform - please configure and report the results to boost.org"
+# endif
+
+#endif
+
+#if 0
+//
+// This section allows dependency scanners to find all the files we *might* include:
+//
+# include "boost/config/platform/linux.hpp"
+# include "boost/config/platform/bsd.hpp"
+# include "boost/config/platform/solaris.hpp"
+# include "boost/config/platform/irix.hpp"
+# include "boost/config/platform/hpux.hpp"
+# include "boost/config/platform/cygwin.hpp"
+# include "boost/config/platform/win32.hpp"
+# include "boost/config/platform/beos.hpp"
+# include "boost/config/platform/macos.hpp"
+# include "boost/config/platform/zos.hpp"
+# include "boost/config/platform/aix.hpp"
+# include "boost/config/platform/amigaos.hpp"
+# include "boost/config/platform/qnxnto.hpp"
+# include "boost/config/platform/vxworks.hpp"
+# include "boost/config/platform/symbian.hpp"
+# include "boost/config/platform/cray.hpp"
+# include "boost/config/platform/vms.hpp"
+# include <boost/config/detail/posix_features.hpp>
+
+
+
+#endif
+
diff --git a/include/boost/config/detail/select_stdlib_config.hpp b/include/boost/config/detail/select_stdlib_config.hpp
new file mode 100644
index 0000000..8db778c
--- /dev/null
+++ b/include/boost/config/detail/select_stdlib_config.hpp
@@ -0,0 +1,110 @@
+// Boost compiler configuration selection header file
+
+// (C) Copyright John Maddock 2001 - 2003.
+// (C) Copyright Jens Maurer 2001 - 2002.
+// 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 for most recent version.
+
+// locate which std lib we are using and define BOOST_STDLIB_CONFIG as needed:
+
+// First include <cstddef> to determine if some version of STLport is in use as the std lib
+// (do not rely on this header being included since users can short-circuit this header
+// if they know whose std lib they are using.)
+#ifdef __cplusplus
+# include <cstddef>
+#else
+# include <stddef.h>
+#endif
+
+#if defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)
+// STLPort library; this _must_ come first, otherwise since
+// STLport typically sits on top of some other library, we
+// can end up detecting that first rather than STLport:
+# define BOOST_STDLIB_CONFIG "boost/config/stdlib/stlport.hpp"
+
+#else
+
+// If our std lib was not some version of STLport, and has not otherwise
+// been detected, then include <utility> as it is about
+// the smallest of the std lib headers that includes real C++ stuff.
+// Some std libs do not include their C++-related macros in <cstddef>
+// so this additional include makes sure we get those definitions.
+// Note: do not rely on this header being included since users can short-circuit this
+// #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__)
+// Comeau STL:
+#define BOOST_STDLIB_CONFIG "boost/config/stdlib/libcomo.hpp"
+
+#elif defined(__STD_RWCOMPILER_H__) || defined(_RWSTD_VER)
+// Rogue Wave library:
+# define BOOST_STDLIB_CONFIG "boost/config/stdlib/roguewave.hpp"
+
+#elif defined(_LIBCPP_VERSION)
+// libc++
+# define BOOST_STDLIB_CONFIG "boost/config/stdlib/libcpp.hpp"
+
+#elif defined(__GLIBCPP__) || defined(__GLIBCXX__)
+// GNU libstdc++ 3
+# define BOOST_STDLIB_CONFIG "boost/config/stdlib/libstdcpp3.hpp"
+
+#elif defined(__STL_CONFIG_H)
+// generic SGI STL
+# define BOOST_STDLIB_CONFIG "boost/config/stdlib/sgi.hpp"
+
+#elif defined(__MSL_CPP__)
+// MSL standard lib:
+# define BOOST_STDLIB_CONFIG "boost/config/stdlib/msl.hpp"
+
+#elif defined(__IBMCPP__) && defined(__COMPILER_VER__) && defined(__MVS__)
+// IBM z/OS XL C/C++
+# define BOOST_STDLIB_CONFIG "boost/config/stdlib/xlcpp_zos.hpp"
+
+#elif defined(__IBMCPP__)
+// take the default VACPP std lib
+# define BOOST_STDLIB_CONFIG "boost/config/stdlib/vacpp.hpp"
+
+#elif defined(MSIPL_COMPILE_H)
+// Modena C++ standard library
+# define BOOST_STDLIB_CONFIG "boost/config/stdlib/modena.hpp"
+
+#elif (defined(_YVALS) && !defined(__IBMCPP__)) || defined(_CPPLIB_VER)
+// Dinkumware Library (this has to appear after any possible replacement libraries):
+# define BOOST_STDLIB_CONFIG "boost/config/stdlib/dinkumware.hpp"
+
+#elif defined (BOOST_ASSERT_CONFIG)
+// this must come last - generate an error if we don't
+// recognise the library:
+# error "Unknown standard library - please configure and report the results to boost.org"
+
+#endif
+
+#endif
+
+#if 0
+//
+// This section allows dependency scanners to find all the files we *might* include:
+//
+# include "boost/config/stdlib/stlport.hpp"
+# include "boost/config/stdlib/libcomo.hpp"
+# include "boost/config/stdlib/roguewave.hpp"
+# include "boost/config/stdlib/libcpp.hpp"
+# include "boost/config/stdlib/libstdcpp3.hpp"
+# include "boost/config/stdlib/sgi.hpp"
+# include "boost/config/stdlib/msl.hpp"
+# include "boost/config/stdlib/xlcpp_zos.hpp"
+# include "boost/config/stdlib/vacpp.hpp"
+# include "boost/config/stdlib/modena.hpp"
+# include "boost/config/stdlib/dinkumware.hpp"
+#endif
+
diff --git a/include/boost/config/detail/suffix.hpp b/include/boost/config/detail/suffix.hpp
new file mode 100644
index 0000000..22d31f6
--- /dev/null
+++ b/include/boost/config/detail/suffix.hpp
@@ -0,0 +1,1036 @@
+// Boost config.hpp configuration header file ------------------------------//
+// boostinspect:ndprecated_macros -- tell the inspect tool to ignore this file
+
+// Copyright (c) 2001-2003 John Maddock
+// Copyright (c) 2001 Darin Adler
+// Copyright (c) 2001 Peter Dimov
+// Copyright (c) 2002 Bill Kempf
+// Copyright (c) 2002 Jens Maurer
+// Copyright (c) 2002-2003 David Abrahams
+// Copyright (c) 2003 Gennaro Prota
+// Copyright (c) 2003 Eric Friedman
+// Copyright (c) 2010 Eric Jourdanneau, Joel Falcou
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/ for most recent version.
+
+// Boost config.hpp policy and rationale documentation has been moved to
+// http://www.boost.org/libs/config/
+//
+// This file is intended to be stable, and relatively unchanging.
+// It should contain boilerplate code only - no compiler specific
+// code unless it is unavoidable - no changes unless unavoidable.
+
+#ifndef BOOST_CONFIG_SUFFIX_HPP
+#define BOOST_CONFIG_SUFFIX_HPP
+
+#if defined(__GNUC__) && (__GNUC__ >= 4)
+//
+// Some GCC-4.x versions issue warnings even when __extension__ is used,
+// so use this as a workaround:
+//
+#pragma GCC system_header
+#endif
+
+//
+// ensure that visibility macros are always defined, thus symplifying use
+//
+#ifndef BOOST_SYMBOL_EXPORT
+# define BOOST_SYMBOL_EXPORT
+#endif
+#ifndef BOOST_SYMBOL_IMPORT
+# define BOOST_SYMBOL_IMPORT
+#endif
+#ifndef BOOST_SYMBOL_VISIBLE
+# define BOOST_SYMBOL_VISIBLE
+#endif
+
+//
+// look for long long by looking for the appropriate macros in <limits.h>.
+// Note that we use limits.h rather than climits for maximal portability,
+// remember that since these just declare a bunch of macros, there should be
+// no namespace issues from this.
+//
+#if !defined(BOOST_HAS_LONG_LONG) && !defined(BOOST_NO_LONG_LONG) \
+ && !defined(BOOST_MSVC) && !defined(__BORLANDC__)
+# include <limits.h>
+# if (defined(ULLONG_MAX) || defined(ULONG_LONG_MAX) || defined(ULONGLONG_MAX))
+# define BOOST_HAS_LONG_LONG
+# else
+# define BOOST_NO_LONG_LONG
+# endif
+#endif
+
+// GCC 3.x will clean up all of those nasty macro definitions that
+// BOOST_NO_CTYPE_FUNCTIONS is intended to help work around, so undefine
+// it under GCC 3.x.
+#if defined(__GNUC__) && (__GNUC__ >= 3) && defined(BOOST_NO_CTYPE_FUNCTIONS)
+# undef BOOST_NO_CTYPE_FUNCTIONS
+#endif
+
+//
+// Assume any extensions are in namespace std:: unless stated otherwise:
+//
+# ifndef BOOST_STD_EXTENSION_NAMESPACE
+# define BOOST_STD_EXTENSION_NAMESPACE std
+# endif
+
+//
+// If cv-qualified specializations are not allowed, then neither are cv-void ones:
+//
+# if defined(BOOST_NO_CV_SPECIALIZATIONS) \
+ && !defined(BOOST_NO_CV_VOID_SPECIALIZATIONS)
+# define BOOST_NO_CV_VOID_SPECIALIZATIONS
+# endif
+
+//
+// If there is no numeric_limits template, then it can't have any compile time
+// constants either!
+//
+# if defined(BOOST_NO_LIMITS) \
+ && !defined(BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS)
+# define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
+# define BOOST_NO_MS_INT64_NUMERIC_LIMITS
+# define BOOST_NO_LONG_LONG_NUMERIC_LIMITS
+# endif
+
+//
+// if there is no long long then there is no specialisation
+// for numeric_limits<long long> either:
+//
+#if !defined(BOOST_HAS_LONG_LONG) && !defined(BOOST_NO_LONG_LONG_NUMERIC_LIMITS)
+# define BOOST_NO_LONG_LONG_NUMERIC_LIMITS
+#endif
+
+//
+// if there is no __int64 then there is no specialisation
+// for numeric_limits<__int64> either:
+//
+#if !defined(BOOST_HAS_MS_INT64) && !defined(BOOST_NO_MS_INT64_NUMERIC_LIMITS)
+# define BOOST_NO_MS_INT64_NUMERIC_LIMITS
+#endif
+
+//
+// if member templates are supported then so is the
+// VC6 subset of member templates:
+//
+# if !defined(BOOST_NO_MEMBER_TEMPLATES) \
+ && !defined(BOOST_MSVC6_MEMBER_TEMPLATES)
+# define BOOST_MSVC6_MEMBER_TEMPLATES
+# endif
+
+//
+// Without partial specialization, can't test for partial specialisation bugs:
+//
+# if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
+ && !defined(BOOST_BCB_PARTIAL_SPECIALIZATION_BUG)
+# define BOOST_BCB_PARTIAL_SPECIALIZATION_BUG
+# endif
+
+//
+// Without partial specialization, we can't have array-type partial specialisations:
+//
+# if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
+ && !defined(BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS)
+# define BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS
+# endif
+
+//
+// Without partial specialization, std::iterator_traits can't work:
+//
+# if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
+ && !defined(BOOST_NO_STD_ITERATOR_TRAITS)
+# define BOOST_NO_STD_ITERATOR_TRAITS
+# endif
+
+//
+// Without partial specialization, partial
+// specialization with default args won't work either:
+//
+# if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) \
+ && !defined(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS)
+# define BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS
+# endif
+
+//
+// Without member template support, we can't have template constructors
+// in the standard library either:
+//
+# if defined(BOOST_NO_MEMBER_TEMPLATES) \
+ && !defined(BOOST_MSVC6_MEMBER_TEMPLATES) \
+ && !defined(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS)
+# define BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
+# endif
+
+//
+// Without member template support, we can't have a conforming
+// std::allocator template either:
+//
+# if defined(BOOST_NO_MEMBER_TEMPLATES) \
+ && !defined(BOOST_MSVC6_MEMBER_TEMPLATES) \
+ && !defined(BOOST_NO_STD_ALLOCATOR)
+# define BOOST_NO_STD_ALLOCATOR
+# endif
+
+//
+// without ADL support then using declarations will break ADL as well:
+//
+#if defined(BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP) && !defined(BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL)
+# define BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
+#endif
+
+//
+// Without typeid support we have no dynamic RTTI either:
+//
+#if defined(BOOST_NO_TYPEID) && !defined(BOOST_NO_RTTI)
+# define BOOST_NO_RTTI
+#endif
+
+//
+// If we have a standard allocator, then we have a partial one as well:
+//
+#if !defined(BOOST_NO_STD_ALLOCATOR)
+# define BOOST_HAS_PARTIAL_STD_ALLOCATOR
+#endif
+
+//
+// We can't have a working std::use_facet if there is no std::locale:
+//
+# if defined(BOOST_NO_STD_LOCALE) && !defined(BOOST_NO_STD_USE_FACET)
+# define BOOST_NO_STD_USE_FACET
+# endif
+
+//
+// We can't have a std::messages facet if there is no std::locale:
+//
+# if defined(BOOST_NO_STD_LOCALE) && !defined(BOOST_NO_STD_MESSAGES)
+# define BOOST_NO_STD_MESSAGES
+# endif
+
+//
+// We can't have a working std::wstreambuf if there is no std::locale:
+//
+# if defined(BOOST_NO_STD_LOCALE) && !defined(BOOST_NO_STD_WSTREAMBUF)
+# define BOOST_NO_STD_WSTREAMBUF
+# endif
+
+//
+// We can't have a <cwctype> if there is no <cwchar>:
+//
+# if defined(BOOST_NO_CWCHAR) && !defined(BOOST_NO_CWCTYPE)
+# define BOOST_NO_CWCTYPE
+# endif
+
+//
+// We can't have a swprintf if there is no <cwchar>:
+//
+# if defined(BOOST_NO_CWCHAR) && !defined(BOOST_NO_SWPRINTF)
+# define BOOST_NO_SWPRINTF
+# endif
+
+//
+// If Win32 support is turned off, then we must turn off
+// threading support also, unless there is some other
+// thread API enabled:
+//
+#if defined(BOOST_DISABLE_WIN32) && defined(_WIN32) \
+ && !defined(BOOST_DISABLE_THREADS) && !defined(BOOST_HAS_PTHREADS)
+# define BOOST_DISABLE_THREADS
+#endif
+
+//
+// Turn on threading support if the compiler thinks that it's in
+// multithreaded mode. We put this here because there are only a
+// limited number of macros that identify this (if there's any missing
+// from here then add to the appropriate compiler section):
+//
+#if (defined(__MT__) || defined(_MT) || defined(_REENTRANT) \
+ || defined(_PTHREADS) || defined(__APPLE__) || defined(__DragonFly__)) \
+ && !defined(BOOST_HAS_THREADS)
+# define BOOST_HAS_THREADS
+#endif
+
+//
+// Turn threading support off if BOOST_DISABLE_THREADS is defined:
+//
+#if defined(BOOST_DISABLE_THREADS) && defined(BOOST_HAS_THREADS)
+# undef BOOST_HAS_THREADS
+#endif
+
+//
+// Turn threading support off if we don't recognise the threading API:
+//
+#if defined(BOOST_HAS_THREADS) && !defined(BOOST_HAS_PTHREADS)\
+ && !defined(BOOST_HAS_WINTHREADS) && !defined(BOOST_HAS_BETHREADS)\
+ && !defined(BOOST_HAS_MPTASKS)
+# undef BOOST_HAS_THREADS
+#endif
+
+//
+// Turn threading detail macros off if we don't (want to) use threading
+//
+#ifndef BOOST_HAS_THREADS
+# undef BOOST_HAS_PTHREADS
+# undef BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
+# undef BOOST_HAS_PTHREAD_YIELD
+# undef BOOST_HAS_PTHREAD_DELAY_NP
+# undef BOOST_HAS_WINTHREADS
+# undef BOOST_HAS_BETHREADS
+# undef BOOST_HAS_MPTASKS
+#endif
+
+//
+// If the compiler claims to be C99 conformant, then it had better
+// have a <stdint.h>:
+//
+# if defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901)
+# define BOOST_HAS_STDINT_H
+# ifndef BOOST_HAS_LOG1P
+# define BOOST_HAS_LOG1P
+# endif
+# ifndef BOOST_HAS_EXPM1
+# define BOOST_HAS_EXPM1
+# endif
+# endif
+
+//
+// Define BOOST_NO_SLIST and BOOST_NO_HASH if required.
+// Note that this is for backwards compatibility only.
+//
+# if !defined(BOOST_HAS_SLIST) && !defined(BOOST_NO_SLIST)
+# define BOOST_NO_SLIST
+# endif
+
+# if !defined(BOOST_HAS_HASH) && !defined(BOOST_NO_HASH)
+# define BOOST_NO_HASH
+# endif
+
+//
+// Set BOOST_SLIST_HEADER if not set already:
+//
+#if defined(BOOST_HAS_SLIST) && !defined(BOOST_SLIST_HEADER)
+# define BOOST_SLIST_HEADER <slist>
+#endif
+
+//
+// Set BOOST_HASH_SET_HEADER if not set already:
+//
+#if defined(BOOST_HAS_HASH) && !defined(BOOST_HASH_SET_HEADER)
+# define BOOST_HASH_SET_HEADER <hash_set>
+#endif
+
+//
+// Set BOOST_HASH_MAP_HEADER if not set already:
+//
+#if defined(BOOST_HAS_HASH) && !defined(BOOST_HASH_MAP_HEADER)
+# define BOOST_HASH_MAP_HEADER <hash_map>
+#endif
+
+// BOOST_HAS_ABI_HEADERS
+// This macro gets set if we have headers that fix the ABI,
+// and prevent ODR violations when linking to external libraries:
+#if defined(BOOST_ABI_PREFIX) && defined(BOOST_ABI_SUFFIX) && !defined(BOOST_HAS_ABI_HEADERS)
+# define BOOST_HAS_ABI_HEADERS
+#endif
+
+#if defined(BOOST_HAS_ABI_HEADERS) && defined(BOOST_DISABLE_ABI_HEADERS)
+# undef BOOST_HAS_ABI_HEADERS
+#endif
+
+// BOOST_NO_STDC_NAMESPACE workaround --------------------------------------//
+// Because std::size_t usage is so common, even in boost headers which do not
+// otherwise use the C library, the <cstddef> workaround is included here so
+// that ugly workaround code need not appear in many other boost headers.
+// NOTE WELL: This is a workaround for non-conforming compilers; <cstddef>
+// must still be #included in the usual places so that <cstddef> inclusion
+// works as expected with standard conforming compilers. The resulting
+// double inclusion of <cstddef> is harmless.
+
+# if defined(BOOST_NO_STDC_NAMESPACE) && defined(__cplusplus)
+# include <cstddef>
+ namespace std { using ::ptrdiff_t; using ::size_t; }
+# endif
+
+// Workaround for the unfortunate min/max macros defined by some platform headers
+
+#define BOOST_PREVENT_MACRO_SUBSTITUTION
+
+#ifndef BOOST_USING_STD_MIN
+# define BOOST_USING_STD_MIN() using std::min
+#endif
+
+#ifndef BOOST_USING_STD_MAX
+# define BOOST_USING_STD_MAX() using std::max
+#endif
+
+// BOOST_NO_STD_MIN_MAX workaround -----------------------------------------//
+
+# if defined(BOOST_NO_STD_MIN_MAX) && defined(__cplusplus)
+
+namespace std {
+ template <class _Tp>
+ inline const _Tp& min BOOST_PREVENT_MACRO_SUBSTITUTION (const _Tp& __a, const _Tp& __b) {
+ return __b < __a ? __b : __a;
+ }
+ template <class _Tp>
+ inline const _Tp& max BOOST_PREVENT_MACRO_SUBSTITUTION (const _Tp& __a, const _Tp& __b) {
+ return __a < __b ? __b : __a;
+ }
+}
+
+# endif
+
+// BOOST_STATIC_CONSTANT workaround --------------------------------------- //
+// On compilers which don't allow in-class initialization of static integral
+// constant members, we must use enums as a workaround if we want the constants
+// to be available at compile-time. This macro gives us a convenient way to
+// declare such constants.
+
+# ifdef BOOST_NO_INCLASS_MEMBER_INITIALIZATION
+# define BOOST_STATIC_CONSTANT(type, assignment) enum { assignment }
+# else
+# define BOOST_STATIC_CONSTANT(type, assignment) static const type assignment
+# endif
+
+// BOOST_USE_FACET / HAS_FACET workaround ----------------------------------//
+// When the standard library does not have a conforming std::use_facet there
+// are various workarounds available, but they differ from library to library.
+// The same problem occurs with has_facet.
+// These macros provide a consistent way to access a locale's facets.
+// Usage:
+// replace
+// std::use_facet<Type>(loc);
+// with
+// BOOST_USE_FACET(Type, loc);
+// Note do not add a std:: prefix to the front of BOOST_USE_FACET!
+// Use for BOOST_HAS_FACET is analogous.
+
+#if defined(BOOST_NO_STD_USE_FACET)
+# ifdef BOOST_HAS_TWO_ARG_USE_FACET
+# define BOOST_USE_FACET(Type, loc) std::use_facet(loc, static_cast<Type*>(0))
+# define BOOST_HAS_FACET(Type, loc) std::has_facet(loc, static_cast<Type*>(0))
+# elif defined(BOOST_HAS_MACRO_USE_FACET)
+# define BOOST_USE_FACET(Type, loc) std::_USE(loc, Type)
+# define BOOST_HAS_FACET(Type, loc) std::_HAS(loc, Type)
+# elif defined(BOOST_HAS_STLP_USE_FACET)
+# define BOOST_USE_FACET(Type, loc) (*std::_Use_facet<Type >(loc))
+# define BOOST_HAS_FACET(Type, loc) std::has_facet< Type >(loc)
+# endif
+#else
+# define BOOST_USE_FACET(Type, loc) std::use_facet< Type >(loc)
+# define BOOST_HAS_FACET(Type, loc) std::has_facet< Type >(loc)
+#endif
+
+// BOOST_NESTED_TEMPLATE workaround ------------------------------------------//
+// Member templates are supported by some compilers even though they can't use
+// the A::template member<U> syntax, as a workaround replace:
+//
+// typedef typename A::template rebind<U> binder;
+//
+// with:
+//
+// typedef typename A::BOOST_NESTED_TEMPLATE rebind<U> binder;
+
+#ifndef BOOST_NO_MEMBER_TEMPLATE_KEYWORD
+# define BOOST_NESTED_TEMPLATE template
+#else
+# define BOOST_NESTED_TEMPLATE
+#endif
+
+// BOOST_UNREACHABLE_RETURN(x) workaround -------------------------------------//
+// Normally evaluates to nothing, unless BOOST_NO_UNREACHABLE_RETURN_DETECTION
+// is defined, in which case it evaluates to return x; Use when you have a return
+// statement that can never be reached.
+
+#ifndef BOOST_UNREACHABLE_RETURN
+# ifdef BOOST_NO_UNREACHABLE_RETURN_DETECTION
+# define BOOST_UNREACHABLE_RETURN(x) return x;
+# else
+# define BOOST_UNREACHABLE_RETURN(x)
+# endif
+#endif
+
+// BOOST_DEDUCED_TYPENAME workaround ------------------------------------------//
+//
+// Some compilers don't support the use of `typename' for dependent
+// types in deduced contexts, e.g.
+//
+// template <class T> void f(T, typename T::type);
+// ^^^^^^^^
+// Replace these declarations with:
+//
+// template <class T> void f(T, BOOST_DEDUCED_TYPENAME T::type);
+
+#ifndef BOOST_NO_DEDUCED_TYPENAME
+# define BOOST_DEDUCED_TYPENAME typename
+#else
+# define BOOST_DEDUCED_TYPENAME
+#endif
+
+#ifndef BOOST_NO_TYPENAME_WITH_CTOR
+# define BOOST_CTOR_TYPENAME typename
+#else
+# define BOOST_CTOR_TYPENAME
+#endif
+
+// long long workaround ------------------------------------------//
+// On gcc (and maybe other compilers?) long long is alway supported
+// but it's use may generate either warnings (with -ansi), or errors
+// (with -pedantic -ansi) unless it's use is prefixed by __extension__
+//
+#if defined(BOOST_HAS_LONG_LONG) && defined(__cplusplus)
+namespace boost{
+# ifdef __GNUC__
+ __extension__ typedef long long long_long_type;
+ __extension__ typedef unsigned long long ulong_long_type;
+# else
+ typedef long long long_long_type;
+ typedef unsigned long long ulong_long_type;
+# endif
+}
+#endif
+// same again for __int128:
+#if defined(BOOST_HAS_INT128) && defined(__cplusplus)
+namespace boost{
+# ifdef __GNUC__
+ __extension__ typedef __int128 int128_type;
+ __extension__ typedef unsigned __int128 uint128_type;
+# else
+ typedef __int128 int128_type;
+ typedef unsigned __int128 uint128_type;
+# endif
+}
+#endif
+// same again for __float128:
+#if defined(BOOST_HAS_FLOAT128) && defined(__cplusplus)
+namespace boost {
+# ifdef __GNUC__
+ __extension__ typedef __float128 float128_type;
+# else
+ typedef __float128 float128_type;
+# endif
+}
+#endif
+
+// BOOST_[APPEND_]EXPLICIT_TEMPLATE_[NON_]TYPE macros --------------------------//
+
+// These macros are obsolete. Port away and remove.
+
+# define BOOST_EXPLICIT_TEMPLATE_TYPE(t)
+# define BOOST_EXPLICIT_TEMPLATE_TYPE_SPEC(t)
+# define BOOST_EXPLICIT_TEMPLATE_NON_TYPE(t, v)
+# define BOOST_EXPLICIT_TEMPLATE_NON_TYPE_SPEC(t, v)
+
+# define BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE(t)
+# define BOOST_APPEND_EXPLICIT_TEMPLATE_TYPE_SPEC(t)
+# define BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE(t, v)
+# define BOOST_APPEND_EXPLICIT_TEMPLATE_NON_TYPE_SPEC(t, v)
+
+// When BOOST_NO_STD_TYPEINFO is defined, we can just import
+// the global definition into std namespace:
+#if defined(BOOST_NO_STD_TYPEINFO) && defined(__cplusplus)
+#include <typeinfo>
+namespace std{ using ::type_info; }
+#endif
+
+// ---------------------------------------------------------------------------//
+
+// Helper macro BOOST_STRINGIZE:
+// Helper macro BOOST_JOIN:
+
+#include <boost/config/helper_macros.hpp>
+
+//
+// Set some default values for compiler/library/platform names.
+// These are for debugging config setup only:
+//
+# ifndef BOOST_COMPILER
+# define BOOST_COMPILER "Unknown ISO C++ Compiler"
+# endif
+# ifndef BOOST_STDLIB
+# define BOOST_STDLIB "Unknown ISO standard library"
+# endif
+# ifndef BOOST_PLATFORM
+# if defined(unix) || defined(__unix) || defined(_XOPEN_SOURCE) \
+ || defined(_POSIX_SOURCE)
+# define BOOST_PLATFORM "Generic Unix"
+# else
+# define BOOST_PLATFORM "Unknown"
+# endif
+# endif
+
+//
+// Set some default values GPU support
+//
+# ifndef BOOST_GPU_ENABLED
+# 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_MAY_ALIAS -----------------------------------------------//
+// The macro expands to an attribute to mark a type that is allowed to alias other types.
+// The macro is defined in the compiler-specific headers.
+#if !defined(BOOST_MAY_ALIAS)
+# define BOOST_NO_MAY_ALIAS
+# define BOOST_MAY_ALIAS
+#endif
+
+// BOOST_FORCEINLINE ---------------------------------------------//
+// Macro to use in place of 'inline' to force a function to be inline
+#if !defined(BOOST_FORCEINLINE)
+# if defined(_MSC_VER)
+# define BOOST_FORCEINLINE __forceinline
+# elif defined(__GNUC__) && __GNUC__ > 3
+ // Clang also defines __GNUC__ (as 4)
+# define BOOST_FORCEINLINE inline __attribute__ ((__always_inline__))
+# else
+# define BOOST_FORCEINLINE inline
+# endif
+#endif
+
+// BOOST_NOINLINE ---------------------------------------------//
+// Macro to use in place of 'inline' to prevent a function to be inlined
+#if !defined(BOOST_NOINLINE)
+# if defined(_MSC_VER)
+# define BOOST_NOINLINE __declspec(noinline)
+# elif defined(__GNUC__) && __GNUC__ > 3
+ // Clang also defines __GNUC__ (as 4)
+# if defined(__CUDACC__)
+ // nvcc doesn't always parse __noinline__,
+ // see: https://svn.boost.org/trac/boost/ticket/9392
+# define BOOST_NOINLINE __attribute__ ((noinline))
+# else
+# define BOOST_NOINLINE __attribute__ ((__noinline__))
+# endif
+# else
+# define BOOST_NOINLINE
+# endif
+#endif
+
+// BOOST_NORETURN ---------------------------------------------//
+// Macro to use before a function declaration/definition to designate
+// the function as not returning normally (i.e. with a return statement
+// or by leaving the function scope, if the function return type is void).
+#if !defined(BOOST_NORETURN)
+# if defined(_MSC_VER)
+# define BOOST_NORETURN __declspec(noreturn)
+# elif defined(__GNUC__)
+# define BOOST_NORETURN __attribute__ ((__noreturn__))
+# elif defined(__has_attribute) && defined(__SUNPRO_CC) && (__SUNPRO_CC > 0x5130)
+# if __has_attribute(noreturn)
+# define BOOST_NORETURN [[noreturn]]
+# endif
+# elif defined(__has_cpp_attribute)
+# if __has_cpp_attribute(noreturn)
+# define BOOST_NORETURN [[noreturn]]
+# endif
+# endif
+#endif
+
+#if !defined(BOOST_NORETURN)
+# define BOOST_NO_NORETURN
+# define BOOST_NORETURN
+#endif
+
+// Branch prediction hints
+// These macros are intended to wrap conditional expressions that yield true or false
+//
+// if (BOOST_LIKELY(var == 10))
+// {
+// // the most probable code here
+// }
+//
+#if !defined(BOOST_LIKELY)
+# define BOOST_LIKELY(x) x
+#endif
+#if !defined(BOOST_UNLIKELY)
+# define BOOST_UNLIKELY(x) x
+#endif
+
+// Type and data alignment specification
+//
+#if !defined(BOOST_ALIGNMENT)
+# if !defined(BOOST_NO_CXX11_ALIGNAS)
+# define BOOST_ALIGNMENT(x) alignas(x)
+# elif defined(_MSC_VER)
+# define BOOST_ALIGNMENT(x) __declspec(align(x))
+# elif defined(__GNUC__)
+# define BOOST_ALIGNMENT(x) __attribute__ ((__aligned__(x)))
+# else
+# define BOOST_NO_ALIGNMENT
+# define BOOST_ALIGNMENT(x)
+# endif
+#endif
+
+// Lack of non-public defaulted functions is implied by the lack of any defaulted functions
+#if !defined(BOOST_NO_CXX11_NON_PUBLIC_DEFAULTED_FUNCTIONS) && defined(BOOST_NO_CXX11_DEFAULTED_FUNCTIONS)
+# define BOOST_NO_CXX11_NON_PUBLIC_DEFAULTED_FUNCTIONS
+#endif
+
+// Lack of defaulted moves is implied by the lack of either rvalue references or any defaulted functions
+#if !defined(BOOST_NO_CXX11_DEFAULTED_MOVES) && (defined(BOOST_NO_CXX11_DEFAULTED_FUNCTIONS) || defined(BOOST_NO_CXX11_RVALUE_REFERENCES))
+# define BOOST_NO_CXX11_DEFAULTED_MOVES
+#endif
+
+// Defaulted and deleted function declaration helpers
+// These macros are intended to be inside a class definition.
+// BOOST_DEFAULTED_FUNCTION accepts the function declaration and its
+// body, which will be used if the compiler doesn't support defaulted functions.
+// BOOST_DELETED_FUNCTION only accepts the function declaration. It
+// will expand to a private function declaration, if the compiler doesn't support
+// deleted functions. Because of this it is recommended to use BOOST_DELETED_FUNCTION
+// in the end of the class definition.
+//
+// class my_class
+// {
+// public:
+// // Default-constructible
+// BOOST_DEFAULTED_FUNCTION(my_class(), {})
+// // Copying prohibited
+// BOOST_DELETED_FUNCTION(my_class(my_class const&))
+// BOOST_DELETED_FUNCTION(my_class& operator= (my_class const&))
+// };
+//
+#if !(defined(BOOST_NO_CXX11_DEFAULTED_FUNCTIONS) || defined(BOOST_NO_CXX11_NON_PUBLIC_DEFAULTED_FUNCTIONS))
+# define BOOST_DEFAULTED_FUNCTION(fun, body) fun = default;
+#else
+# define BOOST_DEFAULTED_FUNCTION(fun, body) fun body
+#endif
+
+#if !defined(BOOST_NO_CXX11_DELETED_FUNCTIONS)
+# define BOOST_DELETED_FUNCTION(fun) fun = delete;
+#else
+# define BOOST_DELETED_FUNCTION(fun) private: fun;
+#endif
+
+//
+// Set BOOST_NO_DECLTYPE_N3276 when BOOST_NO_DECLTYPE is defined
+//
+#if defined(BOOST_NO_CXX11_DECLTYPE) && !defined(BOOST_NO_CXX11_DECLTYPE_N3276)
+#define BOOST_NO_CXX11_DECLTYPE_N3276 BOOST_NO_CXX11_DECLTYPE
+#endif
+
+// -------------------- Deprecated macros for 1.50 ---------------------------
+// These will go away in a future release
+
+// Use BOOST_NO_CXX11_HDR_UNORDERED_SET or BOOST_NO_CXX11_HDR_UNORDERED_MAP
+// instead of BOOST_NO_STD_UNORDERED
+#if defined(BOOST_NO_CXX11_HDR_UNORDERED_MAP) || defined (BOOST_NO_CXX11_HDR_UNORDERED_SET)
+# ifndef BOOST_NO_CXX11_STD_UNORDERED
+# define BOOST_NO_CXX11_STD_UNORDERED
+# endif
+#endif
+
+// Use BOOST_NO_CXX11_HDR_INITIALIZER_LIST instead of BOOST_NO_INITIALIZER_LISTS
+#if defined(BOOST_NO_CXX11_HDR_INITIALIZER_LIST) && !defined(BOOST_NO_INITIALIZER_LISTS)
+# define BOOST_NO_INITIALIZER_LISTS
+#endif
+
+// Use BOOST_NO_CXX11_HDR_ARRAY instead of BOOST_NO_0X_HDR_ARRAY
+#if defined(BOOST_NO_CXX11_HDR_ARRAY) && !defined(BOOST_NO_0X_HDR_ARRAY)
+# define BOOST_NO_0X_HDR_ARRAY
+#endif
+// Use BOOST_NO_CXX11_HDR_CHRONO instead of BOOST_NO_0X_HDR_CHRONO
+#if defined(BOOST_NO_CXX11_HDR_CHRONO) && !defined(BOOST_NO_0X_HDR_CHRONO)
+# define BOOST_NO_0X_HDR_CHRONO
+#endif
+// Use BOOST_NO_CXX11_HDR_CODECVT instead of BOOST_NO_0X_HDR_CODECVT
+#if defined(BOOST_NO_CXX11_HDR_CODECVT) && !defined(BOOST_NO_0X_HDR_CODECVT)
+# define BOOST_NO_0X_HDR_CODECVT
+#endif
+// Use BOOST_NO_CXX11_HDR_CONDITION_VARIABLE instead of BOOST_NO_0X_HDR_CONDITION_VARIABLE
+#if defined(BOOST_NO_CXX11_HDR_CONDITION_VARIABLE) && !defined(BOOST_NO_0X_HDR_CONDITION_VARIABLE)
+# define BOOST_NO_0X_HDR_CONDITION_VARIABLE
+#endif
+// Use BOOST_NO_CXX11_HDR_FORWARD_LIST instead of BOOST_NO_0X_HDR_FORWARD_LIST
+#if defined(BOOST_NO_CXX11_HDR_FORWARD_LIST) && !defined(BOOST_NO_0X_HDR_FORWARD_LIST)
+# define BOOST_NO_0X_HDR_FORWARD_LIST
+#endif
+// Use BOOST_NO_CXX11_HDR_FUTURE instead of BOOST_NO_0X_HDR_FUTURE
+#if defined(BOOST_NO_CXX11_HDR_FUTURE) && !defined(BOOST_NO_0X_HDR_FUTURE)
+# define BOOST_NO_0X_HDR_FUTURE
+#endif
+
+// Use BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+// instead of BOOST_NO_0X_HDR_INITIALIZER_LIST or BOOST_NO_INITIALIZER_LISTS
+#ifdef BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+# ifndef BOOST_NO_0X_HDR_INITIALIZER_LIST
+# define BOOST_NO_0X_HDR_INITIALIZER_LIST
+# endif
+# ifndef BOOST_NO_INITIALIZER_LISTS
+# define BOOST_NO_INITIALIZER_LISTS
+# endif
+#endif
+
+// Use BOOST_NO_CXX11_HDR_MUTEX instead of BOOST_NO_0X_HDR_MUTEX
+#if defined(BOOST_NO_CXX11_HDR_MUTEX) && !defined(BOOST_NO_0X_HDR_MUTEX)
+# define BOOST_NO_0X_HDR_MUTEX
+#endif
+// Use BOOST_NO_CXX11_HDR_RANDOM instead of BOOST_NO_0X_HDR_RANDOM
+#if defined(BOOST_NO_CXX11_HDR_RANDOM) && !defined(BOOST_NO_0X_HDR_RANDOM)
+# define BOOST_NO_0X_HDR_RANDOM
+#endif
+// Use BOOST_NO_CXX11_HDR_RATIO instead of BOOST_NO_0X_HDR_RATIO
+#if defined(BOOST_NO_CXX11_HDR_RATIO) && !defined(BOOST_NO_0X_HDR_RATIO)
+# define BOOST_NO_0X_HDR_RATIO
+#endif
+// Use BOOST_NO_CXX11_HDR_REGEX instead of BOOST_NO_0X_HDR_REGEX
+#if defined(BOOST_NO_CXX11_HDR_REGEX) && !defined(BOOST_NO_0X_HDR_REGEX)
+# define BOOST_NO_0X_HDR_REGEX
+#endif
+// Use BOOST_NO_CXX11_HDR_SYSTEM_ERROR instead of BOOST_NO_0X_HDR_SYSTEM_ERROR
+#if defined(BOOST_NO_CXX11_HDR_SYSTEM_ERROR) && !defined(BOOST_NO_0X_HDR_SYSTEM_ERROR)
+# define BOOST_NO_0X_HDR_SYSTEM_ERROR
+#endif
+// Use BOOST_NO_CXX11_HDR_THREAD instead of BOOST_NO_0X_HDR_THREAD
+#if defined(BOOST_NO_CXX11_HDR_THREAD) && !defined(BOOST_NO_0X_HDR_THREAD)
+# define BOOST_NO_0X_HDR_THREAD
+#endif
+// Use BOOST_NO_CXX11_HDR_TUPLE instead of BOOST_NO_0X_HDR_TUPLE
+#if defined(BOOST_NO_CXX11_HDR_TUPLE) && !defined(BOOST_NO_0X_HDR_TUPLE)
+# define BOOST_NO_0X_HDR_TUPLE
+#endif
+// Use BOOST_NO_CXX11_HDR_TYPE_TRAITS instead of BOOST_NO_0X_HDR_TYPE_TRAITS
+#if defined(BOOST_NO_CXX11_HDR_TYPE_TRAITS) && !defined(BOOST_NO_0X_HDR_TYPE_TRAITS)
+# define BOOST_NO_0X_HDR_TYPE_TRAITS
+#endif
+// Use BOOST_NO_CXX11_HDR_TYPEINDEX instead of BOOST_NO_0X_HDR_TYPEINDEX
+#if defined(BOOST_NO_CXX11_HDR_TYPEINDEX) && !defined(BOOST_NO_0X_HDR_TYPEINDEX)
+# define BOOST_NO_0X_HDR_TYPEINDEX
+#endif
+// Use BOOST_NO_CXX11_HDR_UNORDERED_MAP instead of BOOST_NO_0X_HDR_UNORDERED_MAP
+#if defined(BOOST_NO_CXX11_HDR_UNORDERED_MAP) && !defined(BOOST_NO_0X_HDR_UNORDERED_MAP)
+# define BOOST_NO_0X_HDR_UNORDERED_MAP
+#endif
+// Use BOOST_NO_CXX11_HDR_UNORDERED_SET instead of BOOST_NO_0X_HDR_UNORDERED_SET
+#if defined(BOOST_NO_CXX11_HDR_UNORDERED_SET) && !defined(BOOST_NO_0X_HDR_UNORDERED_SET)
+# define BOOST_NO_0X_HDR_UNORDERED_SET
+#endif
+
+// ------------------ End of deprecated macros for 1.50 ---------------------------
+
+// -------------------- Deprecated macros for 1.51 ---------------------------
+// These will go away in a future release
+
+// Use BOOST_NO_CXX11_AUTO_DECLARATIONS instead of BOOST_NO_AUTO_DECLARATIONS
+#if defined(BOOST_NO_CXX11_AUTO_DECLARATIONS) && !defined(BOOST_NO_AUTO_DECLARATIONS)
+# define BOOST_NO_AUTO_DECLARATIONS
+#endif
+// Use BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS instead of BOOST_NO_AUTO_MULTIDECLARATIONS
+#if defined(BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS) && !defined(BOOST_NO_AUTO_MULTIDECLARATIONS)
+# define BOOST_NO_AUTO_MULTIDECLARATIONS
+#endif
+// Use BOOST_NO_CXX11_CHAR16_T instead of BOOST_NO_CHAR16_T
+#if defined(BOOST_NO_CXX11_CHAR16_T) && !defined(BOOST_NO_CHAR16_T)
+# define BOOST_NO_CHAR16_T
+#endif
+// Use BOOST_NO_CXX11_CHAR32_T instead of BOOST_NO_CHAR32_T
+#if defined(BOOST_NO_CXX11_CHAR32_T) && !defined(BOOST_NO_CHAR32_T)
+# define BOOST_NO_CHAR32_T
+#endif
+// Use BOOST_NO_CXX11_TEMPLATE_ALIASES instead of BOOST_NO_TEMPLATE_ALIASES
+#if defined(BOOST_NO_CXX11_TEMPLATE_ALIASES) && !defined(BOOST_NO_TEMPLATE_ALIASES)
+# define BOOST_NO_TEMPLATE_ALIASES
+#endif
+// Use BOOST_NO_CXX11_CONSTEXPR instead of BOOST_NO_CONSTEXPR
+#if defined(BOOST_NO_CXX11_CONSTEXPR) && !defined(BOOST_NO_CONSTEXPR)
+# define BOOST_NO_CONSTEXPR
+#endif
+// Use BOOST_NO_CXX11_DECLTYPE_N3276 instead of BOOST_NO_DECLTYPE_N3276
+#if defined(BOOST_NO_CXX11_DECLTYPE_N3276) && !defined(BOOST_NO_DECLTYPE_N3276)
+# define BOOST_NO_DECLTYPE_N3276
+#endif
+// Use BOOST_NO_CXX11_DECLTYPE instead of BOOST_NO_DECLTYPE
+#if defined(BOOST_NO_CXX11_DECLTYPE) && !defined(BOOST_NO_DECLTYPE)
+# define BOOST_NO_DECLTYPE
+#endif
+// Use BOOST_NO_CXX11_DEFAULTED_FUNCTIONS instead of BOOST_NO_DEFAULTED_FUNCTIONS
+#if defined(BOOST_NO_CXX11_DEFAULTED_FUNCTIONS) && !defined(BOOST_NO_DEFAULTED_FUNCTIONS)
+# define BOOST_NO_DEFAULTED_FUNCTIONS
+#endif
+// Use BOOST_NO_CXX11_DELETED_FUNCTIONS instead of BOOST_NO_DELETED_FUNCTIONS
+#if defined(BOOST_NO_CXX11_DELETED_FUNCTIONS) && !defined(BOOST_NO_DELETED_FUNCTIONS)
+# define BOOST_NO_DELETED_FUNCTIONS
+#endif
+// Use BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS instead of BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
+#if defined(BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS) && !defined(BOOST_NO_EXPLICIT_CONVERSION_OPERATORS)
+# define BOOST_NO_EXPLICIT_CONVERSION_OPERATORS
+#endif
+// Use BOOST_NO_CXX11_EXTERN_TEMPLATE instead of BOOST_NO_EXTERN_TEMPLATE
+#if defined(BOOST_NO_CXX11_EXTERN_TEMPLATE) && !defined(BOOST_NO_EXTERN_TEMPLATE)
+# define BOOST_NO_EXTERN_TEMPLATE
+#endif
+// Use BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS instead of BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS
+#if defined(BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS) && !defined(BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS)
+# define BOOST_NO_FUNCTION_TEMPLATE_DEFAULT_ARGS
+#endif
+// Use BOOST_NO_CXX11_LAMBDAS instead of BOOST_NO_LAMBDAS
+#if defined(BOOST_NO_CXX11_LAMBDAS) && !defined(BOOST_NO_LAMBDAS)
+# define BOOST_NO_LAMBDAS
+#endif
+// Use BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS instead of BOOST_NO_LOCAL_CLASS_TEMPLATE_PARAMETERS
+#if defined(BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS) && !defined(BOOST_NO_LOCAL_CLASS_TEMPLATE_PARAMETERS)
+# define BOOST_NO_LOCAL_CLASS_TEMPLATE_PARAMETERS
+#endif
+// Use BOOST_NO_CXX11_NOEXCEPT instead of BOOST_NO_NOEXCEPT
+#if defined(BOOST_NO_CXX11_NOEXCEPT) && !defined(BOOST_NO_NOEXCEPT)
+# define BOOST_NO_NOEXCEPT
+#endif
+// Use BOOST_NO_CXX11_NULLPTR instead of BOOST_NO_NULLPTR
+#if defined(BOOST_NO_CXX11_NULLPTR) && !defined(BOOST_NO_NULLPTR)
+# define BOOST_NO_NULLPTR
+#endif
+// Use BOOST_NO_CXX11_RAW_LITERALS instead of BOOST_NO_RAW_LITERALS
+#if defined(BOOST_NO_CXX11_RAW_LITERALS) && !defined(BOOST_NO_RAW_LITERALS)
+# define BOOST_NO_RAW_LITERALS
+#endif
+// Use BOOST_NO_CXX11_RVALUE_REFERENCES instead of BOOST_NO_RVALUE_REFERENCES
+#if defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && !defined(BOOST_NO_RVALUE_REFERENCES)
+# define BOOST_NO_RVALUE_REFERENCES
+#endif
+// Use BOOST_NO_CXX11_SCOPED_ENUMS instead of BOOST_NO_SCOPED_ENUMS
+#if defined(BOOST_NO_CXX11_SCOPED_ENUMS) && !defined(BOOST_NO_SCOPED_ENUMS)
+# define BOOST_NO_SCOPED_ENUMS
+#endif
+// Use BOOST_NO_CXX11_STATIC_ASSERT instead of BOOST_NO_STATIC_ASSERT
+#if defined(BOOST_NO_CXX11_STATIC_ASSERT) && !defined(BOOST_NO_STATIC_ASSERT)
+# define BOOST_NO_STATIC_ASSERT
+#endif
+// Use BOOST_NO_CXX11_STD_UNORDERED instead of BOOST_NO_STD_UNORDERED
+#if defined(BOOST_NO_CXX11_STD_UNORDERED) && !defined(BOOST_NO_STD_UNORDERED)
+# define BOOST_NO_STD_UNORDERED
+#endif
+// Use BOOST_NO_CXX11_UNICODE_LITERALS instead of BOOST_NO_UNICODE_LITERALS
+#if defined(BOOST_NO_CXX11_UNICODE_LITERALS) && !defined(BOOST_NO_UNICODE_LITERALS)
+# define BOOST_NO_UNICODE_LITERALS
+#endif
+// Use BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX instead of BOOST_NO_UNIFIED_INITIALIZATION_SYNTAX
+#if defined(BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX) && !defined(BOOST_NO_UNIFIED_INITIALIZATION_SYNTAX)
+# define BOOST_NO_UNIFIED_INITIALIZATION_SYNTAX
+#endif
+// Use BOOST_NO_CXX11_VARIADIC_TEMPLATES instead of BOOST_NO_VARIADIC_TEMPLATES
+#if defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && !defined(BOOST_NO_VARIADIC_TEMPLATES)
+# define BOOST_NO_VARIADIC_TEMPLATES
+#endif
+// Use BOOST_NO_CXX11_VARIADIC_MACROS instead of BOOST_NO_VARIADIC_MACROS
+#if defined(BOOST_NO_CXX11_VARIADIC_MACROS) && !defined(BOOST_NO_VARIADIC_MACROS)
+# define BOOST_NO_VARIADIC_MACROS
+#endif
+// Use BOOST_NO_CXX11_NUMERIC_LIMITS instead of BOOST_NO_NUMERIC_LIMITS_LOWEST
+#if defined(BOOST_NO_CXX11_NUMERIC_LIMITS) && !defined(BOOST_NO_NUMERIC_LIMITS_LOWEST)
+# define BOOST_NO_NUMERIC_LIMITS_LOWEST
+#endif
+// ------------------ End of deprecated macros for 1.51 ---------------------------
+
+
+
+//
+// Helper macros BOOST_NOEXCEPT, BOOST_NOEXCEPT_IF, BOOST_NOEXCEPT_EXPR
+// These aid the transition to C++11 while still supporting C++03 compilers
+//
+#ifdef BOOST_NO_CXX11_NOEXCEPT
+# define BOOST_NOEXCEPT
+# define BOOST_NOEXCEPT_OR_NOTHROW throw()
+# define BOOST_NOEXCEPT_IF(Predicate)
+# define BOOST_NOEXCEPT_EXPR(Expression) false
+#else
+# define BOOST_NOEXCEPT noexcept
+# define BOOST_NOEXCEPT_OR_NOTHROW noexcept
+# define BOOST_NOEXCEPT_IF(Predicate) noexcept((Predicate))
+# define BOOST_NOEXCEPT_EXPR(Expression) noexcept((Expression))
+#endif
+//
+// Helper macro BOOST_FALLTHROUGH
+// Fallback definition of BOOST_FALLTHROUGH macro used to mark intended
+// fall-through between case labels in a switch statement. We use a definition
+// that requires a semicolon after it to avoid at least one type of misuse even
+// on unsupported compilers.
+//
+#ifndef BOOST_FALLTHROUGH
+# define BOOST_FALLTHROUGH ((void)0)
+#endif
+
+//
+// constexpr workarounds
+//
+#if defined(BOOST_NO_CXX11_CONSTEXPR)
+#define BOOST_CONSTEXPR
+#define BOOST_CONSTEXPR_OR_CONST const
+#else
+#define BOOST_CONSTEXPR constexpr
+#define BOOST_CONSTEXPR_OR_CONST constexpr
+#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
+
+//
+// Set BOOST_HAS_STATIC_ASSERT when BOOST_NO_CXX11_STATIC_ASSERT is not defined
+//
+#if !defined(BOOST_NO_CXX11_STATIC_ASSERT) && !defined(BOOST_HAS_STATIC_ASSERT)
+# define BOOST_HAS_STATIC_ASSERT
+#endif
+
+//
+// Set BOOST_HAS_RVALUE_REFS when BOOST_NO_CXX11_RVALUE_REFERENCES is not defined
+//
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && !defined(BOOST_HAS_RVALUE_REFS)
+#define BOOST_HAS_RVALUE_REFS
+#endif
+
+//
+// Set BOOST_HAS_VARIADIC_TMPL when BOOST_NO_CXX11_VARIADIC_TEMPLATES is not defined
+//
+#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && !defined(BOOST_HAS_VARIADIC_TMPL)
+#define BOOST_HAS_VARIADIC_TMPL
+#endif
+//
+// Set BOOST_NO_CXX11_FIXED_LENGTH_VARIADIC_TEMPLATE_EXPANSION_PACKS when
+// BOOST_NO_CXX11_VARIADIC_TEMPLATES is set:
+//
+#if defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && !defined(BOOST_NO_CXX11_FIXED_LENGTH_VARIADIC_TEMPLATE_EXPANSION_PACKS)
+# define BOOST_NO_CXX11_FIXED_LENGTH_VARIADIC_TEMPLATE_EXPANSION_PACKS
+#endif
+
+//
+// Finish off with checks for macros that are depricated / no longer supported,
+// if any of these are set then it's very likely that much of Boost will no
+// longer work. So stop with a #error for now, but give the user a chance
+// to continue at their own risk if they really want to:
+//
+#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_CONFIG_ALLOW_DEPRECATED)
+# error "You are using a compiler which lacks features which are now a minimum requirement in order to use Boost, define BOOST_CONFIG_ALLOW_DEPRECATED if you want to continue at your own risk!!!"
+#endif
+
+#endif
diff --git a/include/boost/config/header_deprecated.hpp b/include/boost/config/header_deprecated.hpp
new file mode 100644
index 0000000..864554f
--- /dev/null
+++ b/include/boost/config/header_deprecated.hpp
@@ -0,0 +1,26 @@
+#ifndef BOOST_CONFIG_HEADER_DEPRECATED_HPP_INCLUDED
+#define BOOST_CONFIG_HEADER_DEPRECATED_HPP_INCLUDED
+
+// Copyright 2017 Peter Dimov.
+//
+// Distributed under the Boost Software License, Version 1.0.
+//
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+// BOOST_HEADER_DEPRECATED("<alternative>")
+//
+// Expands to the equivalent of
+// BOOST_PRAGMA_MESSAGE("This header is deprecated. Use <alternative> instead.")
+//
+// Note that this header is C compatible.
+
+#include <boost/config/pragma_message.hpp>
+
+#if defined(BOOST_ALLOW_DEPRECATED_HEADERS)
+# define BOOST_HEADER_DEPRECATED(a)
+#else
+# define BOOST_HEADER_DEPRECATED(a) BOOST_PRAGMA_MESSAGE("This header is deprecated. Use " a " instead.")
+#endif
+
+#endif // BOOST_CONFIG_HEADER_DEPRECATED_HPP_INCLUDED
diff --git a/include/boost/config/helper_macros.hpp b/include/boost/config/helper_macros.hpp
new file mode 100644
index 0000000..3e79526
--- /dev/null
+++ b/include/boost/config/helper_macros.hpp
@@ -0,0 +1,37 @@
+#ifndef BOOST_CONFIG_HELPER_MACROS_HPP_INCLUDED
+#define BOOST_CONFIG_HELPER_MACROS_HPP_INCLUDED
+
+// Copyright 2001 John Maddock.
+// Copyright 2017 Peter Dimov.
+//
+// Distributed under the Boost Software License, Version 1.0.
+//
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+// BOOST_STRINGIZE(X)
+// BOOST_JOIN(X, Y)
+//
+// Note that this header is C compatible.
+
+//
+// Helper macro BOOST_STRINGIZE:
+// Converts the parameter X to a string after macro replacement
+// on X has been performed.
+//
+#define BOOST_STRINGIZE(X) BOOST_DO_STRINGIZE(X)
+#define BOOST_DO_STRINGIZE(X) #X
+
+//
+// Helper macro BOOST_JOIN:
+// The following piece of macro magic joins the two
+// arguments together, even when one of the arguments is
+// itself a macro (see 16.3.1 in C++ standard). The key
+// is that macro expansion of macro arguments does not
+// occur in BOOST_DO_JOIN2 but does in BOOST_DO_JOIN.
+//
+#define BOOST_JOIN(X, Y) BOOST_DO_JOIN(X, Y)
+#define BOOST_DO_JOIN(X, Y) BOOST_DO_JOIN2(X,Y)
+#define BOOST_DO_JOIN2(X, Y) X##Y
+
+#endif // BOOST_CONFIG_HELPER_MACROS_HPP_INCLUDED
diff --git a/include/boost/config/no_tr1/cmath.hpp b/include/boost/config/no_tr1/cmath.hpp
new file mode 100644
index 0000000..d8268d8
--- /dev/null
+++ b/include/boost/config/no_tr1/cmath.hpp
@@ -0,0 +1,28 @@
+// (C) Copyright John Maddock 2008.
+// 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)
+//
+// The aim of this header is just to include <cmath> but to do
+// so in a way that does not result in recursive inclusion of
+// the Boost TR1 components if boost/tr1/tr1/cmath is in the
+// include search path. We have to do this to avoid circular
+// dependencies:
+//
+
+#ifndef BOOST_CONFIG_CMATH
+# define BOOST_CONFIG_CMATH
+
+# ifndef BOOST_TR1_NO_RECURSION
+# define BOOST_TR1_NO_RECURSION
+# define BOOST_CONFIG_NO_CMATH_RECURSION
+# endif
+
+# include <cmath>
+
+# ifdef BOOST_CONFIG_NO_CMATH_RECURSION
+# undef BOOST_TR1_NO_RECURSION
+# undef BOOST_CONFIG_NO_CMATH_RECURSION
+# endif
+
+#endif
diff --git a/include/boost/config/no_tr1/complex.hpp b/include/boost/config/no_tr1/complex.hpp
new file mode 100644
index 0000000..ca20092
--- /dev/null
+++ b/include/boost/config/no_tr1/complex.hpp
@@ -0,0 +1,28 @@
+// (C) Copyright John Maddock 2005.
+// 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)
+//
+// The aim of this header is just to include <complex> but to do
+// so in a way that does not result in recursive inclusion of
+// the Boost TR1 components if boost/tr1/tr1/complex is in the
+// include search path. We have to do this to avoid circular
+// dependencies:
+//
+
+#ifndef BOOST_CONFIG_COMPLEX
+# define BOOST_CONFIG_COMPLEX
+
+# ifndef BOOST_TR1_NO_RECURSION
+# define BOOST_TR1_NO_RECURSION
+# define BOOST_CONFIG_NO_COMPLEX_RECURSION
+# endif
+
+# include <complex>
+
+# ifdef BOOST_CONFIG_NO_COMPLEX_RECURSION
+# undef BOOST_TR1_NO_RECURSION
+# undef BOOST_CONFIG_NO_COMPLEX_RECURSION
+# endif
+
+#endif
diff --git a/include/boost/config/no_tr1/functional.hpp b/include/boost/config/no_tr1/functional.hpp
new file mode 100644
index 0000000..e395efc
--- /dev/null
+++ b/include/boost/config/no_tr1/functional.hpp
@@ -0,0 +1,28 @@
+// (C) Copyright John Maddock 2005.
+// 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)
+//
+// The aim of this header is just to include <functional> but to do
+// so in a way that does not result in recursive inclusion of
+// the Boost TR1 components if boost/tr1/tr1/functional is in the
+// include search path. We have to do this to avoid circular
+// dependencies:
+//
+
+#ifndef BOOST_CONFIG_FUNCTIONAL
+# define BOOST_CONFIG_FUNCTIONAL
+
+# ifndef BOOST_TR1_NO_RECURSION
+# define BOOST_TR1_NO_RECURSION
+# define BOOST_CONFIG_NO_FUNCTIONAL_RECURSION
+# endif
+
+# include <functional>
+
+# ifdef BOOST_CONFIG_NO_FUNCTIONAL_RECURSION
+# undef BOOST_TR1_NO_RECURSION
+# undef BOOST_CONFIG_NO_FUNCTIONAL_RECURSION
+# endif
+
+#endif
diff --git a/include/boost/config/no_tr1/memory.hpp b/include/boost/config/no_tr1/memory.hpp
new file mode 100644
index 0000000..2b5d208
--- /dev/null
+++ b/include/boost/config/no_tr1/memory.hpp
@@ -0,0 +1,28 @@
+// (C) Copyright John Maddock 2005.
+// 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)
+//
+// The aim of this header is just to include <memory> but to do
+// so in a way that does not result in recursive inclusion of
+// the Boost TR1 components if boost/tr1/tr1/memory is in the
+// include search path. We have to do this to avoid circular
+// dependencies:
+//
+
+#ifndef BOOST_CONFIG_MEMORY
+# define BOOST_CONFIG_MEMORY
+
+# ifndef BOOST_TR1_NO_RECURSION
+# define BOOST_TR1_NO_RECURSION
+# define BOOST_CONFIG_NO_MEMORY_RECURSION
+# endif
+
+# include <memory>
+
+# ifdef BOOST_CONFIG_NO_MEMORY_RECURSION
+# undef BOOST_TR1_NO_RECURSION
+# undef BOOST_CONFIG_NO_MEMORY_RECURSION
+# endif
+
+#endif
diff --git a/include/boost/config/no_tr1/utility.hpp b/include/boost/config/no_tr1/utility.hpp
new file mode 100644
index 0000000..dea8f11
--- /dev/null
+++ b/include/boost/config/no_tr1/utility.hpp
@@ -0,0 +1,28 @@
+// (C) Copyright John Maddock 2005.
+// 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)
+//
+// The aim of this header is just to include <utility> but to do
+// so in a way that does not result in recursive inclusion of
+// the Boost TR1 components if boost/tr1/tr1/utility is in the
+// include search path. We have to do this to avoid circular
+// dependencies:
+//
+
+#ifndef BOOST_CONFIG_UTILITY
+# define BOOST_CONFIG_UTILITY
+
+# ifndef BOOST_TR1_NO_RECURSION
+# define BOOST_TR1_NO_RECURSION
+# define BOOST_CONFIG_NO_UTILITY_RECURSION
+# endif
+
+# include <utility>
+
+# ifdef BOOST_CONFIG_NO_UTILITY_RECURSION
+# undef BOOST_TR1_NO_RECURSION
+# undef BOOST_CONFIG_NO_UTILITY_RECURSION
+# endif
+
+#endif
diff --git a/include/boost/config/platform/aix.hpp b/include/boost/config/platform/aix.hpp
new file mode 100644
index 0000000..a48e232
--- /dev/null
+++ b/include/boost/config/platform/aix.hpp
@@ -0,0 +1,33 @@
+// (C) Copyright John Maddock 2001 - 2002.
+// 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 for most recent version.
+
+// IBM/Aix specific config options:
+
+#define BOOST_PLATFORM "IBM Aix"
+
+#define BOOST_HAS_UNISTD_H
+#define BOOST_HAS_NL_TYPES_H
+#define BOOST_HAS_NANOSLEEP
+#define BOOST_HAS_CLOCK_GETTIME
+
+// This needs support in "boost/cstdint.hpp" exactly like FreeBSD.
+// This platform has header named <inttypes.h> which includes all
+// the things needed.
+#define BOOST_HAS_STDINT_H
+
+// Threading API's:
+#define BOOST_HAS_PTHREADS
+#define BOOST_HAS_PTHREAD_DELAY_NP
+#define BOOST_HAS_SCHED_YIELD
+//#define BOOST_HAS_PTHREAD_YIELD
+
+// boilerplate code:
+#include <boost/config/detail/posix_features.hpp>
+
+
+
+
diff --git a/include/boost/config/platform/amigaos.hpp b/include/boost/config/platform/amigaos.hpp
new file mode 100644
index 0000000..34bcf41
--- /dev/null
+++ b/include/boost/config/platform/amigaos.hpp
@@ -0,0 +1,15 @@
+// (C) Copyright John Maddock 2002.
+// 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 for most recent version.
+
+#define BOOST_PLATFORM "AmigaOS"
+
+#define BOOST_DISABLE_THREADS
+#define BOOST_NO_CWCHAR
+#define BOOST_NO_STD_WSTRING
+#define BOOST_NO_INTRINSIC_WCHAR_T
+
+
diff --git a/include/boost/config/platform/beos.hpp b/include/boost/config/platform/beos.hpp
new file mode 100644
index 0000000..6158c1c
--- /dev/null
+++ b/include/boost/config/platform/beos.hpp
@@ -0,0 +1,26 @@
+// (C) Copyright John Maddock 2001.
+// 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 for most recent version.
+
+// BeOS specific config options:
+
+#define BOOST_PLATFORM "BeOS"
+
+#define BOOST_NO_CWCHAR
+#define BOOST_NO_CWCTYPE
+#define BOOST_HAS_UNISTD_H
+
+#define BOOST_HAS_BETHREADS
+
+#ifndef BOOST_DISABLE_THREADS
+# define BOOST_HAS_THREADS
+#endif
+
+// boilerplate code:
+#include <boost/config/detail/posix_features.hpp>
+
+
+
diff --git a/include/boost/config/platform/bsd.hpp b/include/boost/config/platform/bsd.hpp
new file mode 100644
index 0000000..79e74a0
--- /dev/null
+++ b/include/boost/config/platform/bsd.hpp
@@ -0,0 +1,86 @@
+// (C) Copyright John Maddock 2001 - 2003.
+// (C) Copyright Darin Adler 2001.
+// (C) Copyright Douglas Gregor 2002.
+// 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 for most recent version.
+
+// generic BSD config options:
+
+#if !defined(__FreeBSD__) && !defined(__NetBSD__) && !defined(__OpenBSD__) && !defined(__DragonFly__)
+#error "This platform is not BSD"
+#endif
+
+#ifdef __FreeBSD__
+#define BOOST_PLATFORM "FreeBSD " BOOST_STRINGIZE(__FreeBSD__)
+#elif defined(__NetBSD__)
+#define BOOST_PLATFORM "NetBSD " BOOST_STRINGIZE(__NetBSD__)
+#elif defined(__OpenBSD__)
+#define BOOST_PLATFORM "OpenBSD " BOOST_STRINGIZE(__OpenBSD__)
+#elif defined(__DragonFly__)
+#define BOOST_PLATFORM "DragonFly " BOOST_STRINGIZE(__DragonFly__)
+#endif
+
+//
+// is this the correct version check?
+// FreeBSD has <nl_types.h> but does not
+// advertise the fact in <unistd.h>:
+//
+#if (defined(__FreeBSD__) && (__FreeBSD__ >= 3)) || defined(__DragonFly__)
+# define BOOST_HAS_NL_TYPES_H
+#endif
+
+//
+// FreeBSD 3.x has pthreads support, but defines _POSIX_THREADS in <pthread.h>
+// and not in <unistd.h>
+//
+#if (defined(__FreeBSD__) && (__FreeBSD__ <= 3))\
+ || defined(__OpenBSD__) || defined(__DragonFly__)
+# define BOOST_HAS_PTHREADS
+#endif
+
+//
+// No wide character support in the BSD header files:
+//
+#if defined(__NetBSD__)
+#define __NetBSD_GCC__ (__GNUC__ * 1000000 \
+ + __GNUC_MINOR__ * 1000 \
+ + __GNUC_PATCHLEVEL__)
+// XXX - the following is required until c++config.h
+// defines _GLIBCXX_HAVE_SWPRINTF and friends
+// or the preprocessor conditionals are removed
+// from the cwchar header.
+#define _GLIBCXX_HAVE_SWPRINTF 1
+#endif
+
+#if !((defined(__FreeBSD__) && (__FreeBSD__ >= 5)) \
+ || (defined(__NetBSD_GCC__) && (__NetBSD_GCC__ >= 2095003)) || defined(__DragonFly__))
+# define BOOST_NO_CWCHAR
+#endif
+//
+// The BSD <ctype.h> has macros only, no functions:
+//
+#if !defined(__OpenBSD__) || defined(__DragonFly__)
+# define BOOST_NO_CTYPE_FUNCTIONS
+#endif
+
+//
+// thread API's not auto detected:
+//
+#define BOOST_HAS_SCHED_YIELD
+#define BOOST_HAS_NANOSLEEP
+#define BOOST_HAS_GETTIMEOFDAY
+#define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
+#define BOOST_HAS_SIGACTION
+
+// boilerplate code:
+#define BOOST_HAS_UNISTD_H
+#include <boost/config/detail/posix_features.hpp>
+
+
+
+
+
+
diff --git a/include/boost/config/platform/cloudabi.hpp b/include/boost/config/platform/cloudabi.hpp
new file mode 100644
index 0000000..bed7b63
--- /dev/null
+++ b/include/boost/config/platform/cloudabi.hpp
@@ -0,0 +1,18 @@
+// Copyright Nuxi, https://nuxi.nl/ 2015.
+// Distributed under the Boost Software License, Version 1.0.
+// (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+#define BOOST_PLATFORM "CloudABI"
+
+#define BOOST_HAS_DIRENT_H
+#define BOOST_HAS_STDINT_H
+#define BOOST_HAS_UNISTD_H
+
+#define BOOST_HAS_CLOCK_GETTIME
+#define BOOST_HAS_EXPM1
+#define BOOST_HAS_GETTIMEOFDAY
+#define BOOST_HAS_LOG1P
+#define BOOST_HAS_NANOSLEEP
+#define BOOST_HAS_PTHREADS
+#define BOOST_HAS_SCHED_YIELD
diff --git a/include/boost/config/platform/cray.hpp b/include/boost/config/platform/cray.hpp
new file mode 100644
index 0000000..103e9c0
--- /dev/null
+++ b/include/boost/config/platform/cray.hpp
@@ -0,0 +1,18 @@
+// (C) Copyright John Maddock 2011.
+// 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 for most recent version.
+
+// SGI Irix specific config options:
+
+#define BOOST_PLATFORM "Cray"
+
+// boilerplate code:
+#define BOOST_HAS_UNISTD_H
+#include <boost/config/detail/posix_features.hpp>
+
+
+
diff --git a/include/boost/config/platform/cygwin.hpp b/include/boost/config/platform/cygwin.hpp
new file mode 100644
index 0000000..6dd7e57
--- /dev/null
+++ b/include/boost/config/platform/cygwin.hpp
@@ -0,0 +1,68 @@
+// (C) Copyright John Maddock 2001 - 2003.
+// 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 for most recent version.
+
+// cygwin specific config options:
+
+#define BOOST_PLATFORM "Cygwin"
+#define BOOST_HAS_DIRENT_H
+#define BOOST_HAS_LOG1P
+#define BOOST_HAS_EXPM1
+
+//
+// Threading API:
+// See if we have POSIX threads, if we do use them, otherwise
+// revert to native Win threads.
+#define BOOST_HAS_UNISTD_H
+#include <unistd.h>
+#if defined(_POSIX_THREADS) && (_POSIX_THREADS+0 >= 0) && !defined(BOOST_HAS_WINTHREADS)
+# define BOOST_HAS_PTHREADS
+# define BOOST_HAS_SCHED_YIELD
+# define BOOST_HAS_GETTIMEOFDAY
+# define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
+//# define BOOST_HAS_SIGACTION
+#else
+# if !defined(BOOST_HAS_WINTHREADS)
+# define BOOST_HAS_WINTHREADS
+# endif
+# define BOOST_HAS_FTIME
+#endif
+
+//
+// find out if we have a stdint.h, there should be a better way to do this:
+//
+#include <sys/types.h>
+#ifdef _STDINT_H
+#define BOOST_HAS_STDINT_H
+#endif
+#if __GNUC__ > 5 && !defined(BOOST_HAS_STDINT_H)
+# define BOOST_HAS_STDINT_H
+#endif
+
+/// Cygwin has no fenv.h
+#define BOOST_NO_FENV_H
+
+// Cygwin has it's own <pthread.h> which breaks <shared_mutex> unless the correct compiler flags are used:
+#ifndef BOOST_NO_CXX14_HDR_SHARED_MUTEX
+#include <pthread.h>
+#if !(__XSI_VISIBLE >= 500 || __POSIX_VISIBLE >= 200112)
+# define BOOST_NO_CXX14_HDR_SHARED_MUTEX
+#endif
+#endif
+
+// boilerplate code:
+#include <boost/config/detail/posix_features.hpp>
+
+//
+// Cygwin lies about XSI conformance, there is no nl_types.h:
+//
+#ifdef BOOST_HAS_NL_TYPES_H
+# undef BOOST_HAS_NL_TYPES_H
+#endif
+
+
+
+
diff --git a/include/boost/config/platform/haiku.hpp b/include/boost/config/platform/haiku.hpp
new file mode 100644
index 0000000..04244c5
--- /dev/null
+++ b/include/boost/config/platform/haiku.hpp
@@ -0,0 +1,31 @@
+// (C) Copyright Jessica Hamilton 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 for most recent version.
+
+// Haiku specific config options:
+
+#define BOOST_PLATFORM "Haiku"
+
+#define BOOST_HAS_UNISTD_H
+#define BOOST_HAS_STDINT_H
+
+#ifndef BOOST_DISABLE_THREADS
+# define BOOST_HAS_THREADS
+#endif
+
+#define BOOST_NO_CXX11_HDR_TYPE_TRAITS
+#define BOOST_NO_CXX11_ATOMIC_SMART_PTR
+#define BOOST_NO_CXX11_STATIC_ASSERT
+#define BOOST_NO_CXX11_VARIADIC_MACROS
+
+//
+// thread API's not auto detected:
+//
+#define BOOST_HAS_SCHED_YIELD
+#define BOOST_HAS_GETTIMEOFDAY
+
+// boilerplate code:
+#include <boost/config/detail/posix_features.hpp>
diff --git a/include/boost/config/platform/hpux.hpp b/include/boost/config/platform/hpux.hpp
new file mode 100644
index 0000000..222622e
--- /dev/null
+++ b/include/boost/config/platform/hpux.hpp
@@ -0,0 +1,87 @@
+// (C) Copyright John Maddock 2001 - 2003.
+// (C) Copyright Jens Maurer 2001 - 2003.
+// (C) Copyright David Abrahams 2002.
+// (C) Copyright Toon Knapen 2003.
+// (C) Copyright Boris Gubenko 2006 - 2007.
+// 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 for most recent version.
+
+// hpux specific config options:
+
+#define BOOST_PLATFORM "HP-UX"
+
+// In principle, HP-UX has a nice <stdint.h> under the name <inttypes.h>
+// However, it has the following problem:
+// Use of UINT32_C(0) results in "0u l" for the preprocessed source
+// (verifyable with gcc 2.95.3)
+#if (defined(__GNUC__) && (__GNUC__ >= 3)) || defined(__HP_aCC)
+# define BOOST_HAS_STDINT_H
+#endif
+
+#if !(defined(__HP_aCC) || !defined(_INCLUDE__STDC_A1_SOURCE))
+# define BOOST_NO_SWPRINTF
+#endif
+#if defined(__HP_aCC) && !defined(_INCLUDE__STDC_A1_SOURCE)
+# define BOOST_NO_CWCTYPE
+#endif
+
+#if defined(__GNUC__)
+# if (__GNUC__ < 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ < 3))
+ // GNU C on HP-UX does not support threads (checked up to gcc 3.3)
+# define BOOST_DISABLE_THREADS
+# elif !defined(BOOST_DISABLE_THREADS)
+ // threads supported from gcc-3.3 onwards:
+# define BOOST_HAS_THREADS
+# define BOOST_HAS_PTHREADS
+# endif
+#elif defined(__HP_aCC) && !defined(BOOST_DISABLE_THREADS)
+# define BOOST_HAS_PTHREADS
+#endif
+
+// boilerplate code:
+#define BOOST_HAS_UNISTD_H
+#include <boost/config/detail/posix_features.hpp>
+
+// the following are always available:
+#ifndef BOOST_HAS_GETTIMEOFDAY
+# define BOOST_HAS_GETTIMEOFDAY
+#endif
+#ifndef BOOST_HAS_SCHED_YIELD
+# define BOOST_HAS_SCHED_YIELD
+#endif
+#ifndef BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
+# define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
+#endif
+#ifndef BOOST_HAS_NL_TYPES_H
+# define BOOST_HAS_NL_TYPES_H
+#endif
+#ifndef BOOST_HAS_NANOSLEEP
+# define BOOST_HAS_NANOSLEEP
+#endif
+#ifndef BOOST_HAS_GETTIMEOFDAY
+# define BOOST_HAS_GETTIMEOFDAY
+#endif
+#ifndef BOOST_HAS_DIRENT_H
+# define BOOST_HAS_DIRENT_H
+#endif
+#ifndef BOOST_HAS_CLOCK_GETTIME
+# define BOOST_HAS_CLOCK_GETTIME
+#endif
+#ifndef BOOST_HAS_SIGACTION
+# define BOOST_HAS_SIGACTION
+#endif
+#ifndef BOOST_HAS_NRVO
+# ifndef __parisc
+# define BOOST_HAS_NRVO
+# endif
+#endif
+#ifndef BOOST_HAS_LOG1P
+# define BOOST_HAS_LOG1P
+#endif
+#ifndef BOOST_HAS_EXPM1
+# define BOOST_HAS_EXPM1
+#endif
+
diff --git a/include/boost/config/platform/irix.hpp b/include/boost/config/platform/irix.hpp
new file mode 100644
index 0000000..0acb651
--- /dev/null
+++ b/include/boost/config/platform/irix.hpp
@@ -0,0 +1,31 @@
+// (C) Copyright John Maddock 2001 - 2003.
+// (C) Copyright Jens Maurer 2003.
+// 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 for most recent version.
+
+// SGI Irix specific config options:
+
+#define BOOST_PLATFORM "SGI Irix"
+
+#define BOOST_NO_SWPRINTF
+//
+// these are not auto detected by POSIX feature tests:
+//
+#define BOOST_HAS_GETTIMEOFDAY
+#define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
+
+#ifdef __GNUC__
+ // GNU C on IRIX does not support threads (checked up to gcc 3.3)
+# define BOOST_DISABLE_THREADS
+#endif
+
+// boilerplate code:
+#define BOOST_HAS_UNISTD_H
+#include <boost/config/detail/posix_features.hpp>
+
+
+
diff --git a/include/boost/config/platform/linux.hpp b/include/boost/config/platform/linux.hpp
new file mode 100644
index 0000000..c4eef8f
--- /dev/null
+++ b/include/boost/config/platform/linux.hpp
@@ -0,0 +1,106 @@
+// (C) Copyright John Maddock 2001 - 2003.
+// (C) Copyright Jens Maurer 2001 - 2003.
+// 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 for most recent version.
+
+// linux specific config options:
+
+#define BOOST_PLATFORM "linux"
+
+// make sure we have __GLIBC_PREREQ if available at all
+#ifdef __cplusplus
+#include <cstdlib>
+#else
+#include <stdlib.h>
+#endif
+
+//
+// <stdint.h> added to glibc 2.1.1
+// We can only test for 2.1 though:
+//
+#if defined(__GLIBC__) && ((__GLIBC__ > 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR__ >= 1)))
+ // <stdint.h> defines int64_t unconditionally, but <sys/types.h> defines
+ // int64_t only if __GNUC__. Thus, assume a fully usable <stdint.h>
+ // only when using GCC. Update 2017: this appears not to be the case for
+ // recent glibc releases, see bug report: https://svn.boost.org/trac/boost/ticket/13045
+# if defined(__GNUC__) || ((__GLIBC__ > 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR__ >= 5)))
+# define BOOST_HAS_STDINT_H
+# endif
+#endif
+
+#if defined(__LIBCOMO__)
+ //
+ // como on linux doesn't have std:: c functions:
+ // NOTE: versions of libcomo prior to beta28 have octal version numbering,
+ // e.g. version 25 is 21 (dec)
+ //
+# if __LIBCOMO_VERSION__ <= 20
+# define BOOST_NO_STDC_NAMESPACE
+# endif
+
+# if __LIBCOMO_VERSION__ <= 21
+# define BOOST_NO_SWPRINTF
+# endif
+
+#endif
+
+//
+// If glibc is past version 2 then we definitely have
+// gettimeofday, earlier versions may or may not have it:
+//
+#if defined(__GLIBC__) && (__GLIBC__ >= 2)
+# define BOOST_HAS_GETTIMEOFDAY
+#endif
+
+#ifdef __USE_POSIX199309
+# define BOOST_HAS_NANOSLEEP
+#endif
+
+#if defined(__GLIBC__) && defined(__GLIBC_PREREQ)
+// __GLIBC_PREREQ is available since 2.1.2
+
+ // swprintf is available since glibc 2.2.0
+# if !__GLIBC_PREREQ(2,2) || (!defined(__USE_ISOC99) && !defined(__USE_UNIX98))
+# define BOOST_NO_SWPRINTF
+# endif
+#else
+# define BOOST_NO_SWPRINTF
+#endif
+
+// boilerplate code:
+#define BOOST_HAS_UNISTD_H
+#include <boost/config/detail/posix_features.hpp>
+#if defined(__USE_GNU) && !defined(__ANDROID__) && !defined(ANDROID)
+#define BOOST_HAS_PTHREAD_YIELD
+#endif
+
+#ifndef __GNUC__
+//
+// if the compiler is not gcc we still need to be able to parse
+// the GNU system headers, some of which (mainly <stdint.h>)
+// use GNU specific extensions:
+//
+# ifndef __extension__
+# define __extension__
+# endif
+# ifndef __const__
+# define __const__ const
+# endif
+# ifndef __volatile__
+# define __volatile__ volatile
+# endif
+# ifndef __signed__
+# define __signed__ signed
+# endif
+# ifndef __typeof__
+# define __typeof__ typeof
+# endif
+# ifndef __inline__
+# define __inline__ inline
+# endif
+#endif
+
+
diff --git a/include/boost/config/platform/macos.hpp b/include/boost/config/platform/macos.hpp
new file mode 100644
index 0000000..ed7dc15
--- /dev/null
+++ b/include/boost/config/platform/macos.hpp
@@ -0,0 +1,87 @@
+// (C) Copyright John Maddock 2001 - 2003.
+// (C) Copyright Darin Adler 2001 - 2002.
+// (C) Copyright Bill Kempf 2002.
+// 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 for most recent version.
+
+// Mac OS specific config options:
+
+#define BOOST_PLATFORM "Mac OS"
+
+#if __MACH__ && !defined(_MSL_USING_MSL_C)
+
+// Using the Mac OS X system BSD-style C library.
+
+# ifndef BOOST_HAS_UNISTD_H
+# define BOOST_HAS_UNISTD_H
+# endif
+//
+// Begin by including our boilerplate code for POSIX
+// feature detection, this is safe even when using
+// the MSL as Metrowerks supply their own <unistd.h>
+// to replace the platform-native BSD one. G++ users
+// should also always be able to do this on MaxOS X.
+//
+# include <boost/config/detail/posix_features.hpp>
+# ifndef BOOST_HAS_STDINT_H
+# define BOOST_HAS_STDINT_H
+# endif
+
+//
+// BSD runtime has pthreads, sigaction, sched_yield and gettimeofday,
+// of these only pthreads are advertised in <unistd.h>, so set the
+// other options explicitly:
+//
+# define BOOST_HAS_SCHED_YIELD
+# define BOOST_HAS_GETTIMEOFDAY
+# define BOOST_HAS_SIGACTION
+
+# if (__GNUC__ < 3) && !defined( __APPLE_CC__)
+
+// GCC strange "ignore std" mode works better if you pretend everything
+// is in the std namespace, for the most part.
+
+# define BOOST_NO_STDC_NAMESPACE
+# endif
+
+# if (__GNUC__ >= 4)
+
+// Both gcc and intel require these.
+# define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
+# define BOOST_HAS_NANOSLEEP
+
+# endif
+
+#else
+
+// Using the MSL C library.
+
+// We will eventually support threads in non-Carbon builds, but we do
+// not support this yet.
+# if ( defined(TARGET_API_MAC_CARBON) && TARGET_API_MAC_CARBON ) || ( defined(TARGET_CARBON) && TARGET_CARBON )
+
+# if !defined(BOOST_HAS_PTHREADS)
+// MPTasks support is deprecated/removed from Boost:
+//# define BOOST_HAS_MPTASKS
+# elif ( __dest_os == __mac_os_x )
+// We are doing a Carbon/Mach-O/MSL build which has pthreads, but only the
+// gettimeofday and no posix.
+# define BOOST_HAS_GETTIMEOFDAY
+# endif
+
+#ifdef BOOST_HAS_PTHREADS
+# define BOOST_HAS_THREADS
+#endif
+
+// The remote call manager depends on this.
+# define BOOST_BIND_ENABLE_PASCAL
+
+# endif
+
+#endif
+
+
+
diff --git a/include/boost/config/platform/qnxnto.hpp b/include/boost/config/platform/qnxnto.hpp
new file mode 100644
index 0000000..d0298cb
--- /dev/null
+++ b/include/boost/config/platform/qnxnto.hpp
@@ -0,0 +1,31 @@
+// (C) Copyright Jim Douglas 2005.
+// 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 for most recent version.
+
+// QNX specific config options:
+
+#define BOOST_PLATFORM "QNX"
+
+#define BOOST_HAS_UNISTD_H
+#include <boost/config/detail/posix_features.hpp>
+
+// QNX claims XOpen version 5 compatibility, but doesn't have an nl_types.h
+// or log1p and expm1:
+#undef BOOST_HAS_NL_TYPES_H
+#undef BOOST_HAS_LOG1P
+#undef BOOST_HAS_EXPM1
+
+#define BOOST_HAS_PTHREADS
+#define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
+
+#define BOOST_HAS_GETTIMEOFDAY
+#define BOOST_HAS_CLOCK_GETTIME
+#define BOOST_HAS_NANOSLEEP
+
+
+
+
+
diff --git a/include/boost/config/platform/solaris.hpp b/include/boost/config/platform/solaris.hpp
new file mode 100644
index 0000000..51ffe67
--- /dev/null
+++ b/include/boost/config/platform/solaris.hpp
@@ -0,0 +1,31 @@
+// (C) Copyright John Maddock 2001 - 2003.
+// (C) Copyright Jens Maurer 2003.
+// 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 for most recent version.
+
+// sun specific config options:
+
+#define BOOST_PLATFORM "Sun Solaris"
+
+#define BOOST_HAS_GETTIMEOFDAY
+
+// boilerplate code:
+#define BOOST_HAS_UNISTD_H
+#include <boost/config/detail/posix_features.hpp>
+
+//
+// pthreads don't actually work with gcc unless _PTHREADS is defined:
+//
+#if defined(__GNUC__) && defined(_POSIX_THREADS) && !defined(_PTHREADS)
+# undef BOOST_HAS_PTHREADS
+#endif
+
+#define BOOST_HAS_STDINT_H
+#define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
+#define BOOST_HAS_LOG1P
+#define BOOST_HAS_EXPM1
+
+
diff --git a/include/boost/config/platform/symbian.hpp b/include/boost/config/platform/symbian.hpp
new file mode 100644
index 0000000..f814d00
--- /dev/null
+++ b/include/boost/config/platform/symbian.hpp
@@ -0,0 +1,97 @@
+// (C) Copyright Yuriy Krasnoschek 2009.
+// (C) Copyright John Maddock 2001 - 2003.
+// (C) Copyright Jens Maurer 2001 - 2003.
+// 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 for most recent version.
+
+// symbian specific config options:
+
+
+#define BOOST_PLATFORM "Symbian"
+#define BOOST_SYMBIAN 1
+
+
+#if defined(__S60_3X__)
+// Open C / C++ plugin was introdused in this SDK, earlier versions don't have CRT / STL
+# define BOOST_S60_3rd_EDITION_FP2_OR_LATER_SDK
+// make sure we have __GLIBC_PREREQ if available at all
+#ifdef __cplusplus
+#include <cstdlib>
+#else
+#include <stdlib.h>
+#endif// boilerplate code:
+# define BOOST_HAS_UNISTD_H
+# include <boost/config/detail/posix_features.hpp>
+// S60 SDK defines _POSIX_VERSION as POSIX.1
+# ifndef BOOST_HAS_STDINT_H
+# define BOOST_HAS_STDINT_H
+# endif
+# ifndef BOOST_HAS_GETTIMEOFDAY
+# define BOOST_HAS_GETTIMEOFDAY
+# endif
+# ifndef BOOST_HAS_DIRENT_H
+# define BOOST_HAS_DIRENT_H
+# endif
+# ifndef BOOST_HAS_SIGACTION
+# define BOOST_HAS_SIGACTION
+# endif
+# ifndef BOOST_HAS_PTHREADS
+# define BOOST_HAS_PTHREADS
+# endif
+# ifndef BOOST_HAS_NANOSLEEP
+# define BOOST_HAS_NANOSLEEP
+# endif
+# ifndef BOOST_HAS_SCHED_YIELD
+# define BOOST_HAS_SCHED_YIELD
+# endif
+# ifndef BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
+# define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
+# endif
+# ifndef BOOST_HAS_LOG1P
+# define BOOST_HAS_LOG1P
+# endif
+# ifndef BOOST_HAS_EXPM1
+# define BOOST_HAS_EXPM1
+# endif
+# ifndef BOOST_POSIX_API
+# define BOOST_POSIX_API
+# endif
+// endianess support
+# include <sys/endian.h>
+// Symbian SDK provides _BYTE_ORDER instead of __BYTE_ORDER
+# ifndef __LITTLE_ENDIAN
+# ifdef _LITTLE_ENDIAN
+# define __LITTLE_ENDIAN _LITTLE_ENDIAN
+# else
+# define __LITTLE_ENDIAN 1234
+# endif
+# endif
+# ifndef __BIG_ENDIAN
+# ifdef _BIG_ENDIAN
+# define __BIG_ENDIAN _BIG_ENDIAN
+# else
+# define __BIG_ENDIAN 4321
+# endif
+# endif
+# ifndef __BYTE_ORDER
+# define __BYTE_ORDER __LITTLE_ENDIAN // Symbian is LE
+# endif
+// Known limitations
+# define BOOST_ASIO_DISABLE_SERIAL_PORT
+# define BOOST_DATE_TIME_NO_LOCALE
+# define BOOST_NO_STD_WSTRING
+# define BOOST_EXCEPTION_DISABLE
+# define BOOST_NO_EXCEPTIONS
+
+#else // TODO: More platform support e.g. UIQ
+# error "Unsuppoted Symbian SDK"
+#endif
+
+#if defined(__WINSCW__) && !defined(BOOST_DISABLE_WIN32)
+# define BOOST_DISABLE_WIN32 // winscw defines WIN32 macro
+#endif
+
+
diff --git a/include/boost/config/platform/vms.hpp b/include/boost/config/platform/vms.hpp
new file mode 100644
index 0000000..f70efcf
--- /dev/null
+++ b/include/boost/config/platform/vms.hpp
@@ -0,0 +1,25 @@
+// (C) Copyright Artyom Beilis 2010.
+// 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)
+
+#ifndef BOOST_CONFIG_PLATFORM_VMS_HPP
+#define BOOST_CONFIG_PLATFORM_VMS_HPP
+
+#define BOOST_PLATFORM "OpenVMS"
+
+#undef BOOST_HAS_STDINT_H
+#define BOOST_HAS_UNISTD_H
+#define BOOST_HAS_NL_TYPES_H
+#define BOOST_HAS_GETTIMEOFDAY
+#define BOOST_HAS_DIRENT_H
+#define BOOST_HAS_PTHREADS
+#define BOOST_HAS_NANOSLEEP
+#define BOOST_HAS_CLOCK_GETTIME
+#define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
+#define BOOST_HAS_LOG1P
+#define BOOST_HAS_EXPM1
+#define BOOST_HAS_THREADS
+#undef BOOST_HAS_SCHED_YIELD
+
+#endif
diff --git a/include/boost/config/platform/vxworks.hpp b/include/boost/config/platform/vxworks.hpp
new file mode 100644
index 0000000..a91e4ab
--- /dev/null
+++ b/include/boost/config/platform/vxworks.hpp
@@ -0,0 +1,433 @@
+// (C) Copyright Dustin Spicuzza 2009.
+// Adapted to vxWorks 6.9 by Peter Brockamp 2012.
+// Updated for VxWorks 7 by Brian Kuhl 2016
+// 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 for most recent version.
+
+// Old versions of vxWorks (namely everything below 6.x) are
+// absolutely unable to use boost. Old STLs and compilers
+// like (GCC 2.96) . Do not even think of getting this to work,
+// a miserable failure will be guaranteed!
+//
+// Equally, this file has been tested for RTPs (Real Time Processes)
+// only, not for DKMs (Downloadable Kernel Modules). These two types
+// of executables differ largely in the available functionality of
+// the C-library, STL, and so on. A DKM uses a C89 library with no
+// wide character support and no guarantee of ANSI C. The same Dinkum
+// STL library is used in both contexts.
+//
+// Similarly the Dinkum abridged STL that supports the loosely specified
+// embedded C++ standard has not been tested and is unlikely to work
+// on anything but the simplest library.
+// ====================================================================
+//
+// Additional Configuration
+// -------------------------------------------------------------------
+//
+// Because of the ordering of include files and other issues the following
+// additional definitions worked better outside this file.
+//
+// When building the log library add the following to the b2 invocation
+// define=BOOST_LOG_WITHOUT_IPC
+// and
+// -DBOOST_LOG_WITHOUT_DEFAULT_FACTORIES
+// to your compile options.
+//
+// When building the test library add
+// -DBOOST_TEST_LIMITED_SIGNAL_DETAILS
+// to your compile options
+//
+// When building containers library add
+// -DHAVE_MORECORE=0
+// to your c compile options so dlmalloc heap library is compiled
+// without brk() calls
+//
+// ====================================================================
+//
+// Some important information regarding the usage of POSIX semaphores:
+// -------------------------------------------------------------------
+//
+// VxWorks as a real time operating system handles threads somewhat
+// different from what "normal" OSes do, regarding their scheduling!
+// This could lead to a scenario called "priority inversion" when using
+// semaphores, see http://en.wikipedia.org/wiki/Priority_inversion.
+//
+// Now, VxWorks POSIX-semaphores for DKM's default to the usage of
+// priority inverting semaphores, which is fine. On the other hand,
+// for RTP's it defaults to using non priority inverting semaphores,
+// which could easily pose a serious problem for a real time process.
+//
+// To change the default properties for POSIX-semaphores in VxWorks 7
+// enable core > CORE_USER Menu > DEFAULT_PTHREAD_PRIO_INHERIT
+//
+// In VxWorks 6.x so as to integrate with boost.
+// - Edit the file
+// installDir/vxworks-6.x/target/usr/src/posix/pthreadLib.c
+// - Around line 917 there should be the definition of the default
+// mutex attributes:
+//
+// LOCAL pthread_mutexattr_t defaultMutexAttr =
+// {
+// PTHREAD_INITIALIZED_OBJ, PTHREAD_PRIO_NONE, 0,
+// PTHREAD_MUTEX_DEFAULT
+// };
+//
+// Here, replace PTHREAD_PRIO_NONE by PTHREAD_PRIO_INHERIT.
+// - Around line 1236 there should be a definition for the function
+// pthread_mutexattr_init(). A couple of lines below you should
+// find a block of code like this:
+//
+// pAttr->mutexAttrStatus = PTHREAD_INITIALIZED_OBJ;
+// pAttr->mutexAttrProtocol = PTHREAD_PRIO_NONE;
+// pAttr->mutexAttrPrioceiling = 0;
+// pAttr->mutexAttrType = PTHREAD_MUTEX_DEFAULT;
+//
+// Here again, replace PTHREAD_PRIO_NONE by PTHREAD_PRIO_INHERIT.
+// - Finally, rebuild your VSB. This will rebuild the libraries
+// with the changed properties. That's it! Now, using boost should
+// no longer cause any problems with task deadlocks!
+//
+// ====================================================================
+
+// Block out all versions before vxWorks 6.x, as these don't work:
+// Include header with the vxWorks version information and query them
+#include <version.h>
+#if !defined(_WRS_VXWORKS_MAJOR) || (_WRS_VXWORKS_MAJOR < 6)
+# error "The vxWorks version you're using is so badly outdated,\
+ it doesn't work at all with boost, sorry, no chance!"
+#endif
+
+// Handle versions above 5.X but below 6.9
+#if (_WRS_VXWORKS_MAJOR == 6) && (_WRS_VXWORKS_MINOR < 9)
+// TODO: Starting from what version does vxWorks work with boost?
+// We can't reasonably insert a #warning "" as a user hint here,
+// as this will show up with every file including some boost header,
+// badly bugging the user... So for the time being we just leave it.
+#endif
+
+// vxWorks specific config options:
+// --------------------------------
+#define BOOST_PLATFORM "vxWorks"
+
+// Special behaviour for DKMs:
+#ifdef _WRS_KERNEL
+ // DKMs do not have the <cwchar>-header,
+ // but apparently they do have an intrinsic wchar_t meanwhile!
+# define BOOST_NO_CWCHAR
+
+ // Lots of wide-functions and -headers are unavailable for DKMs as well:
+# define BOOST_NO_CWCTYPE
+# define BOOST_NO_SWPRINTF
+# define BOOST_NO_STD_WSTRING
+# define BOOST_NO_STD_WSTREAMBUF
+#endif
+
+// Generally available headers:
+#define BOOST_HAS_UNISTD_H
+#define BOOST_HAS_STDINT_H
+#define BOOST_HAS_DIRENT_H
+#define BOOST_HAS_SLIST
+
+// vxWorks does not have installed an iconv-library by default,
+// so unfortunately no Unicode support from scratch is available!
+// Thus, instead it is suggested to switch to ICU, as this seems
+// to be the most complete and portable option...
+#define BOOST_LOCALE_WITH_ICU
+
+// Generally available functionality:
+#define BOOST_HAS_THREADS
+#define BOOST_HAS_NANOSLEEP
+#define BOOST_HAS_GETTIMEOFDAY
+#define BOOST_HAS_CLOCK_GETTIME
+#define BOOST_HAS_MACRO_USE_FACET
+
+// Generally available threading API's:
+#define BOOST_HAS_PTHREADS
+#define BOOST_HAS_SCHED_YIELD
+#define BOOST_HAS_SIGACTION
+
+// Functionality available for RTPs only:
+#ifdef __RTP__
+# define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
+# define BOOST_HAS_LOG1P
+# define BOOST_HAS_EXPM1
+#endif
+
+// Functionality available for DKMs only:
+#ifdef _WRS_KERNEL
+ // Luckily, at the moment there seems to be none!
+#endif
+
+// These #defines allow detail/posix_features to work, since vxWorks doesn't
+// #define them itself for DKMs (for RTPs on the contrary it does):
+#ifdef _WRS_KERNEL
+# ifndef _POSIX_TIMERS
+# define _POSIX_TIMERS 1
+# endif
+# ifndef _POSIX_THREADS
+# define _POSIX_THREADS 1
+# endif
+#endif
+
+#if (_WRS_VXWORKS_MAJOR < 7)
+// vxWorks-around: <time.h> #defines CLOCKS_PER_SEC as sysClkRateGet() but
+// miserably fails to #include the required <sysLib.h> to make
+// sysClkRateGet() available! So we manually include it here.
+#ifdef __RTP__
+# include <time.h>
+# include <sysLib.h>
+#endif
+
+// vxWorks-around: In <stdint.h> the macros INT32_C(), UINT32_C(), INT64_C() and
+// UINT64_C() are defined erroneously, yielding not a signed/
+// unsigned long/long long type, but a signed/unsigned int/long
+// type. Eventually this leads to compile errors in ratio_fwd.hpp,
+// when trying to define several constants which do not fit into a
+// long type! We correct them here by redefining.
+
+#include <cstdint>
+
+// Some macro-magic to do the job
+#define VX_JOIN(X, Y) VX_DO_JOIN(X, Y)
+#define VX_DO_JOIN(X, Y) VX_DO_JOIN2(X, Y)
+#define VX_DO_JOIN2(X, Y) X##Y
+
+// Correctly setup the macros
+#undef INT32_C
+#undef UINT32_C
+#undef INT64_C
+#undef UINT64_C
+#define INT32_C(x) VX_JOIN(x, L)
+#define UINT32_C(x) VX_JOIN(x, UL)
+#define INT64_C(x) VX_JOIN(x, LL)
+#define UINT64_C(x) VX_JOIN(x, ULL)
+
+// #include Libraries required for the following function adaption
+#include <sys/time.h>
+#endif // _WRS_VXWORKS_MAJOR < 7
+
+#include <ioLib.h>
+#include <tickLib.h>
+
+// Use C-linkage for the following helper functions
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+// vxWorks-around: The required functions getrlimit() and getrlimit() are missing.
+// But we have the similar functions getprlimit() and setprlimit(),
+// which may serve the purpose.
+// Problem: The vxWorks-documentation regarding these functions
+// doesn't deserve its name! It isn't documented what the first two
+// parameters idtype and id mean, so we must fall back to an educated
+// guess - null, argh... :-/
+
+// TODO: getprlimit() and setprlimit() do exist for RTPs only, for whatever reason.
+// Thus for DKMs there would have to be another implementation.
+#if defined ( __RTP__) && (_WRS_VXWORKS_MAJOR < 7)
+ inline int getrlimit(int resource, struct rlimit *rlp){
+ return getprlimit(0, 0, resource, rlp);
+ }
+
+ inline int setrlimit(int resource, const struct rlimit *rlp){
+ return setprlimit(0, 0, resource, const_cast<struct rlimit*>(rlp));
+ }
+#endif
+
+// vxWorks has ftruncate() only, so we do simulate truncate():
+inline int truncate(const char *p, off_t l){
+ int fd = open(p, O_WRONLY);
+ if (fd == -1){
+ errno = EACCES;
+ return -1;
+ }
+ if (ftruncate(fd, l) == -1){
+ close(fd);
+ errno = EACCES;
+ return -1;
+ }
+ return close(fd);
+}
+
+#ifdef __GNUC__
+#define ___unused __attribute__((unused))
+#else
+#define ___unused
+#endif
+
+// Fake symlink handling by dummy functions:
+inline int symlink(const char* path1 ___unused, const char* path2 ___unused){
+ // vxWorks has no symlinks -> always return an error!
+ errno = EACCES;
+ return -1;
+}
+
+inline ssize_t readlink(const char* path1 ___unused, char* path2 ___unused, size_t size ___unused){
+ // vxWorks has no symlinks -> always return an error!
+ errno = EACCES;
+ return -1;
+}
+
+#if (_WRS_VXWORKS_MAJOR < 7)
+
+inline int gettimeofday(struct timeval *tv, void * /*tzv*/) {
+ struct timespec ts;
+ clock_gettime(CLOCK_MONOTONIC, &ts);
+ tv->tv_sec = ts.tv_sec;
+ tv->tv_usec = ts.tv_nsec / 1000;
+ return 0;
+}
+#endif
+
+#ifdef __cplusplus
+} // extern "C"
+#endif
+
+/*
+ * moved to os/utils/unix/freind_h/times.h in VxWorks 7
+ * to avoid conflict with MPL operator times
+ */
+#if (_WRS_VXWORKS_MAJOR < 7)
+#ifdef __cplusplus
+
+// vxWorks provides neither struct tms nor function times()!
+// We implement an empty dummy-function, simply setting the user
+// and system time to the half of thew actual system ticks-value
+// and the child user and system time to 0.
+// Rather ugly but at least it suppresses compiler errors...
+// Unfortunately, this of course *does* have an severe impact on
+// dependant libraries, actually this is chrono only! Here it will
+// not be possible to correctly use user and system times! But
+// as vxWorks is lacking the ability to calculate user and system
+// process times there seems to be no other possible solution.
+struct tms{
+ clock_t tms_utime; // User CPU time
+ clock_t tms_stime; // System CPU time
+ clock_t tms_cutime; // User CPU time of terminated child processes
+ clock_t tms_cstime; // System CPU time of terminated child processes
+};
+
+
+ inline clock_t times(struct tms *t){
+ struct timespec ts;
+ clock_gettime(CLOCK_THREAD_CPUTIME_ID, &ts);
+ clock_t ticks(static_cast<clock_t>(static_cast<double>(ts.tv_sec) * CLOCKS_PER_SEC +
+ static_cast<double>(ts.tv_nsec) * CLOCKS_PER_SEC / 1000000.0));
+ t->tms_utime = ticks/2U;
+ t->tms_stime = ticks/2U;
+ t->tms_cutime = 0; // vxWorks is lacking the concept of a child process!
+ t->tms_cstime = 0; // -> Set the wait times for childs to 0
+ return ticks;
+}
+
+
+namespace std {
+ using ::times;
+}
+#endif // __cplusplus
+#endif // _WRS_VXWORKS_MAJOR < 7
+
+
+#ifdef __cplusplus
+extern "C" void bzero (void *, size_t); // FD_ZERO uses bzero() but doesn't include strings.h
+
+// Put the selfmade functions into the std-namespace, just in case
+namespace std {
+# ifdef __RTP__
+ using ::getrlimit;
+ using ::setrlimit;
+# endif
+ using ::truncate;
+ using ::symlink;
+ using ::readlink;
+#if (_WRS_VXWORKS_MAJOR < 7)
+ using ::gettimeofday;
+#endif
+}
+#endif // __cplusplus
+
+// Some more macro-magic:
+// vxWorks-around: Some functions are not present or broken in vxWorks
+// but may be patched to life via helper macros...
+
+// Include signal.h which might contain a typo to be corrected here
+#include <signal.h>
+#if (_WRS_VXWORKS_MAJOR < 7)
+#define getpagesize() sysconf(_SC_PAGESIZE) // getpagesize is deprecated anyway!
+inline int lstat(p, b) { return stat(p, b); } // lstat() == stat(), as vxWorks has no symlinks!
+#endif
+#ifndef S_ISSOCK
+# define S_ISSOCK(mode) ((mode & S_IFMT) == S_IFSOCK) // Is file a socket?
+#endif
+#ifndef FPE_FLTINV
+# define FPE_FLTINV (FPE_FLTSUB+1) // vxWorks has no FPE_FLTINV, so define one as a dummy
+#endif
+#if !defined(BUS_ADRALN) && defined(BUS_ADRALNR)
+# define BUS_ADRALN BUS_ADRALNR // Correct a supposed typo in vxWorks' <signal.h>
+#endif
+typedef int locale_t; // locale_t is a POSIX-extension, currently not present in vxWorks!
+
+// #include boilerplate code:
+#include <boost/config/detail/posix_features.hpp>
+
+// vxWorks lies about XSI conformance, there is no nl_types.h:
+#undef BOOST_HAS_NL_TYPES_H
+
+// vxWorks 7 adds C++11 support
+// however it is optional, and does not match exactly the support determined
+// by examining the Dinkum STL version and GCC version (or ICC and DCC)
+#ifndef _WRS_CONFIG_LANG_LIB_CPLUS_CPLUS_USER_2011
+# define BOOST_NO_CXX11_ADDRESSOF // C11 addressof operator on memory location
+# define BOOST_NO_CXX11_ALLOCATOR
+# define BOOST_NO_CXX11_ATOMIC_SMART_PTR
+# define BOOST_NO_CXX11_NUMERIC_LIMITS // max_digits10 in test/../print_helper.hpp
+# define BOOST_NO_CXX11_SMART_PTR
+# define BOOST_NO_CXX11_STD_ALIGN
+
+
+# define BOOST_NO_CXX11_HDR_ARRAY
+# define BOOST_NO_CXX11_HDR_ATOMIC
+# define BOOST_NO_CXX11_HDR_CHRONO
+# define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
+# define BOOST_NO_CXX11_HDR_FORWARD_LIST //serialization/test/test_list.cpp
+# define BOOST_NO_CXX11_HDR_FUNCTIONAL
+# define BOOST_NO_CXX11_HDR_FUTURE
+# define BOOST_NO_CXX11_HDR_MUTEX
+# define BOOST_NO_CXX11_HDR_RANDOM //math/../test_data.hpp
+# define BOOST_NO_CXX11_HDR_RATIO
+# define BOOST_NO_CXX11_HDR_REGEX
+# define BOOST_NO_CXX14_HDR_SHARED_MUTEX
+# define BOOST_NO_CXX11_HDR_SYSTEM_ERROR
+# define BOOST_NO_CXX11_HDR_THREAD
+# define BOOST_NO_CXX11_HDR_TYPEINDEX
+# define BOOST_NO_CXX11_HDR_TYPE_TRAITS
+# define BOOST_NO_CXX11_HDR_TUPLE
+# define BOOST_NO_CXX11_HDR_UNORDERED_MAP
+# define BOOST_NO_CXX11_HDR_UNORDERED_SET
+#else
+#ifndef BOOST_SYSTEM_NO_DEPRECATED
+# define BOOST_SYSTEM_NO_DEPRECATED // workaround link error in spirit
+#endif
+#endif
+
+
+// NONE is used in enums in lamda and other libraries
+#undef NONE
+// restrict is an iostreams class
+#undef restrict
+
+// use fake poll() from Unix layer in ASIO to get full functionality
+// most libraries will use select() but this define allows 'iostream' functionality
+// which is based on poll() only
+#if (_WRS_VXWORKS_MAJOR > 6)
+# ifndef BOOST_ASIO_HAS_POSIX_STREAM_DESCRIPTOR
+# define BOOST_ASIO_HAS_POSIX_STREAM_DESCRIPTOR
+# endif
+#else
+# define BOOST_ASIO_DISABLE_SERIAL_PORT
+#endif
+
+
diff --git a/include/boost/config/platform/win32.hpp b/include/boost/config/platform/win32.hpp
new file mode 100644
index 0000000..450158f
--- /dev/null
+++ b/include/boost/config/platform/win32.hpp
@@ -0,0 +1,90 @@
+// (C) Copyright John Maddock 2001 - 2003.
+// (C) Copyright Bill Kempf 2001.
+// (C) Copyright Aleksey Gurtovoy 2003.
+// (C) Copyright Rene Rivera 2005.
+// 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 for most recent version.
+
+// Win32 specific config options:
+
+#define BOOST_PLATFORM "Win32"
+
+// Get the information about the MinGW runtime, i.e. __MINGW32_*VERSION.
+#if defined(__MINGW32__)
+# include <_mingw.h>
+#endif
+
+#if defined(__GNUC__) && !defined(BOOST_NO_SWPRINTF)
+# define BOOST_NO_SWPRINTF
+#endif
+
+// Default defines for BOOST_SYMBOL_EXPORT and BOOST_SYMBOL_IMPORT
+// If a compiler doesn't support __declspec(dllexport)/__declspec(dllimport),
+// its boost/config/compiler/ file must define BOOST_SYMBOL_EXPORT and
+// BOOST_SYMBOL_IMPORT
+#ifndef BOOST_SYMBOL_EXPORT
+# define BOOST_HAS_DECLSPEC
+# define BOOST_SYMBOL_EXPORT __declspec(dllexport)
+# define BOOST_SYMBOL_IMPORT __declspec(dllimport)
+#endif
+
+#if defined(__MINGW32__) && ((__MINGW32_MAJOR_VERSION > 2) || ((__MINGW32_MAJOR_VERSION == 2) && (__MINGW32_MINOR_VERSION >= 0)))
+# define BOOST_HAS_STDINT_H
+# ifndef __STDC_LIMIT_MACROS
+# define __STDC_LIMIT_MACROS
+# endif
+# define BOOST_HAS_DIRENT_H
+# define BOOST_HAS_UNISTD_H
+#endif
+
+#if defined(__MINGW32__) && (__GNUC__ >= 4)
+// Mingw has these functions but there are persistent problems
+// with calls to these crashing, so disable for now:
+//# define BOOST_HAS_EXPM1
+//# define BOOST_HAS_LOG1P
+# define BOOST_HAS_GETTIMEOFDAY
+#endif
+//
+// Win32 will normally be using native Win32 threads,
+// but there is a pthread library avaliable as an option,
+// we used to disable this when BOOST_DISABLE_WIN32 was
+// defined but no longer - this should allow some
+// files to be compiled in strict mode - while maintaining
+// a consistent setting of BOOST_HAS_THREADS across
+// all translation units (needed for shared_ptr etc).
+//
+
+#ifndef BOOST_HAS_PTHREADS
+# define BOOST_HAS_WINTHREADS
+#endif
+
+//
+// WinCE configuration:
+//
+#if defined(_WIN32_WCE) || defined(UNDER_CE)
+# define BOOST_NO_ANSI_APIS
+// Windows CE does not have a conforming signature for swprintf
+# define BOOST_NO_SWPRINTF
+#else
+# define BOOST_HAS_GETSYSTEMTIMEASFILETIME
+# define BOOST_HAS_THREADEX
+# define BOOST_HAS_GETSYSTEMTIMEASFILETIME
+#endif
+
+//
+// Windows Runtime
+//
+#if defined(WINAPI_FAMILY) && \
+ (WINAPI_FAMILY == WINAPI_FAMILY_APP || WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP)
+# define BOOST_NO_ANSI_APIS
+#endif
+
+#ifndef BOOST_DISABLE_WIN32
+// WEK: Added
+#define BOOST_HAS_FTIME
+#define BOOST_WINDOWS 1
+
+#endif
diff --git a/include/boost/config/platform/zos.hpp b/include/boost/config/platform/zos.hpp
new file mode 100644
index 0000000..fa77999
--- /dev/null
+++ b/include/boost/config/platform/zos.hpp
@@ -0,0 +1,32 @@
+// Copyright (c) 2017 Dynatrace
+//
+// Distributed under the Boost Software License, Version 1.0.
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+
+// See http://www.boost.org for most recent version.
+
+// Platform setup for IBM z/OS.
+
+#define BOOST_PLATFORM "IBM z/OS"
+
+#include <features.h> // For __UU, __C99, __TR1, ...
+
+#if defined(__UU)
+# define BOOST_HAS_GETTIMEOFDAY
+#endif
+
+#if defined(_OPEN_THREADS) || defined(__SUSV3_THR)
+# define BOOST_HAS_PTHREADS
+# define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
+# define BOOST_HAS_THREADS
+#endif
+
+#if defined(__SUSV3) || defined(__SUSV3_THR)
+# define BOOST_HAS_SCHED_YIELD
+#endif
+
+#define BOOST_HAS_SIGACTION
+#define BOOST_HAS_UNISTD_H
+#define BOOST_HAS_DIRENT_H
+#define BOOST_HAS_NL_TYPES_H
diff --git a/include/boost/config/pragma_message.hpp b/include/boost/config/pragma_message.hpp
new file mode 100644
index 0000000..b2c5ff2
--- /dev/null
+++ b/include/boost/config/pragma_message.hpp
@@ -0,0 +1,31 @@
+#ifndef BOOST_CONFIG_PRAGMA_MESSAGE_HPP_INCLUDED
+#define BOOST_CONFIG_PRAGMA_MESSAGE_HPP_INCLUDED
+
+// Copyright 2017 Peter Dimov.
+//
+// Distributed under the Boost Software License, Version 1.0.
+//
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+// BOOST_PRAGMA_MESSAGE("message")
+//
+// Expands to the equivalent of #pragma message("message")
+//
+// Note that this header is C compatible.
+
+#include <boost/config/helper_macros.hpp>
+
+#if defined(BOOST_DISABLE_PRAGMA_MESSAGE)
+# define BOOST_PRAGMA_MESSAGE(x)
+#elif defined(__INTEL_COMPILER)
+# define BOOST_PRAGMA_MESSAGE(x) __pragma(message(__FILE__ "(" BOOST_STRINGIZE(__LINE__) "): note: " x))
+#elif defined(__GNUC__)
+# define BOOST_PRAGMA_MESSAGE(x) _Pragma(BOOST_STRINGIZE(message(x)))
+#elif defined(_MSC_VER)
+# define BOOST_PRAGMA_MESSAGE(x) __pragma(message(__FILE__ "(" BOOST_STRINGIZE(__LINE__) "): note: " x))
+#else
+# define BOOST_PRAGMA_MESSAGE(x)
+#endif
+
+#endif // BOOST_CONFIG_PRAGMA_MESSAGE_HPP_INCLUDED
diff --git a/include/boost/config/requires_threads.hpp b/include/boost/config/requires_threads.hpp
new file mode 100644
index 0000000..cfaff23
--- /dev/null
+++ b/include/boost/config/requires_threads.hpp
@@ -0,0 +1,92 @@
+// (C) Copyright John Maddock 2003.
+// 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)
+
+
+#ifndef BOOST_CONFIG_REQUIRES_THREADS_HPP
+#define BOOST_CONFIG_REQUIRES_THREADS_HPP
+
+#ifndef BOOST_CONFIG_HPP
+# include <boost/config.hpp>
+#endif
+
+#if defined(BOOST_DISABLE_THREADS)
+
+//
+// special case to handle versions of gcc which don't currently support threads:
+//
+#if defined(__GNUC__) && ((__GNUC__ < 3) || (__GNUC_MINOR__ <= 3) || !defined(BOOST_STRICT_CONFIG))
+//
+// this is checked up to gcc 3.3:
+//
+#if defined(__sgi) || defined(__hpux)
+# error "Multi-threaded programs are not supported by gcc on HPUX or Irix (last checked with gcc 3.3)"
+#endif
+
+#endif
+
+# error "Threading support unavaliable: it has been explicitly disabled with BOOST_DISABLE_THREADS"
+
+#elif !defined(BOOST_HAS_THREADS)
+
+# if defined __COMO__
+// Comeau C++
+# error "Compiler threading support is not turned on. Please set the correct command line options for threading: -D_MT (Windows) or -D_REENTRANT (Unix)"
+
+#elif defined(__INTEL_COMPILER) || defined(__ICL) || defined(__ICC) || defined(__ECC)
+// Intel
+#ifdef _WIN32
+# error "Compiler threading support is not turned on. Please set the correct command line options for threading: either /MT /MTd /MD or /MDd"
+#else
+# error "Compiler threading support is not turned on. Please set the correct command line options for threading: -openmp"
+#endif
+
+# elif defined __GNUC__
+// GNU C++:
+# error "Compiler threading support is not turned on. Please set the correct command line options for threading: -pthread (Linux), -pthreads (Solaris) or -mthreads (Mingw32)"
+
+#elif defined __sgi
+// SGI MIPSpro C++
+# error "Compiler threading support is not turned on. Please set the correct command line options for threading: -D_SGI_MP_SOURCE"
+
+#elif defined __DECCXX
+// Compaq Tru64 Unix cxx
+# error "Compiler threading support is not turned on. Please set the correct command line options for threading: -pthread"
+
+#elif defined __BORLANDC__
+// Borland
+# error "Compiler threading support is not turned on. Please set the correct command line options for threading: -tWM"
+
+#elif defined __MWERKS__
+// Metrowerks CodeWarrior
+# error "Compiler threading support is not turned on. Please set the correct command line options for threading: either -runtime sm, -runtime smd, -runtime dm, or -runtime dmd"
+
+#elif defined __SUNPRO_CC
+// Sun Workshop Compiler C++
+# error "Compiler threading support is not turned on. Please set the correct command line options for threading: -mt"
+
+#elif defined __HP_aCC
+// HP aCC
+# error "Compiler threading support is not turned on. Please set the correct command line options for threading: -mt"
+
+#elif defined(__IBMCPP__)
+// IBM Visual Age
+# error "Compiler threading support is not turned on. Please compile the code with the xlC_r compiler"
+
+#elif defined _MSC_VER
+// Microsoft Visual C++
+//
+// Must remain the last #elif since some other vendors (Metrowerks, for
+// example) also #define _MSC_VER
+# error "Compiler threading support is not turned on. Please set the correct command line options for threading: either /MT /MTd /MD or /MDd"
+
+#else
+
+# error "Compiler threading support is not turned on. Please consult your compiler's documentation for the appropriate options to use"
+
+#endif // compilers
+
+#endif // BOOST_HAS_THREADS
+
+#endif // BOOST_CONFIG_REQUIRES_THREADS_HPP
diff --git a/include/boost/config/stdlib/dinkumware.hpp b/include/boost/config/stdlib/dinkumware.hpp
new file mode 100644
index 0000000..e829f08
--- /dev/null
+++ b/include/boost/config/stdlib/dinkumware.hpp
@@ -0,0 +1,258 @@
+// (C) Copyright John Maddock 2001 - 2003.
+// (C) Copyright Jens Maurer 2001.
+// (C) Copyright Peter Dimov 2001.
+// (C) Copyright David Abrahams 2002.
+// (C) Copyright Guillaume Melquiond 2003.
+// 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 for most recent version.
+
+// Dinkumware standard library config:
+
+#if !defined(_YVALS) && !defined(_CPPLIB_VER)
+#include <boost/config/no_tr1/utility.hpp>
+#if !defined(_YVALS) && !defined(_CPPLIB_VER)
+#error This is not the Dinkumware lib!
+#endif
+#endif
+
+
+#if defined(_CPPLIB_VER) && (_CPPLIB_VER >= 306)
+ // full dinkumware 3.06 and above
+ // fully conforming provided the compiler supports it:
+# if !(defined(_GLOBAL_USING) && (_GLOBAL_USING+0 > 0)) && !defined(__BORLANDC__) && !defined(_STD) && !(defined(__ICC) && (__ICC >= 700)) // can be defined in yvals.h
+# define BOOST_NO_STDC_NAMESPACE
+# endif
+# if !(defined(_HAS_MEMBER_TEMPLATES_REBIND) && (_HAS_MEMBER_TEMPLATES_REBIND+0 > 0)) && !(defined(_MSC_VER) && (_MSC_VER > 1300)) && defined(BOOST_MSVC)
+# define BOOST_NO_STD_ALLOCATOR
+# endif
+# define BOOST_HAS_PARTIAL_STD_ALLOCATOR
+# if defined(BOOST_MSVC) && (BOOST_MSVC < 1300)
+ // if this lib version is set up for vc6 then there is no std::use_facet:
+# define BOOST_NO_STD_USE_FACET
+# define BOOST_HAS_TWO_ARG_USE_FACET
+ // C lib functions aren't in namespace std either:
+# define BOOST_NO_STDC_NAMESPACE
+ // and nor is <exception>
+# define BOOST_NO_EXCEPTION_STD_NAMESPACE
+# endif
+// There's no numeric_limits<long long> support unless _LONGLONG is defined:
+# if !defined(_LONGLONG) && (_CPPLIB_VER <= 310)
+# define BOOST_NO_MS_INT64_NUMERIC_LIMITS
+# endif
+// 3.06 appears to have (non-sgi versions of) <hash_set> & <hash_map>,
+// and no <slist> at all
+#else
+# define BOOST_MSVC_STD_ITERATOR 1
+# define BOOST_NO_STD_ITERATOR
+# define BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
+# define BOOST_NO_STD_ALLOCATOR
+# define BOOST_NO_STDC_NAMESPACE
+# define BOOST_NO_STD_USE_FACET
+# define BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN
+# define BOOST_HAS_MACRO_USE_FACET
+# ifndef _CPPLIB_VER
+ // Updated Dinkum library defines this, and provides
+ // its own min and max definitions, as does MTA version.
+# ifndef __MTA__
+# define BOOST_NO_STD_MIN_MAX
+# endif
+# define BOOST_NO_MS_INT64_NUMERIC_LIMITS
+# endif
+#endif
+
+//
+// std extension namespace is stdext for vc7.1 and later,
+// the same applies to other compilers that sit on top
+// of vc7.1 (Intel and Comeau):
+//
+#if defined(_MSC_VER) && (_MSC_VER >= 1310) && !defined(__BORLANDC__)
+# define BOOST_STD_EXTENSION_NAMESPACE stdext
+#endif
+
+
+#if (defined(_MSC_VER) && (_MSC_VER <= 1300) && !defined(__BORLANDC__)) || !defined(_CPPLIB_VER) || (_CPPLIB_VER < 306)
+ // if we're using a dinkum lib that's
+ // been configured for VC6/7 then there is
+ // no iterator traits (true even for icl)
+# define BOOST_NO_STD_ITERATOR_TRAITS
+#endif
+
+#if defined(__ICL) && (__ICL < 800) && defined(_CPPLIB_VER) && (_CPPLIB_VER <= 310)
+// Intel C++ chokes over any non-trivial use of <locale>
+// this may be an overly restrictive define, but regex fails without it:
+# define BOOST_NO_STD_LOCALE
+#endif
+
+// Fix for VC++ 8.0 on up ( I do not have a previous version to test )
+// or clang-cl. If exceptions are off you must manually include the
+// <exception> header before including the <typeinfo> header. Admittedly
+// trying to use Boost libraries or the standard C++ libraries without
+// exception support is not suggested but currently clang-cl ( v 3.4 )
+// does not support exceptions and must be compiled with exceptions off.
+#if !_HAS_EXCEPTIONS && ((defined(BOOST_MSVC) && BOOST_MSVC >= 1400) || (defined(__clang__) && defined(_MSC_VER)))
+#include <exception>
+#endif
+#include <typeinfo>
+#if ( (!_HAS_EXCEPTIONS && !defined(__ghs__)) || (defined(__ghs__) && !_HAS_NAMESPACE) ) && !defined(__TI_COMPILER_VERSION__) && !defined(__VISUALDSPVERSION__) \
+ && !defined(__VXWORKS__)
+# define BOOST_NO_STD_TYPEINFO
+#endif
+
+// C++0x headers implemented in 520 (as shipped by Microsoft)
+//
+#if !defined(_CPPLIB_VER) || _CPPLIB_VER < 520
+# define BOOST_NO_CXX11_HDR_ARRAY
+# define BOOST_NO_CXX11_HDR_CODECVT
+# define BOOST_NO_CXX11_HDR_FORWARD_LIST
+# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+# define BOOST_NO_CXX11_HDR_RANDOM
+# define BOOST_NO_CXX11_HDR_REGEX
+# define BOOST_NO_CXX11_HDR_SYSTEM_ERROR
+# define BOOST_NO_CXX11_HDR_UNORDERED_MAP
+# define BOOST_NO_CXX11_HDR_UNORDERED_SET
+# define BOOST_NO_CXX11_HDR_TUPLE
+# define BOOST_NO_CXX11_HDR_TYPEINDEX
+# define BOOST_NO_CXX11_HDR_FUNCTIONAL
+# define BOOST_NO_CXX11_NUMERIC_LIMITS
+# define BOOST_NO_CXX11_SMART_PTR
+#endif
+
+#if ((!defined(_HAS_TR1_IMPORTS) || (_HAS_TR1_IMPORTS+0 == 0)) && !defined(BOOST_NO_CXX11_HDR_TUPLE)) \
+ && (!defined(_CPPLIB_VER) || _CPPLIB_VER < 610)
+# define BOOST_NO_CXX11_HDR_TUPLE
+#endif
+
+// C++0x headers implemented in 540 (as shipped by Microsoft)
+//
+#if !defined(_CPPLIB_VER) || _CPPLIB_VER < 540
+# define BOOST_NO_CXX11_HDR_TYPE_TRAITS
+# define BOOST_NO_CXX11_HDR_CHRONO
+# define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
+# define BOOST_NO_CXX11_HDR_FUTURE
+# define BOOST_NO_CXX11_HDR_MUTEX
+# define BOOST_NO_CXX11_HDR_RATIO
+# define BOOST_NO_CXX11_HDR_THREAD
+# define BOOST_NO_CXX11_ATOMIC_SMART_PTR
+#endif
+
+// C++0x headers implemented in 610 (as shipped by Microsoft)
+//
+#if !defined(_CPPLIB_VER) || _CPPLIB_VER < 610
+# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+# define BOOST_NO_CXX11_HDR_ATOMIC
+# define BOOST_NO_CXX11_ALLOCATOR
+// 540 has std::align but it is not a conforming implementation
+# define BOOST_NO_CXX11_STD_ALIGN
+#endif
+
+// Before 650 std::pointer_traits has a broken rebind template
+#if !defined(_CPPLIB_VER) || _CPPLIB_VER < 650
+# define BOOST_NO_CXX11_POINTER_TRAITS
+#elif defined(BOOST_MSVC) && BOOST_MSVC < 1910
+# define BOOST_NO_CXX11_POINTER_TRAITS
+#endif
+
+#if defined(__has_include)
+#if !__has_include(<shared_mutex>)
+# define BOOST_NO_CXX14_HDR_SHARED_MUTEX
+#elif (__cplusplus < 201402) && !defined(_MSC_VER)
+# define BOOST_NO_CXX14_HDR_SHARED_MUTEX
+#endif
+#elif !defined(_CPPLIB_VER) || (_CPPLIB_VER < 650)
+# define BOOST_NO_CXX14_HDR_SHARED_MUTEX
+#endif
+
+// C++14 features
+#if !defined(_CPPLIB_VER) || (_CPPLIB_VER < 650)
+# define BOOST_NO_CXX14_STD_EXCHANGE
+#endif
+
+// C++17 features
+#if !defined(_CPPLIB_VER) || (_CPPLIB_VER < 650) || !defined(BOOST_MSVC) || (BOOST_MSVC < 1910) || !defined(_HAS_CXX17) || (_HAS_CXX17 == 0)
+# define BOOST_NO_CXX17_STD_APPLY
+# define BOOST_NO_CXX17_ITERATOR_TRAITS
+#endif
+#if !defined(_CPPLIB_VER) || (_CPPLIB_VER < 650) || !defined(_HAS_CXX17) || (_HAS_CXX17 == 0) || !defined(_MSVC_STL_UPDATE) || (_MSVC_STL_UPDATE < 201709)
+# define BOOST_NO_CXX17_STD_INVOKE
+#endif
+
+#if !(!defined(_CPPLIB_VER) || (_CPPLIB_VER < 650) || !defined(BOOST_MSVC) || (BOOST_MSVC < 1912) || !defined(_HAS_CXX17) || (_HAS_CXX17 == 0))
+// Deprecated std::iterator:
+# define BOOST_NO_STD_ITERATOR
+#endif
+
+#if defined(BOOST_INTEL) && (BOOST_INTEL <= 1400)
+// Intel's compiler can't handle this header yet:
+# define BOOST_NO_CXX11_HDR_ATOMIC
+#endif
+
+
+// 520..610 have std::addressof, but it doesn't support functions
+//
+#if !defined(_CPPLIB_VER) || _CPPLIB_VER < 650
+# define BOOST_NO_CXX11_ADDRESSOF
+#endif
+
+// Bug specific to VC14,
+// See https://connect.microsoft.com/VisualStudio/feedback/details/1348277/link-error-when-using-std-codecvt-utf8-utf16-char16-t
+// and discussion here: http://blogs.msdn.com/b/vcblog/archive/2014/11/12/visual-studio-2015-preview-now-available.aspx?PageIndex=2
+#if defined(_CPPLIB_VER) && (_CPPLIB_VER == 650)
+# define BOOST_NO_CXX11_HDR_CODECVT
+#endif
+
+#if defined(_CPPLIB_VER) && (_CPPLIB_VER >= 650)
+// If _HAS_AUTO_PTR_ETC is defined to 0, std::auto_ptr and std::random_shuffle are not available.
+// See https://www.visualstudio.com/en-us/news/vs2015-vs.aspx#C++
+// and http://blogs.msdn.com/b/vcblog/archive/2015/06/19/c-11-14-17-features-in-vs-2015-rtm.aspx
+# if defined(_HAS_AUTO_PTR_ETC) && (_HAS_AUTO_PTR_ETC == 0)
+# define BOOST_NO_AUTO_PTR
+# define BOOST_NO_CXX98_RANDOM_SHUFFLE
+# define BOOST_NO_CXX98_FUNCTION_BASE
+# define BOOST_NO_CXX98_BINDERS
+# 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
+# define BOOST_DINKUMWARE_STDLIB 1
+#endif
+
+#ifdef _CPPLIB_VER
+# define BOOST_STDLIB "Dinkumware standard library version " BOOST_STRINGIZE(_CPPLIB_VER)
+#else
+# define BOOST_STDLIB "Dinkumware standard library version 1.x"
+#endif
diff --git a/include/boost/config/stdlib/libcomo.hpp b/include/boost/config/stdlib/libcomo.hpp
new file mode 100644
index 0000000..75ac2bb
--- /dev/null
+++ b/include/boost/config/stdlib/libcomo.hpp
@@ -0,0 +1,92 @@
+// (C) Copyright John Maddock 2002 - 2003.
+// (C) Copyright Jens Maurer 2002 - 2003.
+// (C) Copyright Beman Dawes 2002 - 2003.
+// 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 for most recent version.
+
+// Comeau STL:
+
+#if !defined(__LIBCOMO__)
+# include <boost/config/no_tr1/utility.hpp>
+# if !defined(__LIBCOMO__)
+# error "This is not the Comeau STL!"
+# endif
+#endif
+
+//
+// std::streambuf<wchar_t> is non-standard
+// NOTE: versions of libcomo prior to beta28 have octal version numbering,
+// e.g. version 25 is 21 (dec)
+#if __LIBCOMO_VERSION__ <= 22
+# define BOOST_NO_STD_WSTREAMBUF
+#endif
+
+#if (__LIBCOMO_VERSION__ <= 31) && defined(_WIN32)
+#define BOOST_NO_SWPRINTF
+#endif
+
+#if __LIBCOMO_VERSION__ >= 31
+# define BOOST_HAS_HASH
+# define BOOST_HAS_SLIST
+#endif
+
+// C++0x headers not yet implemented
+//
+# define BOOST_NO_CXX11_HDR_ARRAY
+# define BOOST_NO_CXX11_HDR_CHRONO
+# define BOOST_NO_CXX11_HDR_CODECVT
+# define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
+# define BOOST_NO_CXX11_HDR_FORWARD_LIST
+# define BOOST_NO_CXX11_HDR_FUTURE
+# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+# define BOOST_NO_CXX11_HDR_MUTEX
+# define BOOST_NO_CXX11_HDR_RANDOM
+# define BOOST_NO_CXX11_HDR_RATIO
+# define BOOST_NO_CXX11_HDR_REGEX
+# define BOOST_NO_CXX11_HDR_SYSTEM_ERROR
+# define BOOST_NO_CXX11_HDR_THREAD
+# define BOOST_NO_CXX11_HDR_TUPLE
+# define BOOST_NO_CXX11_HDR_TYPE_TRAITS
+# define BOOST_NO_CXX11_HDR_TYPEINDEX
+# define BOOST_NO_CXX11_HDR_UNORDERED_MAP
+# define BOOST_NO_CXX11_HDR_UNORDERED_SET
+# define BOOST_NO_CXX11_NUMERIC_LIMITS
+# define BOOST_NO_CXX11_ALLOCATOR
+# define BOOST_NO_CXX11_POINTER_TRAITS
+# define BOOST_NO_CXX11_ATOMIC_SMART_PTR
+# define BOOST_NO_CXX11_SMART_PTR
+# define BOOST_NO_CXX11_HDR_FUNCTIONAL
+# define BOOST_NO_CXX11_HDR_ATOMIC
+# define BOOST_NO_CXX11_STD_ALIGN
+# define BOOST_NO_CXX11_ADDRESSOF
+
+#if defined(__has_include)
+#if !__has_include(<shared_mutex>)
+# define BOOST_NO_CXX14_HDR_SHARED_MUTEX
+#elif __cplusplus < 201402
+# define BOOST_NO_CXX14_HDR_SHARED_MUTEX
+#endif
+#else
+# define BOOST_NO_CXX14_HDR_SHARED_MUTEX
+#endif
+
+// C++14 features
+# define BOOST_NO_CXX14_STD_EXCHANGE
+
+// C++17 features
+# define BOOST_NO_CXX17_STD_APPLY
+# define BOOST_NO_CXX17_STD_INVOKE
+# define BOOST_NO_CXX17_ITERATOR_TRAITS
+
+//
+// Intrinsic type_traits support.
+// The SGI STL has it's own __type_traits class, which
+// has intrinsic compiler support with SGI's compilers.
+// Whatever map SGI style type traits to boost equivalents:
+//
+#define BOOST_HAS_SGI_TYPE_TRAITS
+
+#define BOOST_STDLIB "Comeau standard library " BOOST_STRINGIZE(__LIBCOMO_VERSION__)
diff --git a/include/boost/config/stdlib/libcpp.hpp b/include/boost/config/stdlib/libcpp.hpp
new file mode 100644
index 0000000..a051dbb
--- /dev/null
+++ b/include/boost/config/stdlib/libcpp.hpp
@@ -0,0 +1,131 @@
+// (C) Copyright Christopher Jefferson 2011.
+// 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 for most recent version.
+
+// config for libc++
+// Might need more in here later.
+
+#if !defined(_LIBCPP_VERSION)
+# include <ciso646>
+# if !defined(_LIBCPP_VERSION)
+# error "This is not libc++!"
+# endif
+#endif
+
+#define BOOST_STDLIB "libc++ version " BOOST_STRINGIZE(_LIBCPP_VERSION)
+
+#define BOOST_HAS_THREADS
+
+#ifdef _LIBCPP_HAS_NO_VARIADICS
+# define BOOST_NO_CXX11_HDR_TUPLE
+#endif
+
+// BOOST_NO_CXX11_ALLOCATOR should imply no support for the C++11
+// allocator model. The C++11 allocator model requires a conforming
+// std::allocator_traits which is only possible with C++11 template
+// aliases since members rebind_alloc and rebind_traits require it.
+#if defined(_LIBCPP_HAS_NO_TEMPLATE_ALIASES)
+# define BOOST_NO_CXX11_ALLOCATOR
+# define BOOST_NO_CXX11_POINTER_TRAITS
+#endif
+
+#if __cplusplus < 201103
+//
+// These two appear to be somewhat useable in C++03 mode, there may be others...
+//
+//# define BOOST_NO_CXX11_HDR_ARRAY
+//# define BOOST_NO_CXX11_HDR_FORWARD_LIST
+
+# define BOOST_NO_CXX11_HDR_CODECVT
+# define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
+# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+# define BOOST_NO_CXX11_HDR_MUTEX
+# define BOOST_NO_CXX11_HDR_RANDOM
+# define BOOST_NO_CXX11_HDR_RATIO
+# define BOOST_NO_CXX11_HDR_REGEX
+# define BOOST_NO_CXX11_HDR_SYSTEM_ERROR
+# define BOOST_NO_CXX11_HDR_THREAD
+# define BOOST_NO_CXX11_HDR_TUPLE
+# define BOOST_NO_CXX11_HDR_TYPEINDEX
+# define BOOST_NO_CXX11_HDR_UNORDERED_MAP
+# define BOOST_NO_CXX11_HDR_UNORDERED_SET
+# define BOOST_NO_CXX11_NUMERIC_LIMITS
+# define BOOST_NO_CXX11_ALLOCATOR
+# define BOOST_NO_CXX11_POINTER_TRAITS
+# define BOOST_NO_CXX11_SMART_PTR
+# define BOOST_NO_CXX11_HDR_FUNCTIONAL
+# define BOOST_NO_CXX11_STD_ALIGN
+# define BOOST_NO_CXX11_ADDRESSOF
+# define BOOST_NO_CXX11_HDR_ATOMIC
+# define BOOST_NO_CXX11_ATOMIC_SMART_PTR
+# define BOOST_NO_CXX11_HDR_CHRONO
+# define BOOST_NO_CXX11_HDR_TYPE_TRAITS
+# define BOOST_NO_CXX11_HDR_FUTURE
+#elif _LIBCPP_VERSION < 3700
+//
+// These appear to be unusable/incomplete so far:
+//
+# define BOOST_NO_CXX11_HDR_ATOMIC
+# define BOOST_NO_CXX11_ATOMIC_SMART_PTR
+# define BOOST_NO_CXX11_HDR_CHRONO
+# define BOOST_NO_CXX11_HDR_TYPE_TRAITS
+# define BOOST_NO_CXX11_HDR_FUTURE
+#endif
+
+
+#if _LIBCPP_VERSION < 3700
+// libc++ uses a non-standard messages_base
+#define BOOST_NO_STD_MESSAGES
+#endif
+
+// C++14 features
+#if (_LIBCPP_VERSION < 3700) || (__cplusplus <= 201402L)
+# define BOOST_NO_CXX14_STD_EXCHANGE
+#endif
+
+// C++17 features
+#if (_LIBCPP_VERSION < 4000) || (__cplusplus <= 201402L)
+# define BOOST_NO_CXX17_STD_APPLY
+#endif
+#if (_LIBCPP_VERSION > 4000) && (__cplusplus > 201402L) && !defined(_LIBCPP_ENABLE_CXX17_REMOVED_AUTO_PTR)
+# define BOOST_NO_AUTO_PTR
+#endif
+#if (_LIBCPP_VERSION > 4000) && (__cplusplus > 201402L) && !defined(_LIBCPP_ENABLE_CXX17_REMOVED_RANDOM_SHUFFLE)
+# define BOOST_NO_CXX98_RANDOM_SHUFFLE
+#endif
+#if (_LIBCPP_VERSION > 4000) && (__cplusplus > 201402L) && !defined(_LIBCPP_ENABLE_CXX17_REMOVED_BINDERS)
+# define BOOST_NO_CXX98_BINDERS
+#endif
+
+#define BOOST_NO_CXX17_ITERATOR_TRAITS
+#define BOOST_NO_CXX17_STD_INVOKE // Invoke support is incomplete (no invoke_result)
+
+#if (_LIBCPP_VERSION <= 1101) && !defined(BOOST_NO_CXX11_THREAD_LOCAL)
+// This is a bit of a sledgehammer, because really it's just libc++abi that has no
+// support for thread_local, leading to linker errors such as
+// "undefined reference to `__cxa_thread_atexit'". It is fixed in the
+// most recent releases of libc++abi though...
+# define BOOST_NO_CXX11_THREAD_LOCAL
+#endif
+
+#if defined(__linux__) && !defined(BOOST_NO_CXX11_THREAD_LOCAL)
+// After libc++-dev is installed on Trusty, clang++-libc++ almost works,
+// except uses of `thread_local` fail with undefined reference to
+// `__cxa_thread_atexit`.
+# define BOOST_NO_CXX11_THREAD_LOCAL
+#endif
+
+#if defined(__has_include)
+#if !__has_include(<shared_mutex>)
+# define BOOST_NO_CXX14_HDR_SHARED_MUTEX
+#elif __cplusplus <= 201103
+# define BOOST_NO_CXX14_HDR_SHARED_MUTEX
+#endif
+#elif __cplusplus < 201402
+# define BOOST_NO_CXX14_HDR_SHARED_MUTEX
+#endif
+
+// --- end ---
diff --git a/include/boost/config/stdlib/libstdcpp3.hpp b/include/boost/config/stdlib/libstdcpp3.hpp
new file mode 100644
index 0000000..f6eab26
--- /dev/null
+++ b/include/boost/config/stdlib/libstdcpp3.hpp
@@ -0,0 +1,347 @@
+// (C) Copyright John Maddock 2001.
+// (C) Copyright Jens Maurer 2001.
+// 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 for most recent version.
+
+// config for libstdc++ v3
+// not much to go in here:
+
+#define BOOST_GNU_STDLIB 1
+
+#ifdef __GLIBCXX__
+#define BOOST_STDLIB "GNU libstdc++ version " BOOST_STRINGIZE(__GLIBCXX__)
+#else
+#define BOOST_STDLIB "GNU libstdc++ version " BOOST_STRINGIZE(__GLIBCPP__)
+#endif
+
+#if !defined(_GLIBCPP_USE_WCHAR_T) && !defined(_GLIBCXX_USE_WCHAR_T)
+# define BOOST_NO_CWCHAR
+# define BOOST_NO_CWCTYPE
+# define BOOST_NO_STD_WSTRING
+# define BOOST_NO_STD_WSTREAMBUF
+#endif
+
+#if defined(__osf__) && !defined(_REENTRANT) \
+ && ( defined(_GLIBCXX_HAVE_GTHR_DEFAULT) || defined(_GLIBCPP_HAVE_GTHR_DEFAULT) )
+// GCC 3 on Tru64 forces the definition of _REENTRANT when any std lib header
+// file is included, therefore for consistency we define it here as well.
+# define _REENTRANT
+#endif
+
+#ifdef __GLIBCXX__ // gcc 3.4 and greater:
+# if defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
+ || defined(_GLIBCXX__PTHREADS) \
+ || defined(_GLIBCXX_HAS_GTHREADS) \
+ || defined(_WIN32) \
+ || defined(_AIX) \
+ || defined(__HAIKU__)
+ //
+ // If the std lib has thread support turned on, then turn it on in Boost
+ // as well. We do this because some gcc-3.4 std lib headers define _REENTANT
+ // while others do not...
+ //
+# define BOOST_HAS_THREADS
+# else
+# define BOOST_DISABLE_THREADS
+# endif
+#elif defined(__GLIBCPP__) \
+ && !defined(_GLIBCPP_HAVE_GTHR_DEFAULT) \
+ && !defined(_GLIBCPP__PTHREADS)
+ // disable thread support if the std lib was built single threaded:
+# define BOOST_DISABLE_THREADS
+#endif
+
+#if (defined(linux) || defined(__linux) || defined(__linux__)) && defined(__arm__) && defined(_GLIBCPP_HAVE_GTHR_DEFAULT)
+// linux on arm apparently doesn't define _REENTRANT
+// so just turn on threading support whenever the std lib is thread safe:
+# define BOOST_HAS_THREADS
+#endif
+
+#if !defined(_GLIBCPP_USE_LONG_LONG) \
+ && !defined(_GLIBCXX_USE_LONG_LONG)\
+ && defined(BOOST_HAS_LONG_LONG)
+// May have been set by compiler/*.hpp, but "long long" without library
+// support is useless.
+# undef BOOST_HAS_LONG_LONG
+#endif
+
+// Apple doesn't seem to reliably defined a *unix* macro
+#if !defined(CYGWIN) && ( defined(__unix__) \
+ || defined(__unix) \
+ || defined(unix) \
+ || defined(__APPLE__) \
+ || defined(__APPLE) \
+ || defined(APPLE))
+# include <unistd.h>
+#endif
+
+#ifndef __VXWORKS__ // VxWorks uses Dinkum, not GNU STL with GCC
+#if defined(__GLIBCXX__) || (defined(__GLIBCPP__) && __GLIBCPP__>=20020514) // GCC >= 3.1.0
+# define BOOST_STD_EXTENSION_NAMESPACE __gnu_cxx
+# define BOOST_HAS_SLIST
+# define BOOST_HAS_HASH
+# define BOOST_SLIST_HEADER <ext/slist>
+# if !defined(__GNUC__) || __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 3)
+# define BOOST_HASH_SET_HEADER <ext/hash_set>
+# define BOOST_HASH_MAP_HEADER <ext/hash_map>
+# else
+# define BOOST_HASH_SET_HEADER <backward/hash_set>
+# define BOOST_HASH_MAP_HEADER <backward/hash_map>
+# 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
+// 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
+// GCC 4.2.4 it is set to 20080519 but in GCC 4.3.0 it is set to 20080305.
+// 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 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
+// 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/memory_resource>)
+# define BOOST_LIBSTDCXX_VERSION 60100
+#elif __has_include(<experimental/any>)
+# define BOOST_LIBSTDCXX_VERSION 50100
+#elif __has_include(<shared_mutex>)
+# define BOOST_LIBSTDCXX_VERSION 40900
+#elif __has_include(<ext/cmath>)
+# define BOOST_LIBSTDCXX_VERSION 40800
+#elif __has_include(<scoped_allocator>)
+# 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
+
+#if (BOOST_LIBSTDCXX_VERSION < 50100)
+// libstdc++ does not define this function as it's deprecated in C++11, but clang still looks for it,
+// defining it here is a terrible cludge, but should get things working:
+extern "C" char *gets (char *__s);
+#endif
+//
+// clang is unable to parse some GCC headers, add those workarounds here:
+//
+#if BOOST_LIBSTDCXX_VERSION < 50000
+# define BOOST_NO_CXX11_HDR_REGEX
+#endif
+//
+// GCC 4.7.x has no __cxa_thread_atexit which
+// thread_local objects require for cleanup:
+//
+#if BOOST_LIBSTDCXX_VERSION < 40800
+# define BOOST_NO_CXX11_THREAD_LOCAL
+#endif
+//
+// Early clang versions can handle <chrono>, not exactly sure which versions
+// but certainly up to clang-3.8 and gcc-4.6:
+//
+#if (__clang_major__ < 5)
+# if BOOST_LIBSTDCXX_VERSION < 40800
+# define BOOST_NO_CXX11_HDR_FUTURE
+# define BOOST_NO_CXX11_HDR_MUTEX
+# define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
+# define BOOST_NO_CXX11_HDR_CHRONO
+# endif
+#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(__SUNPRO_CC) && (__SUNPRO_CC >= 0x5130) && (__cplusplus >= 201103L)
+//
+// Oracle Solaris compiler uses it's own verison of libstdc++ but doesn't
+// set __GNUC__
+//
+#if __SUNPRO_CC >= 0x5140
+#define BOOST_LIBSTDCXX_VERSION 50100
+#else
+#define BOOST_LIBSTDCXX_VERSION 40800
+#endif
+#endif
+
+#if !defined(BOOST_LIBSTDCXX_VERSION)
+# define BOOST_LIBSTDCXX_VERSION (__GNUC__ * 10000 + __GNUC_MINOR__ * 100 + __GNUC_PATCHLEVEL__)
+#endif
+
+// std::auto_ptr isn't provided with _GLIBCXX_DEPRECATED=0 (GCC 4.5 and earlier)
+// or _GLIBCXX_USE_DEPRECATED=0 (GCC 4.6 and later).
+#if defined(BOOST_LIBSTDCXX11)
+# if BOOST_LIBSTDCXX_VERSION < 40600
+# if !_GLIBCXX_DEPRECATED
+# define BOOST_NO_AUTO_PTR
+# endif
+# elif !_GLIBCXX_USE_DEPRECATED
+# define BOOST_NO_AUTO_PTR
+# endif
+#endif
+
+// C++0x headers in GCC 4.3.0 and later
+//
+#if (BOOST_LIBSTDCXX_VERSION < 40300) || !defined(BOOST_LIBSTDCXX11)
+# define BOOST_NO_CXX11_HDR_ARRAY
+# define BOOST_NO_CXX11_HDR_TUPLE
+# define BOOST_NO_CXX11_HDR_UNORDERED_MAP
+# define BOOST_NO_CXX11_HDR_UNORDERED_SET
+# define BOOST_NO_CXX11_HDR_FUNCTIONAL
+#endif
+
+// C++0x headers in GCC 4.4.0 and later
+//
+#if (BOOST_LIBSTDCXX_VERSION < 40400) || !defined(BOOST_LIBSTDCXX11)
+# define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
+# define BOOST_NO_CXX11_HDR_FORWARD_LIST
+# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+# define BOOST_NO_CXX11_HDR_MUTEX
+# define BOOST_NO_CXX11_HDR_RATIO
+# define BOOST_NO_CXX11_HDR_SYSTEM_ERROR
+# define BOOST_NO_CXX11_SMART_PTR
+#else
+# define BOOST_HAS_TR1_COMPLEX_INVERSE_TRIG
+# define BOOST_HAS_TR1_COMPLEX_OVERLOADS
+#endif
+
+// C++0x features in GCC 4.5.0 and later
+//
+#if (BOOST_LIBSTDCXX_VERSION < 40500) || !defined(BOOST_LIBSTDCXX11)
+# define BOOST_NO_CXX11_NUMERIC_LIMITS
+# define BOOST_NO_CXX11_HDR_FUTURE
+# define BOOST_NO_CXX11_HDR_RANDOM
+#endif
+
+// C++0x features in GCC 4.6.0 and later
+//
+#if (BOOST_LIBSTDCXX_VERSION < 40600) || !defined(BOOST_LIBSTDCXX11)
+# define BOOST_NO_CXX11_HDR_TYPEINDEX
+# define BOOST_NO_CXX11_ADDRESSOF
+# define BOOST_NO_CXX17_ITERATOR_TRAITS
+#endif
+
+// C++0x features in GCC 4.7.0 and later
+//
+#if (BOOST_LIBSTDCXX_VERSION < 40700) || !defined(BOOST_LIBSTDCXX11)
+// Note that although <chrono> existed prior to 4.7, "steady_clock" is spelled "monotonic_clock"
+// so 4.7.0 is the first truly conforming one.
+# define BOOST_NO_CXX11_HDR_CHRONO
+# define BOOST_NO_CXX11_ALLOCATOR
+# define BOOST_NO_CXX11_POINTER_TRAITS
+#endif
+// C++0x features in GCC 4.8.0 and later
+//
+#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:
+# define BOOST_NO_CXX11_HDR_ATOMIC
+# define BOOST_NO_CXX11_HDR_THREAD
+#endif
+// C++0x features in GCC 4.9.0 and later
+//
+#if (BOOST_LIBSTDCXX_VERSION < 40900) || !defined(BOOST_LIBSTDCXX11)
+// 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.
+# define BOOST_NO_CXX11_HDR_REGEX
+#endif
+#if (BOOST_LIBSTDCXX_VERSION < 40900) || (__cplusplus <= 201103)
+# define BOOST_NO_CXX14_STD_EXCHANGE
+#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 features in GCC 5.1 and later
+//
+#if (BOOST_LIBSTDCXX_VERSION < 50100) || !defined(BOOST_LIBSTDCXX11)
+# define BOOST_NO_CXX11_HDR_TYPE_TRAITS
+# define BOOST_NO_CXX11_HDR_CODECVT
+# define BOOST_NO_CXX11_ATOMIC_SMART_PTR
+# define BOOST_NO_CXX11_STD_ALIGN
+#endif
+
+//
+// C++17 features in GCC 7.1 and later
+//
+#if (BOOST_LIBSTDCXX_VERSION < 70100) || (__cplusplus <= 201402L)
+# define BOOST_NO_CXX17_STD_INVOKE
+# define BOOST_NO_CXX17_STD_APPLY
+#endif
+
+#if defined(__has_include)
+#if !__has_include(<shared_mutex>)
+# define BOOST_NO_CXX14_HDR_SHARED_MUTEX
+#elif __cplusplus <= 201103
+# define BOOST_NO_CXX14_HDR_SHARED_MUTEX
+#endif
+#elif __cplusplus < 201402 || (BOOST_LIBSTDCXX_VERSION < 40900) || !defined(BOOST_LIBSTDCXX11)
+# define BOOST_NO_CXX14_HDR_SHARED_MUTEX
+#endif
+
+//
+// Headers not present on Solaris with the Oracle compiler:
+#if defined(__SUNPRO_CC) && (__SUNPRO_CC < 0x5140)
+#define BOOST_NO_CXX11_HDR_FUTURE
+#define BOOST_NO_CXX11_HDR_FORWARD_LIST
+#define BOOST_NO_CXX11_HDR_ATOMIC
+// shared_ptr is present, but is not convertible to bool
+// which causes all kinds of problems especially in Boost.Thread
+// but probably elsewhere as well.
+#define BOOST_NO_CXX11_SMART_PTR
+#endif
+
+#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
+# ifndef BOOST_NO_CXX14_HDR_SHARED_MUTEX
+# define BOOST_NO_CXX14_HDR_SHARED_MUTEX
+# 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 ---
diff --git a/include/boost/config/stdlib/modena.hpp b/include/boost/config/stdlib/modena.hpp
new file mode 100644
index 0000000..81919e0
--- /dev/null
+++ b/include/boost/config/stdlib/modena.hpp
@@ -0,0 +1,78 @@
+// (C) Copyright Jens Maurer 2001.
+// 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 for most recent version.
+
+// Modena C++ standard library (comes with KAI C++)
+
+#if !defined(MSIPL_COMPILE_H)
+# include <boost/config/no_tr1/utility.hpp>
+# if !defined(__MSIPL_COMPILE_H)
+# error "This is not the Modena C++ library!"
+# endif
+#endif
+
+#ifndef MSIPL_NL_TYPES
+#define BOOST_NO_STD_MESSAGES
+#endif
+
+#ifndef MSIPL_WCHART
+#define BOOST_NO_STD_WSTRING
+#endif
+
+// C++0x headers not yet implemented
+//
+# define BOOST_NO_CXX11_HDR_ARRAY
+# define BOOST_NO_CXX11_HDR_CHRONO
+# define BOOST_NO_CXX11_HDR_CODECVT
+# define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
+# define BOOST_NO_CXX11_HDR_FORWARD_LIST
+# define BOOST_NO_CXX11_HDR_FUTURE
+# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+# define BOOST_NO_CXX11_HDR_MUTEX
+# define BOOST_NO_CXX11_HDR_RANDOM
+# define BOOST_NO_CXX11_HDR_RATIO
+# define BOOST_NO_CXX11_HDR_REGEX
+# define BOOST_NO_CXX11_HDR_SYSTEM_ERROR
+# define BOOST_NO_CXX11_HDR_THREAD
+# define BOOST_NO_CXX11_HDR_TUPLE
+# define BOOST_NO_CXX11_HDR_TYPE_TRAITS
+# define BOOST_NO_CXX11_HDR_TYPEINDEX
+# define BOOST_NO_CXX11_HDR_UNORDERED_MAP
+# define BOOST_NO_CXX11_HDR_UNORDERED_SET
+# define BOOST_NO_CXX11_NUMERIC_LIMITS
+# define BOOST_NO_CXX11_ALLOCATOR
+# define BOOST_NO_CXX11_POINTER_TRAITS
+# define BOOST_NO_CXX11_ATOMIC_SMART_PTR
+# define BOOST_NO_CXX11_SMART_PTR
+# define BOOST_NO_CXX11_HDR_FUNCTIONAL
+# define BOOST_NO_CXX11_HDR_ATOMIC
+# define BOOST_NO_CXX11_STD_ALIGN
+# define BOOST_NO_CXX11_ADDRESSOF
+
+#if defined(__has_include)
+#if !__has_include(<shared_mutex>)
+# define BOOST_NO_CXX14_HDR_SHARED_MUTEX
+#elif __cplusplus < 201402
+# define BOOST_NO_CXX14_HDR_SHARED_MUTEX
+#endif
+#else
+# define BOOST_NO_CXX14_HDR_SHARED_MUTEX
+#endif
+
+// C++14 features
+# define BOOST_NO_CXX14_STD_EXCHANGE
+
+// C++17 features
+# define BOOST_NO_CXX17_STD_APPLY
+# define BOOST_NO_CXX17_STD_INVOKE
+# define BOOST_NO_CXX17_ITERATOR_TRAITS
+
+#define BOOST_STDLIB "Modena C++ standard library"
+
+
+
+
+
diff --git a/include/boost/config/stdlib/msl.hpp b/include/boost/config/stdlib/msl.hpp
new file mode 100644
index 0000000..0e2e2af
--- /dev/null
+++ b/include/boost/config/stdlib/msl.hpp
@@ -0,0 +1,97 @@
+// (C) Copyright John Maddock 2001.
+// (C) Copyright Darin Adler 2001.
+// 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 for most recent version.
+
+// Metrowerks standard library:
+
+#ifndef __MSL_CPP__
+# include <boost/config/no_tr1/utility.hpp>
+# ifndef __MSL_CPP__
+# error This is not the MSL standard library!
+# endif
+#endif
+
+#if __MSL_CPP__ >= 0x6000 // Pro 6
+# define BOOST_HAS_HASH
+# define BOOST_STD_EXTENSION_NAMESPACE Metrowerks
+#endif
+#define BOOST_HAS_SLIST
+
+#if __MSL_CPP__ < 0x6209
+# define BOOST_NO_STD_MESSAGES
+#endif
+
+// check C lib version for <stdint.h>
+#include <cstddef>
+
+#if defined(__MSL__) && (__MSL__ >= 0x5000)
+# define BOOST_HAS_STDINT_H
+# if !defined(__PALMOS_TRAPS__)
+# define BOOST_HAS_UNISTD_H
+# endif
+ // boilerplate code:
+# include <boost/config/detail/posix_features.hpp>
+#endif
+
+#if defined(_MWMT) || _MSL_THREADSAFE
+# define BOOST_HAS_THREADS
+#endif
+
+#ifdef _MSL_NO_EXPLICIT_FUNC_TEMPLATE_ARG
+# define BOOST_NO_STD_USE_FACET
+# define BOOST_HAS_TWO_ARG_USE_FACET
+#endif
+
+// C++0x headers not yet implemented
+//
+# define BOOST_NO_CXX11_HDR_ARRAY
+# define BOOST_NO_CXX11_HDR_CHRONO
+# define BOOST_NO_CXX11_HDR_CODECVT
+# define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
+# define BOOST_NO_CXX11_HDR_FORWARD_LIST
+# define BOOST_NO_CXX11_HDR_FUTURE
+# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+# define BOOST_NO_CXX11_HDR_MUTEX
+# define BOOST_NO_CXX11_HDR_RANDOM
+# define BOOST_NO_CXX11_HDR_RATIO
+# define BOOST_NO_CXX11_HDR_REGEX
+# define BOOST_NO_CXX11_HDR_SYSTEM_ERROR
+# define BOOST_NO_CXX11_HDR_THREAD
+# define BOOST_NO_CXX11_HDR_TUPLE
+# define BOOST_NO_CXX11_HDR_TYPE_TRAITS
+# define BOOST_NO_CXX11_HDR_TYPEINDEX
+# define BOOST_NO_CXX11_HDR_UNORDERED_MAP
+# define BOOST_NO_CXX11_HDR_UNORDERED_SET
+# define BOOST_NO_CXX11_NUMERIC_LIMITS
+# define BOOST_NO_CXX11_ALLOCATOR
+# define BOOST_NO_CXX11_POINTER_TRAITS
+# define BOOST_NO_CXX11_ATOMIC_SMART_PTR
+# define BOOST_NO_CXX11_SMART_PTR
+# define BOOST_NO_CXX11_HDR_FUNCTIONAL
+# define BOOST_NO_CXX11_HDR_ATOMIC
+# define BOOST_NO_CXX11_STD_ALIGN
+# define BOOST_NO_CXX11_ADDRESSOF
+
+#if defined(__has_include)
+#if !__has_include(<shared_mutex>)
+# define BOOST_NO_CXX14_HDR_SHARED_MUTEX
+#elif __cplusplus < 201402
+# define BOOST_NO_CXX14_HDR_SHARED_MUTEX
+#endif
+#else
+# define BOOST_NO_CXX14_HDR_SHARED_MUTEX
+#endif
+
+// C++14 features
+# define BOOST_NO_CXX14_STD_EXCHANGE
+
+// C++17 features
+# define BOOST_NO_CXX17_STD_APPLY
+# define BOOST_NO_CXX17_STD_INVOKE
+# define BOOST_NO_CXX17_ITERATOR_TRAITS
+
+#define BOOST_STDLIB "Metrowerks Standard Library version " BOOST_STRINGIZE(__MSL_CPP__)
diff --git a/include/boost/config/stdlib/roguewave.hpp b/include/boost/config/stdlib/roguewave.hpp
new file mode 100644
index 0000000..df60215
--- /dev/null
+++ b/include/boost/config/stdlib/roguewave.hpp
@@ -0,0 +1,207 @@
+// (C) Copyright John Maddock 2001 - 2003.
+// (C) Copyright Jens Maurer 2001.
+// (C) Copyright David Abrahams 2003.
+// (C) Copyright Boris Gubenko 2007.
+// 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 for most recent version.
+
+// Rogue Wave std lib:
+
+#define BOOST_RW_STDLIB 1
+
+#if !defined(__STD_RWCOMPILER_H__) && !defined(_RWSTD_VER)
+# include <boost/config/no_tr1/utility.hpp>
+# if !defined(__STD_RWCOMPILER_H__) && !defined(_RWSTD_VER)
+# error This is not the Rogue Wave standard library
+# endif
+#endif
+//
+// figure out a consistent version number:
+//
+#ifndef _RWSTD_VER
+# define BOOST_RWSTD_VER 0x010000
+#elif _RWSTD_VER < 0x010000
+# define BOOST_RWSTD_VER (_RWSTD_VER << 8)
+#else
+# define BOOST_RWSTD_VER _RWSTD_VER
+#endif
+
+#ifndef _RWSTD_VER
+# define BOOST_STDLIB "Rogue Wave standard library version (Unknown version)"
+#elif _RWSTD_VER < 0x04010200
+ # define BOOST_STDLIB "Rogue Wave standard library version " BOOST_STRINGIZE(_RWSTD_VER)
+#else
+# ifdef _RWSTD_VER_STR
+# define BOOST_STDLIB "Apache STDCXX standard library version " _RWSTD_VER_STR
+# else
+# define BOOST_STDLIB "Apache STDCXX standard library version " BOOST_STRINGIZE(_RWSTD_VER)
+# endif
+#endif
+
+//
+// Prior to version 2.2.0 the primary template for std::numeric_limits
+// does not have compile time constants, even though specializations of that
+// template do:
+//
+#if BOOST_RWSTD_VER < 0x020200
+# define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
+#endif
+
+// Sun CC 5.5 patch 113817-07 adds long long specialization, but does not change the
+// library version number (http://sunsolve6.sun.com/search/document.do?assetkey=1-21-113817):
+#if BOOST_RWSTD_VER <= 0x020101 && (!defined(__SUNPRO_CC) || (__SUNPRO_CC < 0x550))
+# define BOOST_NO_LONG_LONG_NUMERIC_LIMITS
+# endif
+
+//
+// Borland version of numeric_limits lacks __int64 specialisation:
+//
+#ifdef __BORLANDC__
+# define BOOST_NO_MS_INT64_NUMERIC_LIMITS
+#endif
+
+//
+// No std::iterator if it can't figure out default template args:
+//
+#if defined(_RWSTD_NO_SIMPLE_DEFAULT_TEMPLATES) || defined(RWSTD_NO_SIMPLE_DEFAULT_TEMPLATES) || (BOOST_RWSTD_VER < 0x020000)
+# define BOOST_NO_STD_ITERATOR
+#endif
+
+//
+// No iterator traits without partial specialization:
+//
+#if defined(_RWSTD_NO_CLASS_PARTIAL_SPEC) || defined(RWSTD_NO_CLASS_PARTIAL_SPEC)
+# define BOOST_NO_STD_ITERATOR_TRAITS
+#endif
+
+//
+// Prior to version 2.0, std::auto_ptr was buggy, and there were no
+// new-style iostreams, and no conformant std::allocator:
+//
+#if (BOOST_RWSTD_VER < 0x020000)
+# define BOOST_NO_AUTO_PTR
+# define BOOST_NO_STRINGSTREAM
+# define BOOST_NO_STD_ALLOCATOR
+# define BOOST_NO_STD_LOCALE
+#endif
+
+//
+// No template iterator constructors without member template support:
+//
+#if defined(RWSTD_NO_MEMBER_TEMPLATES) || defined(_RWSTD_NO_MEMBER_TEMPLATES)
+# define BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
+#endif
+
+//
+// RW defines _RWSTD_ALLOCATOR if the allocator is conformant and in use
+// (the or _HPACC_ part is a hack - the library seems to define _RWSTD_ALLOCATOR
+// on HP aCC systems even though the allocator is in fact broken):
+//
+#if !defined(_RWSTD_ALLOCATOR) || (defined(__HP_aCC) && __HP_aCC <= 33100)
+# define BOOST_NO_STD_ALLOCATOR
+#endif
+
+//
+// If we have a std::locale, we still may not have std::use_facet:
+//
+#if defined(_RWSTD_NO_TEMPLATE_ON_RETURN_TYPE) && !defined(BOOST_NO_STD_LOCALE)
+# define BOOST_NO_STD_USE_FACET
+# define BOOST_HAS_TWO_ARG_USE_FACET
+#endif
+
+//
+// There's no std::distance prior to version 2, or without
+// partial specialization support:
+//
+#if (BOOST_RWSTD_VER < 0x020000) || defined(_RWSTD_NO_CLASS_PARTIAL_SPEC)
+ #define BOOST_NO_STD_DISTANCE
+#endif
+
+//
+// Some versions of the rogue wave library don't have assignable
+// OutputIterators:
+//
+#if BOOST_RWSTD_VER < 0x020100
+# define BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN
+#endif
+
+//
+// Disable BOOST_HAS_LONG_LONG when the library has no support for it.
+//
+#if !defined(_RWSTD_LONG_LONG) && defined(BOOST_HAS_LONG_LONG)
+# undef BOOST_HAS_LONG_LONG
+#endif
+
+//
+// check that on HP-UX, the proper RW library is used
+//
+#if defined(__HP_aCC) && !defined(_HP_NAMESPACE_STD)
+# error "Boost requires Standard RW library. Please compile and link with -AA"
+#endif
+
+//
+// Define macros specific to RW V2.2 on HP-UX
+//
+#if defined(__HP_aCC) && (BOOST_RWSTD_VER == 0x02020100)
+# ifndef __HP_TC1_MAKE_PAIR
+# define __HP_TC1_MAKE_PAIR
+# endif
+# ifndef _HP_INSTANTIATE_STD2_VL
+# define _HP_INSTANTIATE_STD2_VL
+# endif
+#endif
+
+#if _RWSTD_VER < 0x05000000
+# define BOOST_NO_CXX11_HDR_ARRAY
+#endif
+// type_traits header is incomplete:
+# define BOOST_NO_CXX11_HDR_TYPE_TRAITS
+//
+// C++0x headers not yet implemented
+//
+# define BOOST_NO_CXX11_HDR_CHRONO
+# define BOOST_NO_CXX11_HDR_CODECVT
+# define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
+# define BOOST_NO_CXX11_HDR_FORWARD_LIST
+# define BOOST_NO_CXX11_HDR_FUTURE
+# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+# define BOOST_NO_CXX11_HDR_MUTEX
+# define BOOST_NO_CXX11_HDR_RANDOM
+# define BOOST_NO_CXX11_HDR_RATIO
+# define BOOST_NO_CXX11_HDR_REGEX
+# define BOOST_NO_CXX11_HDR_SYSTEM_ERROR
+# define BOOST_NO_CXX11_HDR_THREAD
+# define BOOST_NO_CXX11_HDR_TUPLE
+# define BOOST_NO_CXX11_HDR_TYPEINDEX
+# define BOOST_NO_CXX11_HDR_UNORDERED_MAP
+# define BOOST_NO_CXX11_HDR_UNORDERED_SET
+# define BOOST_NO_CXX11_NUMERIC_LIMITS
+# define BOOST_NO_CXX11_ALLOCATOR
+# define BOOST_NO_CXX11_POINTER_TRAITS
+# define BOOST_NO_CXX11_ATOMIC_SMART_PTR
+# define BOOST_NO_CXX11_SMART_PTR
+# define BOOST_NO_CXX11_HDR_FUNCTIONAL
+# define BOOST_NO_CXX11_HDR_ATOMIC
+# define BOOST_NO_CXX11_STD_ALIGN
+# define BOOST_NO_CXX11_ADDRESSOF
+
+#if defined(__has_include)
+#if !__has_include(<shared_mutex>)
+# define BOOST_NO_CXX14_HDR_SHARED_MUTEX
+#elif __cplusplus < 201402
+# define BOOST_NO_CXX14_HDR_SHARED_MUTEX
+#endif
+#else
+# define BOOST_NO_CXX14_HDR_SHARED_MUTEX
+#endif
+
+// C++14 features
+# define BOOST_NO_CXX14_STD_EXCHANGE
+
+// C++17 features
+# define BOOST_NO_CXX17_STD_APPLY
+# define BOOST_NO_CXX17_STD_INVOKE
+# define BOOST_NO_CXX17_ITERATOR_TRAITS
diff --git a/include/boost/config/stdlib/sgi.hpp b/include/boost/config/stdlib/sgi.hpp
new file mode 100644
index 0000000..0c8ab2e
--- /dev/null
+++ b/include/boost/config/stdlib/sgi.hpp
@@ -0,0 +1,167 @@
+// (C) Copyright John Maddock 2001 - 2003.
+// (C) Copyright Darin Adler 2001.
+// (C) Copyright Jens Maurer 2001 - 2003.
+// 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 for most recent version.
+
+// generic SGI STL:
+
+#if !defined(__STL_CONFIG_H)
+# include <boost/config/no_tr1/utility.hpp>
+# if !defined(__STL_CONFIG_H)
+# error "This is not the SGI STL!"
+# endif
+#endif
+
+//
+// No std::iterator traits without partial specialisation:
+//
+#if !defined(__STL_CLASS_PARTIAL_SPECIALIZATION)
+# define BOOST_NO_STD_ITERATOR_TRAITS
+#endif
+
+//
+// No std::stringstream with gcc < 3
+//
+#if defined(__GNUC__) && (__GNUC__ < 3) && \
+ ((__GNUC_MINOR__ < 95) || (__GNUC_MINOR__ == 96)) && \
+ !defined(__STL_USE_NEW_IOSTREAMS) || \
+ defined(__APPLE_CC__)
+ // Note that we only set this for GNU C++ prior to 2.95 since the
+ // latest patches for that release do contain a minimal <sstream>
+ // If you are running a 2.95 release prior to 2.95.3 then this will need
+ // setting, but there is no way to detect that automatically (other
+ // than by running the configure script).
+ // Also, the unofficial GNU C++ 2.96 included in RedHat 7.1 doesn't
+ // have <sstream>.
+# define BOOST_NO_STRINGSTREAM
+#endif
+
+// Apple doesn't seem to reliably defined a *unix* macro
+#if !defined(CYGWIN) && ( defined(__unix__) \
+ || defined(__unix) \
+ || defined(unix) \
+ || defined(__APPLE__) \
+ || defined(__APPLE) \
+ || defined(APPLE))
+# include <unistd.h>
+#endif
+
+
+//
+// Assume no std::locale without own iostreams (this may be an
+// incorrect assumption in some cases):
+//
+#if !defined(__SGI_STL_OWN_IOSTREAMS) && !defined(__STL_USE_NEW_IOSTREAMS)
+# define BOOST_NO_STD_LOCALE
+#endif
+
+//
+// Original native SGI streams have non-standard std::messages facet:
+//
+#if defined(__sgi) && (_COMPILER_VERSION <= 650) && !defined(__SGI_STL_OWN_IOSTREAMS)
+# define BOOST_NO_STD_LOCALE
+#endif
+
+//
+// SGI's new iostreams have missing "const" in messages<>::open
+//
+#if defined(__sgi) && (_COMPILER_VERSION <= 740) && defined(__STL_USE_NEW_IOSTREAMS)
+# define BOOST_NO_STD_MESSAGES
+#endif
+
+//
+// No template iterator constructors, or std::allocator
+// without member templates:
+//
+#if !defined(__STL_MEMBER_TEMPLATES)
+# define BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
+# define BOOST_NO_STD_ALLOCATOR
+#endif
+
+//
+// We always have SGI style hash_set, hash_map, and slist:
+//
+#define BOOST_HAS_HASH
+#define BOOST_HAS_SLIST
+
+//
+// If this is GNU libstdc++2, then no <limits> and no std::wstring:
+//
+#if (defined(__GNUC__) && (__GNUC__ < 3))
+# include <string>
+# if defined(__BASTRING__)
+# define BOOST_NO_LIMITS
+// Note: <boost/limits.hpp> will provide compile-time constants
+# undef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
+# define BOOST_NO_STD_WSTRING
+# endif
+#endif
+
+//
+// There is no standard iterator unless we have namespace support:
+//
+#if !defined(__STL_USE_NAMESPACES)
+# define BOOST_NO_STD_ITERATOR
+#endif
+
+//
+// Intrinsic type_traits support.
+// The SGI STL has it's own __type_traits class, which
+// has intrinsic compiler support with SGI's compilers.
+// Whatever map SGI style type traits to boost equivalents:
+//
+#define BOOST_HAS_SGI_TYPE_TRAITS
+
+// C++0x headers not yet implemented
+//
+# define BOOST_NO_CXX11_HDR_ARRAY
+# define BOOST_NO_CXX11_HDR_CHRONO
+# define BOOST_NO_CXX11_HDR_CODECVT
+# define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
+# define BOOST_NO_CXX11_HDR_FORWARD_LIST
+# define BOOST_NO_CXX11_HDR_FUTURE
+# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+# define BOOST_NO_CXX11_HDR_MUTEX
+# define BOOST_NO_CXX11_HDR_RANDOM
+# define BOOST_NO_CXX11_HDR_RATIO
+# define BOOST_NO_CXX11_HDR_REGEX
+# define BOOST_NO_CXX11_HDR_SYSTEM_ERROR
+# define BOOST_NO_CXX11_HDR_THREAD
+# define BOOST_NO_CXX11_HDR_TUPLE
+# define BOOST_NO_CXX11_HDR_TYPE_TRAITS
+# define BOOST_NO_CXX11_HDR_TYPEINDEX
+# define BOOST_NO_CXX11_HDR_UNORDERED_MAP
+# define BOOST_NO_CXX11_HDR_UNORDERED_SET
+# define BOOST_NO_CXX11_NUMERIC_LIMITS
+# define BOOST_NO_CXX11_ALLOCATOR
+# define BOOST_NO_CXX11_POINTER_TRAITS
+# define BOOST_NO_CXX11_ATOMIC_SMART_PTR
+# define BOOST_NO_CXX11_SMART_PTR
+# define BOOST_NO_CXX11_HDR_FUNCTIONAL
+# define BOOST_NO_CXX11_HDR_ATOMIC
+# define BOOST_NO_CXX11_STD_ALIGN
+# define BOOST_NO_CXX11_ADDRESSOF
+
+#if defined(__has_include)
+#if !__has_include(<shared_mutex>)
+# define BOOST_NO_CXX14_HDR_SHARED_MUTEX
+#elif __cplusplus < 201402
+# define BOOST_NO_CXX14_HDR_SHARED_MUTEX
+#endif
+#else
+# define BOOST_NO_CXX14_HDR_SHARED_MUTEX
+#endif
+
+// C++14 features
+# define BOOST_NO_CXX14_STD_EXCHANGE
+
+// C++17 features
+# define BOOST_NO_CXX17_STD_APPLY
+# define BOOST_NO_CXX17_STD_INVOKE
+# define BOOST_NO_CXX17_ITERATOR_TRAITS
+
+#define BOOST_STDLIB "SGI standard library"
diff --git a/include/boost/config/stdlib/stlport.hpp b/include/boost/config/stdlib/stlport.hpp
new file mode 100644
index 0000000..2e304e2
--- /dev/null
+++ b/include/boost/config/stdlib/stlport.hpp
@@ -0,0 +1,257 @@
+// (C) Copyright John Maddock 2001 - 2002.
+// (C) Copyright Darin Adler 2001.
+// (C) Copyright Jens Maurer 2001.
+// 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 for most recent version.
+
+// STLPort standard library config:
+
+#if !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION)
+# include <cstddef>
+# if !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION)
+# error "This is not STLPort!"
+# endif
+#endif
+
+// Apple doesn't seem to reliably defined a *unix* macro
+#if !defined(CYGWIN) && ( defined(__unix__) \
+ || defined(__unix) \
+ || defined(unix) \
+ || defined(__APPLE__) \
+ || defined(__APPLE) \
+ || defined(APPLE))
+# include <unistd.h>
+#endif
+
+//
+// __STL_STATIC_CONST_INIT_BUG implies BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
+// for versions prior to 4.1(beta)
+//
+#if (defined(__STL_STATIC_CONST_INIT_BUG) || defined(_STLP_STATIC_CONST_INIT_BUG)) && (__SGI_STL_PORT <= 0x400)
+# define BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
+#endif
+
+//
+// If STLport thinks that there is no partial specialisation, then there is no
+// std::iterator traits:
+//
+#if !(defined(_STLP_CLASS_PARTIAL_SPECIALIZATION) || defined(__STL_CLASS_PARTIAL_SPECIALIZATION))
+# define BOOST_NO_STD_ITERATOR_TRAITS
+#endif
+
+//
+// No new style iostreams on GCC without STLport's iostreams enabled:
+//
+#if (defined(__GNUC__) && (__GNUC__ < 3)) && !(defined(__SGI_STL_OWN_IOSTREAMS) || defined(_STLP_OWN_IOSTREAMS))
+# define BOOST_NO_STRINGSTREAM
+#endif
+
+//
+// No new iostreams implies no std::locale, and no std::stringstream:
+//
+#if defined(__STL_NO_IOSTREAMS) || defined(__STL_NO_NEW_IOSTREAMS) || defined(_STLP_NO_IOSTREAMS) || defined(_STLP_NO_NEW_IOSTREAMS)
+# define BOOST_NO_STD_LOCALE
+# define BOOST_NO_STRINGSTREAM
+#endif
+
+//
+// If the streams are not native, and we have a "using ::x" compiler bug
+// then the io stream facets are not available in namespace std::
+//
+#ifdef _STLPORT_VERSION
+# if !(_STLPORT_VERSION >= 0x500) && !defined(_STLP_OWN_IOSTREAMS) && defined(_STLP_USE_NAMESPACES) && defined(BOOST_NO_USING_TEMPLATE) && !defined(__BORLANDC__)
+# define BOOST_NO_STD_LOCALE
+# endif
+#else
+# if !defined(__SGI_STL_OWN_IOSTREAMS) && defined(__STL_USE_NAMESPACES) && defined(BOOST_NO_USING_TEMPLATE) && !defined(__BORLANDC__)
+# define BOOST_NO_STD_LOCALE
+# endif
+#endif
+
+#if defined(_STLPORT_VERSION) && (_STLPORT_VERSION >= 0x520)
+# define BOOST_HAS_TR1_UNORDERED_SET
+# define BOOST_HAS_TR1_UNORDERED_MAP
+#endif
+//
+// Without member template support enabled, their are no template
+// iterate constructors, and no std::allocator:
+//
+#if !(defined(__STL_MEMBER_TEMPLATES) || defined(_STLP_MEMBER_TEMPLATES))
+# define BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
+# define BOOST_NO_STD_ALLOCATOR
+#endif
+//
+// however we always have at least a partial allocator:
+//
+#define BOOST_HAS_PARTIAL_STD_ALLOCATOR
+
+#if !defined(_STLP_MEMBER_TEMPLATE_CLASSES) || defined(_STLP_DONT_SUPPORT_REBIND_MEMBER_TEMPLATE)
+# define BOOST_NO_STD_ALLOCATOR
+#endif
+
+#if defined(_STLP_NO_MEMBER_TEMPLATE_KEYWORD) && defined(BOOST_MSVC) && (BOOST_MSVC <= 1300)
+# define BOOST_NO_STD_ALLOCATOR
+#endif
+
+//
+// If STLport thinks there is no wchar_t at all, then we have to disable
+// the support for the relevant specilazations of std:: templates.
+//
+#if !defined(_STLP_HAS_WCHAR_T) && !defined(_STLP_WCHAR_T_IS_USHORT)
+# ifndef BOOST_NO_STD_WSTRING
+# define BOOST_NO_STD_WSTRING
+# endif
+# ifndef BOOST_NO_STD_WSTREAMBUF
+# define BOOST_NO_STD_WSTREAMBUF
+# endif
+#endif
+
+//
+// We always have SGI style hash_set, hash_map, and slist:
+//
+#ifndef _STLP_NO_EXTENSIONS
+#define BOOST_HAS_HASH
+#define BOOST_HAS_SLIST
+#endif
+
+//
+// STLport does a good job of importing names into namespace std::,
+// but doesn't always get them all, define BOOST_NO_STDC_NAMESPACE, since our
+// workaround does not conflict with STLports:
+//
+//
+// Harold Howe says:
+// Borland switched to STLport in BCB6. Defining BOOST_NO_STDC_NAMESPACE with
+// BCB6 does cause problems. If we detect C++ Builder, then don't define
+// BOOST_NO_STDC_NAMESPACE
+//
+#if !defined(__BORLANDC__) && !defined(__DMC__)
+//
+// If STLport is using it's own namespace, and the real names are in
+// the global namespace, then we duplicate STLport's using declarations
+// (by defining BOOST_NO_STDC_NAMESPACE), we do this because STLport doesn't
+// necessarily import all the names we need into namespace std::
+//
+# if (defined(__STL_IMPORT_VENDOR_CSTD) \
+ || defined(__STL_USE_OWN_NAMESPACE) \
+ || defined(_STLP_IMPORT_VENDOR_CSTD) \
+ || defined(_STLP_USE_OWN_NAMESPACE)) \
+ && (defined(__STL_VENDOR_GLOBAL_CSTD) || defined (_STLP_VENDOR_GLOBAL_CSTD))
+# define BOOST_NO_STDC_NAMESPACE
+# define BOOST_NO_EXCEPTION_STD_NAMESPACE
+# endif
+#elif defined(__BORLANDC__) && __BORLANDC__ < 0x560
+// STLport doesn't import std::abs correctly:
+#include <stdlib.h>
+namespace std { using ::abs; }
+// and strcmp/strcpy don't get imported either ('cos they are macros)
+#include <string.h>
+#ifdef strcpy
+# undef strcpy
+#endif
+#ifdef strcmp
+# undef strcmp
+#endif
+#ifdef _STLP_VENDOR_CSTD
+namespace std{ using _STLP_VENDOR_CSTD::strcmp; using _STLP_VENDOR_CSTD::strcpy; }
+#endif
+#endif
+
+//
+// std::use_facet may be non-standard, uses a class instead:
+//
+#if defined(__STL_NO_EXPLICIT_FUNCTION_TMPL_ARGS) || defined(_STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS)
+# define BOOST_NO_STD_USE_FACET
+# define BOOST_HAS_STLP_USE_FACET
+#endif
+
+//
+// If STLport thinks there are no wide functions, <cwchar> etc. is not working; but
+// only if BOOST_NO_STDC_NAMESPACE is not defined (if it is then we do the import
+// into std:: ourselves).
+//
+#if defined(_STLP_NO_NATIVE_WIDE_FUNCTIONS) && !defined(BOOST_NO_STDC_NAMESPACE)
+# define BOOST_NO_CWCHAR
+# define BOOST_NO_CWCTYPE
+#endif
+
+//
+// If STLport for some reason was configured so that it thinks that wchar_t
+// is not an intrinsic type, then we have to disable the support for it as
+// well (we would be missing required specializations otherwise).
+//
+#if !defined( _STLP_HAS_WCHAR_T) || defined(_STLP_WCHAR_T_IS_USHORT)
+# undef BOOST_NO_INTRINSIC_WCHAR_T
+# define BOOST_NO_INTRINSIC_WCHAR_T
+#endif
+
+//
+// Borland ships a version of STLport with C++ Builder 6 that lacks
+// hashtables and the like:
+//
+#if defined(__BORLANDC__) && (__BORLANDC__ == 0x560)
+# undef BOOST_HAS_HASH
+#endif
+
+//
+// gcc-2.95.3/STLPort does not like the using declarations we use to get ADL with std::min/max
+//
+#if defined(__GNUC__) && (__GNUC__ < 3)
+# include <algorithm> // for std::min and std::max
+# define BOOST_USING_STD_MIN() ((void)0)
+# define BOOST_USING_STD_MAX() ((void)0)
+namespace boost { using std::min; using std::max; }
+#endif
+
+// C++0x headers not yet implemented
+//
+# define BOOST_NO_CXX11_HDR_ARRAY
+# define BOOST_NO_CXX11_HDR_CHRONO
+# define BOOST_NO_CXX11_HDR_CODECVT
+# define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
+# define BOOST_NO_CXX11_HDR_FORWARD_LIST
+# define BOOST_NO_CXX11_HDR_FUTURE
+# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+# define BOOST_NO_CXX11_HDR_MUTEX
+# define BOOST_NO_CXX11_HDR_RANDOM
+# define BOOST_NO_CXX11_HDR_RATIO
+# define BOOST_NO_CXX11_HDR_REGEX
+# define BOOST_NO_CXX11_HDR_SYSTEM_ERROR
+# define BOOST_NO_CXX11_HDR_THREAD
+# define BOOST_NO_CXX11_HDR_TUPLE
+# define BOOST_NO_CXX11_HDR_TYPE_TRAITS
+# define BOOST_NO_CXX11_HDR_TYPEINDEX
+# define BOOST_NO_CXX11_HDR_UNORDERED_MAP
+# define BOOST_NO_CXX11_HDR_UNORDERED_SET
+# define BOOST_NO_CXX11_NUMERIC_LIMITS
+# define BOOST_NO_CXX11_ALLOCATOR
+# define BOOST_NO_CXX11_POINTER_TRAITS
+# define BOOST_NO_CXX11_ATOMIC_SMART_PTR
+# define BOOST_NO_CXX11_SMART_PTR
+# define BOOST_NO_CXX11_HDR_FUNCTIONAL
+# define BOOST_NO_CXX11_HDR_ATOMIC
+# define BOOST_NO_CXX11_STD_ALIGN
+# define BOOST_NO_CXX11_ADDRESSOF
+
+#if defined(__has_include)
+#if !__has_include(<shared_mutex>)
+# define BOOST_NO_CXX14_HDR_SHARED_MUTEX
+#elif __cplusplus < 201402
+# define BOOST_NO_CXX14_HDR_SHARED_MUTEX
+#endif
+#else
+# define BOOST_NO_CXX14_HDR_SHARED_MUTEX
+#endif
+
+// C++14 features
+# define BOOST_NO_CXX14_STD_EXCHANGE
+
+// C++17 features
+# define BOOST_NO_CXX17_STD_APPLY
+# define BOOST_NO_CXX17_STD_INVOKE
+# define BOOST_NO_CXX17_ITERATOR_TRAITS
+
+#define BOOST_STDLIB "STLPort standard library version " BOOST_STRINGIZE(__SGI_STL_PORT)
diff --git a/include/boost/config/stdlib/vacpp.hpp b/include/boost/config/stdlib/vacpp.hpp
new file mode 100644
index 0000000..c4e1fb1
--- /dev/null
+++ b/include/boost/config/stdlib/vacpp.hpp
@@ -0,0 +1,73 @@
+// (C) Copyright John Maddock 2001 - 2002.
+// 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 for most recent version.
+
+#if __IBMCPP__ <= 501
+# define BOOST_NO_STD_ALLOCATOR
+#endif
+
+#define BOOST_HAS_MACRO_USE_FACET
+#define BOOST_NO_STD_MESSAGES
+
+// Apple doesn't seem to reliably defined a *unix* macro
+#if !defined(CYGWIN) && ( defined(__unix__) \
+ || defined(__unix) \
+ || defined(unix) \
+ || defined(__APPLE__) \
+ || defined(__APPLE) \
+ || defined(APPLE))
+# include <unistd.h>
+#endif
+
+// C++0x headers not yet implemented
+//
+# define BOOST_NO_CXX11_HDR_ARRAY
+# define BOOST_NO_CXX11_HDR_CHRONO
+# define BOOST_NO_CXX11_HDR_CODECVT
+# define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
+# define BOOST_NO_CXX11_HDR_FORWARD_LIST
+# define BOOST_NO_CXX11_HDR_FUTURE
+# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+# define BOOST_NO_CXX11_HDR_MUTEX
+# define BOOST_NO_CXX11_HDR_RANDOM
+# define BOOST_NO_CXX11_HDR_RATIO
+# define BOOST_NO_CXX11_HDR_REGEX
+# define BOOST_NO_CXX11_HDR_SYSTEM_ERROR
+# define BOOST_NO_CXX11_HDR_THREAD
+# define BOOST_NO_CXX11_HDR_TUPLE
+# define BOOST_NO_CXX11_HDR_TYPE_TRAITS
+# define BOOST_NO_CXX11_HDR_TYPEINDEX
+# define BOOST_NO_CXX11_HDR_UNORDERED_MAP
+# define BOOST_NO_CXX11_HDR_UNORDERED_SET
+# define BOOST_NO_CXX11_NUMERIC_LIMITS
+# define BOOST_NO_CXX11_ALLOCATOR
+# define BOOST_NO_CXX11_POINTER_TRAITS
+# define BOOST_NO_CXX11_ATOMIC_SMART_PTR
+# define BOOST_NO_CXX11_SMART_PTR
+# define BOOST_NO_CXX11_HDR_FUNCTIONAL
+# define BOOST_NO_CXX11_HDR_ATOMIC
+# define BOOST_NO_CXX11_STD_ALIGN
+# define BOOST_NO_CXX11_ADDRESSOF
+
+#if defined(__has_include)
+#if !__has_include(<shared_mutex>)
+# define BOOST_NO_CXX14_HDR_SHARED_MUTEX
+#elif __cplusplus < 201402
+# define BOOST_NO_CXX14_HDR_SHARED_MUTEX
+#endif
+#else
+# define BOOST_NO_CXX14_HDR_SHARED_MUTEX
+#endif
+
+// C++14 features
+# define BOOST_NO_CXX14_STD_EXCHANGE
+
+// C++17 features
+# define BOOST_NO_CXX17_STD_APPLY
+# define BOOST_NO_CXX17_STD_INVOKE
+# define BOOST_NO_CXX17_ITERATOR_TRAITS
+
+#define BOOST_STDLIB "Visual Age default standard library"
diff --git a/include/boost/config/stdlib/xlcpp_zos.hpp b/include/boost/config/stdlib/xlcpp_zos.hpp
new file mode 100644
index 0000000..4d5beb1
--- /dev/null
+++ b/include/boost/config/stdlib/xlcpp_zos.hpp
@@ -0,0 +1,60 @@
+// Copyright (c) 2017 Dynatrace
+//
+// Distributed under the Boost Software License, Version 1.0.
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+
+// See http://www.boost.org for most recent version.
+
+// Standard library setup for IBM z/OS XL C/C++ compiler.
+
+// Oldest library version currently supported is 2.1 (V2R1)
+#if __TARGET_LIB__ < 0x42010000
+# error "Library version not supported or configured - please reconfigure"
+#endif
+
+#if __TARGET_LIB__ > 0x42010000
+# if defined(BOOST_ASSERT_CONFIG)
+# error "Unknown library version - please run the configure tests and report the results"
+# endif
+#endif
+
+#define BOOST_STDLIB "IBM z/OS XL C/C++ standard library"
+
+#define BOOST_HAS_MACRO_USE_FACET
+
+#define BOOST_NO_CXX11_HDR_TYPE_TRAITS
+#define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+
+#define BOOST_NO_CXX11_ADDRESSOF
+#define BOOST_NO_CXX11_SMART_PTR
+#define BOOST_NO_CXX11_ATOMIC_SMART_PTR
+#define BOOST_NO_CXX11_NUMERIC_LIMITS
+#define BOOST_NO_CXX11_ALLOCATOR
+#define BOOST_NO_CXX11_POINTER_TRAITS
+#define BOOST_NO_CXX11_HDR_FUNCTIONAL
+#define BOOST_NO_CXX11_HDR_UNORDERED_SET
+#define BOOST_NO_CXX11_HDR_UNORDERED_MAP
+#define BOOST_NO_CXX11_HDR_TYPEINDEX
+#define BOOST_NO_CXX11_HDR_TUPLE
+#define BOOST_NO_CXX11_HDR_THREAD
+#define BOOST_NO_CXX11_HDR_SYSTEM_ERROR
+#define BOOST_NO_CXX11_HDR_REGEX
+#define BOOST_NO_CXX11_HDR_RATIO
+#define BOOST_NO_CXX11_HDR_RANDOM
+#define BOOST_NO_CXX11_HDR_MUTEX
+#define BOOST_NO_CXX11_HDR_FUTURE
+#define BOOST_NO_CXX11_HDR_FORWARD_LIST
+#define BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
+#define BOOST_NO_CXX11_HDR_CODECVT
+#define BOOST_NO_CXX11_HDR_CHRONO
+#define BOOST_NO_CXX11_HDR_ATOMIC
+#define BOOST_NO_CXX11_HDR_ARRAY
+#define BOOST_NO_CXX11_STD_ALIGN
+
+#define BOOST_NO_CXX14_STD_EXCHANGE
+#define BOOST_NO_CXX14_HDR_SHARED_MUTEX
+
+#define BOOST_NO_CXX17_STD_INVOKE
+#define BOOST_NO_CXX17_STD_APPLY
+#define BOOST_NO_CXX17_ITERATOR_TRAITS
diff --git a/include/boost/config/user.hpp b/include/boost/config/user.hpp
new file mode 100644
index 0000000..28e7476
--- /dev/null
+++ b/include/boost/config/user.hpp
@@ -0,0 +1,133 @@
+// boost/config/user.hpp ---------------------------------------------------//
+
+// (C) Copyright John Maddock 2001.
+// 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)
+
+// Do not check in modified versions of this file,
+// This file may be customized by the end user, but not by boost.
+
+//
+// Use this file to define a site and compiler specific
+// configuration policy:
+//
+
+// define this to locate a compiler config file:
+// #define BOOST_COMPILER_CONFIG <myheader>
+
+// define this to locate a stdlib config file:
+// #define BOOST_STDLIB_CONFIG <myheader>
+
+// define this to locate a platform config file:
+// #define BOOST_PLATFORM_CONFIG <myheader>
+
+// define this to disable compiler config,
+// use if your compiler config has nothing to set:
+// #define BOOST_NO_COMPILER_CONFIG
+
+// define this to disable stdlib config,
+// use if your stdlib config has nothing to set:
+// #define BOOST_NO_STDLIB_CONFIG
+
+// define this to disable platform config,
+// use if your platform config has nothing to set:
+// #define BOOST_NO_PLATFORM_CONFIG
+
+// define this to disable all config options,
+// excluding the user config. Use if your
+// setup is fully ISO compliant, and has no
+// useful extensions, or for autoconf generated
+// setups:
+// #define BOOST_NO_CONFIG
+
+// define this to make the config "optimistic"
+// about unknown compiler versions. Normally
+// unknown compiler versions are assumed to have
+// all the defects of the last known version, however
+// setting this flag, causes the config to assume
+// that unknown compiler versions are fully conformant
+// with the standard:
+// #define BOOST_STRICT_CONFIG
+
+// define this to cause the config to halt compilation
+// with an #error if it encounters anything unknown --
+// either an unknown compiler version or an unknown
+// compiler/platform/library:
+// #define BOOST_ASSERT_CONFIG
+
+
+// define if you want to disable threading support, even
+// when available:
+// #define BOOST_DISABLE_THREADS
+
+// define when you want to disable Win32 specific features
+// even when available:
+// #define BOOST_DISABLE_WIN32
+
+// BOOST_DISABLE_ABI_HEADERS: Stops boost headers from including any
+// prefix/suffix headers that normally control things like struct
+// packing and alignment.
+// #define BOOST_DISABLE_ABI_HEADERS
+
+// BOOST_ABI_PREFIX: A prefix header to include in place of whatever
+// boost.config would normally select, any replacement should set up
+// struct packing and alignment options as required.
+// #define BOOST_ABI_PREFIX my-header-name
+
+// BOOST_ABI_SUFFIX: A suffix header to include in place of whatever
+// boost.config would normally select, any replacement should undo
+// the effects of the prefix header.
+// #define BOOST_ABI_SUFFIX my-header-name
+
+// BOOST_ALL_DYN_LINK: Forces all libraries that have separate source,
+// to be linked as dll's rather than static libraries on Microsoft Windows
+// (this macro is used to turn on __declspec(dllimport) modifiers, so that
+// the compiler knows which symbols to look for in a dll rather than in a
+// static library). Note that there may be some libraries that can only
+// be linked in one way (statically or dynamically), in these cases this
+// macro has no effect.
+// #define BOOST_ALL_DYN_LINK
+
+// BOOST_WHATEVER_DYN_LINK: Forces library "whatever" to be linked as a dll
+// rather than a static library on Microsoft Windows: replace the WHATEVER
+// part of the macro name with the name of the library that you want to
+// dynamically link to, for example use BOOST_DATE_TIME_DYN_LINK or
+// BOOST_REGEX_DYN_LINK etc (this macro is used to turn on __declspec(dllimport)
+// modifiers, so that the compiler knows which symbols to look for in a dll
+// rather than in a static library).
+// Note that there may be some libraries that can only
+// be linked in one way (statically or dynamically),
+// in these cases this macro is unsupported.
+// #define BOOST_WHATEVER_DYN_LINK
+
+// BOOST_ALL_NO_LIB: Tells the config system not to automatically select
+// which libraries to link against.
+// Normally if a compiler supports #pragma lib, then the correct library
+// build variant will be automatically selected and linked against,
+// simply by the act of including one of that library's headers.
+// This macro turns that feature off.
+// #define BOOST_ALL_NO_LIB
+
+// BOOST_WHATEVER_NO_LIB: Tells the config system not to automatically
+// select which library to link against for library "whatever",
+// replace WHATEVER in the macro name with the name of the library;
+// for example BOOST_DATE_TIME_NO_LIB or BOOST_REGEX_NO_LIB.
+// Normally if a compiler supports #pragma lib, then the correct library
+// build variant will be automatically selected and linked against, simply
+// by the act of including one of that library's headers. This macro turns
+// that feature off.
+// #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
+
diff --git a/include/boost/config/warning_disable.hpp b/include/boost/config/warning_disable.hpp
new file mode 100644
index 0000000..fea8e82
--- /dev/null
+++ b/include/boost/config/warning_disable.hpp
@@ -0,0 +1,47 @@
+// Copyright John Maddock 2008
+// Use, modification, and distribution is 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)
+//
+// This file exists to turn off some overly-pedantic warning emitted
+// by certain compilers. You should include this header only in:
+//
+// * A test case, before any other headers, or,
+// * A library source file before any other headers.
+//
+// IT SHOULD NOT BE INCLUDED BY ANY BOOST HEADER.
+//
+// YOU SHOULD NOT INCLUDE IT IF YOU CAN REASONABLY FIX THE WARNING.
+//
+// The only warnings disabled here are those that are:
+//
+// * Quite unreasonably pedantic.
+// * Generally only emitted by a single compiler.
+// * Can't easily be fixed: for example if the vendors own std lib
+// code emits these warnings!
+//
+// Note that THIS HEADER MUST NOT INCLUDE ANY OTHER HEADERS:
+// not even std library ones! Doing so may turn the warning
+// off too late to be of any use. For example the VC++ C4996
+// warning can be emitted from <iosfwd> if that header is included
+// before or by this one :-(
+//
+
+#ifndef BOOST_CONFIG_WARNING_DISABLE_HPP
+#define BOOST_CONFIG_WARNING_DISABLE_HPP
+
+#if defined(_MSC_VER) && (_MSC_VER >= 1400)
+ // Error 'function': was declared deprecated
+ // http://msdn2.microsoft.com/en-us/library/ttcz0bys(VS.80).aspx
+ // This error is emitted when you use some perfectly conforming
+ // std lib functions in a perfectly correct way, and also by
+ // some of Microsoft's own std lib code !
+# pragma warning(disable:4996)
+#endif
+#if defined(__INTEL_COMPILER) || defined(__ICL)
+ // As above: gives warning when a "deprecated"
+ // std library function is encountered.
+# pragma warning(disable:1786)
+#endif
+
+#endif // BOOST_CONFIG_WARNING_DISABLE_HPP
diff --git a/include/boost/config/workaround.hpp b/include/boost/config/workaround.hpp
new file mode 100644
index 0000000..fca8f3a
--- /dev/null
+++ b/include/boost/config/workaround.hpp
@@ -0,0 +1,279 @@
+// Copyright David Abrahams 2002.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+#ifndef BOOST_CONFIG_WORKAROUND_HPP
+#define BOOST_CONFIG_WORKAROUND_HPP
+
+// Compiler/library version workaround macro
+//
+// Usage:
+//
+// #if BOOST_WORKAROUND(BOOST_MSVC, < 1300)
+// // workaround for eVC4 and VC6
+// ... // workaround code here
+// #endif
+//
+// When BOOST_STRICT_CONFIG is defined, expands to 0. Otherwise, the
+// first argument must be undefined or expand to a numeric
+// value. The above expands to:
+//
+// (BOOST_MSVC) != 0 && (BOOST_MSVC) < 1300
+//
+// When used for workarounds that apply to the latest known version
+// and all earlier versions of a compiler, the following convention
+// should be observed:
+//
+// #if BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1301))
+//
+// The version number in this case corresponds to the last version in
+// which the workaround was known to have been required. When
+// BOOST_DETECT_OUTDATED_WORKAROUNDS is not the defined, the macro
+// BOOST_TESTED_AT(x) expands to "!= 0", which effectively activates
+// the workaround for any version of the compiler. When
+// BOOST_DETECT_OUTDATED_WORKAROUNDS is defined, a compiler warning or
+// error will be issued if the compiler version exceeds the argument
+// to BOOST_TESTED_AT(). This can be used to locate workarounds which
+// may be obsoleted by newer versions.
+
+#ifndef BOOST_STRICT_CONFIG
+
+#include <boost/config.hpp>
+
+#ifndef __BORLANDC__
+#define __BORLANDC___WORKAROUND_GUARD 1
+#else
+#define __BORLANDC___WORKAROUND_GUARD 0
+#endif
+#ifndef __CODEGEARC__
+#define __CODEGEARC___WORKAROUND_GUARD 1
+#else
+#define __CODEGEARC___WORKAROUND_GUARD 0
+#endif
+#ifndef _MSC_VER
+#define _MSC_VER_WORKAROUND_GUARD 1
+#else
+#define _MSC_VER_WORKAROUND_GUARD 0
+#endif
+#ifndef _MSC_FULL_VER
+#define _MSC_FULL_VER_WORKAROUND_GUARD 1
+#else
+#define _MSC_FULL_VER_WORKAROUND_GUARD 0
+#endif
+#ifndef BOOST_MSVC
+#define BOOST_MSVC_WORKAROUND_GUARD 1
+#else
+#define BOOST_MSVC_WORKAROUND_GUARD 0
+#endif
+#ifndef BOOST_MSVC_FULL_VER
+#define BOOST_MSVC_FULL_VER_WORKAROUND_GUARD 1
+#else
+#define BOOST_MSVC_FULL_VER_WORKAROUND_GUARD 0
+#endif
+#ifndef __GNUC__
+#define __GNUC___WORKAROUND_GUARD 1
+#else
+#define __GNUC___WORKAROUND_GUARD 0
+#endif
+#ifndef __GNUC_MINOR__
+#define __GNUC_MINOR___WORKAROUND_GUARD 1
+#else
+#define __GNUC_MINOR___WORKAROUND_GUARD 0
+#endif
+#ifndef __GNUC_PATCHLEVEL__
+#define __GNUC_PATCHLEVEL___WORKAROUND_GUARD 1
+#else
+#define __GNUC_PATCHLEVEL___WORKAROUND_GUARD 0
+#endif
+#ifndef BOOST_GCC
+#define BOOST_GCC_WORKAROUND_GUARD 1
+#define BOOST_GCC_VERSION_WORKAROUND_GUARD 1
+#else
+#define BOOST_GCC_WORKAROUND_GUARD 0
+#define BOOST_GCC_VERSION_WORKAROUND_GUARD 0
+#endif
+#ifndef BOOST_XLCPP_ZOS
+#define BOOST_XLCPP_ZOS_WORKAROUND_GUARD 1
+#else
+#define BOOST_XLCPP_ZOS_WORKAROUND_GUARD 0
+#endif
+#ifndef __IBMCPP__
+#define __IBMCPP___WORKAROUND_GUARD 1
+#else
+#define __IBMCPP___WORKAROUND_GUARD 0
+#endif
+#ifndef __SUNPRO_CC
+#define __SUNPRO_CC_WORKAROUND_GUARD 1
+#else
+#define __SUNPRO_CC_WORKAROUND_GUARD 0
+#endif
+#ifndef __DECCXX_VER
+#define __DECCXX_VER_WORKAROUND_GUARD 1
+#else
+#define __DECCXX_VER_WORKAROUND_GUARD 0
+#endif
+#ifndef __MWERKS__
+#define __MWERKS___WORKAROUND_GUARD 1
+#else
+#define __MWERKS___WORKAROUND_GUARD 0
+#endif
+#ifndef __EDG__
+#define __EDG___WORKAROUND_GUARD 1
+#else
+#define __EDG___WORKAROUND_GUARD 0
+#endif
+#ifndef __EDG_VERSION__
+#define __EDG_VERSION___WORKAROUND_GUARD 1
+#else
+#define __EDG_VERSION___WORKAROUND_GUARD 0
+#endif
+#ifndef __HP_aCC
+#define __HP_aCC_WORKAROUND_GUARD 1
+#else
+#define __HP_aCC_WORKAROUND_GUARD 0
+#endif
+#ifndef __hpxstd98
+#define __hpxstd98_WORKAROUND_GUARD 1
+#else
+#define __hpxstd98_WORKAROUND_GUARD 0
+#endif
+#ifndef _CRAYC
+#define _CRAYC_WORKAROUND_GUARD 1
+#else
+#define _CRAYC_WORKAROUND_GUARD 0
+#endif
+#ifndef __DMC__
+#define __DMC___WORKAROUND_GUARD 1
+#else
+#define __DMC___WORKAROUND_GUARD 0
+#endif
+#ifndef MPW_CPLUS
+#define MPW_CPLUS_WORKAROUND_GUARD 1
+#else
+#define MPW_CPLUS_WORKAROUND_GUARD 0
+#endif
+#ifndef __COMO__
+#define __COMO___WORKAROUND_GUARD 1
+#else
+#define __COMO___WORKAROUND_GUARD 0
+#endif
+#ifndef __COMO_VERSION__
+#define __COMO_VERSION___WORKAROUND_GUARD 1
+#else
+#define __COMO_VERSION___WORKAROUND_GUARD 0
+#endif
+#ifndef __INTEL_COMPILER
+#define __INTEL_COMPILER_WORKAROUND_GUARD 1
+#else
+#define __INTEL_COMPILER_WORKAROUND_GUARD 0
+#endif
+#ifndef __ICL
+#define __ICL_WORKAROUND_GUARD 1
+#else
+#define __ICL_WORKAROUND_GUARD 0
+#endif
+#ifndef _COMPILER_VERSION
+#define _COMPILER_VERSION_WORKAROUND_GUARD 1
+#else
+#define _COMPILER_VERSION_WORKAROUND_GUARD 0
+#endif
+
+#ifndef _RWSTD_VER
+#define _RWSTD_VER_WORKAROUND_GUARD 1
+#else
+#define _RWSTD_VER_WORKAROUND_GUARD 0
+#endif
+#ifndef BOOST_RWSTD_VER
+#define BOOST_RWSTD_VER_WORKAROUND_GUARD 1
+#else
+#define BOOST_RWSTD_VER_WORKAROUND_GUARD 0
+#endif
+#ifndef __GLIBCPP__
+#define __GLIBCPP___WORKAROUND_GUARD 1
+#else
+#define __GLIBCPP___WORKAROUND_GUARD 0
+#endif
+#ifndef _GLIBCXX_USE_C99_FP_MACROS_DYNAMIC
+#define _GLIBCXX_USE_C99_FP_MACROS_DYNAMIC_WORKAROUND_GUARD 1
+#else
+#define _GLIBCXX_USE_C99_FP_MACROS_DYNAMIC_WORKAROUND_GUARD 0
+#endif
+#ifndef __SGI_STL_PORT
+#define __SGI_STL_PORT_WORKAROUND_GUARD 1
+#else
+#define __SGI_STL_PORT_WORKAROUND_GUARD 0
+#endif
+#ifndef _STLPORT_VERSION
+#define _STLPORT_VERSION_WORKAROUND_GUARD 1
+#else
+#define _STLPORT_VERSION_WORKAROUND_GUARD 0
+#endif
+#ifndef __LIBCOMO_VERSION__
+#define __LIBCOMO_VERSION___WORKAROUND_GUARD 1
+#else
+#define __LIBCOMO_VERSION___WORKAROUND_GUARD 0
+#endif
+#ifndef _CPPLIB_VER
+#define _CPPLIB_VER_WORKAROUND_GUARD 1
+#else
+#define _CPPLIB_VER_WORKAROUND_GUARD 0
+#endif
+
+#ifndef BOOST_INTEL_CXX_VERSION
+#define BOOST_INTEL_CXX_VERSION_WORKAROUND_GUARD 1
+#else
+#define BOOST_INTEL_CXX_VERSION_WORKAROUND_GUARD 0
+#endif
+#ifndef BOOST_INTEL_WIN
+#define BOOST_INTEL_WIN_WORKAROUND_GUARD 1
+#else
+#define BOOST_INTEL_WIN_WORKAROUND_GUARD 0
+#endif
+#ifndef BOOST_DINKUMWARE_STDLIB
+#define BOOST_DINKUMWARE_STDLIB_WORKAROUND_GUARD 1
+#else
+#define BOOST_DINKUMWARE_STDLIB_WORKAROUND_GUARD 0
+#endif
+#ifndef BOOST_INTEL
+#define BOOST_INTEL_WORKAROUND_GUARD 1
+#else
+#define BOOST_INTEL_WORKAROUND_GUARD 0
+#endif
+// Always define to zero, if it's used it'll be defined my MPL:
+#define BOOST_MPL_CFG_GCC_WORKAROUND_GUARD 0
+
+#define BOOST_WORKAROUND(symbol, test) \
+ ((symbol ## _WORKAROUND_GUARD + 0 == 0) && \
+ (symbol != 0) && (1 % (( (symbol test) ) + 1)))
+// ^ ^ ^ ^
+// The extra level of parenthesis nesting above, along with the
+// BOOST_OPEN_PAREN indirection below, is required to satisfy the
+// broken preprocessor in MWCW 8.3 and earlier.
+//
+// The basic mechanism works as follows:
+// (symbol test) + 1 => if (symbol test) then 2 else 1
+// 1 % ((symbol test) + 1) => if (symbol test) then 1 else 0
+//
+// The complication with % is for cooperation with BOOST_TESTED_AT().
+// When "test" is BOOST_TESTED_AT(x) and
+// BOOST_DETECT_OUTDATED_WORKAROUNDS is #defined,
+//
+// symbol test => if (symbol <= x) then 1 else -1
+// (symbol test) + 1 => if (symbol <= x) then 2 else 0
+// 1 % ((symbol test) + 1) => if (symbol <= x) then 1 else divide-by-zero
+//
+
+#ifdef BOOST_DETECT_OUTDATED_WORKAROUNDS
+# define BOOST_OPEN_PAREN (
+# define BOOST_TESTED_AT(value) > value) ?(-1): BOOST_OPEN_PAREN 1
+#else
+# define BOOST_TESTED_AT(value) != ((value)-(value))
+#endif
+
+#else
+
+#define BOOST_WORKAROUND(symbol, test) 0
+
+#endif
+
+#endif // BOOST_CONFIG_WORKAROUND_HPP
diff --git a/include/boost/cstdint.hpp b/include/boost/cstdint.hpp
new file mode 100644
index 0000000..c8474c4
--- /dev/null
+++ b/include/boost/cstdint.hpp
@@ -0,0 +1,556 @@
+// boost cstdint.hpp header file ------------------------------------------//
+
+// (C) Copyright Beman Dawes 1999.
+// (C) Copyright Jens Mauer 2001
+// (C) Copyright John Maddock 2001
+// Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/libs/integer for documentation.
+
+// Revision History
+// 31 Oct 01 use BOOST_HAS_LONG_LONG to check for "long long" (Jens M.)
+// 16 Apr 01 check LONGLONG_MAX when looking for "long long" (Jens Maurer)
+// 23 Jan 01 prefer "long" over "int" for int32_t and intmax_t (Jens Maurer)
+// 12 Nov 00 Merged <boost/stdint.h> (Jens Maurer)
+// 23 Sep 00 Added INTXX_C macro support (John Maddock).
+// 22 Sep 00 Better 64-bit support (John Maddock)
+// 29 Jun 00 Reimplement to avoid including stdint.h within namespace boost
+// 8 Aug 99 Initial version (Beman Dawes)
+
+
+#ifndef BOOST_CSTDINT_HPP
+#define BOOST_CSTDINT_HPP
+
+//
+// Since we always define the INT#_C macros as per C++0x,
+// define __STDC_CONSTANT_MACROS so that <stdint.h> does the right
+// thing if possible, and so that the user knows that the macros
+// are actually defined as per C99.
+//
+#ifndef __STDC_CONSTANT_MACROS
+# define __STDC_CONSTANT_MACROS
+#endif
+
+#include <boost/config.hpp>
+//
+// For the following code we get several warnings along the lines of:
+//
+// boost/cstdint.hpp:428:35: error: use of C99 long long integer constant
+//
+// So we declare this a system header to suppress these warnings.
+// See also https://github.com/boostorg/config/issues/190
+//
+#if defined(__GNUC__) && (__GNUC__ >= 4)
+#pragma GCC system_header
+#endif
+
+//
+// Note that GLIBC is a bit inconsistent about whether int64_t is defined or not
+// depending upon what headers happen to have been included first...
+// so we disable use of stdint.h when GLIBC does not define __GLIBC_HAVE_LONG_LONG.
+// See https://svn.boost.org/trac/boost/ticket/3548 and http://sources.redhat.com/bugzilla/show_bug.cgi?id=10990
+//
+#if defined(BOOST_HAS_STDINT_H) \
+ && (!defined(__GLIBC__) \
+ || defined(__GLIBC_HAVE_LONG_LONG) \
+ || (defined(__GLIBC__) && ((__GLIBC__ > 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR__ >= 17)))))
+
+// The following #include is an implementation artifact; not part of interface.
+# ifdef __hpux
+// HP-UX has a vaguely nice <stdint.h> in a non-standard location
+# include <inttypes.h>
+# ifdef __STDC_32_MODE__
+ // this is triggered with GCC, because it defines __cplusplus < 199707L
+# define BOOST_NO_INT64_T
+# endif
+# elif defined(__FreeBSD__) || defined(__IBMCPP__) || defined(_AIX)
+# include <inttypes.h>
+# else
+# include <stdint.h>
+
+// There is a bug in Cygwin two _C macros
+# if defined(INTMAX_C) && defined(__CYGWIN__)
+# undef INTMAX_C
+# undef UINTMAX_C
+# define INTMAX_C(c) c##LL
+# define UINTMAX_C(c) c##ULL
+# endif
+
+# endif
+
+#if defined(__QNX__) && defined(__EXT_QNX)
+
+// QNX (Dinkumware stdlib) defines these as non-standard names.
+// Reflect to the standard names.
+
+typedef ::intleast8_t int_least8_t;
+typedef ::intfast8_t int_fast8_t;
+typedef ::uintleast8_t uint_least8_t;
+typedef ::uintfast8_t uint_fast8_t;
+
+typedef ::intleast16_t int_least16_t;
+typedef ::intfast16_t int_fast16_t;
+typedef ::uintleast16_t uint_least16_t;
+typedef ::uintfast16_t uint_fast16_t;
+
+typedef ::intleast32_t int_least32_t;
+typedef ::intfast32_t int_fast32_t;
+typedef ::uintleast32_t uint_least32_t;
+typedef ::uintfast32_t uint_fast32_t;
+
+# ifndef BOOST_NO_INT64_T
+
+typedef ::intleast64_t int_least64_t;
+typedef ::intfast64_t int_fast64_t;
+typedef ::uintleast64_t uint_least64_t;
+typedef ::uintfast64_t uint_fast64_t;
+
+# endif
+
+#endif
+
+namespace boost
+{
+
+ using ::int8_t;
+ using ::int_least8_t;
+ using ::int_fast8_t;
+ using ::uint8_t;
+ using ::uint_least8_t;
+ using ::uint_fast8_t;
+
+ using ::int16_t;
+ using ::int_least16_t;
+ using ::int_fast16_t;
+ using ::uint16_t;
+ using ::uint_least16_t;
+ using ::uint_fast16_t;
+
+ using ::int32_t;
+ using ::int_least32_t;
+ using ::int_fast32_t;
+ using ::uint32_t;
+ using ::uint_least32_t;
+ using ::uint_fast32_t;
+
+# ifndef BOOST_NO_INT64_T
+
+ using ::int64_t;
+ using ::int_least64_t;
+ using ::int_fast64_t;
+ using ::uint64_t;
+ using ::uint_least64_t;
+ using ::uint_fast64_t;
+
+# endif
+
+ using ::intmax_t;
+ using ::uintmax_t;
+
+} // namespace boost
+
+#elif defined(__FreeBSD__) && (__FreeBSD__ <= 4) || defined(__osf__) || defined(__VMS) || defined(__SOLARIS9__) || defined(__NetBSD__)
+// FreeBSD and Tru64 have an <inttypes.h> that contains much of what we need.
+# include <inttypes.h>
+
+namespace boost {
+
+ using ::int8_t;
+ typedef int8_t int_least8_t;
+ typedef int8_t int_fast8_t;
+ using ::uint8_t;
+ typedef uint8_t uint_least8_t;
+ typedef uint8_t uint_fast8_t;
+
+ using ::int16_t;
+ typedef int16_t int_least16_t;
+ typedef int16_t int_fast16_t;
+ using ::uint16_t;
+ typedef uint16_t uint_least16_t;
+ typedef uint16_t uint_fast16_t;
+
+ using ::int32_t;
+ typedef int32_t int_least32_t;
+ typedef int32_t int_fast32_t;
+ using ::uint32_t;
+ typedef uint32_t uint_least32_t;
+ typedef uint32_t uint_fast32_t;
+
+# ifndef BOOST_NO_INT64_T
+
+ using ::int64_t;
+ typedef int64_t int_least64_t;
+ typedef int64_t int_fast64_t;
+ using ::uint64_t;
+ typedef uint64_t uint_least64_t;
+ typedef uint64_t uint_fast64_t;
+
+ typedef int64_t intmax_t;
+ typedef uint64_t uintmax_t;
+
+# else
+
+ typedef int32_t intmax_t;
+ typedef uint32_t uintmax_t;
+
+# endif
+
+} // namespace boost
+
+#else // BOOST_HAS_STDINT_H
+
+# include <boost/limits.hpp> // implementation artifact; not part of interface
+# include <limits.h> // needed for limits macros
+
+
+namespace boost
+{
+
+// These are fairly safe guesses for some 16-bit, and most 32-bit and 64-bit
+// platforms. For other systems, they will have to be hand tailored.
+//
+// Because the fast types are assumed to be the same as the undecorated types,
+// it may be possible to hand tailor a more efficient implementation. Such
+// an optimization may be illusionary; on the Intel x86-family 386 on, for
+// example, byte arithmetic and load/stores are as fast as "int" sized ones.
+
+// 8-bit types ------------------------------------------------------------//
+
+# if UCHAR_MAX == 0xff
+ typedef signed char int8_t;
+ typedef signed char int_least8_t;
+ typedef signed char int_fast8_t;
+ typedef unsigned char uint8_t;
+ typedef unsigned char uint_least8_t;
+ typedef unsigned char uint_fast8_t;
+# else
+# error defaults not correct; you must hand modify boost/cstdint.hpp
+# endif
+
+// 16-bit types -----------------------------------------------------------//
+
+# if USHRT_MAX == 0xffff
+# if defined(__crayx1)
+ // The Cray X1 has a 16-bit short, however it is not recommend
+ // for use in performance critical code.
+ typedef short int16_t;
+ typedef short int_least16_t;
+ typedef int int_fast16_t;
+ typedef unsigned short uint16_t;
+ typedef unsigned short uint_least16_t;
+ typedef unsigned int uint_fast16_t;
+# else
+ typedef short int16_t;
+ typedef short int_least16_t;
+ typedef short int_fast16_t;
+ typedef unsigned short uint16_t;
+ typedef unsigned short uint_least16_t;
+ typedef unsigned short uint_fast16_t;
+# endif
+# elif (USHRT_MAX == 0xffffffff) && defined(__MTA__)
+ // On MTA / XMT short is 32 bits unless the -short16 compiler flag is specified
+ // MTA / XMT does support the following non-standard integer types
+ typedef __short16 int16_t;
+ typedef __short16 int_least16_t;
+ typedef __short16 int_fast16_t;
+ typedef unsigned __short16 uint16_t;
+ typedef unsigned __short16 uint_least16_t;
+ typedef unsigned __short16 uint_fast16_t;
+# elif (USHRT_MAX == 0xffffffff) && defined(CRAY)
+ // no 16-bit types on Cray:
+ typedef short int_least16_t;
+ typedef short int_fast16_t;
+ typedef unsigned short uint_least16_t;
+ typedef unsigned short uint_fast16_t;
+# else
+# error defaults not correct; you must hand modify boost/cstdint.hpp
+# endif
+
+// 32-bit types -----------------------------------------------------------//
+
+# if UINT_MAX == 0xffffffff
+ typedef int int32_t;
+ typedef int int_least32_t;
+ typedef int int_fast32_t;
+ typedef unsigned int uint32_t;
+ typedef unsigned int uint_least32_t;
+ typedef unsigned int uint_fast32_t;
+# elif (USHRT_MAX == 0xffffffff)
+ typedef short int32_t;
+ typedef short int_least32_t;
+ typedef short int_fast32_t;
+ typedef unsigned short uint32_t;
+ typedef unsigned short uint_least32_t;
+ typedef unsigned short uint_fast32_t;
+# elif ULONG_MAX == 0xffffffff
+ typedef long int32_t;
+ typedef long int_least32_t;
+ typedef long int_fast32_t;
+ typedef unsigned long uint32_t;
+ typedef unsigned long uint_least32_t;
+ typedef unsigned long uint_fast32_t;
+# elif (UINT_MAX == 0xffffffffffffffff) && defined(__MTA__)
+ // Integers are 64 bits on the MTA / XMT
+ typedef __int32 int32_t;
+ typedef __int32 int_least32_t;
+ typedef __int32 int_fast32_t;
+ typedef unsigned __int32 uint32_t;
+ typedef unsigned __int32 uint_least32_t;
+ typedef unsigned __int32 uint_fast32_t;
+# else
+# error defaults not correct; you must hand modify boost/cstdint.hpp
+# endif
+
+// 64-bit types + intmax_t and uintmax_t ----------------------------------//
+
+# if defined(BOOST_HAS_LONG_LONG) && \
+ !defined(BOOST_MSVC) && !defined(__BORLANDC__) && \
+ (!defined(__GLIBCPP__) || defined(_GLIBCPP_USE_LONG_LONG)) && \
+ (defined(ULLONG_MAX) || defined(ULONG_LONG_MAX) || defined(ULONGLONG_MAX))
+# if defined(__hpux)
+ // HP-UX's value of ULONG_LONG_MAX is unusable in preprocessor expressions
+# elif (defined(ULLONG_MAX) && ULLONG_MAX == 18446744073709551615ULL) || (defined(ULONG_LONG_MAX) && ULONG_LONG_MAX == 18446744073709551615ULL) || (defined(ULONGLONG_MAX) && ULONGLONG_MAX == 18446744073709551615ULL)
+ // 2**64 - 1
+# else
+# error defaults not correct; you must hand modify boost/cstdint.hpp
+# endif
+
+ typedef ::boost::long_long_type intmax_t;
+ typedef ::boost::ulong_long_type uintmax_t;
+ typedef ::boost::long_long_type int64_t;
+ typedef ::boost::long_long_type int_least64_t;
+ typedef ::boost::long_long_type int_fast64_t;
+ typedef ::boost::ulong_long_type uint64_t;
+ typedef ::boost::ulong_long_type uint_least64_t;
+ typedef ::boost::ulong_long_type uint_fast64_t;
+
+# elif ULONG_MAX != 0xffffffff
+
+# if ULONG_MAX == 18446744073709551615 // 2**64 - 1
+ typedef long intmax_t;
+ typedef unsigned long uintmax_t;
+ typedef long int64_t;
+ typedef long int_least64_t;
+ typedef long int_fast64_t;
+ typedef unsigned long uint64_t;
+ typedef unsigned long uint_least64_t;
+ typedef unsigned long uint_fast64_t;
+# else
+# error defaults not correct; you must hand modify boost/cstdint.hpp
+# endif
+# elif defined(__GNUC__) && defined(BOOST_HAS_LONG_LONG)
+ __extension__ typedef long long intmax_t;
+ __extension__ typedef unsigned long long uintmax_t;
+ __extension__ typedef long long int64_t;
+ __extension__ typedef long long int_least64_t;
+ __extension__ typedef long long int_fast64_t;
+ __extension__ typedef unsigned long long uint64_t;
+ __extension__ typedef unsigned long long uint_least64_t;
+ __extension__ typedef unsigned long long uint_fast64_t;
+# elif defined(BOOST_HAS_MS_INT64)
+ //
+ // we have Borland/Intel/Microsoft __int64:
+ //
+ typedef __int64 intmax_t;
+ typedef unsigned __int64 uintmax_t;
+ typedef __int64 int64_t;
+ typedef __int64 int_least64_t;
+ typedef __int64 int_fast64_t;
+ typedef unsigned __int64 uint64_t;
+ typedef unsigned __int64 uint_least64_t;
+ typedef unsigned __int64 uint_fast64_t;
+# else // assume no 64-bit integers
+# define BOOST_NO_INT64_T
+ typedef int32_t intmax_t;
+ typedef uint32_t uintmax_t;
+# endif
+
+} // namespace boost
+
+
+#endif // BOOST_HAS_STDINT_H
+
+// intptr_t/uintptr_t are defined separately because they are optional and not universally available
+#if defined(BOOST_WINDOWS) && !defined(_WIN32_WCE) && !defined(BOOST_HAS_STDINT_H)
+// Older MSVC don't have stdint.h and have intptr_t/uintptr_t defined in stddef.h
+#include <stddef.h>
+#endif
+
+#if (defined(BOOST_WINDOWS) && !defined(_WIN32_WCE)) \
+ || (defined(_XOPEN_UNIX) && (_XOPEN_UNIX+0 > 0) && !defined(__UCLIBC__)) \
+ || defined(__CYGWIN__) || defined(__VXWORKS__) \
+ || defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__) \
+ || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) || (defined(sun) && !defined(BOOST_HAS_STDINT_H)) || defined(INTPTR_MAX)
+
+namespace boost {
+ using ::intptr_t;
+ using ::uintptr_t;
+}
+#define BOOST_HAS_INTPTR_T
+
+// Clang pretends to be GCC, so it'll match this condition
+#elif defined(__GNUC__) && defined(__INTPTR_TYPE__) && defined(__UINTPTR_TYPE__)
+
+namespace boost {
+ typedef __INTPTR_TYPE__ intptr_t;
+ typedef __UINTPTR_TYPE__ uintptr_t;
+}
+#define BOOST_HAS_INTPTR_T
+
+#endif
+
+#endif // BOOST_CSTDINT_HPP
+
+
+/****************************************************
+
+Macro definition section:
+
+Added 23rd September 2000 (John Maddock).
+Modified 11th September 2001 to be excluded when
+BOOST_HAS_STDINT_H is defined (John Maddock).
+Modified 11th Dec 2009 to always define the
+INT#_C macros if they're not already defined (John Maddock).
+
+******************************************************/
+
+#if !defined(BOOST__STDC_CONSTANT_MACROS_DEFINED) && \
+ (!defined(INT8_C) || !defined(INT16_C) || !defined(INT32_C) || !defined(INT64_C))
+//
+// Undef the macros as a precaution, since we may get here if <stdint.h> has failed
+// to define them all, see https://svn.boost.org/trac/boost/ticket/12786
+//
+#undef INT8_C
+#undef INT16_C
+#undef INT32_C
+#undef INT64_C
+#undef INTMAX_C
+#undef UINT8_C
+#undef UINT16_C
+#undef UINT32_C
+#undef UINT64_C
+#undef UINTMAX_C
+
+#include <limits.h>
+# define BOOST__STDC_CONSTANT_MACROS_DEFINED
+# if defined(BOOST_HAS_MS_INT64)
+//
+// Borland/Intel/Microsoft compilers have width specific suffixes:
+//
+#ifndef INT8_C
+# define INT8_C(value) value##i8
+#endif
+#ifndef INT16_C
+# define INT16_C(value) value##i16
+#endif
+#ifndef INT32_C
+# define INT32_C(value) value##i32
+#endif
+#ifndef INT64_C
+# define INT64_C(value) value##i64
+#endif
+# ifdef __BORLANDC__
+ // Borland bug: appending ui8 makes the type a signed char
+# define UINT8_C(value) static_cast<unsigned char>(value##u)
+# else
+# define UINT8_C(value) value##ui8
+# endif
+#ifndef UINT16_C
+# define UINT16_C(value) value##ui16
+#endif
+#ifndef UINT32_C
+# define UINT32_C(value) value##ui32
+#endif
+#ifndef UINT64_C
+# define UINT64_C(value) value##ui64
+#endif
+#ifndef INTMAX_C
+# define INTMAX_C(value) value##i64
+# define UINTMAX_C(value) value##ui64
+#endif
+
+# else
+// do it the old fashioned way:
+
+// 8-bit types ------------------------------------------------------------//
+
+# if (UCHAR_MAX == 0xff) && !defined(INT8_C)
+# define INT8_C(value) static_cast<boost::int8_t>(value)
+# define UINT8_C(value) static_cast<boost::uint8_t>(value##u)
+# endif
+
+// 16-bit types -----------------------------------------------------------//
+
+# if (USHRT_MAX == 0xffff) && !defined(INT16_C)
+# define INT16_C(value) static_cast<boost::int16_t>(value)
+# define UINT16_C(value) static_cast<boost::uint16_t>(value##u)
+# endif
+
+// 32-bit types -----------------------------------------------------------//
+#ifndef INT32_C
+# if (UINT_MAX == 0xffffffff)
+# define INT32_C(value) value
+# define UINT32_C(value) value##u
+# elif ULONG_MAX == 0xffffffff
+# define INT32_C(value) value##L
+# define UINT32_C(value) value##uL
+# endif
+#endif
+
+// 64-bit types + intmax_t and uintmax_t ----------------------------------//
+#ifndef INT64_C
+# if defined(BOOST_HAS_LONG_LONG) && \
+ (defined(ULLONG_MAX) || defined(ULONG_LONG_MAX) || defined(ULONGLONG_MAX) || defined(_ULLONG_MAX) || defined(_LLONG_MAX))
+
+# if defined(__hpux)
+ // HP-UX's value of ULONG_LONG_MAX is unusable in preprocessor expressions
+# define INT64_C(value) value##LL
+# define UINT64_C(value) value##uLL
+# elif (defined(ULLONG_MAX) && ULLONG_MAX == 18446744073709551615ULL) || \
+ (defined(ULONG_LONG_MAX) && ULONG_LONG_MAX == 18446744073709551615ULL) || \
+ (defined(ULONGLONG_MAX) && ULONGLONG_MAX == 18446744073709551615ULL) || \
+ (defined(_ULLONG_MAX) && _ULLONG_MAX == 18446744073709551615ULL) || \
+ (defined(_LLONG_MAX) && _LLONG_MAX == 9223372036854775807LL)
+
+# define INT64_C(value) value##LL
+# define UINT64_C(value) value##uLL
+# else
+# error defaults not correct; you must hand modify boost/cstdint.hpp
+# endif
+# elif ULONG_MAX != 0xffffffff
+
+# if ULONG_MAX == 18446744073709551615U // 2**64 - 1
+# define INT64_C(value) value##L
+# define UINT64_C(value) value##uL
+# else
+# error defaults not correct; you must hand modify boost/cstdint.hpp
+# endif
+# elif defined(BOOST_HAS_LONG_LONG)
+ // Usual macros not defined, work things out for ourselves:
+# if(~0uLL == 18446744073709551615ULL)
+# define INT64_C(value) value##LL
+# define UINT64_C(value) value##uLL
+# else
+# error defaults not correct; you must hand modify boost/cstdint.hpp
+# endif
+# else
+# error defaults not correct; you must hand modify boost/cstdint.hpp
+# endif
+
+# ifdef BOOST_NO_INT64_T
+# define INTMAX_C(value) INT32_C(value)
+# define UINTMAX_C(value) UINT32_C(value)
+# else
+# define INTMAX_C(value) INT64_C(value)
+# define UINTMAX_C(value) UINT64_C(value)
+# endif
+#endif
+# endif // Borland/Microsoft specific width suffixes
+
+#endif // INT#_C macros.
+
+
+
+
diff --git a/include/boost/cxx11_char_types.hpp b/include/boost/cxx11_char_types.hpp
new file mode 100644
index 0000000..71b9b70
--- /dev/null
+++ b/include/boost/cxx11_char_types.hpp
@@ -0,0 +1,70 @@
+// boost cxx11_char_types.hpp --------------------------------------------------------//
+
+// Copyright Beman Dawes 2011
+
+// Distributed under the Boost Software License, Version 1.0.
+// See http://www.boost.org/LICENSE_1_0.txt
+
+//--------------------------------------------------------------------------------------//
+// //
+// The purpose of this header is to emulate the C++11 char16_t and char32_t //
+// character and string types so that they can be used in both C++11 and C++03 //
+// programs. //
+// //
+// The emulation names use char16/char32 rather than char16_t/char32_t to avoid use //
+// of names that are keywords in C++11. //
+// //
+// The emulation names are placed in namespace boost, as is usual for Boost C++11 //
+// emulation names such as those in header <boost/cstdint.hpp>. //
+// //
+// An alternative would would have been to place the C++11 emulation names at global //
+// scope, and put the C++11 string types in namespace std. That is the approach taken //
+// by Microsoft Visual Studio 2010, but is controversion with some Boost users and //
+// developers, and runs counter to usual Boost practice. //
+// //
+// Thanks to Mathias Gaunard and others for discussions leading to the final form //
+// of these typedefs. //
+// //
+// Boost C++11 C++03 //
+// ---------------- -------------- -------------------------------- //
+// boost::char16 char16_t uint16_t //
+// boost::char32 char32_t uint32_t //
+// boost::u16string std::u16string std::basic_string<boost::char16> //
+// boost::u32string std::u32string std::basic_string<boost::char32> //
+// //
+// Uses the typedefs provided by Microsoft Visual C++ 2010 if present //
+// //
+// Thanks to Mathias Gaunard and others for discussions leading to the final form //
+// of these typedefs. //
+// //
+//--------------------------------------------------------------------------------------//
+
+#if !defined(BOOST_CXX11_CHAR_TYPES_HPP)
+# define BOOST_CXX11_CHAR_TYPES_HPP
+
+# include <boost/config.hpp>
+# include <boost/cstdint.hpp>
+# include <string>
+
+namespace boost
+{
+
+# if defined(BOOST_NO_CXX11_CHAR16_T) && (!defined(_MSC_VER) || _MSC_VER < 1600) // 1600 == VC++10
+ typedef boost::uint_least16_t char16;
+ typedef std::basic_string<boost::char16> u16string;
+# else
+ typedef char16_t char16;
+ typedef std::u16string u16string;
+# endif
+
+# if defined(BOOST_NO_CXX11_CHAR32_T) && (!defined(_MSC_VER) || _MSC_VER < 1600) // 1600 == VC++10
+ typedef boost::uint_least32_t char32;
+ typedef std::basic_string<boost::char32> u32string;
+# else
+ typedef char32_t char32;
+ typedef std::u32string u32string;
+# endif
+
+} // namespace boost
+
+#endif // !defined(BOOST_CXX11_CHAR_TYPES_HPP)
diff --git a/include/boost/detail/workaround.hpp b/include/boost/detail/workaround.hpp
new file mode 100644
index 0000000..fb96115
--- /dev/null
+++ b/include/boost/detail/workaround.hpp
@@ -0,0 +1,10 @@
+// Copyright David Abrahams 2002.
+// Distributed under the Boost Software License, Version 1.0. (See
+// accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+#ifndef WORKAROUND_DWA2002126_HPP
+#define WORKAROUND_DWA2002126_HPP
+
+#include <boost/config/workaround.hpp>
+
+#endif // WORKAROUND_DWA2002126_HPP
diff --git a/include/boost/limits.hpp b/include/boost/limits.hpp
new file mode 100644
index 0000000..47d8155
--- /dev/null
+++ b/include/boost/limits.hpp
@@ -0,0 +1,146 @@
+
+// (C) Copyright John maddock 1999.
+// (C) David Abrahams 2002. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+// use this header as a workaround for missing <limits>
+
+// See http://www.boost.org/libs/compatibility/index.html for documentation.
+
+#ifndef BOOST_LIMITS
+#define BOOST_LIMITS
+
+#include <boost/config.hpp>
+
+#ifdef BOOST_NO_LIMITS
+# error "There is no std::numeric_limits suppport available."
+#else
+# include <limits>
+#endif
+
+#if (defined(BOOST_HAS_LONG_LONG) && defined(BOOST_NO_LONG_LONG_NUMERIC_LIMITS)) \
+ || (defined(BOOST_HAS_MS_INT64) && defined(BOOST_NO_MS_INT64_NUMERIC_LIMITS))
+// Add missing specializations for numeric_limits:
+#ifdef BOOST_HAS_MS_INT64
+# define BOOST_LLT __int64
+# define BOOST_ULLT unsigned __int64
+#else
+# define BOOST_LLT ::boost::long_long_type
+# define BOOST_ULLT ::boost::ulong_long_type
+#endif
+
+#include <climits> // for CHAR_BIT
+
+namespace std
+{
+ template<>
+ class numeric_limits<BOOST_LLT>
+ {
+ public:
+
+ BOOST_STATIC_CONSTANT(bool, is_specialized = true);
+#ifdef BOOST_HAS_MS_INT64
+ static BOOST_LLT min BOOST_PREVENT_MACRO_SUBSTITUTION (){ return 0x8000000000000000i64; }
+ static BOOST_LLT max BOOST_PREVENT_MACRO_SUBSTITUTION (){ return 0x7FFFFFFFFFFFFFFFi64; }
+#elif defined(LLONG_MAX)
+ static BOOST_LLT min BOOST_PREVENT_MACRO_SUBSTITUTION (){ return LLONG_MIN; }
+ static BOOST_LLT max BOOST_PREVENT_MACRO_SUBSTITUTION (){ return LLONG_MAX; }
+#elif defined(LONGLONG_MAX)
+ static BOOST_LLT min BOOST_PREVENT_MACRO_SUBSTITUTION (){ return LONGLONG_MIN; }
+ static BOOST_LLT max BOOST_PREVENT_MACRO_SUBSTITUTION (){ return LONGLONG_MAX; }
+#else
+ static BOOST_LLT min BOOST_PREVENT_MACRO_SUBSTITUTION (){ return 1LL << (sizeof(BOOST_LLT) * CHAR_BIT - 1); }
+ static BOOST_LLT max BOOST_PREVENT_MACRO_SUBSTITUTION (){ return ~(min)(); }
+#endif
+ BOOST_STATIC_CONSTANT(int, digits = sizeof(BOOST_LLT) * CHAR_BIT -1);
+ BOOST_STATIC_CONSTANT(int, digits10 = (CHAR_BIT * sizeof (BOOST_LLT) - 1) * 301L / 1000);
+ BOOST_STATIC_CONSTANT(bool, is_signed = true);
+ BOOST_STATIC_CONSTANT(bool, is_integer = true);
+ BOOST_STATIC_CONSTANT(bool, is_exact = true);
+ BOOST_STATIC_CONSTANT(int, radix = 2);
+ static BOOST_LLT epsilon() throw() { return 0; };
+ static BOOST_LLT round_error() throw() { return 0; };
+
+ BOOST_STATIC_CONSTANT(int, min_exponent = 0);
+ BOOST_STATIC_CONSTANT(int, min_exponent10 = 0);
+ BOOST_STATIC_CONSTANT(int, max_exponent = 0);
+ BOOST_STATIC_CONSTANT(int, max_exponent10 = 0);
+
+ BOOST_STATIC_CONSTANT(bool, has_infinity = false);
+ BOOST_STATIC_CONSTANT(bool, has_quiet_NaN = false);
+ BOOST_STATIC_CONSTANT(bool, has_signaling_NaN = false);
+ BOOST_STATIC_CONSTANT(bool, has_denorm = false);
+ BOOST_STATIC_CONSTANT(bool, has_denorm_loss = false);
+ static BOOST_LLT infinity() throw() { return 0; };
+ static BOOST_LLT quiet_NaN() throw() { return 0; };
+ static BOOST_LLT signaling_NaN() throw() { return 0; };
+ static BOOST_LLT denorm_min() throw() { return 0; };
+
+ BOOST_STATIC_CONSTANT(bool, is_iec559 = false);
+ BOOST_STATIC_CONSTANT(bool, is_bounded = true);
+ BOOST_STATIC_CONSTANT(bool, is_modulo = true);
+
+ BOOST_STATIC_CONSTANT(bool, traps = false);
+ BOOST_STATIC_CONSTANT(bool, tinyness_before = false);
+ BOOST_STATIC_CONSTANT(float_round_style, round_style = round_toward_zero);
+
+ };
+
+ template<>
+ class numeric_limits<BOOST_ULLT>
+ {
+ public:
+
+ BOOST_STATIC_CONSTANT(bool, is_specialized = true);
+#ifdef BOOST_HAS_MS_INT64
+ static BOOST_ULLT min BOOST_PREVENT_MACRO_SUBSTITUTION (){ return 0ui64; }
+ static BOOST_ULLT max BOOST_PREVENT_MACRO_SUBSTITUTION (){ return 0xFFFFFFFFFFFFFFFFui64; }
+#elif defined(ULLONG_MAX) && defined(ULLONG_MIN)
+ static BOOST_ULLT min BOOST_PREVENT_MACRO_SUBSTITUTION (){ return ULLONG_MIN; }
+ static BOOST_ULLT max BOOST_PREVENT_MACRO_SUBSTITUTION (){ return ULLONG_MAX; }
+#elif defined(ULONGLONG_MAX) && defined(ULONGLONG_MIN)
+ static BOOST_ULLT min BOOST_PREVENT_MACRO_SUBSTITUTION (){ return ULONGLONG_MIN; }
+ static BOOST_ULLT max BOOST_PREVENT_MACRO_SUBSTITUTION (){ return ULONGLONG_MAX; }
+#else
+ static BOOST_ULLT min BOOST_PREVENT_MACRO_SUBSTITUTION (){ return 0uLL; }
+ static BOOST_ULLT max BOOST_PREVENT_MACRO_SUBSTITUTION (){ return ~0uLL; }
+#endif
+ BOOST_STATIC_CONSTANT(int, digits = sizeof(BOOST_LLT) * CHAR_BIT);
+ BOOST_STATIC_CONSTANT(int, digits10 = (CHAR_BIT * sizeof (BOOST_LLT)) * 301L / 1000);
+ BOOST_STATIC_CONSTANT(bool, is_signed = false);
+ BOOST_STATIC_CONSTANT(bool, is_integer = true);
+ BOOST_STATIC_CONSTANT(bool, is_exact = true);
+ BOOST_STATIC_CONSTANT(int, radix = 2);
+ static BOOST_ULLT epsilon() throw() { return 0; };
+ static BOOST_ULLT round_error() throw() { return 0; };
+
+ BOOST_STATIC_CONSTANT(int, min_exponent = 0);
+ BOOST_STATIC_CONSTANT(int, min_exponent10 = 0);
+ BOOST_STATIC_CONSTANT(int, max_exponent = 0);
+ BOOST_STATIC_CONSTANT(int, max_exponent10 = 0);
+
+ BOOST_STATIC_CONSTANT(bool, has_infinity = false);
+ BOOST_STATIC_CONSTANT(bool, has_quiet_NaN = false);
+ BOOST_STATIC_CONSTANT(bool, has_signaling_NaN = false);
+ BOOST_STATIC_CONSTANT(bool, has_denorm = false);
+ BOOST_STATIC_CONSTANT(bool, has_denorm_loss = false);
+ static BOOST_ULLT infinity() throw() { return 0; };
+ static BOOST_ULLT quiet_NaN() throw() { return 0; };
+ static BOOST_ULLT signaling_NaN() throw() { return 0; };
+ static BOOST_ULLT denorm_min() throw() { return 0; };
+
+ BOOST_STATIC_CONSTANT(bool, is_iec559 = false);
+ BOOST_STATIC_CONSTANT(bool, is_bounded = true);
+ BOOST_STATIC_CONSTANT(bool, is_modulo = true);
+
+ BOOST_STATIC_CONSTANT(bool, traps = false);
+ BOOST_STATIC_CONSTANT(bool, tinyness_before = false);
+ BOOST_STATIC_CONSTANT(float_round_style, round_style = round_toward_zero);
+
+ };
+}
+#endif
+
+#endif
+
diff --git a/include/boost/version.hpp b/include/boost/version.hpp
new file mode 100644
index 0000000..967ff28
--- /dev/null
+++ b/include/boost/version.hpp
@@ -0,0 +1,32 @@
+// Boost version.hpp configuration header file ------------------------------//
+
+// (C) Copyright John maddock 1999. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/libs/config for documentation
+
+#ifndef BOOST_VERSION_HPP
+#define BOOST_VERSION_HPP
+
+//
+// Caution: this is the only Boost header that is guaranteed
+// to change with every Boost release. Including this header
+// will cause a recompile every time a new Boost version is
+// used.
+//
+// BOOST_VERSION % 100 is the patch level
+// BOOST_VERSION / 100 % 1000 is the minor version
+// BOOST_VERSION / 100000 is the major version
+
+#define BOOST_VERSION 106800
+
+//
+// BOOST_LIB_VERSION must be defined to be the same as BOOST_VERSION
+// but as a *string* in the form "x_y[_z]" where x is the major version
+// number, y is the minor version number, and z is the patch level if not 0.
+// This is used by <config/auto_link.hpp> to select which library version to link to.
+
+#define BOOST_LIB_VERSION "1_68"
+
+#endif
diff --git a/index.html b/index.html
new file mode 100644
index 0000000..df7430b
--- /dev/null
+++ b/index.html
@@ -0,0 +1,15 @@
+<html>
+ <head>
+ <meta http-equiv="refresh" content="0; URL=doc/html/index.html">
+ </head>
+ <body>
+ <P>
+ Automatic redirection failed, please go to <a href="doc/html/index.html">doc/html/index.html</a>.
+ </P>
+ <P>Copyright John Maddock 2001</P>
+ <P>Distributed under the Boost Software License, Version 1.0. (See accompanying file <A href="../../LICENSE_1_0.txt">
+ LICENSE_1_0.txt</A> or copy at <A href="http://www.boost.org/LICENSE_1_0.txt">www.boost.org/LICENSE_1_0.txt</A>).</P>
+ </body>
+</html>
+
+
diff --git a/meta/libraries.json b/meta/libraries.json
new file mode 100644
index 0000000..2d3fbcc
--- /dev/null
+++ b/meta/libraries.json
@@ -0,0 +1,13 @@
+{
+ "key": "config",
+ "name": "Config",
+ "description": "Helps Boost library developers adapt to compiler idiosyncrasies; not intended for library users.",
+ "documentation": "config.htm",
+ "category": [
+ "workarounds"
+ ],
+ "authors": "",
+ "maintainers": [
+ "John Maddock <john -at- johnmaddock.co.uk>"
+ ]
+}
diff --git a/test/Jamfile.v2 b/test/Jamfile.v2
new file mode 100644
index 0000000..a48ac3f
--- /dev/null
+++ b/test/Jamfile.v2
@@ -0,0 +1,120 @@
+#
+# Copyright John Maddock 2008.
+# 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)
+#
+# If you need to alter build preferences then set them in
+# the template defined in options_v2.jam.
+#
+
+import testing ;
+
+project
+ : requirements
+ <toolset>gcc:<cxxflags>-Wno-deprecated-declarations
+;
+
+
+import modules ;
+import ../checks/config : requires ;
+
+local is_unix = [ modules.peek : UNIX ] ;
+
+lib atomic ;
+lib pthread ;
+lib rt ;
+
+exe has_atomic_lib : config_info.cpp atomic ;
+explicit has_atomic_lib ;
+exe has_pthread_lib : config_info.cpp pthread ;
+explicit has_pthread_lib ;
+exe has_rt_lib : config_info.cpp rt ;
+explicit has_rt_lib ;
+
+test-suite config
+ :
+ [ compile config_test_c.c ]
+ [ run config_test.cpp
+ : #args
+ : #input-files
+ : #requirements
+ <threading>multi
+ [ check-target-builds has_atomic_lib : <source>atomic ]
+ [ check-target-builds has_pthread_lib : <source>pthread ]
+ [ check-target-builds has_rt_lib : <source>rt ]
+ : config_test_threaded
+ ]
+ [ run config_test.cpp
+ : #args
+ : #input-files
+ : #requirements
+ <threading>single <toolset>msvc:<runtime-link>static <toolset>msvc:<link>static
+ [ check-target-builds has_atomic_lib : <source>atomic ]
+ [ check-target-builds has_pthread_lib : <source>pthread ]
+ [ check-target-builds has_rt_lib : <source>rt ]
+ ]
+ [ run config_test.cpp
+ : #args
+ : #input-files
+ : #requirements
+ <rtti>off
+ <toolset>gcc-4.4.7,<cxxstd>0x:<build>no # <memory> does not compile with -fno-rtti
+ [ check-target-builds has_atomic_lib : <source>atomic ]
+ [ check-target-builds has_pthread_lib : <source>pthread ]
+ [ check-target-builds has_rt_lib : <source>rt ]
+ : config_test_no_rtti
+ ]
+ [ run config_test.cpp
+ : #args
+ : #input-files
+ : #requirements
+ <exception-handling>off
+ <target-os>vxworks:<build>no # vx requires complete library rebuild to turn off exceptions
+ [ check-target-builds has_atomic_lib : <source>atomic ]
+ [ check-target-builds has_pthread_lib : <source>pthread ]
+ [ check-target-builds has_rt_lib : <source>rt ]
+ : config_test_no_except
+ ]
+ [ run config_info.cpp : : : <test-info>always_show_run_output <threading>single <toolset>msvc:<runtime-link>static <toolset>msvc:<link>static ]
+ [ run config_info.cpp : : : <test-info>always_show_run_output <threading>multi : config_info_threaded ]
+ [ run config_info.cpp : : : <test-info>always_show_run_output <rtti>off : config_info_no_rtti ]
+ [ run config_info.cpp : : : <test-info>always_show_run_output <exception-handling>off
+ <target-os>vxworks:<build>no
+ : config_info_no_except ]
+ [ run math_info.cpp : : : <test-info>always_show_run_output <toolset>borland:<runtime-link>static <toolset>borland:<link>static ]
+ [ run abi/abi_test.cpp abi/main.cpp ]
+ [ run limits_test.cpp ]
+ [ run link/main.cpp link//link_test
+ : #args
+ : #input-files
+ : #requirements
+ <runtime-link>shared
+ <define>BOOST_DYN_LINK=1
+ <define>BOOST_CONFIG_NO_LIB=1
+ <target-os>vxworks:<link>shared
+ :
+ config_link_test
+ ]
+ [ compile-fail threads/test_thread_fail1.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 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_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 ]
+ [ run config_build_check.cpp : : : [ requires int128 cxx11_constexpr cxx11_user_defined_literals ] ]
+ [ run helper_macros_test.cpp ]
+ [ compile pragma_message_test.cpp ]
+ [ compile header_deprecated_test.cpp ]
+ ;
+
+obj has_clang_implicit_fallthrough : cmd_line_check.cpp :
+ <toolset>clang:<cxxflags>"-std=c++11 -Wimplicit-fallthrough" <warnings-as-errors>on <warnings>all ;
+
+explicit has_clang_implicit_fallthrough ;
+
+exe config_info_travis : config_info.cpp ;
+install config_info_travis_install : config_info_travis : <location>. ;
+explicit config_info_travis_install ;
+explicit config_info_travis ;
diff --git a/test/abi/abi_test.cpp b/test/abi/abi_test.cpp
new file mode 100644
index 0000000..98be1b1
--- /dev/null
+++ b/test/abi/abi_test.cpp
@@ -0,0 +1,27 @@
+// (C) Copyright John Maddock 2003.
+// 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.
+
+
+#include "abi_test.hpp"
+
+
+char abi_test::virtual_one()const
+{
+ return c;
+}
+
+boost::int32_t abi_test::virtual_two()const
+{
+ return i;
+}
+
+abi_test::abi_test()
+{
+ c = 0x12;
+ i = 0x5678;
+}
+
diff --git a/test/abi/abi_test.hpp b/test/abi/abi_test.hpp
new file mode 100644
index 0000000..a2bec78
--- /dev/null
+++ b/test/abi/abi_test.hpp
@@ -0,0 +1,54 @@
+// (C) Copyright John Maddock 2003.
+// 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.
+
+
+#ifndef BOOST_ABI_TEST_HPP
+#define BOOST_ABI_TEST_HPP
+
+#include <boost/config.hpp>
+#include <boost/cstdint.hpp>
+
+#ifdef BOOST_HAS_ABI_HEADERS
+#include BOOST_ABI_PREFIX
+#endif
+
+//
+// the following class is designed to break if the ABI
+// it's compiled with does not match that of the client
+// calling it....
+//
+
+struct empty{};
+
+class abi_test : protected empty
+{
+private:
+ empty e;
+ char c;
+ boost::int32_t i;
+public:
+ inline char inline_one()const
+ { return c; }
+ inline boost::int32_t inline_two()const
+ { return i; }
+
+ virtual char virtual_one()const;
+ virtual boost::int32_t virtual_two()const;
+
+ abi_test();
+};
+
+
+
+#ifdef BOOST_HAS_ABI_HEADERS
+#include BOOST_ABI_SUFFIX
+#endif
+
+#endif // BOOST_ABI_TEST_HPP
+
+
+
diff --git a/test/abi/main.cpp b/test/abi/main.cpp
new file mode 100644
index 0000000..e8f9d13
--- /dev/null
+++ b/test/abi/main.cpp
@@ -0,0 +1,31 @@
+// (C) Copyright John Maddock 2003.
+// 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.
+
+//
+// before we do anything else, we need to mess with the compilers ABI:
+//
+#include <boost/config.hpp>
+#ifdef BOOST_MSVC
+#pragma pack(1)
+#elif defined(__BORLANDC__)
+#pragma option -Ve- -Vx- -a1 -b-
+#endif
+#include <stdio.h>
+#include "abi_test.hpp"
+
+
+int main()
+{
+ abi_test t;
+ if((t.inline_one() != t.virtual_one()) || (t.inline_two() != t.virtual_two()))
+ {
+ fwrite("Failed ABI test", 1, 15, stdout);
+ return -1;
+ }
+ return 0;
+}
+
diff --git a/test/all/Jamfile.v2 b/test/all/Jamfile.v2
new file mode 100644
index 0000000..ae3457c
--- /dev/null
+++ b/test/all/Jamfile.v2
@@ -0,0 +1,607 @@
+#
+# Regression test Jamfile for boost configuration setup.
+# *** DO NOT EDIT THIS FILE BY HAND ***
+# This file was automatically generated on Wed Apr 18 20:03:40 2018
+# by libs/config/tools/generate.cpp
+# Copyright John Maddock.
+# 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)
+#
+# If you need to alter build preferences then set them in
+# the template defined in options_v2.jam.
+#
+path-constant DOT : . ;
+include $(DOT)/options_v2.jam ;
+
+run ../config_info.cpp : : : <threading>single <toolset>msvc:<runtime-link>static <toolset>msvc:<link>static ;
+run ../config_info.cpp : : : <threading>multi : config_info_threaded ;
+run ../math_info.cpp : : : <toolset>borland:<runtime-link>static <toolset>borland:<link>static ;
+run ../config_test.cpp : : : <threading>single <toolset>msvc:<runtime-link>static <toolset>msvc:<link>static ;
+run ../config_test.cpp : : : <threading>multi : config_test_threaded ;
+run ../limits_test.cpp ../../../test/build//boost_test_exec_monitor ;
+run ../abi/abi_test.cpp ../abi/main.cpp ;
+
+test-suite "BOOST_HAS_TWO_ARG_USE_FACET" :
+[ run ../has_2arg_use_facet_pass.cpp ]
+[ compile-fail ../has_2arg_use_facet_fail.cpp ] ;
+test-suite "BOOST_HAS_BETHREADS" :
+[ run ../has_bethreads_pass.cpp ]
+[ compile-fail ../has_bethreads_fail.cpp ] ;
+test-suite "BOOST_HAS_CLOCK_GETTIME" :
+[ run ../has_clock_gettime_pass.cpp ]
+[ compile-fail ../has_clock_gettime_fail.cpp ] ;
+test-suite "BOOST_HAS_PRAGMA_DETECT_MISMATCH" :
+[ run ../has_detect_mismatch_pass.cpp ]
+[ compile-fail ../has_detect_mismatch_fail.cpp ] ;
+test-suite "BOOST_HAS_DIRENT_H" :
+[ run ../has_dirent_h_pass.cpp ]
+[ compile-fail ../has_dirent_h_fail.cpp ] ;
+test-suite "BOOST_HAS_EXPM1" :
+[ run ../has_expm1_pass.cpp ]
+[ compile-fail ../has_expm1_fail.cpp ] ;
+test-suite "BOOST_HAS_FLOAT128" :
+[ run ../has_float128_pass.cpp ]
+[ compile-fail ../has_float128_fail.cpp ] ;
+test-suite "BOOST_HAS_FTIME" :
+[ run ../has_ftime_pass.cpp ]
+[ compile-fail ../has_ftime_fail.cpp ] ;
+test-suite "BOOST_HAS_GETSYSTEMTIMEASFILETIME" :
+[ run ../has_getsystemtimeasfiletime_pass.cpp ]
+[ compile-fail ../has_getsystemtimeasfiletime_fail.cpp ] ;
+test-suite "BOOST_HAS_GETTIMEOFDAY" :
+[ run ../has_gettimeofday_pass.cpp ]
+[ compile-fail ../has_gettimeofday_fail.cpp ] ;
+test-suite "BOOST_HAS_HASH" :
+[ run ../has_hash_pass.cpp ]
+[ compile-fail ../has_hash_fail.cpp ] ;
+test-suite "BOOST_HAS_INT128" :
+[ run ../has_int128_pass.cpp ]
+[ compile-fail ../has_int128_fail.cpp ] ;
+test-suite "BOOST_HAS_LOG1P" :
+[ run ../has_log1p_pass.cpp ]
+[ compile-fail ../has_log1p_fail.cpp ] ;
+test-suite "BOOST_HAS_LONG_LONG" :
+[ run ../has_long_long_pass.cpp ]
+[ compile-fail ../has_long_long_fail.cpp ] ;
+test-suite "BOOST_HAS_MACRO_USE_FACET" :
+[ run ../has_macro_use_facet_pass.cpp ]
+[ compile-fail ../has_macro_use_facet_fail.cpp ] ;
+test-suite "BOOST_HAS_MS_INT64" :
+[ run ../has_ms_int64_pass.cpp ]
+[ compile-fail ../has_ms_int64_fail.cpp ] ;
+test-suite "BOOST_HAS_NANOSLEEP" :
+[ run ../has_nanosleep_pass.cpp ]
+[ compile-fail ../has_nanosleep_fail.cpp ] ;
+test-suite "BOOST_HAS_NL_TYPES_H" :
+[ run ../has_nl_types_h_pass.cpp ]
+[ compile-fail ../has_nl_types_h_fail.cpp ] ;
+test-suite "BOOST_HAS_NRVO" :
+[ run ../has_nrvo_pass.cpp ]
+[ compile-fail ../has_nrvo_fail.cpp ] ;
+test-suite "BOOST_HAS_PARTIAL_STD_ALLOCATOR" :
+[ run ../has_part_alloc_pass.cpp ]
+[ compile-fail ../has_part_alloc_fail.cpp ] ;
+test-suite "BOOST_HAS_PTHREAD_DELAY_NP" :
+[ run ../has_pthread_delay_np_pass.cpp ]
+[ compile-fail ../has_pthread_delay_np_fail.cpp ] ;
+test-suite "BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE" :
+[ run ../has_pthread_ma_st_pass.cpp ]
+[ compile-fail ../has_pthread_ma_st_fail.cpp ] ;
+test-suite "BOOST_HAS_PTHREAD_YIELD" :
+[ run ../has_pthread_yield_pass.cpp ]
+[ compile-fail ../has_pthread_yield_fail.cpp ] ;
+test-suite "BOOST_HAS_PTHREADS" :
+[ run ../has_pthreads_pass.cpp ]
+[ compile-fail ../has_pthreads_fail.cpp ] ;
+test-suite "BOOST_HAS_RVALUE_REFS" :
+[ run ../has_rvalue_refs_pass.cpp ]
+[ compile-fail ../has_rvalue_refs_fail.cpp ] ;
+test-suite "BOOST_HAS_SCHED_YIELD" :
+[ run ../has_sched_yield_pass.cpp ]
+[ compile-fail ../has_sched_yield_fail.cpp ] ;
+test-suite "BOOST_HAS_SGI_TYPE_TRAITS" :
+[ run ../has_sgi_type_traits_pass.cpp ]
+[ compile-fail ../has_sgi_type_traits_fail.cpp ] ;
+test-suite "BOOST_HAS_SIGACTION" :
+[ run ../has_sigaction_pass.cpp ]
+[ compile-fail ../has_sigaction_fail.cpp ] ;
+test-suite "BOOST_HAS_SLIST" :
+[ run ../has_slist_pass.cpp ]
+[ compile-fail ../has_slist_fail.cpp ] ;
+test-suite "BOOST_HAS_STATIC_ASSERT" :
+[ run ../has_static_assert_pass.cpp ]
+[ compile-fail ../has_static_assert_fail.cpp ] ;
+test-suite "BOOST_HAS_STDINT_H" :
+[ run ../has_stdint_h_pass.cpp ]
+[ compile-fail ../has_stdint_h_fail.cpp ] ;
+test-suite "BOOST_HAS_STLP_USE_FACET" :
+[ run ../has_stlp_use_facet_pass.cpp ]
+[ compile-fail ../has_stlp_use_facet_fail.cpp ] ;
+test-suite "BOOST_HAS_UNISTD_H" :
+[ run ../has_unistd_h_pass.cpp ]
+[ compile-fail ../has_unistd_h_fail.cpp ] ;
+test-suite "BOOST_HAS_VARIADIC_TMPL" :
+[ run ../has_variadic_tmpl_pass.cpp ]
+[ compile-fail ../has_variadic_tmpl_fail.cpp ] ;
+test-suite "BOOST_MSVC6_MEMBER_TEMPLATES" :
+[ run ../has_vc6_mem_templ_pass.cpp ]
+[ compile-fail ../has_vc6_mem_templ_fail.cpp ] ;
+test-suite "BOOST_MSVC_STD_ITERATOR" :
+[ run ../has_vc_iterator_pass.cpp ]
+[ compile-fail ../has_vc_iterator_fail.cpp ] ;
+test-suite "BOOST_HAS_WINTHREADS" :
+[ run ../has_winthreads_pass.cpp ]
+[ compile-fail ../has_winthreads_fail.cpp ] ;
+test-suite "BOOST_NO_ADL_BARRIER" :
+[ run ../no_adl_barrier_pass.cpp ]
+[ compile-fail ../no_adl_barrier_fail.cpp ] ;
+test-suite "BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP" :
+[ run ../no_arg_dep_lookup_pass.cpp ]
+[ compile-fail ../no_arg_dep_lookup_fail.cpp ] ;
+test-suite "BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS" :
+[ run ../no_array_type_spec_pass.cpp ]
+[ compile-fail ../no_array_type_spec_fail.cpp ] ;
+test-suite "BOOST_NO_CXX11_AUTO_DECLARATIONS" :
+[ run ../no_auto_declarations_pass.cpp ]
+[ compile-fail ../no_auto_declarations_fail.cpp ] ;
+test-suite "BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS" :
+[ run ../no_auto_multidecl_pass.cpp ]
+[ compile-fail ../no_auto_multidecl_fail.cpp ] ;
+test-suite "BOOST_NO_AUTO_PTR" :
+[ run ../no_auto_ptr_pass.cpp ]
+[ compile-fail ../no_auto_ptr_fail.cpp ] ;
+test-suite "BOOST_BCB_PARTIAL_SPECIALIZATION_BUG" :
+[ run ../no_bcb_partial_spec_pass.cpp ]
+[ compile-fail ../no_bcb_partial_spec_fail.cpp ] ;
+test-suite "BOOST_NO_CXX11_CHAR16_T" :
+[ run ../no_char16_t_pass.cpp ]
+[ compile-fail ../no_char16_t_fail.cpp ] ;
+test-suite "BOOST_NO_CXX11_CHAR32_T" :
+[ run ../no_char32_t_pass.cpp ]
+[ compile-fail ../no_char32_t_fail.cpp ] ;
+test-suite "BOOST_NO_COMPLETE_VALUE_INITIALIZATION" :
+[ run ../no_com_value_init_pass.cpp ]
+[ compile-fail ../no_com_value_init_fail.cpp ] ;
+test-suite "BOOST_NO_CXX11_CONSTEXPR" :
+[ run ../no_constexpr_pass.cpp ]
+[ compile-fail ../no_constexpr_fail.cpp ] ;
+test-suite "BOOST_NO_CTYPE_FUNCTIONS" :
+[ run ../no_ctype_functions_pass.cpp ]
+[ compile-fail ../no_ctype_functions_fail.cpp ] ;
+test-suite "BOOST_NO_CV_SPECIALIZATIONS" :
+[ run ../no_cv_spec_pass.cpp ]
+[ compile-fail ../no_cv_spec_fail.cpp ] ;
+test-suite "BOOST_NO_CV_VOID_SPECIALIZATIONS" :
+[ run ../no_cv_void_spec_pass.cpp ]
+[ compile-fail ../no_cv_void_spec_fail.cpp ] ;
+test-suite "BOOST_NO_CWCHAR" :
+[ run ../no_cwchar_pass.cpp ]
+[ compile-fail ../no_cwchar_fail.cpp ] ;
+test-suite "BOOST_NO_CWCTYPE" :
+[ run ../no_cwctype_pass.cpp ]
+[ compile-fail ../no_cwctype_fail.cpp ] ;
+test-suite "BOOST_NO_CXX11_ADDRESSOF" :
+[ run ../no_cxx11_addressof_pass.cpp ]
+[ compile-fail ../no_cxx11_addressof_fail.cpp ] ;
+test-suite "BOOST_NO_CXX11_ALIGNAS" :
+[ run ../no_cxx11_alignas_pass.cpp ]
+[ compile-fail ../no_cxx11_alignas_fail.cpp ] ;
+test-suite "BOOST_NO_CXX11_ALLOCATOR" :
+[ run ../no_cxx11_allocator_pass.cpp ]
+[ compile-fail ../no_cxx11_allocator_fail.cpp ] ;
+test-suite "BOOST_NO_CXX11_ATOMIC_SMART_PTR" :
+[ run ../no_cxx11_atomic_sp_pass.cpp ]
+[ compile-fail ../no_cxx11_atomic_sp_fail.cpp ] ;
+test-suite "BOOST_NO_CXX11_DEFAULTED_MOVES" :
+[ run ../no_cxx11_defaulted_moves_pass.cpp ]
+[ compile-fail ../no_cxx11_defaulted_moves_fail.cpp ] ;
+test-suite "BOOST_NO_CXX11_FINAL" :
+[ run ../no_cxx11_final_pass.cpp ]
+[ compile-fail ../no_cxx11_final_fail.cpp ] ;
+test-suite "BOOST_NO_CXX11_HDR_ARRAY" :
+[ run ../no_cxx11_hdr_array_pass.cpp ]
+[ compile-fail ../no_cxx11_hdr_array_fail.cpp ] ;
+test-suite "BOOST_NO_CXX11_HDR_ATOMIC" :
+[ run ../no_cxx11_hdr_atomic_pass.cpp ]
+[ compile-fail ../no_cxx11_hdr_atomic_fail.cpp ] ;
+test-suite "BOOST_NO_CXX11_HDR_CHRONO" :
+[ run ../no_cxx11_hdr_chrono_pass.cpp ]
+[ compile-fail ../no_cxx11_hdr_chrono_fail.cpp ] ;
+test-suite "BOOST_NO_CXX11_HDR_CODECVT" :
+[ run ../no_cxx11_hdr_codecvt_pass.cpp ]
+[ compile-fail ../no_cxx11_hdr_codecvt_fail.cpp ] ;
+test-suite "BOOST_NO_CXX11_HDR_CONDITION_VARIABLE" :
+[ run ../no_cxx11_hdr_condition_variable_pass.cpp ]
+[ compile-fail ../no_cxx11_hdr_condition_variable_fail.cpp ] ;
+test-suite "BOOST_NO_CXX11_HDR_FORWARD_LIST" :
+[ run ../no_cxx11_hdr_forward_list_pass.cpp ]
+[ compile-fail ../no_cxx11_hdr_forward_list_fail.cpp ] ;
+test-suite "BOOST_NO_CXX11_HDR_FUTURE" :
+[ run ../no_cxx11_hdr_future_pass.cpp ]
+[ compile-fail ../no_cxx11_hdr_future_fail.cpp ] ;
+test-suite "BOOST_NO_CXX11_HDR_INITIALIZER_LIST" :
+[ run ../no_cxx11_hdr_initializer_list_pass.cpp ]
+[ compile-fail ../no_cxx11_hdr_initializer_list_fail.cpp ] ;
+test-suite "BOOST_NO_CXX11_HDR_MUTEX" :
+[ run ../no_cxx11_hdr_mutex_pass.cpp ]
+[ compile-fail ../no_cxx11_hdr_mutex_fail.cpp ] ;
+test-suite "BOOST_NO_CXX11_HDR_RANDOM" :
+[ run ../no_cxx11_hdr_random_pass.cpp ]
+[ compile-fail ../no_cxx11_hdr_random_fail.cpp ] ;
+test-suite "BOOST_NO_CXX11_HDR_RATIO" :
+[ run ../no_cxx11_hdr_ratio_pass.cpp ]
+[ compile-fail ../no_cxx11_hdr_ratio_fail.cpp ] ;
+test-suite "BOOST_NO_CXX11_HDR_REGEX" :
+[ run ../no_cxx11_hdr_regex_pass.cpp ]
+[ compile-fail ../no_cxx11_hdr_regex_fail.cpp ] ;
+test-suite "BOOST_NO_CXX11_HDR_SYSTEM_ERROR" :
+[ run ../no_cxx11_hdr_system_error_pass.cpp ]
+[ compile-fail ../no_cxx11_hdr_system_error_fail.cpp ] ;
+test-suite "BOOST_NO_CXX11_HDR_THREAD" :
+[ run ../no_cxx11_hdr_thread_pass.cpp ]
+[ compile-fail ../no_cxx11_hdr_thread_fail.cpp ] ;
+test-suite "BOOST_NO_CXX11_HDR_TUPLE" :
+[ run ../no_cxx11_hdr_tuple_pass.cpp ]
+[ compile-fail ../no_cxx11_hdr_tuple_fail.cpp ] ;
+test-suite "BOOST_NO_CXX11_HDR_TYPE_TRAITS" :
+[ run ../no_cxx11_hdr_type_traits_pass.cpp ]
+[ compile-fail ../no_cxx11_hdr_type_traits_fail.cpp ] ;
+test-suite "BOOST_NO_CXX11_HDR_TYPEINDEX" :
+[ run ../no_cxx11_hdr_typeindex_pass.cpp ]
+[ compile-fail ../no_cxx11_hdr_typeindex_fail.cpp ] ;
+test-suite "BOOST_NO_CXX11_HDR_UNORDERED_MAP" :
+[ run ../no_cxx11_hdr_unordered_map_pass.cpp ]
+[ compile-fail ../no_cxx11_hdr_unordered_map_fail.cpp ] ;
+test-suite "BOOST_NO_CXX11_HDR_UNORDERED_SET" :
+[ run ../no_cxx11_hdr_unordered_set_pass.cpp ]
+[ compile-fail ../no_cxx11_hdr_unordered_set_fail.cpp ] ;
+test-suite "BOOST_NO_CXX11_INLINE_NAMESPACES" :
+[ run ../no_cxx11_inline_namespaces_pass.cpp ]
+[ compile-fail ../no_cxx11_inline_namespaces_fail.cpp ] ;
+test-suite "BOOST_NO_CXX11_NON_PUBLIC_DEFAULTED_FUNCTIONS" :
+[ run ../no_cxx11_non_pub_def_fun_pass.cpp ]
+[ compile-fail ../no_cxx11_non_pub_def_fun_fail.cpp ] ;
+test-suite "BOOST_NO_CXX11_NUMERIC_LIMITS" :
+[ run ../no_cxx11_numeric_limits_pass.cpp ]
+[ compile-fail ../no_cxx11_numeric_limits_fail.cpp ] ;
+test-suite "BOOST_NO_CXX11_POINTER_TRAITS" :
+[ run ../no_cxx11_pointer_traits_pass.cpp ]
+[ compile-fail ../no_cxx11_pointer_traits_fail.cpp ] ;
+test-suite "BOOST_NO_CXX11_REF_QUALIFIERS" :
+[ run ../no_cxx11_ref_qualifiers_pass.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" :
+[ run ../no_cxx11_smart_ptr_pass.cpp ]
+[ compile-fail ../no_cxx11_smart_ptr_fail.cpp ] ;
+test-suite "BOOST_NO_CXX11_STD_ALIGN" :
+[ run ../no_cxx11_std_align_pass.cpp ]
+[ compile-fail ../no_cxx11_std_align_fail.cpp ] ;
+test-suite "BOOST_NO_CXX11_THREAD_LOCAL" :
+[ run ../no_cxx11_thread_local_pass.cpp ]
+[ compile-fail ../no_cxx11_thread_local_fail.cpp ] ;
+test-suite "BOOST_NO_CXX11_TRAILING_RESULT_TYPES" :
+[ run ../no_cxx11_trailing_result_types_pass.cpp ]
+[ compile-fail ../no_cxx11_trailing_result_types_fail.cpp ] ;
+test-suite "BOOST_NO_CXX11_USER_DEFINED_LITERALS" :
+[ run ../no_cxx11_user_lit_pass.cpp ]
+[ compile-fail ../no_cxx11_user_lit_fail.cpp ] ;
+test-suite "BOOST_NO_CXX14_BINARY_LITERALS" :
+[ run ../no_cxx14_binary_literals_pass.cpp ]
+[ compile-fail ../no_cxx14_binary_literals_fail.cpp ] ;
+test-suite "BOOST_NO_CXX14_CONSTEXPR" :
+[ run ../no_cxx14_constexpr_pass.cpp ]
+[ compile-fail ../no_cxx14_constexpr_fail.cpp ] ;
+test-suite "BOOST_NO_CXX14_DECLTYPE_AUTO" :
+[ run ../no_cxx14_decltype_auto_pass.cpp ]
+[ compile-fail ../no_cxx14_decltype_auto_fail.cpp ] ;
+test-suite "BOOST_NO_CXX14_DIGIT_SEPARATORS" :
+[ run ../no_cxx14_digit_separator_pass.cpp ]
+[ compile-fail ../no_cxx14_digit_separator_fail.cpp ] ;
+test-suite "BOOST_NO_CXX14_GENERIC_LAMBDAS" :
+[ run ../no_cxx14_generic_lambda_pass.cpp ]
+[ compile-fail ../no_cxx14_generic_lambda_fail.cpp ] ;
+test-suite "BOOST_NO_CXX14_HDR_SHARED_MUTEX" :
+[ run ../no_cxx14_hdr_shared_mutex_pass.cpp ]
+[ compile-fail ../no_cxx14_hdr_shared_mutex_fail.cpp ] ;
+test-suite "BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES" :
+[ run ../no_cxx14_lambda_capture_pass.cpp ]
+[ compile-fail ../no_cxx14_lambda_capture_fail.cpp ] ;
+test-suite "BOOST_NO_CXX14_AGGREGATE_NSDMI" :
+[ run ../no_cxx14_member_init_pass.cpp ]
+[ compile-fail ../no_cxx14_member_init_fail.cpp ] ;
+test-suite "BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION" :
+[ run ../no_cxx14_return_type_ded_pass.cpp ]
+[ compile-fail ../no_cxx14_return_type_ded_fail.cpp ] ;
+test-suite "BOOST_NO_CXX14_STD_EXCHANGE" :
+[ run ../no_cxx14_std_exchange_pass.cpp ]
+[ compile-fail ../no_cxx14_std_exchange_fail.cpp ] ;
+test-suite "BOOST_NO_CXX14_VARIABLE_TEMPLATES" :
+[ run ../no_cxx14_var_templ_pass.cpp ]
+[ compile-fail ../no_cxx14_var_templ_fail.cpp ] ;
+test-suite "BOOST_NO_CXX17_FOLD_EXPRESSIONS" :
+[ run ../no_cxx17_fold_expressions_pass.cpp ]
+[ compile-fail ../no_cxx17_fold_expressions_fail.cpp ] ;
+test-suite "BOOST_NO_CXX17_IF_CONSTEXPR" :
+[ run ../no_cxx17_if_constexpr_pass.cpp ]
+[ compile-fail ../no_cxx17_if_constexpr_fail.cpp ] ;
+test-suite "BOOST_NO_CXX17_INLINE_VARIABLES" :
+[ run ../no_cxx17_inline_variables_pass.cpp ]
+[ compile-fail ../no_cxx17_inline_variables_fail.cpp ] ;
+test-suite "BOOST_NO_CXX17_ITERATOR_TRAITS" :
+[ run ../no_cxx17_iterator_traits_pass.cpp ]
+[ compile-fail ../no_cxx17_iterator_traits_fail.cpp ] ;
+test-suite "BOOST_NO_CXX17_STD_APPLY" :
+[ run ../no_cxx17_std_apply_pass.cpp ]
+[ compile-fail ../no_cxx17_std_apply_fail.cpp ] ;
+test-suite "BOOST_NO_CXX17_STD_INVOKE" :
+[ run ../no_cxx17_std_invoke_pass.cpp ]
+[ compile-fail ../no_cxx17_std_invoke_fail.cpp ] ;
+test-suite "BOOST_NO_CXX17_STRUCTURED_BINDINGS" :
+[ run ../no_cxx17_structured_bindings_pass.cpp ]
+[ compile-fail ../no_cxx17_structured_bindings_fail.cpp ] ;
+test-suite "BOOST_NO_CXX98_BINDERS" :
+[ run ../no_cxx98_binders_pass.cpp ]
+[ compile-fail ../no_cxx98_binders_fail.cpp ] ;
+test-suite "BOOST_NO_CXX98_FUNCTION_BASE" :
+[ run ../no_cxx98_function_base_pass.cpp ]
+[ compile-fail ../no_cxx98_function_base_fail.cpp ] ;
+test-suite "BOOST_NO_CXX98_RANDOM_SHUFFLE" :
+[ run ../no_cxx98_random_shuffle_pass.cpp ]
+[ compile-fail ../no_cxx98_random_shuffle_fail.cpp ] ;
+test-suite "BOOST_NO_CXX11_HDR_FUNCTIONAL" :
+[ run ../no_cxx_hdr_functional_pass.cpp ]
+[ compile-fail ../no_cxx_hdr_functional_fail.cpp ] ;
+test-suite "BOOST_NO_CXX11_DECLTYPE" :
+[ run ../no_decltype_pass.cpp ]
+[ compile-fail ../no_decltype_fail.cpp ] ;
+test-suite "BOOST_NO_CXX11_DECLTYPE_N3276" :
+[ run ../no_decltype_n3276_pass.cpp ]
+[ compile-fail ../no_decltype_n3276_fail.cpp ] ;
+test-suite "BOOST_DEDUCED_TYPENAME" :
+[ run ../no_ded_typename_pass.cpp ]
+[ compile-fail ../no_ded_typename_fail.cpp ] ;
+test-suite "BOOST_NO_CXX11_DEFAULTED_FUNCTIONS" :
+[ run ../no_defaulted_functions_pass.cpp ]
+[ compile-fail ../no_defaulted_functions_fail.cpp ] ;
+test-suite "BOOST_NO_CXX11_DELETED_FUNCTIONS" :
+[ run ../no_deleted_functions_pass.cpp ]
+[ compile-fail ../no_deleted_functions_fail.cpp ] ;
+test-suite "BOOST_NO_DEPENDENT_NESTED_DERIVATIONS" :
+[ run ../no_dep_nested_class_pass.cpp ]
+[ compile-fail ../no_dep_nested_class_fail.cpp ] ;
+test-suite "BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS" :
+[ run ../no_dep_val_param_pass.cpp ]
+[ compile-fail ../no_dep_val_param_fail.cpp ] ;
+test-suite "BOOST_NO_EXCEPTION_STD_NAMESPACE" :
+[ run ../no_excep_std_pass.cpp ]
+[ compile-fail ../no_excep_std_fail.cpp ] ;
+test-suite "BOOST_NO_EXCEPTIONS" :
+[ run ../no_exceptions_pass.cpp ]
+[ compile-fail ../no_exceptions_fail.cpp ] ;
+test-suite "BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS" :
+[ run ../no_exp_func_tem_arg_pass.cpp ]
+[ compile-fail ../no_exp_func_tem_arg_fail.cpp ] ;
+test-suite "BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS" :
+[ run ../no_explicit_cvt_ops_pass.cpp ]
+[ compile-fail ../no_explicit_cvt_ops_fail.cpp ] ;
+test-suite "BOOST_NO_CXX11_EXTERN_TEMPLATE" :
+[ run ../no_extern_template_pass.cpp ]
+[ compile-fail ../no_extern_template_fail.cpp ] ;
+test-suite "BOOST_NO_FENV_H" :
+[ run ../no_fenv_h_pass.cpp ]
+[ compile-fail ../no_fenv_h_fail.cpp ] ;
+test-suite "BOOST_NO_CXX11_FIXED_LENGTH_VARIADIC_TEMPLATE_EXPANSION_PACKS" :
+[ run ../no_fixed_len_variadic_templates_pass.cpp ]
+[ compile-fail ../no_fixed_len_variadic_templates_fail.cpp ] ;
+test-suite "BOOST_NO_FUNCTION_TEMPLATE_ORDERING" :
+[ run ../no_func_tmp_order_pass.cpp ]
+[ compile-fail ../no_func_tmp_order_fail.cpp ] ;
+test-suite "BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS" :
+[ run ../no_function_template_default_args_pass.cpp ]
+[ compile-fail ../no_function_template_default_args_fail.cpp ] ;
+test-suite "BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS" :
+[ run ../no_function_type_spec_pass.cpp ]
+[ compile-fail ../no_function_type_spec_fail.cpp ] ;
+test-suite "BOOST_NO_MS_INT64_NUMERIC_LIMITS" :
+[ run ../no_i64_limits_pass.cpp ]
+[ compile-fail ../no_i64_limits_fail.cpp ] ;
+test-suite "BOOST_NO_INCLASS_MEMBER_INITIALIZATION" :
+[ run ../no_inline_memb_init_pass.cpp ]
+[ compile-fail ../no_inline_memb_init_fail.cpp ] ;
+test-suite "BOOST_NO_INTEGRAL_INT64_T" :
+[ run ../no_integral_int64_t_pass.cpp ]
+[ compile-fail ../no_integral_int64_t_fail.cpp ] ;
+test-suite "BOOST_NO_IOSFWD" :
+[ run ../no_iosfwd_pass.cpp ]
+[ compile-fail ../no_iosfwd_fail.cpp ] ;
+test-suite "BOOST_NO_IOSTREAM" :
+[ run ../no_iostream_pass.cpp ]
+[ compile-fail ../no_iostream_fail.cpp ] ;
+test-suite "BOOST_NO_IS_ABSTRACT" :
+[ run ../no_is_abstract_pass.cpp ]
+[ compile-fail ../no_is_abstract_fail.cpp ] ;
+test-suite "BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS" :
+[ run ../no_iter_construct_pass.cpp ]
+[ compile-fail ../no_iter_construct_fail.cpp ] ;
+test-suite "BOOST_NO_CXX11_LAMBDAS" :
+[ run ../no_lambdas_pass.cpp ]
+[ compile-fail ../no_lambdas_fail.cpp ] ;
+test-suite "BOOST_NO_LIMITS" :
+[ run ../no_limits_pass.cpp ]
+[ compile-fail ../no_limits_fail.cpp ] ;
+test-suite "BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS" :
+[ run ../no_limits_const_exp_pass.cpp ]
+[ compile-fail ../no_limits_const_exp_fail.cpp ] ;
+test-suite "BOOST_NO_LONG_LONG_NUMERIC_LIMITS" :
+[ run ../no_ll_limits_pass.cpp ]
+[ compile-fail ../no_ll_limits_fail.cpp ] ;
+test-suite "BOOST_NO_LONG_LONG" :
+[ run ../no_long_long_pass.cpp ]
+[ compile-fail ../no_long_long_fail.cpp ] ;
+test-suite "BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS" :
+[ run ../no_mem_func_spec_pass.cpp ]
+[ compile-fail ../no_mem_func_spec_fail.cpp ] ;
+test-suite "BOOST_NO_MEMBER_TEMPLATE_KEYWORD" :
+[ run ../no_mem_tem_keyword_pass.cpp ]
+[ compile-fail ../no_mem_tem_keyword_fail.cpp ] ;
+test-suite "BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS" :
+[ run ../no_mem_tem_pnts_pass.cpp ]
+[ compile-fail ../no_mem_tem_pnts_fail.cpp ] ;
+test-suite "BOOST_NO_MEMBER_TEMPLATE_FRIENDS" :
+[ run ../no_mem_templ_frnds_pass.cpp ]
+[ compile-fail ../no_mem_templ_frnds_fail.cpp ] ;
+test-suite "BOOST_NO_MEMBER_TEMPLATES" :
+[ run ../no_mem_templates_pass.cpp ]
+[ compile-fail ../no_mem_templates_fail.cpp ] ;
+test-suite "BOOST_NO_NESTED_FRIENDSHIP" :
+[ run ../no_nested_friendship_pass.cpp ]
+[ compile-fail ../no_nested_friendship_fail.cpp ] ;
+test-suite "BOOST_NO_CXX11_NOEXCEPT" :
+[ run ../no_noexcept_pass.cpp ]
+[ compile-fail ../no_noexcept_fail.cpp ] ;
+test-suite "BOOST_NO_CXX11_NULLPTR" :
+[ run ../no_nullptr_pass.cpp ]
+[ compile-fail ../no_nullptr_fail.cpp ] ;
+test-suite "BOOST_NO_OPERATORS_IN_NAMESPACE" :
+[ run ../no_ops_in_namespace_pass.cpp ]
+[ compile-fail ../no_ops_in_namespace_fail.cpp ] ;
+test-suite "BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS" :
+[ run ../no_part_spec_def_args_pass.cpp ]
+[ compile-fail ../no_part_spec_def_args_fail.cpp ] ;
+test-suite "BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION" :
+[ run ../no_partial_spec_pass.cpp ]
+[ compile-fail ../no_partial_spec_fail.cpp ] ;
+test-suite "BOOST_NO_PRIVATE_IN_AGGREGATE" :
+[ run ../no_priv_aggregate_pass.cpp ]
+[ compile-fail ../no_priv_aggregate_fail.cpp ] ;
+test-suite "BOOST_NO_POINTER_TO_MEMBER_CONST" :
+[ run ../no_ptr_mem_const_pass.cpp ]
+[ compile-fail ../no_ptr_mem_const_fail.cpp ] ;
+test-suite "BOOST_NO_CXX11_RANGE_BASED_FOR" :
+[ run ../no_range_based_for_pass.cpp ]
+[ compile-fail ../no_range_based_for_fail.cpp ] ;
+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 ] ;
+test-suite "BOOST_NO_RTTI" :
+[ run ../no_rtti_pass.cpp ]
+[ compile-fail ../no_rtti_fail.cpp ] ;
+test-suite "BOOST_NO_CXX11_RVALUE_REFERENCES" :
+[ run ../no_rvalue_references_pass.cpp ]
+[ compile-fail ../no_rvalue_references_fail.cpp ] ;
+test-suite "BOOST_NO_CXX11_SCOPED_ENUMS" :
+[ run ../no_scoped_enums_pass.cpp ]
+[ compile-fail ../no_scoped_enums_fail.cpp ] ;
+test-suite "BOOST_NO_SFINAE" :
+[ run ../no_sfinae_pass.cpp ]
+[ compile-fail ../no_sfinae_fail.cpp ] ;
+test-suite "BOOST_NO_SFINAE_EXPR" :
+[ run ../no_sfinae_expr_pass.cpp ]
+[ compile-fail ../no_sfinae_expr_fail.cpp ] ;
+test-suite "BOOST_NO_STRINGSTREAM" :
+[ run ../no_sstream_pass.cpp ]
+[ compile-fail ../no_sstream_fail.cpp ] ;
+test-suite "BOOST_NO_CXX11_STATIC_ASSERT" :
+[ run ../no_static_assert_pass.cpp ]
+[ compile-fail ../no_static_assert_fail.cpp ] ;
+test-suite "BOOST_NO_STD_ALLOCATOR" :
+[ run ../no_std_allocator_pass.cpp ]
+[ compile-fail ../no_std_allocator_fail.cpp ] ;
+test-suite "BOOST_NO_STD_DISTANCE" :
+[ run ../no_std_distance_pass.cpp ]
+[ compile-fail ../no_std_distance_fail.cpp ] ;
+test-suite "BOOST_NO_STD_ITERATOR_TRAITS" :
+[ run ../no_std_iter_traits_pass.cpp ]
+[ compile-fail ../no_std_iter_traits_fail.cpp ] ;
+test-suite "BOOST_NO_STD_ITERATOR" :
+[ run ../no_std_iterator_pass.cpp ]
+[ compile-fail ../no_std_iterator_fail.cpp ] ;
+test-suite "BOOST_NO_STD_LOCALE" :
+[ run ../no_std_locale_pass.cpp ]
+[ compile-fail ../no_std_locale_fail.cpp ] ;
+test-suite "BOOST_NO_STD_MESSAGES" :
+[ run ../no_std_messages_pass.cpp ]
+[ compile-fail ../no_std_messages_fail.cpp ] ;
+test-suite "BOOST_NO_STD_MIN_MAX" :
+[ run ../no_std_min_max_pass.cpp ]
+[ compile-fail ../no_std_min_max_fail.cpp ] ;
+test-suite "BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN" :
+[ run ../no_std_oi_assign_pass.cpp ]
+[ compile-fail ../no_std_oi_assign_fail.cpp ] ;
+test-suite "BOOST_NO_STD_TYPEINFO" :
+[ run ../no_std_typeinfo_pass.cpp ]
+[ compile-fail ../no_std_typeinfo_fail.cpp ] ;
+test-suite "BOOST_NO_STD_USE_FACET" :
+[ run ../no_std_use_facet_pass.cpp ]
+[ compile-fail ../no_std_use_facet_fail.cpp ] ;
+test-suite "BOOST_NO_STD_WSTREAMBUF" :
+[ run ../no_std_wstreambuf_pass.cpp ]
+[ compile-fail ../no_std_wstreambuf_fail.cpp ] ;
+test-suite "BOOST_NO_STD_WSTRING" :
+[ run ../no_std_wstring_pass.cpp ]
+[ compile-fail ../no_std_wstring_fail.cpp ] ;
+test-suite "BOOST_NO_STDC_NAMESPACE" :
+[ run ../no_stdc_namespace_pass.cpp ]
+[ compile-fail ../no_stdc_namespace_fail.cpp ] ;
+test-suite "BOOST_NO_SWPRINTF" :
+[ run ../no_swprintf_pass.cpp ]
+[ compile-fail ../no_swprintf_fail.cpp ] ;
+test-suite "BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS" :
+[ run ../no_tem_local_classes_pass.cpp ]
+[ compile-fail ../no_tem_local_classes_fail.cpp ] ;
+test-suite "BOOST_NO_CXX11_TEMPLATE_ALIASES" :
+[ run ../no_template_aliases_pass.cpp ]
+[ compile-fail ../no_template_aliases_fail.cpp ] ;
+test-suite "BOOST_NO_TEMPLATED_IOSTREAMS" :
+[ run ../no_template_streams_pass.cpp ]
+[ compile-fail ../no_template_streams_fail.cpp ] ;
+test-suite "BOOST_NO_TEMPLATE_TEMPLATES" :
+[ run ../no_template_template_pass.cpp ]
+[ compile-fail ../no_template_template_fail.cpp ] ;
+test-suite "BOOST_NO_TWO_PHASE_NAME_LOOKUP" :
+[ run ../no_two_phase_lookup_pass.cpp ]
+[ compile-fail ../no_two_phase_lookup_fail.cpp ] ;
+test-suite "BOOST_NO_TYPEID" :
+[ run ../no_typeid_pass.cpp ]
+[ compile-fail ../no_typeid_fail.cpp ] ;
+test-suite "BOOST_NO_TYPENAME_WITH_CTOR" :
+[ run ../no_typename_with_ctor_pass.cpp ]
+[ compile-fail ../no_typename_with_ctor_fail.cpp ] ;
+test-suite "BOOST_NO_CXX11_UNICODE_LITERALS" :
+[ run ../no_unicode_literals_pass.cpp ]
+[ compile-fail ../no_unicode_literals_fail.cpp ] ;
+test-suite "BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX" :
+[ run ../no_unified_init_pass.cpp ]
+[ compile-fail ../no_unified_init_fail.cpp ] ;
+test-suite "BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL" :
+[ run ../no_using_breaks_adl_pass.cpp ]
+[ compile-fail ../no_using_breaks_adl_fail.cpp ] ;
+test-suite "BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE" :
+[ run ../no_using_decl_overld_pass.cpp ]
+[ compile-fail ../no_using_decl_overld_fail.cpp ] ;
+test-suite "BOOST_NO_USING_TEMPLATE" :
+[ run ../no_using_template_pass.cpp ]
+[ compile-fail ../no_using_template_fail.cpp ] ;
+test-suite "BOOST_NO_CXX11_VARIADIC_MACROS" :
+[ run ../no_variadic_macros_pass.cpp ]
+[ compile-fail ../no_variadic_macros_fail.cpp ] ;
+test-suite "BOOST_NO_CXX11_VARIADIC_TEMPLATES" :
+[ run ../no_variadic_templates_pass.cpp ]
+[ compile-fail ../no_variadic_templates_fail.cpp ] ;
+test-suite "BOOST_NO_VOID_RETURNS" :
+[ run ../no_void_returns_pass.cpp ]
+[ compile-fail ../no_void_returns_fail.cpp ] ;
+test-suite "BOOST_NO_INTRINSIC_WCHAR_T" :
+[ run ../no_wchar_t_pass.cpp ]
+[ compile-fail ../no_wchar_t_fail.cpp ] ;
+
diff --git a/test/all/options_v2.jam b/test/all/options_v2.jam
new file mode 100644
index 0000000..ac748ef
--- /dev/null
+++ b/test/all/options_v2.jam
@@ -0,0 +1,12 @@
+# copyright John Maddock 2003
+# 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)
+
+project
+ : requirements
+ # threading tests require thread support turned on:
+ <threading>multi
+ ;
+
+local test-requirements = <library>../../test/build//boost_test_exec_monitor ;
diff --git a/test/boost_fallthrough_test.cpp b/test/boost_fallthrough_test.cpp
new file mode 100644
index 0000000..3fabe35
--- /dev/null
+++ b/test/boost_fallthrough_test.cpp
@@ -0,0 +1,20 @@
+// 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(int n)
+{
+ switch (n)
+ {
+ case 0:
+ n++;
+ BOOST_FALLTHROUGH;
+ case 1:
+ n++;
+ break;
+ }
+ return n;
+}
+
diff --git a/test/boost_has_2arg_use_facet.ipp b/test/boost_has_2arg_use_facet.ipp
new file mode 100644
index 0000000..7ed2b7c
--- /dev/null
+++ b/test/boost_has_2arg_use_facet.ipp
@@ -0,0 +1,32 @@
+// (C) Copyright John Maddock 2001.
+// 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 most recent version.
+
+// MACRO: BOOST_HAS_TWO_ARG_USE_FACET
+// TITLE: two argument version of use_facet
+// DESCRIPTION: The standard library lacks a conforming std::use_facet,
+// but has a two argument version that does the job.
+// This is primarily for the Rogue Wave std lib.
+
+#include <locale>
+
+
+namespace boost_has_two_arg_use_facet{
+
+int test()
+{
+ std::locale l;
+ const std::ctype<char>& ct = std::use_facet(l, (std::ctype<char>*)0);
+ return 0;
+}
+
+}
+
+
+
+
+
+
diff --git a/test/boost_has_bethreads.ipp b/test/boost_has_bethreads.ipp
new file mode 100644
index 0000000..0e01699
--- /dev/null
+++ b/test/boost_has_bethreads.ipp
@@ -0,0 +1,34 @@
+// (C) Copyright John Maddock 2001.
+// 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 most recent version.
+
+// MACRO: BOOST_HAS_BETHREADS
+// TITLE: BeOS Threads
+// DESCRIPTION: The platform supports BeOS style threads.
+
+#include <OS.h>
+
+
+namespace boost_has_bethreads{
+
+int test()
+{
+ sem_id mut = create_sem(1, "test");
+ if(mut > 0)
+ {
+ acquire_sem(mut);
+ release_sem(mut);
+ delete_sem(mut);
+ }
+ return 0;
+}
+
+}
+
+
+
+
+
diff --git a/test/boost_has_clock_gettime.ipp b/test/boost_has_clock_gettime.ipp
new file mode 100644
index 0000000..59eee58
--- /dev/null
+++ b/test/boost_has_clock_gettime.ipp
@@ -0,0 +1,35 @@
+// (C) Copyright John Maddock 2001.
+// 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 most recent version.
+
+// MACRO: BOOST_HAS_CLOCK_GETTIME
+// TITLE: clock_gettime
+// DESCRIPTION: The platform supports POSIX standard API clock_gettime.
+
+#include <time.h>
+
+
+namespace boost_has_clock_gettime{
+
+void f()
+{
+ // this is never called, it just has to compile:
+ timespec tp;
+ int res = clock_gettime(CLOCK_REALTIME, &tp);
+ (void) &res;
+}
+
+int test()
+{
+ return 0;
+}
+
+}
+
+
+
+
+
diff --git a/test/boost_has_detect_mismatch.ipp b/test/boost_has_detect_mismatch.ipp
new file mode 100644
index 0000000..6430dd4
--- /dev/null
+++ b/test/boost_has_detect_mismatch.ipp
@@ -0,0 +1,25 @@
+// (C) Copyright John Maddock 2018.
+// 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 most recent version.
+
+// MACRO: BOOST_HAS_PRAGMA_DETECT_MISMATCH
+// TITLE: detect_mismatch pragma
+// DESCRIPTION: The compiler supports #pragma detect_mismatch
+
+#include <cstdlib>
+
+
+namespace boost_has_pragma_detect_mismatch {
+
+# pragma detect_mismatch("Boost_Config", "1")
+
+int test()
+{
+ return 0;
+}
+
+}
+
diff --git a/test/boost_has_dirent_h.ipp b/test/boost_has_dirent_h.ipp
new file mode 100644
index 0000000..5d60202
--- /dev/null
+++ b/test/boost_has_dirent_h.ipp
@@ -0,0 +1,30 @@
+// (C) Copyright John Maddock 2002.
+// 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 most recent version.
+
+// MACRO: BOOST_HAS_DIRENT_H
+// TITLE: <dirent.h>
+// DESCRIPTION: The platform has an <dirent.h>.
+
+#include <dirent.h>
+
+
+namespace boost_has_dirent_h{
+
+int test()
+{
+ DIR* pd = opendir("foobar");
+ if(pd) closedir(pd);
+ return 0;
+}
+
+}
+
+
+
+
+
+
diff --git a/test/boost_has_expm1.ipp b/test/boost_has_expm1.ipp
new file mode 100644
index 0000000..b219d50
--- /dev/null
+++ b/test/boost_has_expm1.ipp
@@ -0,0 +1,25 @@
+// (C) Copyright John Maddock 2005.
+// 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 most recent version.
+
+// MACRO: BOOST_HAS_EXPM1
+// TITLE: expm1
+// DESCRIPTION: The std lib has a C99-conforming expm1 function.
+
+#include <math.h>
+
+namespace boost_has_expm1{
+
+int test()
+{
+ double x = 0.5;
+ x = ::expm1(x);
+ (void)x;
+ return 0;
+}
+
+}
+
diff --git a/test/boost_has_float128.ipp b/test/boost_has_float128.ipp
new file mode 100644
index 0000000..80b211c
--- /dev/null
+++ b/test/boost_has_float128.ipp
@@ -0,0 +1,29 @@
+// (C) Copyright John Maddock 2012.
+// 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 most recent version.
+
+// MACRO: BOOST_HAS_FLOAT128
+// TITLE: __float128
+// DESCRIPTION: The platform supports __float128.
+
+#include <cstdlib>
+
+
+namespace boost_has_float128{
+
+int test()
+{
+#ifdef __GNUC__
+ __extension__ __float128 big_float = 0.0Q;
+#else
+ __float128 big_float = 0.0Q;
+#endif
+ (void)&big_float;
+ return 0;
+}
+
+}
+
diff --git a/test/boost_has_ftime.ipp b/test/boost_has_ftime.ipp
new file mode 100644
index 0000000..ff04baf
--- /dev/null
+++ b/test/boost_has_ftime.ipp
@@ -0,0 +1,32 @@
+// (C) Copyright John Maddock 2001.
+// 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 most recent version.
+
+// MACRO: BOOST_HAS_FTIME
+// TITLE: The platform has FTIME.
+// DESCRIPTION: The platform supports the Win32 API type FTIME.
+
+#include <windows.h>
+
+
+namespace boost_has_ftime{
+
+void f(FILETIME)
+{
+ // this is never called, it just has to compile:
+}
+
+int test()
+{
+ return 0;
+}
+
+}
+
+
+
+
+
diff --git a/test/boost_has_getsystemtimeasfiletime.ipp b/test/boost_has_getsystemtimeasfiletime.ipp
new file mode 100644
index 0000000..d9b7e1c
--- /dev/null
+++ b/test/boost_has_getsystemtimeasfiletime.ipp
@@ -0,0 +1,30 @@
+// (C) Copyright John Maddock 2011.
+// 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 most recent version.
+
+// MACRO: BOOST_HAS_GETSYSTEMTIMEASFILETIME
+// TITLE: GetSystemTimeAsFileTime
+// DESCRIPTION: The platform supports Win32 API GetSystemTimeAsFileTime.
+
+#include <windows.h>
+
+
+namespace boost_has_getsystemtimeasfiletime{
+
+void f()
+{
+ // this is never called, it just has to compile:
+ FILETIME ft;
+ GetSystemTimeAsFileTime(&ft);
+}
+
+int test()
+{
+ return 0;
+}
+
+}
+
diff --git a/test/boost_has_gettimeofday.ipp b/test/boost_has_gettimeofday.ipp
new file mode 100644
index 0000000..d79186a
--- /dev/null
+++ b/test/boost_has_gettimeofday.ipp
@@ -0,0 +1,35 @@
+// (C) Copyright John Maddock 2001.
+// 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 most recent version.
+
+// MACRO: BOOST_HAS_GETTIMEOFDAY
+// TITLE: gettimeofday
+// DESCRIPTION: The platform supports POSIX standard API gettimeofday.
+
+#include <sys/time.h>
+
+
+namespace boost_has_gettimeofday{
+
+void f()
+{
+ // this is never called, it just has to compile:
+ timeval tp;
+ int res = gettimeofday(&tp, 0);
+ (void) &res;
+}
+
+int test()
+{
+ return 0;
+}
+
+}
+
+
+
+
+
diff --git a/test/boost_has_hash.ipp b/test/boost_has_hash.ipp
new file mode 100644
index 0000000..0363940
--- /dev/null
+++ b/test/boost_has_hash.ipp
@@ -0,0 +1,68 @@
+// (C) Copyright John Maddock 2001.
+// 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 most recent version.
+
+// MACRO: BOOST_HAS_HASH
+// TITLE: <hashset> and <hashmap>
+// DESCRIPTION: The C++ implementation provides the (SGI) hash_set
+// or hash_map classes.
+
+#if defined(__GLIBCXX__) || (defined(__GLIBCPP__) && __GLIBCPP__>=20020514) // GCC >= 3.1.0
+# ifdef BOOST_NO_CXX11_STD_UNORDERED
+# define BOOST_STD_EXTENSION_NAMESPACE __gnu_cxx
+# define _BACKWARD_BACKWARD_WARNING_H 1 /* turn off warnings from the headers below */
+# include <ext/hash_set>
+# include <ext/hash_map>
+# else
+ // If we have BOOST_NO_CXX11_STD_UNORDERED *not* defined, then we must
+ // not include the <ext/*> headers as they clash with the C++0x
+ // headers. ie in any given translation unit we can include one
+ // or the other, but not both.
+# define DISABLE_BOOST_HAS_HASH_TEST
+# endif
+#else
+#include <hash_set>
+#include <hash_map>
+#endif
+
+#ifndef BOOST_STD_EXTENSION_NAMESPACE
+#define BOOST_STD_EXTENSION_NAMESPACE std
+#endif
+
+namespace boost_has_hash{
+
+#ifndef DISABLE_BOOST_HAS_HASH_TEST
+
+template <class Key, class Eq, class Hash, class Alloc>
+void foo(const BOOST_STD_EXTENSION_NAMESPACE::hash_set<Key,Eq,Hash,Alloc>& )
+{
+}
+
+template <class Key, class T, class Eq, class Hash, class Alloc>
+void foo(const BOOST_STD_EXTENSION_NAMESPACE::hash_map<Key,T,Eq,Hash,Alloc>& )
+{
+}
+
+#endif
+
+int test()
+{
+#ifndef DISABLE_BOOST_HAS_HASH_TEST
+ BOOST_STD_EXTENSION_NAMESPACE::hash_set<int> hs;
+ foo(hs);
+ BOOST_STD_EXTENSION_NAMESPACE::hash_map<int, long> hm;
+ foo(hm);
+#endif
+ return 0;
+}
+
+}
+
+
+
+
+
+
diff --git a/test/boost_has_int128.ipp b/test/boost_has_int128.ipp
new file mode 100644
index 0000000..b7e10a4
--- /dev/null
+++ b/test/boost_has_int128.ipp
@@ -0,0 +1,75 @@
+// (C) Copyright John Maddock 2012.
+// (C) Copyright Dynatrace 2017.
+// 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 most recent version.
+
+// MACRO: BOOST_HAS_INT128
+// TITLE: __int128
+// DESCRIPTION: The platform supports __int128.
+
+#include <cstdlib>
+#include <stdio.h>
+#include <limits.h>
+
+namespace boost_has_int128{
+
+#ifdef __GNUC__
+__extension__ typedef __int128 my_int128_t;
+__extension__ typedef unsigned __int128 my_uint128_t;
+#else
+typedef __int128 my_int128_t;
+typedef unsigned __int128 my_uint128_t;
+#endif
+
+my_uint128_t volatile g_ui128 = 0;
+unsigned long volatile g_ul = 0;
+
+int test()
+{
+ my_int128_t si128 = 0;
+ (void)&si128;
+
+ // Some compilers have seriously broken __int128 implementations, so we need to do a little more than simply check if we can declare variables with __int128...
+ // #1: check __int128 size
+ if (sizeof(my_uint128_t) < (128 / CHAR_BIT))
+ {
+ fputs("Type too small.", stderr);
+ return 1;
+ }
+
+ // #2: check result of computation with __int128
+ my_uint128_t p1 = 1;
+ my_uint128_t p2 = 1;
+ unsigned int i = 0;
+ for (; i < 180; i++)
+ {
+ g_ui128 = p1 + p2;
+ if (g_ui128 < p1)
+ {
+ fputs("Unexpected overflow.", stderr);
+ return 1;
+ }
+ p2 = p1;
+ p1 = g_ui128;
+ }
+
+ g_ul = static_cast<unsigned long>((g_ui128 >> 92) & 0xFFFFFFFFUL);
+ g_ul -= 1216382273UL;
+ if (g_ul != 0)
+ {
+ fputs("Incorrect computation result.", stderr);
+ return 1;
+ }
+
+ return 0;
+}
+
+}
+
+
+
+
+
diff --git a/test/boost_has_log1p.ipp b/test/boost_has_log1p.ipp
new file mode 100644
index 0000000..9454d00
--- /dev/null
+++ b/test/boost_has_log1p.ipp
@@ -0,0 +1,24 @@
+// (C) Copyright John Maddock 2005.
+// 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 most recent version.
+
+// MACRO: BOOST_HAS_LOG1P
+// TITLE: log1p
+// DESCRIPTION: The std lib has a C99-conforming log1p function.
+
+#include <math.h>
+
+namespace boost_has_log1p{
+
+int test()
+{
+ double x = 0.5;
+ x = ::log1p(x);
+ (void)x;
+ return 0;
+}
+
+}
diff --git a/test/boost_has_long_long.ipp b/test/boost_has_long_long.ipp
new file mode 100644
index 0000000..651021b
--- /dev/null
+++ b/test/boost_has_long_long.ipp
@@ -0,0 +1,36 @@
+// (C) Copyright John Maddock 2001.
+// 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 most recent version.
+
+// MACRO: BOOST_HAS_LONG_LONG
+// TITLE: long long
+// DESCRIPTION: The platform supports long long.
+
+#include <cstdlib>
+
+
+namespace boost_has_long_long{
+
+int test()
+{
+#ifdef __GNUC__
+ __extension__ long long lli = 0LL;
+ __extension__ unsigned long long ulli = 0uLL;
+#else
+ long long lli = 0LL;
+ unsigned long long ulli = 0uLL;
+#endif
+ (void)&lli;
+ (void)&ulli;
+ return 0;
+}
+
+}
+
+
+
+
+
diff --git a/test/boost_has_macro_use_facet.ipp b/test/boost_has_macro_use_facet.ipp
new file mode 100644
index 0000000..0e0726d
--- /dev/null
+++ b/test/boost_has_macro_use_facet.ipp
@@ -0,0 +1,35 @@
+// (C) Copyright John Maddock 2001.
+// 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 most recent version.
+
+// MACRO: BOOST_HAS_MACRO_USE_FACET
+// TITLE: macro version of use_facet: _USE
+// DESCRIPTION: The standard library lacks a conforming std::use_facet,
+// but has a macro _USE(loc, Type) that does the job.
+// This is primarily for the Dinkumware std lib.
+
+#include <locale>
+
+#ifndef _USE
+#error "macro _USE not defined"
+#endif
+
+namespace boost_has_macro_use_facet{
+
+int test()
+{
+ std::locale l;
+ const std::ctype<char>& ct = std::_USE(l, std::ctype<char>);
+ return 0;
+}
+
+}
+
+
+
+
+
+
diff --git a/test/boost_has_ms_int64.ipp b/test/boost_has_ms_int64.ipp
new file mode 100644
index 0000000..c8b4782
--- /dev/null
+++ b/test/boost_has_ms_int64.ipp
@@ -0,0 +1,32 @@
+// (C) Copyright John Maddock 2001.
+// 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 most recent version.
+
+// MACRO: BOOST_HAS_MS_INT64
+// TITLE: __int64
+// DESCRIPTION: The platform supports Microsoft style __int64.
+
+#include <cstdlib>
+
+
+namespace boost_has_ms_int64{
+
+int test()
+{
+ __int64 lli = 0i64;
+ unsigned __int64 ulli = 0ui64;
+ (void)lli;
+ (void)ulli;
+ return 0;
+}
+
+}
+
+
+
+
+
+
diff --git a/test/boost_has_nanosleep.ipp b/test/boost_has_nanosleep.ipp
new file mode 100644
index 0000000..9262c8c
--- /dev/null
+++ b/test/boost_has_nanosleep.ipp
@@ -0,0 +1,36 @@
+// (C) Copyright John Maddock 2001.
+// 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 most recent version.
+
+// MACRO: BOOST_HAS_NANOSLEEP
+// TITLE: nanosleep
+// DESCRIPTION: The platform supports POSIX API nanosleep.
+
+#include <time.h>
+
+
+namespace boost_has_nanosleep{
+
+void f()
+{
+ // this is never called, it just has to compile:
+ timespec ts = {0, 0};
+ timespec rm;
+ int res = nanosleep(&ts, &rm);
+ (void) &res;
+}
+
+int test()
+{
+ return 0;
+}
+
+}
+
+
+
+
+
diff --git a/test/boost_has_nl_types_h.ipp b/test/boost_has_nl_types_h.ipp
new file mode 100644
index 0000000..e23f0a2
--- /dev/null
+++ b/test/boost_has_nl_types_h.ipp
@@ -0,0 +1,29 @@
+// (C) Copyright John Maddock 2001.
+// 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 most recent version.
+
+// MACRO: BOOST_HAS_NL_TYPES_H
+// TITLE: <nl_types.h>
+// DESCRIPTION: The platform has an <nl_types.h>.
+
+#include <nl_types.h>
+
+
+namespace boost_has_nl_types_h{
+
+int test()
+{
+ nl_catd cat = catopen("foo", 0);
+ if(cat != (nl_catd)-1) catclose(cat);
+ return 0;
+}
+
+}
+
+
+
+
+
diff --git a/test/boost_has_nrvo.ipp b/test/boost_has_nrvo.ipp
new file mode 100644
index 0000000..ad6f17f
--- /dev/null
+++ b/test/boost_has_nrvo.ipp
@@ -0,0 +1,57 @@
+// (C) Copyright Terje Slettebo 2001.
+// (C) Copyright John Maddock 2001.
+// 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 most recent version.
+
+// MACRO: BOOST_HAS_NRVO
+// TITLE: Named return value optimisation.
+// DESCRIPTION: Named return value optimisation.
+
+
+namespace boost_has_nrvo
+{
+
+class test_class
+{
+public:
+ test_class() {}
+ test_class(const test_class&)
+ {
+ ++copy_count;
+ }
+
+ static int copy_count;
+};
+
+int test_class::copy_count;
+
+test_class f()
+{
+ test_class nrv;
+
+ return nrv;
+}
+
+int test()
+{
+ test_class::copy_count=0;
+
+ f();
+
+ return test_class::copy_count;
+}
+
+} // namespace boost_has_nrvo
+
+
+
+
+
+
+
+
+
+
diff --git a/test/boost_has_part_alloc.ipp b/test/boost_has_part_alloc.ipp
new file mode 100644
index 0000000..fac5fed
--- /dev/null
+++ b/test/boost_has_part_alloc.ipp
@@ -0,0 +1,67 @@
+// (C) Copyright John Maddock 2001.
+// 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 most recent version.
+
+// MACRO: BOOST_HAS_PARTIAL_STD_ALLOCATOR
+// TITLE: limited std::allocator support
+// DESCRIPTION: The std lib has at least some kind of stanfard allocator
+// with allocate/deallocate members and probably not much more.
+
+#include <memory>
+
+#if defined(__GNUC__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)))
+# define BOOST_UNUSED_ATTRIBUTE __attribute__((unused))
+#else
+# define BOOST_UNUSED_ATTRIBUTE
+#endif
+
+namespace boost_has_partial_std_allocator{
+
+//
+// test everything except rebind template members:
+//
+
+template <class T>
+int test_allocator(const T& i)
+{
+ typedef std::allocator<int> alloc1_t;
+#if !((__cplusplus > 201700) || (defined(_MSVC_LANG) && (_MSVC_LANG > 201700)))
+ typedef typename alloc1_t::size_type size_type;
+ typedef typename alloc1_t::difference_type difference_type BOOST_UNUSED_ATTRIBUTE;
+ typedef typename alloc1_t::pointer pointer;
+ typedef typename alloc1_t::const_pointer const_pointer;
+ typedef typename alloc1_t::reference reference;
+ typedef typename alloc1_t::const_reference const_reference;
+ typedef typename alloc1_t::value_type value_type BOOST_UNUSED_ATTRIBUTE;
+#endif
+ alloc1_t a1;
+ (void)i;
+#if !((__cplusplus > 201700) || (defined(_MSVC_LANG) && (_MSVC_LANG > 201700)))
+ pointer p = a1.allocate(1);
+ const_pointer cp = p;
+ a1.construct(p,i);
+ size_type s = a1.max_size();
+ (void)s;
+ reference r = *p;
+ const_reference cr = *cp;
+ if(p != a1.address(r)) return -1;
+ if(cp != a1.address(cr)) return -1;
+ a1.destroy(p);
+ a1.deallocate(p,1);
+#endif
+ return 0;
+}
+
+
+int test()
+{
+ return test_allocator(0);
+}
+
+}
+
+#undef BOOST_UNUSED_ATTRIBUTE
+
diff --git a/test/boost_has_pthread_delay_np.ipp b/test/boost_has_pthread_delay_np.ipp
new file mode 100644
index 0000000..294d3db
--- /dev/null
+++ b/test/boost_has_pthread_delay_np.ipp
@@ -0,0 +1,35 @@
+// (C) Copyright John Maddock 2001.
+// 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 most recent version.
+
+// MACRO: BOOST_HAS_PTHREAD_DELAY_NP
+// TITLE: pthread_delay_np
+// DESCRIPTION: The platform supports non-standard pthread_delay_np API.
+
+#include <pthread.h>
+#include <time.h>
+
+
+namespace boost_has_pthread_delay_np{
+
+void f()
+{
+ // this is never called, it just has to compile:
+ timespec ts;
+ int res = pthread_delay_np(&ts);
+}
+
+int test()
+{
+ return 0;
+}
+
+}
+
+
+
+
+
diff --git a/test/boost_has_pthread_ma_st.ipp b/test/boost_has_pthread_ma_st.ipp
new file mode 100644
index 0000000..0e985f2
--- /dev/null
+++ b/test/boost_has_pthread_ma_st.ipp
@@ -0,0 +1,37 @@
+// (C) Copyright John Maddock 2001.
+// 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 most recent version.
+
+// MACRO: BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
+// TITLE: pthread_mutexattr_settype
+// DESCRIPTION: The platform supports POSIX API pthread_mutexattr_settype.
+
+#include <pthread.h>
+
+
+namespace boost_has_pthread_mutexattr_settype{
+
+void f()
+{
+ // this is never called, it just has to compile:
+ pthread_mutexattr_t attr;
+ pthread_mutexattr_init(&attr);
+ int type = 0;
+ pthread_mutexattr_settype(&attr, type);
+}
+
+int test()
+{
+ return 0;
+}
+
+}
+
+
+
+
+
+
diff --git a/test/boost_has_pthread_yield.ipp b/test/boost_has_pthread_yield.ipp
new file mode 100644
index 0000000..37046d3
--- /dev/null
+++ b/test/boost_has_pthread_yield.ipp
@@ -0,0 +1,34 @@
+// (C) Copyright John Maddock 2001.
+// 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 most recent version.
+
+// MACRO: BOOST_HAS_PTHREAD_YIELD
+// TITLE: pthread_yield
+// DESCRIPTION: The platform supports non standard API pthread_yield.
+
+#include <pthread.h>
+
+
+namespace boost_has_pthread_yield{
+
+void f()
+{
+ // this is never called, it just has to compile:
+ int res = pthread_yield();
+ (void)res;
+}
+
+int test()
+{
+ return 0;
+}
+
+}
+
+
+
+
+
diff --git a/test/boost_has_pthreads.ipp b/test/boost_has_pthreads.ipp
new file mode 100644
index 0000000..eeeff65
--- /dev/null
+++ b/test/boost_has_pthreads.ipp
@@ -0,0 +1,64 @@
+// (C) Copyright John Maddock 2001.
+// 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 most recent version.
+
+// MACRO: BOOST_HAS_PTHREADS
+// TITLE: POSIX Threads
+// DESCRIPTION: The platform supports POSIX style threads.
+
+#include <pthread.h>
+
+
+namespace boost_has_pthreads{
+
+extern "C" void* thread_proc(void* arg)
+{
+ return arg;
+}
+
+int test()
+{
+ pthread_mutex_t mut;
+ int result = pthread_mutex_init(&mut, 0);
+ if(0 == result)
+ {
+ //
+ // Failure to be able to create and use a mutex
+ // is always a failure, even if the pthread
+ // library is just a non-functioning stub.
+ //
+ result |= pthread_mutex_lock(&mut);
+ result |= pthread_mutex_unlock(&mut);
+ result |= pthread_mutex_trylock(&mut);
+ result |= pthread_mutex_unlock(&mut);
+ result |= pthread_mutex_destroy(&mut);
+ //
+ // Try and create a thread, this is allowed
+ // to fail, in case we are linking to a pthread
+ // "stub" library.
+ //
+ pthread_t t;
+ int r = pthread_create(&t, 0, &thread_proc, 0);
+ // result |= r;
+ if(r == 0)
+ {
+ //
+ // If we can create a thread, then we must be able to join to it:
+ //
+ void* arg;
+ r = pthread_join(t, &arg);
+ result |= r;
+ }
+ }
+ return result;
+}
+
+}
+
+
+
+
+
diff --git a/test/boost_has_rvalue_refs.ipp b/test/boost_has_rvalue_refs.ipp
new file mode 100644
index 0000000..f0ce174
--- /dev/null
+++ b/test/boost_has_rvalue_refs.ipp
@@ -0,0 +1,26 @@
+// Copyright (C) 2007 Douglas Gregor
+// 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 most recent version.
+
+// MACRO: BOOST_HAS_RVALUE_REFS
+// TITLE: rvalue references
+// DESCRIPTION: The compiler supports C++0x rvalue references
+
+namespace boost_has_rvalue_refs {
+
+void g(int&) {}
+
+template<typename F, typename T>
+void forward(F f, T&& t) { f(static_cast<T&&>(t)); }
+
+int test()
+{
+ int x;
+ forward(g, x);
+ return 0;
+}
+
+}
diff --git a/test/boost_has_sched_yield.ipp b/test/boost_has_sched_yield.ipp
new file mode 100644
index 0000000..1302fbf
--- /dev/null
+++ b/test/boost_has_sched_yield.ipp
@@ -0,0 +1,34 @@
+// (C) Copyright John Maddock 2001.
+// 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 most recent version.
+
+// MACRO: BOOST_HAS_SCHED_YIELD
+// TITLE: sched_yield
+// DESCRIPTION: The platform supports POSIX standard API sched_yield.
+
+#include <pthread.h>
+
+
+namespace boost_has_sched_yield{
+
+void f()
+{
+ // this is never called, it just has to compile:
+ int res = sched_yield();
+ (void) &res;
+}
+
+int test()
+{
+ return 0;
+}
+
+}
+
+
+
+
+
diff --git a/test/boost_has_sgi_type_traits.ipp b/test/boost_has_sgi_type_traits.ipp
new file mode 100644
index 0000000..5848b68
--- /dev/null
+++ b/test/boost_has_sgi_type_traits.ipp
@@ -0,0 +1,40 @@
+// (C) Copyright John Maddock 2001.
+// 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 most recent version.
+
+// MACRO: BOOST_HAS_SGI_TYPE_TRAITS
+// TITLE: SGI style <type_traits.h>
+// DESCRIPTION: The standard library has it's own type_traits implementation.
+
+#include <type_traits.h>
+
+
+namespace boost_has_sgi_type_traits{
+
+struct foo_type{};
+
+int test()
+{
+ ::__true_type t;
+ ::__false_type f;
+ typedef ::__type_traits<int>::has_trivial_destructor td;
+ typedef ::__type_traits<double>::has_trivial_assignment_operator ta;
+ typedef ::__type_traits<float>::has_trivial_copy_constructor tc;
+ typedef ::__type_traits<char>::has_trivial_default_constructor tdc;
+ typedef ::__type_traits<foo_type>::is_POD_type isp;
+
+ (void) &t; // avoid "unused variable" warnings
+ (void) &f;
+
+ return 0;
+}
+
+}
+
+
+
+
+
diff --git a/test/boost_has_sigaction.ipp b/test/boost_has_sigaction.ipp
new file mode 100644
index 0000000..12170c1
--- /dev/null
+++ b/test/boost_has_sigaction.ipp
@@ -0,0 +1,36 @@
+// (C) Copyright John Maddock 2001.
+// 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 most recent version.
+
+// MACRO: BOOST_HAS_SIGACTION
+// TITLE: sigaction
+// DESCRIPTION: The platform supports POSIX standard API sigaction.
+
+#include <signal.h>
+
+
+namespace boost_has_sigaction{
+
+void f()
+{
+ // this is never called, it just has to compile:
+ struct sigaction* sa1 = 0 ;
+ struct sigaction* sa2 = 0 ;
+ int res = sigaction(0, sa1, sa2);
+ (void) &res;
+}
+
+int test()
+{
+ return 0;
+}
+
+}
+
+
+
+
+
diff --git a/test/boost_has_slist.ipp b/test/boost_has_slist.ipp
new file mode 100644
index 0000000..f3c37d4
--- /dev/null
+++ b/test/boost_has_slist.ipp
@@ -0,0 +1,44 @@
+// (C) Copyright John Maddock 2001.
+// 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 most recent version.
+
+// MACRO: BOOST_HAS_SLIST
+// TITLE: <slist>
+// DESCRIPTION: The C++ implementation provides the (SGI) slist class.
+
+#if defined(__GLIBCXX__) || (defined(__GLIBCPP__) && __GLIBCPP__>=20020514) // GCC >= 3.1.0
+# define BOOST_STD_EXTENSION_NAMESPACE __gnu_cxx
+#include <ext/slist>
+#else
+#include <slist>
+#endif
+
+#ifndef BOOST_STD_EXTENSION_NAMESPACE
+#define BOOST_STD_EXTENSION_NAMESPACE std
+#endif
+
+namespace boost_has_slist{
+
+template <class T, class Alloc>
+void foo(const BOOST_STD_EXTENSION_NAMESPACE::slist<T,Alloc>& )
+{
+}
+
+
+int test()
+{
+ BOOST_STD_EXTENSION_NAMESPACE::slist<int> l;
+ foo(l);
+ return 0;
+}
+
+}
+
+
+
+
+
+
diff --git a/test/boost_has_static_assert.ipp b/test/boost_has_static_assert.ipp
new file mode 100644
index 0000000..545938a
--- /dev/null
+++ b/test/boost_has_static_assert.ipp
@@ -0,0 +1,20 @@
+// Copyright (C) 2007 Douglas Gregor
+// 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 most recent version.
+
+// MACRO: BOOST_HAS_STATIC_ASSERT
+// TITLE: static assertions
+// DESCRIPTION: The compiler supports C++0x static assertions
+
+namespace boost_has_static_assert {
+
+int test()
+{
+ static_assert(true, "OK");
+ return 0;
+}
+
+}
diff --git a/test/boost_has_stdint_h.ipp b/test/boost_has_stdint_h.ipp
new file mode 100644
index 0000000..c731f50
--- /dev/null
+++ b/test/boost_has_stdint_h.ipp
@@ -0,0 +1,48 @@
+// (C) Copyright John Maddock 2001.
+// 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 most recent version.
+
+// MACRO: BOOST_HAS_STDINT_H
+// TITLE: stdint.h
+// DESCRIPTION: There are no 1998 C++ Standard headers <stdint.h>
+// or <cstdint>, although the 1999 C Standard does
+// include <stdint.h>.
+// If <stdint.h> is present, <boost/stdint.h> can make
+// good use of it, so a flag is supplied (signalling
+// presence; thus the default is not present, conforming
+// to the current C++ standard).
+
+# if defined(__hpux) || defined(__FreeBSD__) || defined(__IBMCPP__)
+# include <inttypes.h>
+# else
+# include <stdint.h>
+# endif
+
+namespace boost_has_stdint_h{
+
+int test()
+{
+ int8_t i = 0;
+#ifndef __QNX__
+ // QNX has these under non-standard names, our cstdint.hpp will find them however:
+ int_fast8_t j = 0;
+ int_least8_t k = 0;
+ (void)j;
+ (void)k;
+#endif
+ (void)i;
+
+ return 0;
+}
+
+}
+
+
+
+
+
+
+
diff --git a/test/boost_has_stlp_use_facet.ipp b/test/boost_has_stlp_use_facet.ipp
new file mode 100644
index 0000000..5b61b74
--- /dev/null
+++ b/test/boost_has_stlp_use_facet.ipp
@@ -0,0 +1,31 @@
+// (C) Copyright John Maddock 2001.
+// 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 most recent version.
+
+// MACRO: BOOST_HAS_STLP_USE_FACET
+// TITLE: STLport version of use_facet
+// DESCRIPTION: The standard library lacks a conforming std::use_facet,
+// but has a workaound class-version that does the job.
+// This is primarily for the STLport std lib.
+
+#include <locale>
+
+
+namespace boost_has_stlp_use_facet{
+
+int test()
+{
+ std::locale l;
+ const std::ctype<char>& ct = *std::_Use_facet<std::ctype<char> >(l);
+ return 0;
+}
+
+}
+
+
+
+
+
diff --git a/test/boost_has_unistd_h.ipp b/test/boost_has_unistd_h.ipp
new file mode 100644
index 0000000..b082c4f
--- /dev/null
+++ b/test/boost_has_unistd_h.ipp
@@ -0,0 +1,26 @@
+// (C) Copyright John Maddock 2001.
+// 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 most recent version.
+
+// MACRO: BOOST_HAS_UNISTD_H
+// TITLE: <unistd.h>
+// DESCRIPTION: The Platform provides <unistd.h>.
+
+#include <unistd.h>
+
+namespace boost_has_unistd_h{
+
+int test()
+{
+ return 0;
+}
+
+}
+
+
+
+
+
diff --git a/test/boost_has_variadic_tmpl.ipp b/test/boost_has_variadic_tmpl.ipp
new file mode 100644
index 0000000..539c512
--- /dev/null
+++ b/test/boost_has_variadic_tmpl.ipp
@@ -0,0 +1,21 @@
+// Copyright (C) 2007 Douglas Gregor
+// 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 most recent version.
+
+// MACRO: BOOST_HAS_VARIADIC_TMPL
+// TITLE: variadic templates
+// DESCRIPTION: The compiler supports C++0x variadic templates
+
+namespace boost_has_variadic_tmpl {
+
+template<typename... Elements> struct tuple {};
+
+int test()
+{
+ return 0;
+}
+
+}
diff --git a/test/boost_has_vc6_mem_templ.ipp b/test/boost_has_vc6_mem_templ.ipp
new file mode 100644
index 0000000..fbce170
--- /dev/null
+++ b/test/boost_has_vc6_mem_templ.ipp
@@ -0,0 +1,58 @@
+// (C) Copyright John Maddock 2001.
+// 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 most recent version.
+
+// MACRO: BOOST_MSVC6_MEMBER_TEMPLATES
+// TITLE: microsoft member templates
+// DESCRIPTION: Microsoft Visual C++ 6.0 has enough member
+// template idiosyncrasies (being polite) that
+// BOOST_NO_MEMBER_TEMPLATES is defined for this compiler.
+// BOOST_MSVC6_MEMBER_TEMPLATES is defined to allow
+// compiler specific workarounds.
+#ifndef BOOST_NESTED_TEMPLATE
+#define BOOST_NESTED_TEMPLATE template
+#endif
+
+namespace boost_msvc6_member_templates{
+
+template <class T>
+struct foo
+{
+ template <class U>
+ struct nested
+ {
+ typedef foo<U> other;
+ };
+ template <class U>
+ void mfoo(const U&)
+ {
+ }
+};
+
+template <class T>
+void vc6_mem_test(T i)
+{
+ foo<double> f1;
+ typedef foo<T> ifoo;
+ f1.mfoo(i);
+ typedef typename ifoo::BOOST_NESTED_TEMPLATE nested<double> bound_t;
+ typedef typename bound_t::other other;
+ other o;
+ (void)o;
+}
+
+int test()
+{
+ int i = 0;
+ vc6_mem_test(i);
+ return 0;
+}
+
+}
+
+
+
+
diff --git a/test/boost_has_vc_iterator.ipp b/test/boost_has_vc_iterator.ipp
new file mode 100644
index 0000000..e2fd5a6
--- /dev/null
+++ b/test/boost_has_vc_iterator.ipp
@@ -0,0 +1,40 @@
+// (C) Copyright John Maddock 2001.
+// 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 most recent version.
+
+// MACRO: BOOST_MSVC_STD_ITERATOR
+// TITLE: microsoft's version of std::iterator
+// DESCRIPTION: Microsoft's broken version of std::iterator
+// is being used.
+
+#include <iterator>
+
+namespace boost_msvc_std_iterator{
+
+int test()
+{
+ typedef std::iterator<
+ std::random_access_iterator_tag,
+ int
+ > iterator_type_2;
+ typedef std::reverse_iterator<const char*, const char> r_it;
+
+ iterator_type_2::value_type v2 = 0;
+ iterator_type_2::iterator_category cat2;
+ //
+ // suppress some warnings:
+ //
+ (void)v2;
+ (void)cat2;
+
+ return 0;
+}
+
+}
+
+
+
+
diff --git a/test/boost_has_winthreads.ipp b/test/boost_has_winthreads.ipp
new file mode 100644
index 0000000..28ebff0
--- /dev/null
+++ b/test/boost_has_winthreads.ipp
@@ -0,0 +1,34 @@
+// (C) Copyright John Maddock 2001.
+// 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 most recent version.
+
+// MACRO: BOOST_HAS_WINTHREADS
+// TITLE: MS Windows threads
+// DESCRIPTION: The platform supports MS Windows style threads.
+
+#include <windows.h>
+
+
+namespace boost_has_winthreads{
+
+int test()
+{
+ HANDLE h = CreateMutex(0, 0, 0);
+ if(h != NULL)
+ {
+ WaitForSingleObject(h, INFINITE);
+ ReleaseMutex(h);
+ CloseHandle(h);
+ }
+ return 0;
+}
+
+}
+
+
+
+
+
diff --git a/test/boost_no_adl_barrier.ipp b/test/boost_no_adl_barrier.ipp
new file mode 100644
index 0000000..4065df0
--- /dev/null
+++ b/test/boost_no_adl_barrier.ipp
@@ -0,0 +1,38 @@
+// (C) Copyright John Maddock 2008.
+// 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 most recent version.
+
+// MACRO: BOOST_NO_ADL_BARRIER
+// TITLE: Working ADL barriers.
+// DESCRIPTION: If the compiler correctly handles ADL.
+
+namespace boost_no_adl_barrier{
+
+namespace xxx {
+ namespace nested {
+ struct aaa {};
+ }
+ void begin(nested::aaa) {}
+}
+
+namespace nnn {
+ void begin(xxx::nested::aaa) {}
+}
+
+int test()
+{
+ using namespace nnn;
+ xxx::nested::aaa a;
+ begin(a); // ambiguous error in msvc-9.0
+
+ return 0;
+}
+
+}
+
+
+
+
diff --git a/test/boost_no_arg_dep_lookup.ipp b/test/boost_no_arg_dep_lookup.ipp
new file mode 100644
index 0000000..d934d44
--- /dev/null
+++ b/test/boost_no_arg_dep_lookup.ipp
@@ -0,0 +1,37 @@
+// (C) Copyright John Maddock 2001.
+// 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 most recent version.
+
+// MACRO: BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
+// TITLE: Koenig lookup
+// DESCRIPTION: Compiler does not implement
+// argument-dependent lookup (also named Koenig lookup);
+// see std::3.4.2 [basic.koenig.lookup]
+
+
+namespace boost_no_argument_dependent_lookup{
+
+namespace foobar{
+
+struct test{};
+
+void call_test(const test&)
+{}
+
+}
+
+int test()
+{
+ foobar::test t;
+ call_test(t);
+ return 0;
+}
+
+
+}
+
+
+
diff --git a/test/boost_no_array_type_spec.ipp b/test/boost_no_array_type_spec.ipp
new file mode 100644
index 0000000..3048669
--- /dev/null
+++ b/test/boost_no_array_type_spec.ipp
@@ -0,0 +1,30 @@
+// (C) Copyright John Maddock 2001.
+// (C) Copyright Aleksey Gurtovoy 2003.
+// 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 most recent version.
+
+// MACRO: BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS
+// TITLE: template specialisations of array types
+// DESCRIPTION: If the compiler cannot handle template specialisations
+// for array types
+
+
+namespace boost_no_array_type_specializations{
+
+template< typename T > struct is_array
+{
+};
+
+template< typename T, int N > struct is_array< T[N] >
+{
+};
+
+int test()
+{
+ return 0;
+}
+
+}
diff --git a/test/boost_no_auto_declarations.ipp b/test/boost_no_auto_declarations.ipp
new file mode 100644
index 0000000..fa2fe26
--- /dev/null
+++ b/test/boost_no_auto_declarations.ipp
@@ -0,0 +1,26 @@
+// Copyright (C) 2009 Andrey Semashev
+// Copyright (C) 2017 Dynatrace
+// 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 most recent version.
+
+// MACRO: BOOST_NO_CXX11_AUTO_DECLARATIONS
+// TITLE: C++0x auto declarators unavailable
+// DESCRIPTION: The compiler does not support C++0x declarations of variables with automatically deduced type
+
+namespace boost_no_cxx11_auto_declarations {
+
+void check_f(short&)
+{
+}
+
+int test()
+{
+ auto x = static_cast<short>(10);
+ check_f(x);
+ return 0;
+}
+
+}
diff --git a/test/boost_no_auto_multidecl.ipp b/test/boost_no_auto_multidecl.ipp
new file mode 100644
index 0000000..c55791d
--- /dev/null
+++ b/test/boost_no_auto_multidecl.ipp
@@ -0,0 +1,26 @@
+// Copyright (C) 2009 Andrey Semashev
+// Copyright (C) 2017 Dynatrace
+// 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 most recent version.
+
+// MACRO: BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
+// TITLE: C++0x auto multideclarators unavailable
+// DESCRIPTION: The compiler does not support C++0x declarations of series of variables with automatically deduced type
+
+namespace boost_no_cxx11_auto_multideclarations {
+
+void check_f(short&, short*&)
+{
+}
+
+int test()
+{
+ auto x = static_cast<short>(10), *y = &x;
+ check_f(x, y);
+ return 0;
+}
+
+}
diff --git a/test/boost_no_auto_ptr.ipp b/test/boost_no_auto_ptr.ipp
new file mode 100644
index 0000000..c86669c
--- /dev/null
+++ b/test/boost_no_auto_ptr.ipp
@@ -0,0 +1,53 @@
+// (C) Copyright John Maddock 2001.
+// 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 most recent version.
+
+// MACRO: BOOST_NO_AUTO_PTR
+// TITLE: std::auto_ptr
+// DESCRIPTION: If the compiler / library supplies non-standard or broken
+// std::auto_ptr.
+
+#include <memory>
+
+namespace boost_no_auto_ptr{
+
+template <class T>
+class my_ptr
+{
+ T* p;
+public:
+ my_ptr(std::auto_ptr<T>& r)
+ {
+ p = r.release();
+ }
+ my_ptr& operator=(std::auto_ptr<T>& r)
+ {
+ delete p;
+ p = r.release();
+ return *this;
+ }
+ ~my_ptr()
+ {
+ delete p;
+ }
+};
+
+
+int test()
+{
+ std::auto_ptr<int> ap1(new int);
+ my_ptr<int> mp(ap1);
+ std::auto_ptr<int> ap2(new int);
+ mp = ap2;
+
+ return 0;
+}
+
+}
+
+
+
+
diff --git a/test/boost_no_bcb_partial_spec.ipp b/test/boost_no_bcb_partial_spec.ipp
new file mode 100644
index 0000000..e78877c
--- /dev/null
+++ b/test/boost_no_bcb_partial_spec.ipp
@@ -0,0 +1,53 @@
+// (C) Copyright Terje Slettebo 2002.
+// 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)
+
+
+// MACRO: BOOST_BCB_PARTIAL_SPECIALIZATION_BUG
+// TITLE: Full partial specialization support.
+// DESCRIPTION: Borland C++ Builder has some rather specific partial
+// specialisation bugs which this code tests for.
+
+
+#include <vector>
+
+namespace boost_bcb_partial_specialization_bug{
+
+
+template<class T1,class T2>
+class Test
+{
+};
+
+template<class T1,class T2>
+class Test<std::vector<T1>,T2>
+{
+};
+
+template<class T>
+class Test<std::vector<int>,T>
+{
+};
+
+template <class T>
+struct is_const{};
+template <class T>
+struct is_const<T const>{};
+
+int test()
+{
+ Test<std::vector<int>,double> v;
+ is_const<const int> ci;
+ (void)v; // warning suppression
+ (void)ci;
+ return 0;
+}
+
+
+}
+
+
+
+
+
diff --git a/test/boost_no_char16_t.ipp b/test/boost_no_char16_t.ipp
new file mode 100644
index 0000000..4efff95
--- /dev/null
+++ b/test/boost_no_char16_t.ipp
@@ -0,0 +1,32 @@
+
+// (C) Copyright Beman Dawes 2008
+
+// 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_CXX11_CHAR16_T
+// TITLE: C++0x char16_t unavailable
+// DESCRIPTION: The compiler does not support C++0x char16_t
+
+namespace boost_no_cxx11_char16_t {
+
+// Microsoft VC++ 2010, and possibly other compilers, provides
+// a typedef for char16_t rather than a new type. We want that
+// to be an error, so provide an overloaded function that will
+// be ambiguous if char16_t is just a typedef.
+void f(const char16_t*){}
+void f(const unsigned short*){}
+void f(const unsigned int*){}
+void f(const unsigned long*){}
+
+int test()
+{
+ const char16_t p(0);
+ f(&p);
+ return 0;
+}
+
+}
diff --git a/test/boost_no_char32_t.ipp b/test/boost_no_char32_t.ipp
new file mode 100644
index 0000000..9778bff
--- /dev/null
+++ b/test/boost_no_char32_t.ipp
@@ -0,0 +1,31 @@
+// (C) Copyright Beman Dawes 2008
+
+// 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_CXX11_CHAR32_T
+// TITLE: C++0x char32_t unavailable
+// DESCRIPTION: The compiler does not support C++0x char32_t
+
+namespace boost_no_cxx11_char32_t {
+
+// Microsoft VC++ 2010, and possibly other compilers, provides
+// a typedef for char32_t rather than a new type. We want that
+// to be an error, so provide an overloaded function that will
+// be ambiguous if char16_t is just a typedef.
+void f(const char32_t*){}
+void f(const unsigned short*){}
+void f(const unsigned int*){}
+void f(const unsigned long*){}
+
+int test()
+{
+ const char32_t p(0);
+ f(&p);
+ return 0;
+}
+
+}
diff --git a/test/boost_no_com_value_init.ipp b/test/boost_no_com_value_init.ipp
new file mode 100644
index 0000000..47e9ff5
--- /dev/null
+++ b/test/boost_no_com_value_init.ipp
@@ -0,0 +1,1016 @@
+// (C) Copyright Niels Dekker 2010.
+// 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 most recent version.
+
+// MACRO: BOOST_NO_COMPLETE_VALUE_INITIALIZATION
+// TITLE: No complete value-initialization
+// DESCRIPTION: The C++ compiler does not to have implemented value-initialization completely.
+// See also boost/libs/utility/value_init.htm#compiler_issues
+
+#include <iostream>
+
+// This test checks various forms of value-initialization:
+// - doing subobject initialization inside a constructor
+// - creating a temporary object by T()
+// - creating a heap object by doing new T()
+// It checks various DefaultConstructible types, including fundamental types,
+// enum, union, pointer types, array types, POD and non-POD class types. For
+// each type of object, a helper function is_value_initialized(const T&) tells
+// whether the object is value-initialized.
+//
+// Note: It appeared insufficient to just check a single POD and a single
+// non-POD class type, because some compilers correctly value-initialize some
+// POD and some non-POD objects, while failing to value-initialize others.
+//
+// The test returns the number of encountered value-initialization failures.
+
+namespace boost_no_complete_value_initialization
+{
+ enum enum_type { negative_number = -1, magic_number = 42 };
+
+ class incomplete_class;
+
+ typedef int (*function_ptr_type)(int);
+ typedef int (incomplete_class::*member_function_ptr_type)(int);
+
+ // A POD struct.
+ struct pod_struct
+ {
+ enum_type e;
+ bool b;
+ char c;
+ unsigned char uc;
+ short s;
+ int i;
+ unsigned u;
+ long l;
+ float f;
+ double d;
+ long double ld;
+ void* p;
+ };
+
+ bool is_value_initialized(const pod_struct& arg)
+ {
+ return
+ arg.b == 0 &&
+ arg.e == 0 &&
+ arg.c == 0 &&
+ arg.uc == 0 &&
+ arg.s == 0 &&
+ arg.i == 0 &&
+ arg.u == 0 &&
+ arg.l == 0 &&
+ arg.f == 0 &&
+ arg.d == 0 &&
+ arg.p == 0;
+ }
+
+ // A POD struct derived from another POD struct.
+ struct derived_pod_struct: pod_struct
+ {
+ int derived_data;
+ };
+
+ bool is_value_initialized(const derived_pod_struct& arg)
+ {
+ const pod_struct& base_subobject = arg;
+ return arg.derived_data == 0 && is_value_initialized(base_subobject);
+ }
+
+
+ struct empty_struct
+ {
+ };
+
+
+ // A POD aggregate struct derived from an empty struct.
+ // Similar to struct Foo1 from Microsoft Visual C++ bug report 484295,
+ // "VC++ does not value-initialize members of derived classes without
+ // user-declared constructor", reported in 2009 by Sylvester Hesp:
+ // https://connect.microsoft.com/VisualStudio/feedback/details/484295
+ struct derived_struct: empty_struct
+ {
+ int data;
+ };
+
+ bool is_value_initialized(const derived_struct& arg)
+ {
+ return arg.data == 0;
+ }
+
+
+ // A struct, having a bit-field.
+ struct bit_field_struct
+ {
+ bool b : 1;
+ char c : 7;
+ unsigned u: 8 * sizeof(unsigned) - 1;
+ };
+
+ bool is_value_initialized(const bit_field_struct& arg)
+ {
+ return arg.b == false && arg.c == '\0'&& arg.u == 0U;
+ }
+
+ // A struct, having a function pointer.
+ struct function_ptr_struct
+ {
+ function_ptr_type data;
+ };
+
+ bool is_value_initialized(const function_ptr_struct& arg)
+ {
+ return arg.data == 0;
+ }
+
+ // A struct, having a member function pointer.
+ struct member_function_ptr_struct
+ {
+ member_function_ptr_type data;
+ };
+
+ bool is_value_initialized(const member_function_ptr_struct& arg)
+ {
+ return arg.data == 0;
+ }
+
+ struct int_pair_struct
+ {
+ int first;
+ int second;
+ };
+
+ typedef int int_pair_struct::*ptr_to_member_type;
+
+ struct ptr_to_member_struct
+ {
+ ptr_to_member_type data;
+ };
+
+ bool is_value_initialized(const ptr_to_member_struct& arg)
+ {
+ return arg.data == 0;
+ }
+
+ // A struct, having an int. Equivalent to the struct TData, from CodeGear bug
+ // report 51854, "Value-initialization: POD struct should be zero-initialized",
+ // reported by me (Niels Dekker, LKEB) in 2007:
+ // http://qc.embarcadero.com/wc/qcmain.aspx?d=51854
+ struct int_struct
+ {
+ int data;
+ };
+
+ bool is_value_initialized(const int_struct& arg)
+ {
+ return arg.data == 0;
+ }
+
+
+ // A struct, having an int_struct.
+ struct int_struct_holder
+ {
+ int_struct data;
+ };
+
+ bool is_value_initialized(const int_struct_holder& arg)
+ {
+ return is_value_initialized(arg.data);
+ }
+
+
+ // A struct derived from int_struct.
+ struct derived_int_struct: int_struct
+ {
+ };
+
+ bool is_value_initialized(const derived_int_struct& arg)
+ {
+ return arg.data == 0;
+ }
+
+
+ struct char_array_struct
+ {
+ char data[42];
+ };
+
+ bool is_value_initialized(const char_array_struct& arg)
+ {
+ for ( unsigned i = 0; i < sizeof(arg.data); ++i)
+ {
+ if ( arg.data[i] != 0 )
+ {
+ return false;
+ }
+ }
+ return true;
+ }
+
+
+ class private_int_holder
+ {
+ private:
+ int m_data;
+
+ friend bool is_value_initialized(const private_int_holder& arg)
+ {
+ return arg.m_data == 0;
+ }
+ };
+
+
+ // Equivalent to the Stats class from GCC Bug 33916,
+ // "Default constructor fails to initialize array members", reported in 2007 by
+ // Michael Elizabeth Chastain: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33916
+ class private_int_array_pair
+ {
+ friend bool is_value_initialized(const private_int_array_pair& arg);
+ private:
+ int first[12];
+ int second[12];
+ };
+
+ bool is_value_initialized(const private_int_array_pair& arg)
+ {
+ for ( unsigned i = 0; i < 12; ++i)
+ {
+ if ( (arg.first[i] != 0) || (arg.second[i] != 0) )
+ {
+ return false;
+ }
+ }
+ return true;
+ }
+
+
+ union pod_struct_and_int_union
+ {
+ pod_struct first;
+ int second;
+ };
+
+ bool is_value_initialized(const pod_struct_and_int_union& arg)
+ {
+ // When a union is zero-initialized, its first non-static
+ // named data member is zero-initialized ([dcl.init]).
+ return is_value_initialized(arg.first);
+ }
+
+
+ union int_and_pod_struct_union
+ {
+ int first;
+ pod_struct second;
+ };
+
+ bool is_value_initialized(const int_and_pod_struct_union& arg)
+ {
+ return arg.first == 0;
+ }
+
+
+ // A class that holds a "magic" enum value.
+ // Note: This is not a POD class, because it has a user-defined
+ // default constructor.
+ class enum_holder
+ {
+ enum_type m_enum;
+ public:
+
+ enum_holder()
+ :
+ m_enum(magic_number)
+ {
+ }
+
+ bool is_value_initialized() const
+ {
+ return m_enum == magic_number;
+ }
+ };
+
+ bool is_value_initialized(const enum_holder& arg)
+ {
+ return arg.is_value_initialized();
+ }
+
+
+ // An aggregate struct of a non-POD class and an int.
+ // Similar to struct A from Microsoft Visual C++ bug report 100744,
+ // "Value-initialization in new-expression", reported in 2005 by
+ // Pavel Kuznetsov (MetaCommunications Engineering):
+ // https://connect.microsoft.com/VisualStudio/feedback/details/100744
+ struct enum_holder_and_int
+ {
+ enum_holder e;
+ int i;
+ };
+
+ bool is_value_initialized(const enum_holder_and_int& arg)
+ {
+ return arg.e.is_value_initialized() && arg.i == 0;
+ }
+
+ class user_defined_copy_constructor_holder
+ {
+ public:
+ int data;
+
+ user_defined_copy_constructor_holder()
+ :
+ data(0)
+ {
+ }
+
+ user_defined_copy_constructor_holder(const user_defined_copy_constructor_holder& arg)
+ :
+ data(arg.data)
+ {
+ }
+ };
+
+ // An aggregate struct that has a data member which has a user-defined
+ // copy constructor and a data member of a scalar type.
+ // Similar to struct B from Microsoft Visual C++ bug report 499606,
+ // "Presence of copy constructor breaks member class initialization",
+ // reported in 2009 by Alex Vakulenko:
+ // https://connect.microsoft.com/VisualStudio/feedback/details/499606
+ struct user_defined_copy_constructor_holder_and_int
+ {
+ user_defined_copy_constructor_holder first;
+ int second;
+ };
+
+ bool is_value_initialized(const user_defined_copy_constructor_holder_and_int& arg)
+ {
+ return arg.first.data == 0 && arg.second == 0;
+ }
+
+
+ // An class that has a private and a protected int data member.
+ class private_and_protected_int
+ {
+ private:
+ int private_int;
+ protected:
+ int protected_int;
+ public:
+ friend bool is_value_initialized(const private_and_protected_int& arg)
+ {
+ return arg.private_int == 0 && arg.protected_int == 0;
+ }
+ };
+
+
+ class user_defined_destructor_holder
+ {
+ public:
+ int i;
+ ~user_defined_destructor_holder()
+ {
+ }
+ };
+
+ bool is_value_initialized(const user_defined_destructor_holder& arg)
+ {
+ return arg.i == 0;
+ }
+
+
+ class virtual_destructor_holder
+ {
+ public:
+ int i;
+ virtual ~virtual_destructor_holder()
+ {
+ }
+ };
+
+ bool is_value_initialized(const virtual_destructor_holder& arg)
+ {
+ return arg.i == 0;
+ }
+
+
+ // A class that is not a POD type.
+ class non_pod_class
+ {
+ private:
+ enum_holder m_enum_holder;
+
+ public:
+ int i;
+
+ virtual bool is_value_initialized() const
+ {
+ return m_enum_holder.is_value_initialized() && i == 0;
+ }
+
+ virtual ~non_pod_class() {}
+ };
+
+ bool is_value_initialized(const non_pod_class& arg)
+ {
+ return arg.is_value_initialized();
+ }
+
+
+ typedef char _2d_char_array_type[3][4];
+
+ bool is_value_initialized(const _2d_char_array_type& arg)
+ {
+ for(unsigned i = 0; i < sizeof(_2d_char_array_type); ++i)
+ {
+ if ((*arg)[i] != 0)
+ {
+ return false;
+ }
+ }
+ return true;
+ }
+
+ typedef char _3d_char_array_type[5][6][7];
+
+ bool is_value_initialized(const _3d_char_array_type& arg)
+ {
+ for(unsigned i = 0; i < sizeof(_3d_char_array_type); ++i)
+ {
+ if ((**arg)[i] != 0)
+ {
+ return false;
+ }
+ }
+ return true;
+ }
+
+
+
+ // Tells whether an object of a scalar type T is value-initialized.
+ template <class T>
+ bool is_value_initialized(const T& arg)
+ {
+ return arg == 0;
+ }
+
+
+ // Wraps a heap object that it has allocated by doing new T().
+ template <class T>
+ class heap_object_wrapper
+ {
+ private:
+ T* const m_ptr;
+
+ // The following function is intentionally left unimplemented
+ // (as if deleted, "= delete", in C++0x):
+ void operator=(heap_object_wrapper);
+
+ public:
+ heap_object_wrapper()
+ :
+ m_ptr(new T())
+ {
+ }
+
+ ~heap_object_wrapper()
+ {
+ delete m_ptr;
+ }
+
+ // The copy-constructor is intentionally left unimplemented.
+ heap_object_wrapper(const heap_object_wrapper&);
+
+ bool is_wrapped_object_value_initialized() const
+ {
+ return (m_ptr != 0) && is_value_initialized(*m_ptr);
+ }
+ };
+
+ template <class T>
+ bool is_value_initialized(const heap_object_wrapper<T>& arg)
+ {
+ return arg.is_wrapped_object_value_initialized();
+ }
+
+
+ // Returns zero when the specified object is value-initializated, and one otherwise.
+ // Prints a message to standard output if the value-initialization has failed.
+ template <class T>
+ unsigned failed_to_value_initialized(const T& object, const char *const object_name)
+ {
+ if ( is_value_initialized(object) )
+ {
+ return 0u;
+ }
+ else
+ {
+ std::cout << "Note: Failed to value-initialize " << object_name << '.' << std::endl;
+ return 1u;
+ }
+ }
+
+// A macro that passed both the name and the value of the specified object to
+// the function above here.
+#define FAILED_TO_VALUE_INITIALIZE(value) failed_to_value_initialized(value, #value)
+
+
+ // value_initializer initializes each of its data members by means
+ // of an empty set of parentheses, and allows checking whether
+ // each of them is indeed value-initialized, as specified by
+ // the C++ Standard ([dcl.init]).
+ //
+ // Note: its base class, int_struct, is there to try to reproduce GCC Bug 30111,
+ // "Value-initialization of POD base class doesn't initialize members", reported
+ // by Jonathan Wakely in 2006: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=30111
+ class value_initializer: private int_struct
+ {
+ private:
+ enum_holder m_enum_holder;
+ enum_holder m_enum_holder_array[2];
+ enum_type m_enum;
+ enum_type m_enum_array[2];
+ bool m_bool;
+ bool m_bool_array[2];
+ char m_char;
+ char m_char_array[2];
+ _2d_char_array_type m_2d_char_array;
+ _3d_char_array_type m_3d_char_array;
+ unsigned char m_unsigned_char;
+ unsigned char m_unsigned_char_array[2];
+ short m_short;
+ short m_short_array[2];
+ int m_int;
+ int m_int_array[2];
+ unsigned m_unsigned;
+ unsigned m_unsigned_array[2];
+ long m_long;
+ long m_long_array[2];
+ float m_float;
+ float m_float_array[2];
+ double m_double;
+ double m_double_array[2];
+ long double m_long_double;
+ long double m_long_double_array[2];
+ void* m_void_ptr;
+ void* m_void_ptr_array[2];
+ function_ptr_type m_function_ptr;
+ function_ptr_type m_function_ptr_array[2];
+ function_ptr_struct m_function_ptr_struct;
+ function_ptr_struct m_function_ptr_struct_array[2];
+ member_function_ptr_type m_member_function_ptr;
+ member_function_ptr_type m_member_function_ptr_array[2];
+ member_function_ptr_struct m_member_function_ptr_struct;
+ member_function_ptr_struct m_member_function_ptr_struct_array[2];
+ ptr_to_member_type m_ptr_to_member;
+ ptr_to_member_type m_ptr_to_member_array[2];
+ ptr_to_member_struct m_ptr_to_member_struct;
+ ptr_to_member_struct m_ptr_to_member_struct_array[2];
+ bit_field_struct m_bit_field_struct;
+ bit_field_struct m_bit_field_struct_array[2];
+ int_struct m_int_struct;
+ int_struct m_int_struct_array[2];
+ int_struct m_int_struct_holder;
+ int_struct m_int_struct_holder_array[2];
+ pod_struct m_pod_struct;
+ pod_struct m_pod_struct_array[2];
+ derived_pod_struct m_derived_pod_struct;
+ derived_pod_struct m_derived_pod_struct_array[2];
+ derived_struct m_derived_struct;
+ derived_struct m_derived_struct_array[2];
+ derived_int_struct m_derived_int_struct;
+ derived_int_struct m_derived_int_struct_array[2];
+ private_int_holder m_private_int_holder;
+ private_int_holder m_private_int_holder_array[2];
+ char_array_struct m_char_array_struct;
+ char_array_struct m_char_array_struct_array[2];
+ private_int_array_pair m_private_int_array_pair;
+ private_int_array_pair m_private_int_array_pair_array[2];
+ enum_holder_and_int m_enum_holder_and_int;
+ enum_holder_and_int m_enum_holder_and_int_array[2];
+ private_and_protected_int m_private_and_protected_int;
+ private_and_protected_int m_private_and_protected_int_array[2];
+ user_defined_copy_constructor_holder_and_int m_user_defined_copy_constructor_holder_and_int;
+ user_defined_copy_constructor_holder_and_int m_user_defined_copy_constructor_holder_and_int_array[2];
+ user_defined_destructor_holder m_user_defined_destructor_holder;
+ user_defined_destructor_holder m_user_defined_destructor_holder_array[2];
+ virtual_destructor_holder m_virtual_destructor_holder;
+ virtual_destructor_holder m_virtual_destructor_holder_array[2];
+ non_pod_class m_non_pod;
+ non_pod_class m_non_pod_array[2];
+ pod_struct_and_int_union m_pod_struct_and_int_union;
+ pod_struct_and_int_union m_pod_struct_and_int_union_array[2];
+ int_and_pod_struct_union m_int_and_pod_struct_union;
+ int_and_pod_struct_union m_int_and_pod_struct_union_array[2];
+
+ public:
+ // Default constructor. Tries to value-initialize its base subobject and all
+ // of its data.members.
+ value_initializer()
+ :
+ // Note: CodeGear/Borland may produce a warning, W8039, for each data member
+ // whose type is an array type, saying "Constructor initializer list ignored".
+ // If it does, it probably won't value-initialize those arrays, as reported
+ // by me (Niels Dekker, LKEB) in 2010, report 83751, "Value-initialization:
+ // arrays should have each element value-initialized",
+ // http://qc.embarcadero.com/wc/qcmain.aspx?d=83751
+ // On the other hand, Microsoft Visual C++ may produce warnings of type C4351,
+ // saying "new behavior: elements of array '...' will be default initialized",
+ // which is actually the right behavior!
+ int_struct(),
+ m_enum_holder(),
+ m_enum_holder_array(),
+ m_enum(),
+ m_enum_array(),
+ m_bool(),
+ m_bool_array(),
+ m_char(),
+ m_char_array(),
+ m_2d_char_array(),
+ m_3d_char_array(),
+ m_unsigned_char(),
+ m_unsigned_char_array(),
+ m_short(),
+ m_short_array(),
+ m_int(),
+ m_int_array(),
+ m_unsigned(),
+ m_unsigned_array(),
+ m_long(),
+ m_long_array(),
+ m_float(),
+ m_float_array(),
+ m_double(),
+ m_double_array(),
+ m_long_double(),
+ m_long_double_array(),
+ m_void_ptr(),
+ m_void_ptr_array(),
+ m_function_ptr(),
+ m_function_ptr_array(),
+ m_function_ptr_struct(),
+ m_function_ptr_struct_array(),
+ m_member_function_ptr(),
+ m_member_function_ptr_array(),
+ m_member_function_ptr_struct(),
+ m_member_function_ptr_struct_array(),
+ m_ptr_to_member(),
+ m_ptr_to_member_array(),
+ m_ptr_to_member_struct(),
+ m_ptr_to_member_struct_array(),
+ m_bit_field_struct(),
+ m_bit_field_struct_array(),
+ m_int_struct(),
+ m_int_struct_array(),
+ m_int_struct_holder(),
+ m_int_struct_holder_array(),
+ m_pod_struct(),
+ m_pod_struct_array(),
+ m_derived_pod_struct(),
+ m_derived_pod_struct_array(),
+ m_derived_struct(),
+ m_derived_struct_array(),
+ m_derived_int_struct(),
+ m_derived_int_struct_array(),
+ m_private_int_holder(),
+ m_private_int_holder_array(),
+ m_char_array_struct(),
+ m_char_array_struct_array(),
+ m_private_int_array_pair(),
+ m_private_int_array_pair_array(),
+ m_enum_holder_and_int(),
+ m_enum_holder_and_int_array(),
+ m_private_and_protected_int(),
+ m_private_and_protected_int_array(),
+ m_user_defined_copy_constructor_holder_and_int(),
+ m_user_defined_copy_constructor_holder_and_int_array(),
+ m_user_defined_destructor_holder(),
+ m_user_defined_destructor_holder_array(),
+ m_virtual_destructor_holder(),
+ m_virtual_destructor_holder_array(),
+ m_non_pod(),
+ m_non_pod_array(),
+ m_pod_struct_and_int_union(),
+ m_pod_struct_and_int_union_array(),
+ m_int_and_pod_struct_union(),
+ m_int_and_pod_struct_union_array()
+ {
+ }
+
+ // Returns the number of failures.
+ unsigned check_value_initialization_of_subobjects() const
+ {
+ const unsigned num_failures =
+ FAILED_TO_VALUE_INITIALIZE(int_struct::data) +
+ FAILED_TO_VALUE_INITIALIZE(m_enum_holder) +
+ FAILED_TO_VALUE_INITIALIZE(m_enum_holder_array[0]) +
+ FAILED_TO_VALUE_INITIALIZE(m_enum_holder_array[1]) +
+ FAILED_TO_VALUE_INITIALIZE(m_enum) +
+ FAILED_TO_VALUE_INITIALIZE(m_enum_array[0]) +
+ FAILED_TO_VALUE_INITIALIZE(m_enum_array[1]) +
+ FAILED_TO_VALUE_INITIALIZE(m_bool) +
+ FAILED_TO_VALUE_INITIALIZE(m_bool_array[0]) +
+ FAILED_TO_VALUE_INITIALIZE(m_bool_array[1]) +
+ FAILED_TO_VALUE_INITIALIZE(m_char) +
+ FAILED_TO_VALUE_INITIALIZE(m_char_array[0]) +
+ FAILED_TO_VALUE_INITIALIZE(m_char_array[1]) +
+ FAILED_TO_VALUE_INITIALIZE(m_2d_char_array) +
+ FAILED_TO_VALUE_INITIALIZE(m_3d_char_array) +
+ FAILED_TO_VALUE_INITIALIZE(m_unsigned_char) +
+ FAILED_TO_VALUE_INITIALIZE(m_unsigned_char_array[0]) +
+ FAILED_TO_VALUE_INITIALIZE(m_unsigned_char_array[1]) +
+ FAILED_TO_VALUE_INITIALIZE(m_short) +
+ FAILED_TO_VALUE_INITIALIZE(m_short_array[0]) +
+ FAILED_TO_VALUE_INITIALIZE(m_short_array[1]) +
+ FAILED_TO_VALUE_INITIALIZE(m_int) +
+ FAILED_TO_VALUE_INITIALIZE(m_int_array[0]) +
+ FAILED_TO_VALUE_INITIALIZE(m_int_array[1]) +
+ FAILED_TO_VALUE_INITIALIZE(m_unsigned) +
+ FAILED_TO_VALUE_INITIALIZE(m_unsigned_array[0]) +
+ FAILED_TO_VALUE_INITIALIZE(m_unsigned_array[1]) +
+ FAILED_TO_VALUE_INITIALIZE(m_long) +
+ FAILED_TO_VALUE_INITIALIZE(m_long_array[0]) +
+ FAILED_TO_VALUE_INITIALIZE(m_long_array[1]) +
+ FAILED_TO_VALUE_INITIALIZE(m_float) +
+ FAILED_TO_VALUE_INITIALIZE(m_float_array[0]) +
+ FAILED_TO_VALUE_INITIALIZE(m_float_array[1]) +
+ FAILED_TO_VALUE_INITIALIZE(m_double) +
+ FAILED_TO_VALUE_INITIALIZE(m_double_array[0]) +
+ FAILED_TO_VALUE_INITIALIZE(m_double_array[1]) +
+ FAILED_TO_VALUE_INITIALIZE(m_long_double) +
+ FAILED_TO_VALUE_INITIALIZE(m_long_double_array[0]) +
+ FAILED_TO_VALUE_INITIALIZE(m_long_double_array[1]) +
+ FAILED_TO_VALUE_INITIALIZE(m_void_ptr) +
+ FAILED_TO_VALUE_INITIALIZE(m_void_ptr_array[0]) +
+ FAILED_TO_VALUE_INITIALIZE(m_void_ptr_array[1]) +
+ FAILED_TO_VALUE_INITIALIZE(m_function_ptr) +
+ FAILED_TO_VALUE_INITIALIZE(m_function_ptr_array[0]) +
+ FAILED_TO_VALUE_INITIALIZE(m_function_ptr_array[1]) +
+ FAILED_TO_VALUE_INITIALIZE(m_function_ptr_struct) +
+ FAILED_TO_VALUE_INITIALIZE(m_function_ptr_struct_array[0]) +
+ FAILED_TO_VALUE_INITIALIZE(m_function_ptr_struct_array[1]) +
+ FAILED_TO_VALUE_INITIALIZE(m_member_function_ptr) +
+ FAILED_TO_VALUE_INITIALIZE(m_member_function_ptr_array[0]) +
+ FAILED_TO_VALUE_INITIALIZE(m_member_function_ptr_array[1]) +
+ FAILED_TO_VALUE_INITIALIZE(m_member_function_ptr_struct) +
+ FAILED_TO_VALUE_INITIALIZE(m_member_function_ptr_struct_array[0]) +
+ FAILED_TO_VALUE_INITIALIZE(m_member_function_ptr_struct_array[1]) +
+ FAILED_TO_VALUE_INITIALIZE(m_ptr_to_member) +
+ FAILED_TO_VALUE_INITIALIZE(m_ptr_to_member_array[0]) +
+ FAILED_TO_VALUE_INITIALIZE(m_ptr_to_member_array[1]) +
+ FAILED_TO_VALUE_INITIALIZE(m_ptr_to_member_struct) +
+ FAILED_TO_VALUE_INITIALIZE(m_ptr_to_member_struct_array[0]) +
+ FAILED_TO_VALUE_INITIALIZE(m_ptr_to_member_struct_array[1]) +
+ FAILED_TO_VALUE_INITIALIZE(m_bit_field_struct) +
+ FAILED_TO_VALUE_INITIALIZE(m_bit_field_struct_array[0]) +
+ FAILED_TO_VALUE_INITIALIZE(m_bit_field_struct_array[1]) +
+ FAILED_TO_VALUE_INITIALIZE(m_int_struct) +
+ FAILED_TO_VALUE_INITIALIZE(m_int_struct_array[0]) +
+ FAILED_TO_VALUE_INITIALIZE(m_int_struct_array[1]) +
+ FAILED_TO_VALUE_INITIALIZE(m_int_struct_holder) +
+ FAILED_TO_VALUE_INITIALIZE(m_int_struct_holder_array[0]) +
+ FAILED_TO_VALUE_INITIALIZE(m_int_struct_holder_array[1]) +
+ FAILED_TO_VALUE_INITIALIZE(m_pod_struct) +
+ FAILED_TO_VALUE_INITIALIZE(m_pod_struct_array[0]) +
+ FAILED_TO_VALUE_INITIALIZE(m_pod_struct_array[1]) +
+ FAILED_TO_VALUE_INITIALIZE(m_derived_pod_struct) +
+ FAILED_TO_VALUE_INITIALIZE(m_derived_pod_struct_array[0]) +
+ FAILED_TO_VALUE_INITIALIZE(m_derived_pod_struct_array[1]) +
+ FAILED_TO_VALUE_INITIALIZE(m_derived_struct) +
+ FAILED_TO_VALUE_INITIALIZE(m_derived_struct_array[0]) +
+ FAILED_TO_VALUE_INITIALIZE(m_derived_struct_array[1]) +
+ FAILED_TO_VALUE_INITIALIZE(m_derived_int_struct) +
+ FAILED_TO_VALUE_INITIALIZE(m_derived_int_struct_array[0]) +
+ FAILED_TO_VALUE_INITIALIZE(m_derived_int_struct_array[1]) +
+ FAILED_TO_VALUE_INITIALIZE(m_private_int_holder) +
+ FAILED_TO_VALUE_INITIALIZE(m_private_int_holder_array[0]) +
+ FAILED_TO_VALUE_INITIALIZE(m_private_int_holder_array[1]) +
+ FAILED_TO_VALUE_INITIALIZE(m_char_array_struct) +
+ FAILED_TO_VALUE_INITIALIZE(m_char_array_struct_array[0]) +
+ FAILED_TO_VALUE_INITIALIZE(m_char_array_struct_array[1]) +
+ FAILED_TO_VALUE_INITIALIZE(m_private_int_array_pair) +
+ FAILED_TO_VALUE_INITIALIZE(m_private_int_array_pair_array[0]) +
+ FAILED_TO_VALUE_INITIALIZE(m_private_int_array_pair_array[1]) +
+ FAILED_TO_VALUE_INITIALIZE(m_enum_holder_and_int) +
+ FAILED_TO_VALUE_INITIALIZE(m_enum_holder_and_int_array[0]) +
+ FAILED_TO_VALUE_INITIALIZE(m_enum_holder_and_int_array[1]) +
+ FAILED_TO_VALUE_INITIALIZE(m_private_and_protected_int) +
+ FAILED_TO_VALUE_INITIALIZE(m_private_and_protected_int_array[0]) +
+ FAILED_TO_VALUE_INITIALIZE(m_private_and_protected_int_array[1]) +
+ FAILED_TO_VALUE_INITIALIZE(m_user_defined_copy_constructor_holder_and_int) +
+ FAILED_TO_VALUE_INITIALIZE(m_user_defined_copy_constructor_holder_and_int_array[0]) +
+ FAILED_TO_VALUE_INITIALIZE(m_user_defined_copy_constructor_holder_and_int_array[1]) +
+ FAILED_TO_VALUE_INITIALIZE(m_user_defined_destructor_holder) +
+ FAILED_TO_VALUE_INITIALIZE(m_user_defined_destructor_holder_array[0]) +
+ FAILED_TO_VALUE_INITIALIZE(m_user_defined_destructor_holder_array[1]) +
+ FAILED_TO_VALUE_INITIALIZE(m_virtual_destructor_holder) +
+ FAILED_TO_VALUE_INITIALIZE(m_virtual_destructor_holder_array[0]) +
+ FAILED_TO_VALUE_INITIALIZE(m_virtual_destructor_holder_array[1]) +
+ FAILED_TO_VALUE_INITIALIZE(m_non_pod) +
+ FAILED_TO_VALUE_INITIALIZE(m_non_pod_array[0]) +
+ FAILED_TO_VALUE_INITIALIZE(m_non_pod_array[1]) +
+ FAILED_TO_VALUE_INITIALIZE(m_pod_struct_and_int_union) +
+ FAILED_TO_VALUE_INITIALIZE(m_pod_struct_and_int_union_array[0]) +
+ FAILED_TO_VALUE_INITIALIZE(m_pod_struct_and_int_union_array[1]) +
+ FAILED_TO_VALUE_INITIALIZE(m_int_and_pod_struct_union) +
+ FAILED_TO_VALUE_INITIALIZE(m_int_and_pod_struct_union_array[0]) +
+ FAILED_TO_VALUE_INITIALIZE(m_int_and_pod_struct_union_array[1]);
+ return num_failures;
+ }
+ };
+
+ // Checks value-initialization of a number of small temporary objects.
+ // Returns the number of failures.
+ unsigned check_value_initialization_of_temporaries()
+ {
+ typedef long double long_double_type;
+ typedef unsigned char unsigned_char_type;
+ typedef void* void_ptr_type;
+
+ const unsigned num_failures =
+ FAILED_TO_VALUE_INITIALIZE(enum_holder()) +
+ FAILED_TO_VALUE_INITIALIZE(enum_type()) +
+ FAILED_TO_VALUE_INITIALIZE(bool()) +
+ FAILED_TO_VALUE_INITIALIZE(char()) +
+ FAILED_TO_VALUE_INITIALIZE(unsigned_char_type()) +
+ FAILED_TO_VALUE_INITIALIZE(short()) +
+ FAILED_TO_VALUE_INITIALIZE(int()) +
+ FAILED_TO_VALUE_INITIALIZE(unsigned()) +
+ FAILED_TO_VALUE_INITIALIZE(long()) +
+ FAILED_TO_VALUE_INITIALIZE(float()) +
+ FAILED_TO_VALUE_INITIALIZE(double()) +
+ FAILED_TO_VALUE_INITIALIZE(long_double_type()) +
+ FAILED_TO_VALUE_INITIALIZE(void_ptr_type()) +
+ FAILED_TO_VALUE_INITIALIZE(bit_field_struct()) +
+ FAILED_TO_VALUE_INITIALIZE(function_ptr_type()) +
+ FAILED_TO_VALUE_INITIALIZE(function_ptr_struct()) +
+ FAILED_TO_VALUE_INITIALIZE(member_function_ptr_type()) +
+ FAILED_TO_VALUE_INITIALIZE(member_function_ptr_struct()) +
+ FAILED_TO_VALUE_INITIALIZE(ptr_to_member_type()) +
+ FAILED_TO_VALUE_INITIALIZE(ptr_to_member_struct()) +
+ FAILED_TO_VALUE_INITIALIZE(int_struct()) +
+ FAILED_TO_VALUE_INITIALIZE(int_struct_holder()) +
+ FAILED_TO_VALUE_INITIALIZE(pod_struct()) +
+ FAILED_TO_VALUE_INITIALIZE(derived_pod_struct()) +
+ FAILED_TO_VALUE_INITIALIZE(derived_struct()) +
+ FAILED_TO_VALUE_INITIALIZE(derived_int_struct()) +
+ FAILED_TO_VALUE_INITIALIZE(private_int_holder()) +
+ FAILED_TO_VALUE_INITIALIZE(char_array_struct()) +
+ FAILED_TO_VALUE_INITIALIZE(private_int_array_pair()) +
+ // IBM's XL V10.1.0.0 may fail to value-initialize a temporary of a non-POD
+ // type like enum_holder_and_int, virtual_destructor_holder, or non_pod_class,
+ // as appeared at the Boost Config/trunk regression page in April 2010.
+ // Michael Wong (IBM Canada Ltd) confirmed the issue to me (Niels Dekker, LKEB),
+ // and gave it high priority.
+ FAILED_TO_VALUE_INITIALIZE(enum_holder_and_int()) +
+ FAILED_TO_VALUE_INITIALIZE(private_and_protected_int()) +
+ FAILED_TO_VALUE_INITIALIZE(user_defined_copy_constructor_holder_and_int()) +
+ // The following line, doing user_defined_destructor_holder(), causes
+ // a compilation error on Embarcadero 2010 (Borland/CodeGear 6.21),
+ // as reported by me (Niels Dekker, LKEB) in 2010, bug report 83851,
+ // "Value-initialized temporary triggers internal backend error C1798",
+ // http://qc.embarcadero.com/wc/qcmain.aspx?d=83851
+ FAILED_TO_VALUE_INITIALIZE(user_defined_destructor_holder()) +
+ FAILED_TO_VALUE_INITIALIZE(virtual_destructor_holder()) +
+ FAILED_TO_VALUE_INITIALIZE(non_pod_class()) +
+ FAILED_TO_VALUE_INITIALIZE(pod_struct_and_int_union()) +
+ FAILED_TO_VALUE_INITIALIZE(int_and_pod_struct_union());
+ return num_failures;
+ }
+
+ // Checks value-initialization of small heap objects.
+ // Returns the number of failures.
+ unsigned check_value_initialization_of_heap_objects()
+ {
+ const unsigned num_failures =
+ FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<enum_holder>() ) +
+ FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<enum_type>() ) +
+ FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<bool>() ) +
+ FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<char>() ) +
+ FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<unsigned char>() ) +
+ FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<short>() ) +
+ FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<int>() ) +
+ FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<unsigned>() ) +
+ FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<long>() ) +
+ FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<float>() ) +
+ FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<double>() ) +
+ FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<long double>() ) +
+ FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<void*>() ) +
+ FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<function_ptr_type>() ) +
+ FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<function_ptr_struct>() ) +
+ FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<member_function_ptr_type>() ) +
+ FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<member_function_ptr_struct>() ) +
+ FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<ptr_to_member_type>() ) +
+ FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<ptr_to_member_struct>() ) +
+ FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<bit_field_struct>() ) +
+ FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<int_struct>() ) +
+ FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<int_struct>() ) +
+ FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<pod_struct>() ) +
+ FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<derived_pod_struct>() ) +
+ FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<derived_struct>() ) +
+ FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<derived_int_struct>() ) +
+ FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<char_array_struct>() ) +
+ FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<private_int_holder>() ) +
+ FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<private_int_array_pair>() ) +
+ FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<enum_holder_and_int>() ) +
+ FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<private_and_protected_int>() ) +
+ FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<user_defined_copy_constructor_holder_and_int>() ) +
+ FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<user_defined_destructor_holder>() ) +
+ FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<virtual_destructor_holder>() ) +
+ FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<non_pod_class>() ) +
+ FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<pod_struct_and_int_union>() ) +
+ FAILED_TO_VALUE_INITIALIZE( heap_object_wrapper<int_and_pod_struct_union>() );
+ return num_failures;
+ }
+
+ // Equivalent to the dirty_stack() function from GCC Bug 33916,
+ // "Default constructor fails to initialize array members", reported in 2007 by
+ // Michael Elizabeth Chastain: http://gcc.gnu.org/bugzilla/show_bug.cgi?id=33916
+ void dirty_stack()
+ {
+ unsigned char array_on_stack[sizeof(value_initializer) + 256];
+ for (unsigned i = 0; i < sizeof(array_on_stack); ++i)
+ {
+ array_on_stack[i] = 0x11;
+ }
+ }
+
+
+ // Checks value-initialization of the subobjects of a temporary object,
+ // an object on the stack, an object on the heap; furthermore it checks
+ // value-initialization of a number of smaller temporary objects and
+ // heap objects.
+ int test()
+ {
+ unsigned total_num_failures = 0;
+
+ dirty_stack();
+ const unsigned num_failures_of_subobjects_of_a_temporary =
+ value_initializer().check_value_initialization_of_subobjects();
+
+ total_num_failures += num_failures_of_subobjects_of_a_temporary;
+ if ( total_num_failures > 0 )
+ {
+ std::cout << "- Number of subobject initialization failures of a temporary: "
+ << num_failures_of_subobjects_of_a_temporary << std::endl;
+ }
+ dirty_stack();
+ value_initializer object_on_stack;
+ const unsigned num_failures_of_subobjects_on_stack =
+ object_on_stack.check_value_initialization_of_subobjects();
+
+ total_num_failures += num_failures_of_subobjects_on_stack;
+ if ( total_num_failures > 0 )
+ {
+ std::cout << "- Number of subobject initialization failures on the stack: "
+ << num_failures_of_subobjects_on_stack << std::endl;
+ }
+ const value_initializer* const ptr = new value_initializer();
+ const unsigned num_failures_of_subobjects_on_heap = ptr->check_value_initialization_of_subobjects();
+ delete ptr;
+
+ total_num_failures += num_failures_of_subobjects_on_heap;
+ if ( total_num_failures > 0 )
+ {
+ std::cout << "- Number of subobject initialization failures on the heap: "
+ << num_failures_of_subobjects_on_heap << std::endl;
+ }
+
+ dirty_stack();
+ const unsigned num_failures_of_temporaries = check_value_initialization_of_temporaries();
+
+ total_num_failures += num_failures_of_temporaries;
+ if ( total_num_failures > 0 )
+ {
+ std::cout << "- Number of initialization failures of temporary objects: "
+ << num_failures_of_temporaries << std::endl;
+ }
+
+ const unsigned num_failures_of_heap_objects = check_value_initialization_of_heap_objects();
+
+ total_num_failures += num_failures_of_heap_objects;
+ if ( total_num_failures > 0 )
+ {
+ std::cout << "- Number of failures of heap objects: "
+ << num_failures_of_heap_objects << std::endl;
+ }
+
+ if ( total_num_failures > 0 )
+ {
+ std::cout << "-- Total number of initialization failures ("
+ << num_failures_of_subobjects_of_a_temporary << '+'
+ << num_failures_of_subobjects_on_stack << '+'
+ << num_failures_of_subobjects_on_heap << '+'
+ << num_failures_of_temporaries << '+'
+ << num_failures_of_heap_objects << "): "
+ << total_num_failures
+ << "\nDetected by boost_no_complete_value_initialization::test() revision 32."
+ << std::endl;
+ }
+ return static_cast<int>(total_num_failures);
+ }
+
+} // End of namespace.
diff --git a/test/boost_no_constexpr.ipp b/test/boost_no_constexpr.ipp
new file mode 100644
index 0000000..35ac489
--- /dev/null
+++ b/test/boost_no_constexpr.ipp
@@ -0,0 +1,85 @@
+// (C) Copyright Beman Dawes 2008
+
+// 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_CXX11_CONSTEXPR
+// TITLE: C++0x constexpr unavailable
+// DESCRIPTION: The compiler does not support C++0x constexpr
+
+namespace boost_no_cxx11_constexpr {
+
+void quiet_warning(int){}
+
+constexpr int square(int x) { return x * x; } // from N2235
+
+// from 5.19:
+constexpr const int* addr(const int& ir) { return &ir; }
+static const int x = 5;
+constexpr const int* xp = addr(x);
+
+struct A
+{
+ constexpr A(int i) : val(i) { }
+ constexpr operator int()const { return val; }
+ constexpr operator long()const { return 43; }
+private:
+ int val;
+};
+
+template<int> struct X { };
+
+
+#if __cplusplus < 201400L
+// Some C++14 compilers reject this (clang), some C++11 compilers reject "constexpr const" (GCC-4.6)
+constexpr A a = 42;
+#else
+constexpr const A a = 42;
+#endif
+
+X<a> xx; // OK: unique conversion to int
+
+// virtual function
+struct B
+{
+ virtual void vf() {}
+};
+struct C : B
+{
+ constexpr C() {}
+};
+
+// aggregate initialization
+struct D
+{
+ int val[2];
+ constexpr D() : val() {}
+};
+
+// virtual base
+struct E
+{
+};
+struct F : virtual E
+{
+};
+constexpr F& f(F& out) { return out; }
+
+int test()
+{
+ int i = square(5);
+ quiet_warning(i);
+
+ switch (i)
+ {
+ case a:
+ break;
+ }
+
+ return 0;
+}
+
+}
diff --git a/test/boost_no_ctype_functions.ipp b/test/boost_no_ctype_functions.ipp
new file mode 100644
index 0000000..ec23d59
--- /dev/null
+++ b/test/boost_no_ctype_functions.ipp
@@ -0,0 +1,44 @@
+// (C) Copyright John Maddock 2001.
+// 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 most recent version.
+
+// MACRO: BOOST_NO_CTYPE_FUNCTIONS
+// TITLE: functions in <ctype.h>
+// DESCRIPTION: The Platform does not provide functions for the character-
+// classifying operations in <ctype.h>. Some platforms provide
+// macros and don't provide functions. Under C++ it's an error
+// to provide the macros at all, but that's a separate issue.
+
+#include <ctype.h>
+
+namespace boost_no_ctype_functions {
+
+extern "C" {
+ typedef int (* character_classify_function)(int);
+}
+
+void pass_function(character_classify_function)
+{
+}
+
+int test()
+{
+ pass_function(isalpha);
+ pass_function(isalnum);
+ pass_function(iscntrl);
+ pass_function(isdigit);
+ pass_function(isgraph);
+ pass_function(islower);
+ pass_function(isprint);
+ pass_function(ispunct);
+ pass_function(isspace);
+ pass_function(isupper);
+ pass_function(isxdigit);
+ return 0;
+}
+
+}
+
diff --git a/test/boost_no_cv_spec.ipp b/test/boost_no_cv_spec.ipp
new file mode 100644
index 0000000..d2fc631
--- /dev/null
+++ b/test/boost_no_cv_spec.ipp
@@ -0,0 +1,47 @@
+// (C) Copyright John Maddock 2001.
+// 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 most recent version.
+
+// MACRO: BOOST_NO_CV_SPECIALIZATIONS
+// TITLE: template specialisations of cv-qualified types
+// DESCRIPTION: If template specialisations for cv-qualified types
+// conflict with a specialisation for a cv-unqualififed type.
+
+
+namespace boost_no_cv_specializations{
+
+template <class T>
+struct is_int
+{
+};
+
+template <>
+struct is_int<int>
+{};
+
+template <>
+struct is_int<const int>
+{};
+
+template <>
+struct is_int<volatile int>
+{};
+
+template <>
+struct is_int<const volatile int>
+{};
+
+int test()
+{
+ return 0;
+}
+
+
+}
+
+
+
+
diff --git a/test/boost_no_cv_void_spec.ipp b/test/boost_no_cv_void_spec.ipp
new file mode 100644
index 0000000..c3bc254
--- /dev/null
+++ b/test/boost_no_cv_void_spec.ipp
@@ -0,0 +1,45 @@
+// (C) Copyright John Maddock 2001.
+// 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 most recent version.
+
+// MACRO: BOOST_NO_CV_VOID_SPECIALIZATIONS
+// TITLE: template specialisations of cv-qualified void
+// DESCRIPTION: If template specialisations for cv-void types
+// conflict with a specialisation for void.
+
+
+namespace boost_no_cv_void_specializations{
+
+template <class T>
+struct is_void
+{
+};
+
+template <>
+struct is_void<void>
+{};
+
+template <>
+struct is_void<const void>
+{};
+
+template <>
+struct is_void<volatile void>
+{};
+
+template <>
+struct is_void<const volatile void>
+{};
+
+int test()
+{
+ return 0;
+}
+
+}
+
+
+
diff --git a/test/boost_no_cwchar.ipp b/test/boost_no_cwchar.ipp
new file mode 100644
index 0000000..698dbd6
--- /dev/null
+++ b/test/boost_no_cwchar.ipp
@@ -0,0 +1,33 @@
+// (C) Copyright John Maddock 2001.
+// 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 most recent version.
+
+// MACRO: BOOST_NO_CWCHAR
+// TITLE: <wchar.h> and <cwchar>
+// DESCRIPTION: The Platform does not provide <wchar.h> and <cwchar>.
+
+#include <cwchar>
+#include <wchar.h>
+
+namespace boost_no_cwchar{
+
+int test()
+{
+ wchar_t c1[2] = { 0 };
+ wchar_t c2[2] = { 0 };
+ if(wcscmp(c1,c2) || wcslen(c1)) return -1;
+ //wcscpy(c1,c2);
+ wcsxfrm(c1,c2,0);
+ return 0;
+}
+
+}
+
+
+
+
+
+
diff --git a/test/boost_no_cwctype.ipp b/test/boost_no_cwctype.ipp
new file mode 100644
index 0000000..d6a7355
--- /dev/null
+++ b/test/boost_no_cwctype.ipp
@@ -0,0 +1,47 @@
+// (C) Copyright John Maddock 2001.
+// 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 most recent version.
+
+// MACRO: BOOST_NO_CWCTYPE
+// TITLE: <wctype.h> and <cwctype>
+// DESCRIPTION: The Platform does not provide <wctype.h> and <cwctype>.
+
+//
+// Note that some platforms put these prototypes in the wrong headers,
+// we have to include pretty well all the string headers on the chance that
+// one of them will contain what we want!
+//
+#include <cwctype>
+#include <wctype.h>
+#include <cwchar>
+#include <wchar.h>
+#include <cctype>
+#include <ctype.h>
+
+namespace boost_no_cwctype{
+
+int test()
+{
+ if(!(iswalpha(L'a') &&
+ iswcntrl(L'\r') &&
+ iswdigit(L'2') &&
+ iswlower(L'a') &&
+ iswpunct(L',') &&
+ iswspace(L' ') &&
+ iswupper(L'A') &&
+ iswxdigit(L'A')
+ )) return -1;
+ if(L'a' != towlower(L'A')) return -1;
+ return 0;
+}
+
+}
+
+
+
+
+
+
diff --git a/test/boost_no_cxx11_addressof.ipp b/test/boost_no_cxx11_addressof.ipp
new file mode 100644
index 0000000..4f0a5e3
--- /dev/null
+++ b/test/boost_no_cxx11_addressof.ipp
@@ -0,0 +1,28 @@
+// (C) Copyright John Maddock 2012
+// (C) Copyright Peter Dimov 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_CXX11_ADDRESSOF
+// TITLE: C++11 <memory> doesn't have a working std::addressof
+// DESCRIPTION: The compiler does not support the function std::addressof added to <memory>
+
+#include <memory>
+
+namespace boost_no_cxx11_addressof {
+
+void x3()
+{
+}
+
+int test()
+{
+ int x1, x2[3];
+ return std::addressof(x1) != &x1 || std::addressof(x2) != &x2 || std::addressof(x3) != &x3;
+}
+
+}
diff --git a/test/boost_no_cxx11_alignas.ipp b/test/boost_no_cxx11_alignas.ipp
new file mode 100644
index 0000000..afd428f
--- /dev/null
+++ b/test/boost_no_cxx11_alignas.ipp
@@ -0,0 +1,36 @@
+// (C) Copyright Andrey Semashev 2013
+
+// 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_CXX11_ALIGNAS
+// TITLE: C++11 alignas keyword.
+// DESCRIPTION: The compiler does not support the C++11 alignment specification with alignas keyword.
+
+namespace boost_no_cxx11_alignas {
+
+struct alignas(16) my_data1
+{
+ char data[10];
+};
+
+struct alignas(double) my_data2
+{
+ char data[16];
+};
+
+my_data1 dummy1[2];
+my_data2 dummy2;
+alignas(16) char dummy3[10];
+alignas(double) char dummy4[32];
+
+int test()
+{
+ // TODO: Test that the data is actually aligned on platforms with uintptr_t
+ return 0;
+}
+
+}
diff --git a/test/boost_no_cxx11_allocator.ipp b/test/boost_no_cxx11_allocator.ipp
new file mode 100644
index 0000000..84ec78e
--- /dev/null
+++ b/test/boost_no_cxx11_allocator.ipp
@@ -0,0 +1,44 @@
+// (C) Copyright John Maddock 2012
+
+// 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_CXX11_ALLOCATOR
+// TITLE: C++11 <memory> doesn't have C++0x allocator support
+// DESCRIPTION: The compiler does not support the C++11 allocator features added to <memory>
+
+#include <memory>
+
+namespace boost_no_cxx11_allocator {
+
+int test()
+{
+ std::pointer_traits<char*>* p = 0;
+ (void) p;
+ //std::pointer_safety s = std::relaxed;
+
+ //char* (*l_undeclare_reachable)(char *p) = std::undeclare_reachable;
+ //void (*l_declare_no_pointers)(char *p, size_t n) = std::declare_no_pointers;
+ //void (*l_undeclare_no_pointers)(char *p, size_t n) = std::undeclare_no_pointers;
+ //std::pointer_safety (*l_get_pointer_safety)() = std::get_pointer_safety;
+ //void* (*l_align)(std::size_t alignment, std::size_t size, void *&ptr, std::size_t& space) = std::align;
+ std::allocator_arg_t aat;
+ std::uses_allocator<int, std::allocator<int> > ua;
+ std::allocator_traits<std::allocator<int> > at;
+ std::allocator<int> ia;
+ std::allocator_traits<std::allocator<int> >::rebind_alloc<void*> ra(ia);
+ std::allocator<void*>* pva = &ra;
+ std::allocator_traits<std::allocator<int> >::rebind_traits<void*>::pointer pt;
+
+ (void)aat;
+ (void)ua;
+ (void)at;
+ (void)pva;
+ (void)pt;
+ return 0;
+}
+
+}
diff --git a/test/boost_no_cxx11_atomic_sp.ipp b/test/boost_no_cxx11_atomic_sp.ipp
new file mode 100644
index 0000000..42c9cb7
--- /dev/null
+++ b/test/boost_no_cxx11_atomic_sp.ipp
@@ -0,0 +1,36 @@
+// (C) Copyright John Maddock 2012
+
+// 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_CXX11_ATOMIC_SMART_PTR
+// TITLE: C++11 <memory> does not support atomic smart pointer operations
+// DESCRIPTION: The compiler does not support the C++11 atomic smart pointer features added to <memory>
+
+#include <memory>
+
+namespace boost_no_cxx11_atomic_smart_ptr {
+
+int test()
+{
+ std::shared_ptr<int> spi(new int), spi2(new int);
+ spi = std::static_pointer_cast<int>(spi);
+
+ atomic_is_lock_free(&spi);
+ atomic_load(&spi);
+ atomic_load_explicit(&spi, std::memory_order_relaxed);
+ atomic_store(&spi, spi2);
+ atomic_store_explicit(&spi, spi2, std::memory_order_relaxed);
+ atomic_exchange(&spi, spi2);
+ atomic_compare_exchange_weak(&spi, &spi2, spi);
+ atomic_compare_exchange_strong(&spi, &spi2, spi);
+ atomic_compare_exchange_weak_explicit(&spi, &spi2, spi, std::memory_order_relaxed, std::memory_order_relaxed);
+ atomic_compare_exchange_strong_explicit(&spi, &spi2, spi, std::memory_order_relaxed, std::memory_order_relaxed);
+
+ return 0;
+}
+
+}
diff --git a/test/boost_no_cxx11_defaulted_moves.ipp b/test/boost_no_cxx11_defaulted_moves.ipp
new file mode 100644
index 0000000..9bf2763
--- /dev/null
+++ b/test/boost_no_cxx11_defaulted_moves.ipp
@@ -0,0 +1,25 @@
+// (C) Copyright Andrzej Krzemienski 2018
+
+// 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_CXX11_DEFAULTED_MOVES
+// TITLE: C++0x defaulting of move constructor/assignment unavailable
+// DESCRIPTION: The compiler does not support C++0x defaulting of move constructor/assignment
+
+namespace boost_no_cxx11_defaulted_moves {
+
+ struct foo {
+ foo(foo&&) = default;
+ foo& operator=(foo&&) = default;
+ };
+
+ int test()
+ {
+ return 0;
+ }
+
+}
diff --git a/test/boost_no_cxx11_final.ipp b/test/boost_no_cxx11_final.ipp
new file mode 100644
index 0000000..0a00733
--- /dev/null
+++ b/test/boost_no_cxx11_final.ipp
@@ -0,0 +1,41 @@
+// (C) Copyright Agustin Berge 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_CXX11_FINAL
+// TITLE: C++11 final class-virt-specifier
+// DESCRIPTION: The compiler does not support the C++ class-virt-specifier final
+
+namespace boost_no_cxx11_final {
+
+struct X final {};
+
+struct abstract
+{
+ virtual int f() = 0;
+};
+
+struct derived : public abstract
+{
+ virtual int f() final
+ {
+ return 0;
+ }
+};
+
+int check(abstract* pa)
+{
+ return pa->f();
+}
+
+int test()
+{
+ derived d;
+ return check(&d);
+}
+
+}
diff --git a/test/boost_no_cxx11_hdr_array.ipp b/test/boost_no_cxx11_hdr_array.ipp
new file mode 100644
index 0000000..7bbead1
--- /dev/null
+++ b/test/boost_no_cxx11_hdr_array.ipp
@@ -0,0 +1,23 @@
+// (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_CXX11_HDR_ARRAY
+// TITLE: C++0x header <array> unavailable
+// DESCRIPTION: The standard library does not supply C++0x header <array>
+
+#include <array>
+
+namespace boost_no_cxx11_hdr_array {
+
+int test()
+{
+ std::array<int, 3> a = {{ 1, 2, 3 }};
+ return a.size() == 3 ? 0 : 1;
+}
+
+}
diff --git a/test/boost_no_cxx11_hdr_atomic.ipp b/test/boost_no_cxx11_hdr_atomic.ipp
new file mode 100644
index 0000000..171dcc3
--- /dev/null
+++ b/test/boost_no_cxx11_hdr_atomic.ipp
@@ -0,0 +1,92 @@
+// (C) Copyright John Maddock 2013
+
+// 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_CXX11_HDR_ATOMIC
+// TITLE: C++11 <atomic> header is either not present or too broken to be used
+// DESCRIPTION: The compiler does not support the C++11 header <atomic>
+
+#include <atomic>
+
+#if !defined(ATOMIC_BOOL_LOCK_FREE) || !defined(ATOMIC_CHAR_LOCK_FREE) || !defined(ATOMIC_CHAR16_T_LOCK_FREE) \
+ || !defined(ATOMIC_CHAR32_T_LOCK_FREE) || !defined(ATOMIC_WCHAR_T_LOCK_FREE) || !defined(ATOMIC_SHORT_LOCK_FREE)\
+ || !defined(ATOMIC_INT_LOCK_FREE) || !defined(ATOMIC_LONG_LOCK_FREE) || !defined(ATOMIC_LLONG_LOCK_FREE)\
+ || !defined(ATOMIC_POINTER_LOCK_FREE)
+# error "required macros not defined"
+#endif
+
+namespace boost_no_cxx11_hdr_atomic {
+
+int test()
+{
+ std::memory_order m = static_cast<std::memory_order>(std::memory_order_relaxed | std::memory_order_consume | std::memory_order_acquire | std::memory_order_release
+ | std::memory_order_acq_rel | std::memory_order_seq_cst);
+ (void)m;
+
+ std::atomic<int> a1;
+ std::atomic<unsigned> a2;
+ std::atomic<int*> a3;
+ a1.is_lock_free();
+ a1.store(1);
+ a1.load();
+ a1.exchange(2);
+ int v;
+ a1.compare_exchange_weak(v, 2, std::memory_order_relaxed, std::memory_order_relaxed);
+ a1.compare_exchange_strong(v, 2, std::memory_order_relaxed, std::memory_order_relaxed);
+ a1.fetch_add(2);
+ a1.fetch_sub(3);
+ a1.fetch_and(3);
+ a1.fetch_or(1);
+ a1.fetch_xor(1);
+ a1++;
+ ++a1;
+ a1--;
+ --a1;
+ a1 += 2;
+ a1 -= 2;
+ a1 &= 1;
+ a1 |= 2;
+ a1 ^= 3;
+
+ a2 = 0u;
+
+ a3.store(&v);
+ a3.fetch_add(1);
+ a3.fetch_sub(1);
+ ++a3;
+ --a3;
+ a3++;
+ a3--;
+ a3 += 1;
+ a3 -= 1;
+
+ std::atomic_is_lock_free(&a1);
+ // This produces linker errors on Mingw32 for some reason, probably not required anyway for most uses??
+ //std::atomic_init(&a1, 2);
+ std::atomic_store(&a1, 3);
+ std::atomic_store_explicit(&a1, 3, std::memory_order_relaxed);
+ std::atomic_load(&a1);
+ std::atomic_load_explicit(&a1, std::memory_order_relaxed);
+ std::atomic_exchange(&a1, 3);
+ std::atomic_compare_exchange_weak(&a1, &v, 2);
+ std::atomic_compare_exchange_strong(&a1, &v, 2);
+ std::atomic_compare_exchange_weak_explicit(&a1, &v, 2, std::memory_order_relaxed, std::memory_order_relaxed);
+ std::atomic_compare_exchange_strong_explicit(&a1, &v, 2, std::memory_order_relaxed, std::memory_order_relaxed);
+
+ std::atomic_flag f = ATOMIC_FLAG_INIT;
+ f.test_and_set(std::memory_order_relaxed);
+ f.test_and_set();
+ f.clear(std::memory_order_relaxed);
+ f.clear();
+
+ std::atomic_thread_fence(std::memory_order_relaxed);
+ std::atomic_signal_fence(std::memory_order_relaxed);
+
+ return 0;
+}
+
+}
diff --git a/test/boost_no_cxx11_hdr_chrono.ipp b/test/boost_no_cxx11_hdr_chrono.ipp
new file mode 100644
index 0000000..701b024
--- /dev/null
+++ b/test/boost_no_cxx11_hdr_chrono.ipp
@@ -0,0 +1,31 @@
+// (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_CXX11_HDR_CHRONO
+// TITLE: C++0x header <chrono> unavailable
+// DESCRIPTION: The standard library does not supply C++0x header <chrono>
+
+#include <chrono>
+
+namespace boost_no_cxx11_hdr_chrono {
+
+int test()
+{
+ using std::chrono::nanoseconds;
+ using std::chrono::microseconds;
+ using std::chrono::milliseconds;
+ using std::chrono::seconds;
+ using std::chrono::minutes;
+ using std::chrono::hours;
+ using std::chrono::system_clock;
+ using std::chrono::steady_clock;
+ using std::chrono::high_resolution_clock;
+ return 0;
+}
+
+}
diff --git a/test/boost_no_cxx11_hdr_codecvt.ipp b/test/boost_no_cxx11_hdr_codecvt.ipp
new file mode 100644
index 0000000..428fbb4
--- /dev/null
+++ b/test/boost_no_cxx11_hdr_codecvt.ipp
@@ -0,0 +1,29 @@
+// (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_CXX11_HDR_CODECVT
+// TITLE: C++0x header <codecvt> unavailable
+// DESCRIPTION: The standard library does not supply C++0x header <codecvt>
+
+#include <codecvt>
+#include <locale> // for wstring_convert
+
+namespace boost_no_cxx11_hdr_codecvt {
+
+int test()
+{
+ using std::codecvt_utf8;
+ using std::codecvt_utf16;
+ using std::codecvt_utf8_utf16;
+#ifndef BOOST_NO_CXX11_CHAR16_T
+ std::wstring_convert<std::codecvt_utf8<char16_t>, char16_t> test;
+#endif
+ return 0;
+}
+
+}
diff --git a/test/boost_no_cxx11_hdr_condition_variable.ipp b/test/boost_no_cxx11_hdr_condition_variable.ipp
new file mode 100644
index 0000000..d266e8d
--- /dev/null
+++ b/test/boost_no_cxx11_hdr_condition_variable.ipp
@@ -0,0 +1,24 @@
+// (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_CXX11_HDR_CONDITION_VARIABLE
+// TITLE: C++0x header <condition_variable> unavailable
+// DESCRIPTION: The standard library does not supply C++0x header <condition_variable>
+
+#include <condition_variable>
+
+namespace boost_no_cxx11_hdr_condition_variable {
+
+int test()
+{
+ using std::condition_variable;
+ using std::condition_variable_any;
+ return 0;
+}
+
+}
diff --git a/test/boost_no_cxx11_hdr_forward_list.ipp b/test/boost_no_cxx11_hdr_forward_list.ipp
new file mode 100644
index 0000000..0ef465d
--- /dev/null
+++ b/test/boost_no_cxx11_hdr_forward_list.ipp
@@ -0,0 +1,23 @@
+// (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_CXX11_HDR_FORWARD_LIST
+// TITLE: C++0x header <forward_list> unavailable
+// DESCRIPTION: The standard library does not supply C++0x header <forward_list>
+
+#include <forward_list>
+
+namespace boost_no_cxx11_hdr_forward_list {
+
+int test()
+{
+ std::forward_list<int> l(2u, 2);
+ return *l.begin() == 2 ? 0 : 1;
+}
+
+}
diff --git a/test/boost_no_cxx11_hdr_future.ipp b/test/boost_no_cxx11_hdr_future.ipp
new file mode 100644
index 0000000..b19302d
--- /dev/null
+++ b/test/boost_no_cxx11_hdr_future.ipp
@@ -0,0 +1,34 @@
+// (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_CXX11_HDR_FUTURE
+// TITLE: C++0x header <future> unavailable
+// DESCRIPTION: The standard library does not supply C++0x header <future>
+
+#include <future>
+
+namespace boost_no_cxx11_hdr_future {
+
+int test()
+{
+ using std::is_error_code_enum;
+ using std::make_error_code;
+ using std::make_error_condition;
+ using std::future_category;
+ using std::future_error;
+ using std::promise;
+ using std::promise;
+ using std::promise;
+ using std::future;
+ using std::shared_future;
+ using std::packaged_task; // undefined
+ using std::async;
+ return 0;
+}
+
+}
diff --git a/test/boost_no_cxx11_hdr_initializer_list.ipp b/test/boost_no_cxx11_hdr_initializer_list.ipp
new file mode 100644
index 0000000..e7ee838
--- /dev/null
+++ b/test/boost_no_cxx11_hdr_initializer_list.ipp
@@ -0,0 +1,27 @@
+// (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_CXX11_HDR_INITIALIZER_LIST
+// TITLE: C++0x header <initializer_list> unavailable
+// DESCRIPTION: The standard library does not supply C++0x header <initializer_list>
+
+#include <initializer_list>
+
+namespace boost_no_cxx11_hdr_initializer_list {
+
+void foo(const std::initializer_list<const char*>&)
+{
+}
+
+int test()
+{
+ foo( { "a", "b", "c" } );
+ return 0;
+}
+
+}
diff --git a/test/boost_no_cxx11_hdr_mutex.ipp b/test/boost_no_cxx11_hdr_mutex.ipp
new file mode 100644
index 0000000..acc1b1e
--- /dev/null
+++ b/test/boost_no_cxx11_hdr_mutex.ipp
@@ -0,0 +1,26 @@
+// (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_CXX11_HDR_MUTEX
+// TITLE: C++0x header <mutex> unavailable
+// DESCRIPTION: The standard library does not supply C++0x header <mutex>
+
+#include <mutex>
+
+namespace boost_no_cxx11_hdr_mutex {
+
+int test()
+{
+ using std::mutex;
+ using std::recursive_mutex;
+ using std::timed_mutex;
+ using std::recursive_timed_mutex;
+ return 0;
+}
+
+}
diff --git a/test/boost_no_cxx11_hdr_random.ipp b/test/boost_no_cxx11_hdr_random.ipp
new file mode 100644
index 0000000..acc1395
--- /dev/null
+++ b/test/boost_no_cxx11_hdr_random.ipp
@@ -0,0 +1,31 @@
+// (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_CXX11_HDR_RANDOM
+// TITLE: C++0x header <random> unavailable
+// DESCRIPTION: The standard library does not supply C++0x header <random>
+
+#include <random>
+
+namespace boost_no_cxx11_hdr_random {
+
+int test()
+{
+ using std::minstd_rand0;
+ using std::mt19937;
+ using std::mt19937_64;
+ using std::ranlux24_base;
+ using std::ranlux48_base;
+ using std::ranlux24;
+ using std::ranlux48;
+ using std::knuth_b;
+ using std::default_random_engine;
+ return 0;
+}
+
+}
diff --git a/test/boost_no_cxx11_hdr_ratio.ipp b/test/boost_no_cxx11_hdr_ratio.ipp
new file mode 100644
index 0000000..f17dd5d
--- /dev/null
+++ b/test/boost_no_cxx11_hdr_ratio.ipp
@@ -0,0 +1,37 @@
+// (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_CXX11_HDR_RATIO
+// TITLE: C++0x header <ratio> unavailable
+// DESCRIPTION: The standard library does not supply C++0x header <ratio>
+
+#include <ratio>
+
+namespace boost_no_cxx11_hdr_ratio {
+
+int test()
+{
+ using std::atto;
+ using std::femto;
+ using std::pico;
+ using std::nano;
+ using std::micro;
+ using std::milli;
+ using std::centi;
+ using std::deci;
+ using std::deca;
+ using std::hecto;
+ using std::kilo;
+ using std::mega;
+ using std::tera;
+ using std::peta;
+ using std::exa;
+ return 0;
+}
+
+}
diff --git a/test/boost_no_cxx11_hdr_regex.ipp b/test/boost_no_cxx11_hdr_regex.ipp
new file mode 100644
index 0000000..1901482
--- /dev/null
+++ b/test/boost_no_cxx11_hdr_regex.ipp
@@ -0,0 +1,29 @@
+// (C) Copyright Beman Dawes 2009
+// Copyright (c) Microsoft Corporation
+// 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_CXX11_HDR_REGEX
+// TITLE: C++0x header <regex> unavailable
+// DESCRIPTION: The standard library does not supply C++0x header <regex>
+
+#include <regex>
+
+namespace boost_no_cxx11_hdr_regex {
+
+int test()
+{
+ using std::regex;
+ using std::wregex;
+
+ regex e("\\d+");
+ wregex we(L"\\d+");
+ std::string s("123456");
+ std::wstring ws(L"123456");
+ return regex_match(s, e) && regex_match(ws, we) ? 0 : 1;
+}
+
+}
diff --git a/test/boost_no_cxx11_hdr_system_error.ipp b/test/boost_no_cxx11_hdr_system_error.ipp
new file mode 100644
index 0000000..50ced6c
--- /dev/null
+++ b/test/boost_no_cxx11_hdr_system_error.ipp
@@ -0,0 +1,26 @@
+// (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_CXX11_HDR_SYSTEM_ERROR
+// TITLE: C++0x header <system_error> unavailable
+// DESCRIPTION: The standard library does not supply C++0x header <system_error>
+
+#include <system_error>
+
+namespace boost_no_cxx11_hdr_system_error {
+
+int test()
+{
+ using std::error_category;
+ using std::error_code;
+ using std::error_condition;
+ using std::system_error;
+ return 0;
+}
+
+}
diff --git a/test/boost_no_cxx11_hdr_thread.ipp b/test/boost_no_cxx11_hdr_thread.ipp
new file mode 100644
index 0000000..612ddc3
--- /dev/null
+++ b/test/boost_no_cxx11_hdr_thread.ipp
@@ -0,0 +1,27 @@
+// (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_CXX11_HDR_THREAD
+// TITLE: C++0x header <thread> unavailable
+// DESCRIPTION: The standard library does not supply C++0x header <thread>
+
+#include <thread>
+
+namespace boost_no_cxx11_hdr_thread {
+
+int test()
+{
+ using std::thread;
+ using std::this_thread::get_id;
+ using std::this_thread::yield;
+ using std::this_thread::sleep_until;
+ using std::this_thread::sleep_for;
+ return 0;
+}
+
+}
diff --git a/test/boost_no_cxx11_hdr_tuple.ipp b/test/boost_no_cxx11_hdr_tuple.ipp
new file mode 100644
index 0000000..6911ee3
--- /dev/null
+++ b/test/boost_no_cxx11_hdr_tuple.ipp
@@ -0,0 +1,24 @@
+// (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_CXX11_HDR_TUPLE
+// TITLE: C++0x header <tuple> unavailable
+// DESCRIPTION: The standard library does not supply C++0x header <tuple>
+
+#include <tuple>
+
+namespace boost_no_cxx11_hdr_tuple {
+
+int test()
+{
+ std::tuple<int, int, long> t(0, 1, 2);
+ (void)t;
+ return 0;
+}
+
+}
diff --git a/test/boost_no_cxx11_hdr_type_traits.ipp b/test/boost_no_cxx11_hdr_type_traits.ipp
new file mode 100644
index 0000000..d4862a0
--- /dev/null
+++ b/test/boost_no_cxx11_hdr_type_traits.ipp
@@ -0,0 +1,109 @@
+// (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_CXX11_HDR_TYPE_TRAITS
+// TITLE: C++0x header <type_traits> unavailable
+// DESCRIPTION: The standard library does not supply C++0x header <type_traits>
+
+#include <type_traits>
+
+namespace boost_no_cxx11_hdr_type_traits {
+
+int test()
+{
+ using std::integral_constant;
+ using std::true_type;
+ using std::false_type;
+ using std::is_void;
+ using std::is_integral;
+ using std::is_floating_point;
+ using std::is_array;
+ using std::is_pointer;
+ using std::is_lvalue_reference;
+ using std::is_rvalue_reference;
+ using std::is_member_object_pointer;
+ using std::is_member_function_pointer;
+ using std::is_enum;
+ using std::is_union;
+ using std::is_class;
+ using std::is_function;
+ using std::is_reference;
+ using std::is_arithmetic;
+ using std::is_fundamental;
+ using std::is_object;
+ using std::is_scalar;
+ using std::is_compound;
+ using std::is_member_pointer;
+ using std::is_const;
+ using std::is_volatile;
+ using std::is_trivial;
+ using std::is_trivially_copyable;
+ using std::is_standard_layout;
+ using std::is_pod;
+#if !((__cplusplus > 201700) || (defined(_MSVC_LANG) && (_MSVC_LANG > 201700)))
+ // deprecated in C++ 17:
+ using std::is_literal_type;
+ using std::result_of;
+#endif
+ using std::is_empty;
+ using std::is_polymorphic;
+ using std::is_abstract;
+ using std::is_constructible;
+ using std::is_nothrow_constructible;
+ using std::is_default_constructible;
+ using std::is_copy_constructible;
+ using std::is_copy_assignable;
+ using std::is_move_constructible;
+ using std::is_move_assignable;
+ using std::is_destructible;
+ using std::is_trivially_default_constructible;
+ using std::is_trivially_copy_constructible;
+ using std::is_trivially_move_constructible;
+ using std::is_trivially_copy_assignable;
+ using std::is_trivially_move_assignable;
+ using std::is_trivially_destructible;
+ using std::is_nothrow_default_constructible;
+ using std::is_nothrow_copy_constructible;
+ using std::is_nothrow_move_constructible;
+ using std::is_nothrow_copy_assignable;
+ using std::is_nothrow_move_assignable;
+ using std::has_virtual_destructor;
+ using std::is_signed;
+ using std::is_unsigned;
+ using std::alignment_of;
+ using std::rank;
+ using std::extent;
+ using std::is_same;
+ using std::is_base_of;
+ using std::is_convertible;
+ using std::remove_const;
+ using std::remove_volatile;
+ using std::remove_cv;
+ using std::add_const;
+ using std::add_volatile;
+ using std::add_cv;
+ using std::remove_reference;
+ using std::add_lvalue_reference;
+ using std::add_rvalue_reference;
+ using std::make_signed;
+ using std::make_unsigned;
+ using std::remove_extent;
+ using std::remove_all_extents;
+ using std::remove_pointer;
+ using std::add_pointer;
+ using std::aligned_storage;
+ using std::aligned_union;
+ using std::decay;
+ using std::enable_if;
+ using std::conditional;
+ using std::common_type;
+ using std::underlying_type;
+ return 0;
+}
+
+}
diff --git a/test/boost_no_cxx11_hdr_typeindex.ipp b/test/boost_no_cxx11_hdr_typeindex.ipp
new file mode 100644
index 0000000..5ebe7bc
--- /dev/null
+++ b/test/boost_no_cxx11_hdr_typeindex.ipp
@@ -0,0 +1,33 @@
+// (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_CXX11_HDR_TYPEINDEX
+// TITLE: C++0x header <typeindex> unavailable
+// DESCRIPTION: The standard library does not supply C++0x header <typeindex>
+
+#include <typeindex>
+
+namespace boost_no_cxx11_hdr_typeindex {
+
+int test()
+{
+#if defined( BOOST_NO_TYPEID )
+ std::type_index * p1;
+ std::hash<std::type_index> h;
+ (void)p1;
+ (void)h;
+ return 0;
+#else
+ std::type_index t1 = typeid(int);
+ std::type_index t2 = typeid(double);
+ std::hash<std::type_index> h;
+ return (t1 != t2) && (h(t1) != h(t2)) ? 0 : 1;
+#endif
+}
+
+}
diff --git a/test/boost_no_cxx11_hdr_unordered_map.ipp b/test/boost_no_cxx11_hdr_unordered_map.ipp
new file mode 100644
index 0000000..08e94ec
--- /dev/null
+++ b/test/boost_no_cxx11_hdr_unordered_map.ipp
@@ -0,0 +1,24 @@
+// (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_CXX11_HDR_UNORDERED_MAP
+// TITLE: C++0x header <unordered_map> unavailable
+// DESCRIPTION: The standard library does not supply C++0x header <unordered_map>
+
+#include <unordered_map>
+
+namespace boost_no_cxx11_hdr_unordered_map {
+
+int test()
+{
+ std::unordered_map<int, long> s1;
+ std::unordered_multimap<int, long> s2;
+ return s1.empty() && s2.empty() ? 0 : 1;
+}
+
+}
diff --git a/test/boost_no_cxx11_hdr_unordered_set.ipp b/test/boost_no_cxx11_hdr_unordered_set.ipp
new file mode 100644
index 0000000..f36f15f
--- /dev/null
+++ b/test/boost_no_cxx11_hdr_unordered_set.ipp
@@ -0,0 +1,24 @@
+// (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_CXX11_HDR_UNORDERED_SET
+// TITLE: C++0x header <unordered_set> unavailable
+// DESCRIPTION: The standard library does not supply C++0x header <unordered_set>
+
+#include <unordered_set>
+
+namespace boost_no_cxx11_hdr_unordered_set {
+
+int test()
+{
+ std::unordered_set<int> s1;
+ std::unordered_multiset<int> s2;
+ return s1.empty() && s2.empty() ? 0 : 1;
+}
+
+}
diff --git a/test/boost_no_cxx11_inline_namespaces.ipp b/test/boost_no_cxx11_inline_namespaces.ipp
new file mode 100644
index 0000000..5b76da8
--- /dev/null
+++ b/test/boost_no_cxx11_inline_namespaces.ipp
@@ -0,0 +1,30 @@
+// (C) Copyright Andrey Semashev 2013
+
+// 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_CXX11_INLINE_NAMESPACES
+// TITLE: C++11 inline namespaces.
+// DESCRIPTION: The compiler does not support C++11 inline namespaces.
+
+namespace boost_no_cxx11_inline_namespaces {
+
+inline namespace my_ns {
+
+int data = 0;
+
+} // namespace my_ns
+
+int test()
+{
+ data = 1;
+ if (&data == &my_ns::data)
+ return 0;
+ else
+ return 1;
+}
+
+}
diff --git a/test/boost_no_cxx11_non_pub_def_fun.ipp b/test/boost_no_cxx11_non_pub_def_fun.ipp
new file mode 100644
index 0000000..8089c75
--- /dev/null
+++ b/test/boost_no_cxx11_non_pub_def_fun.ipp
@@ -0,0 +1,38 @@
+// (C) Copyright Andrey Semashev 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_CXX11_NON_PUBLIC_DEFAULTED_FUNCTIONS
+// TITLE: C++11 non-public defaulted functions unavailable
+// DESCRIPTION: The compiler does not support C++11 defaulted functions in access control sections other than public
+
+#if defined(__GNUC__) && !defined(__GXX_EXPERIMENTAL_CXX0X__) && !defined(BOOST_INTEL_STDCXX0X)
+# error Non-public defaulted functions are not supported in non-C++11 mode
+#endif
+
+namespace boost_no_cxx11_non_public_defaulted_functions {
+
+struct foo
+{
+protected:
+ foo() = default;
+ foo& operator= (foo const&) = default;
+};
+
+struct bar
+{
+private:
+ bar() = default;
+ bar& operator= (bar const&) = default;
+};
+
+int test()
+{
+ return 0;
+}
+
+}
diff --git a/test/boost_no_cxx11_numeric_limits.ipp b/test/boost_no_cxx11_numeric_limits.ipp
new file mode 100644
index 0000000..29b1fc8
--- /dev/null
+++ b/test/boost_no_cxx11_numeric_limits.ipp
@@ -0,0 +1,31 @@
+// (C) Copyright Vicente J. Botet Escriba 2010.
+// 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 most recent version.
+
+// MACRO: BOOST_NO_CXX11_NUMERIC_LIMITS
+// TITLE: static function lowest() in numeric_limits class <limits>
+// DESCRIPTION: static function numeric_limits<T>::lowest() are not available for use.
+
+#include <limits>
+
+namespace boost_no_cxx11_numeric_limits{
+
+int f()
+{
+ // this is never called, it just has to compile:
+ return std::numeric_limits<int>::lowest();
+}
+
+int test()
+{
+ return 0;
+}
+
+}
+
+
+
+
diff --git a/test/boost_no_cxx11_pointer_traits.ipp b/test/boost_no_cxx11_pointer_traits.ipp
new file mode 100644
index 0000000..3d1bb1f
--- /dev/null
+++ b/test/boost_no_cxx11_pointer_traits.ipp
@@ -0,0 +1,37 @@
+/*
+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_POINTER_TRAITS
+// TITLE: C++11 <memory> lacks a correct std::pointer_traits
+// DESCRIPTION: The standard library lacks a working std::pointer_traits.
+
+#include <memory>
+
+namespace boost_no_cxx11_pointer_traits {
+
+template<class T>
+struct pointer {
+ template<class U>
+ using rebind = pointer<U>;
+};
+
+template<class T>
+struct result { };
+
+template<>
+struct result<pointer<bool> > {
+ static const int value = 0;
+};
+
+int test()
+{
+ return result<std::pointer_traits<pointer<int> >::rebind<bool> >::value;
+}
+
+} /* boost_no_cxx11_pointer_traits */
diff --git a/test/boost_no_cxx11_ref_qualifiers.ipp b/test/boost_no_cxx11_ref_qualifiers.ipp
new file mode 100644
index 0000000..77d1234
--- /dev/null
+++ b/test/boost_no_cxx11_ref_qualifiers.ipp
@@ -0,0 +1,33 @@
+// (C) Copyright Andrzej Krzemienski 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_CXX11_REF_QUALIFIERS
+// TITLE: C++11 ref-qualifiers on member functions.
+// DESCRIPTION: The compiler does not support the C++11 ref-qualifiers on member functions as described in N2439.
+
+namespace boost_no_cxx11_ref_qualifiers {
+
+struct G
+{
+ char get() & { return 'l'; }
+ char get() && { return 'r'; }
+ char get() const& { return 'c'; }
+};
+
+int test()
+{
+ G m;
+ const G c = G();
+
+ if (m.get() != 'l') return 1;
+ if (c.get() != 'c') return 1;
+ if (G().get() != 'r') return 1;
+ return 0;
+}
+
+}
diff --git a/test/boost_no_cxx11_sfinae_expr.ipp b/test/boost_no_cxx11_sfinae_expr.ipp
new file mode 100644
index 0000000..79cd7a8
--- /dev/null
+++ b/test/boost_no_cxx11_sfinae_expr.ipp
@@ -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 */
diff --git a/test/boost_no_cxx11_smart_ptr.ipp b/test/boost_no_cxx11_smart_ptr.ipp
new file mode 100644
index 0000000..5b563df
--- /dev/null
+++ b/test/boost_no_cxx11_smart_ptr.ipp
@@ -0,0 +1,35 @@
+// (C) Copyright John Maddock 2012
+
+// 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_CXX11_SMART_PTR
+// TITLE: C++11 <memory> has no shared_ptr and unique_ptr
+// DESCRIPTION: The compiler does not support the C++11 smart pointer features added to <memory>
+
+#include <memory>
+// Hash functions for shared pointers should be in <memory>
+// but with some std lib's we have to include <functional> as well...
+#include <functional>
+
+namespace boost_no_cxx11_smart_ptr {
+
+int test()
+{
+ std::unique_ptr<int> upi(new int);
+ std::shared_ptr<int> spi(new int), spi2(new int);
+ spi = std::static_pointer_cast<int>(spi);
+
+ std::hash<std::shared_ptr<int> > h1;
+ std::hash<std::unique_ptr<int> > h2;
+
+ (void)h1;
+ (void)h2;
+
+ return 0;
+}
+
+}
diff --git a/test/boost_no_cxx11_std_align.ipp b/test/boost_no_cxx11_std_align.ipp
new file mode 100644
index 0000000..145e24c
--- /dev/null
+++ b/test/boost_no_cxx11_std_align.ipp
@@ -0,0 +1,34 @@
+// (C) Copyright John Maddock 2012
+// (C) Copyright Peter Dimov 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_CXX11_STD_ALIGN
+// TITLE: C++11 <memory> doesn't have a working std::align
+// DESCRIPTION: The compiler does not support the function std::align added to <memory>
+
+#include <memory>
+
+namespace boost_no_cxx11_std_align {
+
+int test()
+{
+ char buffer[ 32 ];
+
+ void * ptr = buffer + 1;
+ std::size_t space = sizeof( buffer ) - 1;
+
+ void * p2 = std::align( 4, 2, ptr, space );
+
+ if( p2 == 0 ) return 1;
+ if( p2 != ptr ) return 1;
+ if( (size_t)p2 % 4 ) return 1;
+
+ return 0;
+}
+
+}
diff --git a/test/boost_no_cxx11_thread_local.ipp b/test/boost_no_cxx11_thread_local.ipp
new file mode 100644
index 0000000..caaed97
--- /dev/null
+++ b/test/boost_no_cxx11_thread_local.ipp
@@ -0,0 +1,36 @@
+// (C) Copyright John Maddock 2012.
+// 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 most recent version.
+
+// MACRO: BOOST_NO_CXX11_THREAD_LOCAL
+// TITLE: thread_local
+// DESCRIPTION: The compiler supports the thread_local storage specifier.
+
+#include <string>
+
+
+namespace boost_no_cxx11_thread_local{
+
+template <class T>
+int check_local(int n)
+{
+ static thread_local T s(n, ' ');
+ static thread_local int size = s.size();
+ if(size != n)
+ {
+ s = T(n, ' ');
+ size = n;
+ }
+ return size;
+}
+
+int test()
+{
+ return check_local<std::string>(5) == 5 ? 0 : 1;
+}
+
+}
+
diff --git a/test/boost_no_cxx11_trailing_result_types.ipp b/test/boost_no_cxx11_trailing_result_types.ipp
new file mode 100644
index 0000000..1701204
--- /dev/null
+++ b/test/boost_no_cxx11_trailing_result_types.ipp
@@ -0,0 +1,26 @@
+// (C) Copyright Andrey Semashev 2013
+
+// 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_CXX11_TRAILING_RESULT_TYPES
+// TITLE: C++11 trailing function result types syntax.
+// DESCRIPTION: The compiler does not support the new C++11 function result types specification syntax.
+
+namespace boost_no_cxx11_trailing_result_types {
+
+template< typename T >
+auto foo(T const& t) -> T
+{
+ return t;
+}
+
+int test()
+{
+ return foo(0);
+}
+
+}
diff --git a/test/boost_no_cxx11_user_lit.ipp b/test/boost_no_cxx11_user_lit.ipp
new file mode 100644
index 0000000..090e0c0
--- /dev/null
+++ b/test/boost_no_cxx11_user_lit.ipp
@@ -0,0 +1,67 @@
+// (C) Copyright John Maddock 2013
+
+// 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_CXX11_USER_DEFINED_LITERALS
+// TITLE: C++11 user defined literals.
+// DESCRIPTION: The compiler does not support the C++11 literals including user-defined suffixes.
+
+#include <memory>
+
+namespace boost_no_cxx11_user_defined_literals {
+
+struct my_literal
+{
+ my_literal() : val(0) {}
+ my_literal(int i) : val(i) {}
+ my_literal(const my_literal& a) : val(a.val) {}
+ bool operator==(const my_literal& a) const { return val == a.val; }
+ int val;
+};
+
+template <unsigned base, unsigned long long val, char... Digits>
+struct parse_int
+{
+ // The default specialization is also the termination condition:
+ // it gets invoked only when sizeof...Digits == 0.
+ static_assert(base<=16u,"only support up to hexadecimal");
+ static constexpr unsigned long long value{ val };
+};
+
+template <unsigned base, unsigned long long val, char c, char... Digits>
+struct parse_int<base, val, c, Digits...>
+{
+ static constexpr unsigned long long char_value = (c >= '0' && c <= '9')
+ ? c - '0'
+ : (c >= 'a' && c <= 'f')
+ ? c - 'a'
+ : (c >= 'A' && c <= 'F')
+ ? c - 'A'
+ : 400u;
+ static_assert(char_value < base, "Encountered a digit out of range");
+ static constexpr unsigned long long value{ parse_int<base, val * base +
+char_value, Digits...>::value };
+};
+
+my_literal operator "" _suf1(unsigned long long v)
+{
+ return my_literal(v);
+}
+template <char...PACK>
+my_literal operator "" _bin()
+{
+ return parse_int<2, 0, PACK...>::value;
+}
+
+int test()
+{
+ my_literal a = 0x23_suf1;
+ my_literal b = 1001_bin;
+ return ((a == my_literal(0x23)) && (b == my_literal(9))) ? 0 : 1;
+}
+
+}
diff --git a/test/boost_no_cxx14_binary_literals.ipp b/test/boost_no_cxx14_binary_literals.ipp
new file mode 100644
index 0000000..326d5b0
--- /dev/null
+++ b/test/boost_no_cxx14_binary_literals.ipp
@@ -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;
+}
+
+}
+
diff --git a/test/boost_no_cxx14_constexpr.ipp b/test/boost_no_cxx14_constexpr.ipp
new file mode 100644
index 0000000..cc65527
--- /dev/null
+++ b/test/boost_no_cxx14_constexpr.ipp
@@ -0,0 +1,72 @@
+
+// (C) Copyright Kohei Takahashi 2014,2016
+
+// 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
+{
+
+namespace detail
+{
+ template <class> struct void_ { typedef void type; };
+
+ struct non_tmpl
+ {
+ constexpr int foo() const { return 1; }
+ constexpr int foo() { return 0; }
+ };
+
+ template <typename T>
+ struct tmpl : non_tmpl { };
+}
+
+// Test relaxed constexpr with dependent type; for more details, see comment of
+// BOOST_CXX14_CONSTEXPR definition in boost/config/compiler/clang.hpp .
+template <class T>
+constexpr typename detail::void_<T>::type decrement(T &value)
+{
+ --value;
+}
+
+constexpr int non_cv_member(detail::non_tmpl x)
+{
+ return x.foo();
+}
+
+template <typename T>
+constexpr int non_cv_member(detail::tmpl<T> x)
+{
+ return x.foo();
+}
+
+constexpr int zero()
+{
+ int ret = 1;
+ decrement(ret);
+ return ret;
+}
+
+template <int v> struct compile_time_value
+{
+ static constexpr int value = v;
+};
+
+int test()
+{
+ return compile_time_value<
+ zero()
+ + non_cv_member(detail::non_tmpl())
+ + non_cv_member(detail::tmpl<int>())
+ >::value;
+}
+
+}
+
diff --git a/test/boost_no_cxx14_decltype_auto.ipp b/test/boost_no_cxx14_decltype_auto.ipp
new file mode 100644
index 0000000..4f538dc
--- /dev/null
+++ b/test/boost_no_cxx14_decltype_auto.ipp
@@ -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;
+}
+
+}
+
diff --git a/test/boost_no_cxx14_digit_separator.ipp b/test/boost_no_cxx14_digit_separator.ipp
new file mode 100644
index 0000000..ed4bcf2
--- /dev/null
+++ b/test/boost_no_cxx14_digit_separator.ipp
@@ -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_SEPARATORS
+// TITLE: C++14 digit separator unavailable
+// DESCRIPTION: The compiler does not support C++14 digit separator
+
+namespace boost_no_cxx14_digit_separators
+{
+
+int test()
+{
+ return 0'0;
+}
+
+}
+
diff --git a/test/boost_no_cxx14_generic_lambda.ipp b/test/boost_no_cxx14_generic_lambda.ipp
new file mode 100644
index 0000000..e271ef5
--- /dev/null
+++ b/test/boost_no_cxx14_generic_lambda.ipp
@@ -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);
+}
+
+}
+
diff --git a/test/boost_no_cxx14_hdr_shared_mutex.ipp b/test/boost_no_cxx14_hdr_shared_mutex.ipp
new file mode 100644
index 0000000..ceae565
--- /dev/null
+++ b/test/boost_no_cxx14_hdr_shared_mutex.ipp
@@ -0,0 +1,27 @@
+// (C) Copyright Edward Diener 2015
+
+// 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_HDR_SHARED_MUTEX
+// TITLE: C++0y header <shared_mutex> unavailable
+// DESCRIPTION: The standard library does not supply C++0y header <shared_mutex>
+
+#include <shared_mutex>
+
+namespace boost_no_cxx14_hdr_shared_mutex {
+
+int test()
+{
+ //
+ // We should probably test __cpp_lib_shared_timed_mutex here, but since neither
+ // MSVC/Dinkumware, nor clang/libc++ bother to set it (as of July 2015), there's
+ // not much point....
+ using std::shared_timed_mutex;
+ return 0;
+}
+
+}
diff --git a/test/boost_no_cxx14_lambda_capture.ipp b/test/boost_no_cxx14_lambda_capture.ipp
new file mode 100644
index 0000000..a788736
--- /dev/null
+++ b/test/boost_no_cxx14_lambda_capture.ipp
@@ -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; } ();
+}
+
+}
+
diff --git a/test/boost_no_cxx14_member_init.ipp b/test/boost_no_cxx14_member_init.ipp
new file mode 100644
index 0000000..2b6c77b
--- /dev/null
+++ b/test/boost_no_cxx14_member_init.ipp
@@ -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;
+}
+
+}
+
diff --git a/test/boost_no_cxx14_return_type_ded.ipp b/test/boost_no_cxx14_return_type_ded.ipp
new file mode 100644
index 0000000..3765673
--- /dev/null
+++ b/test/boost_no_cxx14_return_type_ded.ipp
@@ -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);
+}
+
+}
+
diff --git a/test/boost_no_cxx14_std_exchange.ipp b/test/boost_no_cxx14_std_exchange.ipp
new file mode 100644
index 0000000..111abd9
--- /dev/null
+++ b/test/boost_no_cxx14_std_exchange.ipp
@@ -0,0 +1,23 @@
+// (C) Copyright Oliver Kowalke 2016.
+// 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 most recent version.
+
+// MACRO: BOOST_NO_CXX14_STD_EXCHANGE
+// TITLE: apply
+// DESCRIPTION: The compiler supports the std::exchange() function.
+
+#include <utility>
+
+namespace boost_no_cxx14_std_exchange {
+
+int test() {
+ int * i = new int( 1);
+ int * j = std::exchange( i, nullptr);
+ delete j;
+ return 0;
+}
+
+}
diff --git a/test/boost_no_cxx14_var_templ.ipp b/test/boost_no_cxx14_var_templ.ipp
new file mode 100644
index 0000000..7162dac
--- /dev/null
+++ b/test/boost_no_cxx14_var_templ.ipp
@@ -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>;
+}
+
+}
+
diff --git a/test/boost_no_cxx17_fold_expressions.ipp b/test/boost_no_cxx17_fold_expressions.ipp
new file mode 100644
index 0000000..7566a06
--- /dev/null
+++ b/test/boost_no_cxx17_fold_expressions.ipp
@@ -0,0 +1,27 @@
+/*
+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_CXX17_FOLD_EXPRESSIONS
+// TITLE: C++17 fold expressions
+// DESCRIPTION: C++17 fold expressions are not supported.
+
+namespace boost_no_cxx17_fold_expressions {
+
+template<class... Args>
+auto sum(Args&&... args)
+{
+ return (args + ... + 0);
+}
+
+int test()
+{
+ return sum(1, -1, 1, 1, -1, -1);
+}
+
+} /* boost_no_cxx17_fold_expressions */
diff --git a/test/boost_no_cxx17_if_constexpr.ipp b/test/boost_no_cxx17_if_constexpr.ipp
new file mode 100644
index 0000000..3392ee7
--- /dev/null
+++ b/test/boost_no_cxx17_if_constexpr.ipp
@@ -0,0 +1,45 @@
+/*
+Copyright 2018 T. Zachary Laine
+(whatwasthataddress@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_CXX17_IF_CONSTEXPR
+// TITLE: C++17 if constexpr
+// DESCRIPTION: C++17 if constexpr are not supported.
+
+namespace boost_no_cxx17_if_constexpr {
+
+template <typename T, typename U>
+struct same
+{
+ static constexpr bool value = false;
+};
+
+template <typename T>
+struct same<T, T>
+{
+ static constexpr bool value = true;
+};
+
+int test()
+{
+ if constexpr (true) {
+ if constexpr (1 != 0) {
+ if constexpr (same<int, double>::value) {
+ static_assert(!same<int, double>::value, "");
+ return 1;
+ } else if constexpr (false) {
+ return 1;
+ } else {
+ return 0;
+ }
+ }
+ }
+ return 1;
+}
+
+}
diff --git a/test/boost_no_cxx17_inline_variables.ipp b/test/boost_no_cxx17_inline_variables.ipp
new file mode 100644
index 0000000..d144ed9
--- /dev/null
+++ b/test/boost_no_cxx17_inline_variables.ipp
@@ -0,0 +1,27 @@
+/*
+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_CXX17_INLINE_VARIABLES
+// TITLE: C++17 inline variables
+// DESCRIPTION: C++17 inline variables are not supported.
+
+namespace boost_no_cxx17_inline_variables {
+
+inline const int Value = 1;
+
+struct Type {
+ static inline const int value = 1;
+};
+
+int test()
+{
+ return Type::value - Value;
+}
+
+} /* boost_no_cxx17_inline_variables */
diff --git a/test/boost_no_cxx17_iterator_traits.ipp b/test/boost_no_cxx17_iterator_traits.ipp
new file mode 100644
index 0000000..cef88c0
--- /dev/null
+++ b/test/boost_no_cxx17_iterator_traits.ipp
@@ -0,0 +1,54 @@
+// Copyright (c) Andrey Semashev 2017.
+// 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 most recent version.
+
+// MACRO: BOOST_NO_CXX17_ITERATOR_TRAITS
+// TITLE: C++17 std::iterator_traits
+// DESCRIPTION: The compiler does not support SFINAE-friendly std::iterator_traits defined in C++17.
+
+#include <iterator>
+
+namespace boost_no_cxx17_iterator_traits {
+
+struct iterator
+{
+ typedef std::random_access_iterator_tag iterator_category;
+ typedef char value_type;
+ typedef std::ptrdiff_t difference_type;
+ typedef char* pointer;
+ typedef char& reference;
+
+ reference operator*()const;
+ iterator operator++();
+};
+
+struct non_iterator {};
+
+template< typename T >
+struct void_type { typedef void type; };
+
+template< typename Traits, typename Void = void >
+struct has_iterator_category
+{
+ enum { value = false };
+};
+
+template< typename Traits >
+struct has_iterator_category< Traits, typename void_type< typename Traits::iterator_category >::type >
+{
+ enum { value = true };
+};
+
+int test()
+{
+ static_assert(has_iterator_category< std::iterator_traits< boost_no_cxx17_iterator_traits::iterator > >::value, "has_iterator_category failed");
+
+ static_assert(!has_iterator_category< std::iterator_traits< boost_no_cxx17_iterator_traits::non_iterator > >::value, "has_iterator_category negative check failed");
+
+ return 0;
+}
+
+}
diff --git a/test/boost_no_cxx17_std_apply.ipp b/test/boost_no_cxx17_std_apply.ipp
new file mode 100644
index 0000000..c657c03
--- /dev/null
+++ b/test/boost_no_cxx17_std_apply.ipp
@@ -0,0 +1,28 @@
+// (C) Copyright Oliver Kowalke 2016.
+// 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 most recent version.
+
+// MACRO: BOOST_NO_CXX17_STD_APPLY
+// TITLE: apply
+// DESCRIPTION: The compiler supports the std::apply() function.
+
+#include <functional>
+#include <tuple>
+
+namespace boost_no_cxx17_std_apply {
+
+int foo( int i, int j) {
+ return i + j;
+}
+
+int test() {
+ int i = 1, j = 2;
+ std::apply( foo, std::make_tuple( i, j) );
+ return 0;
+}
+
+}
+
diff --git a/test/boost_no_cxx17_std_invoke.ipp b/test/boost_no_cxx17_std_invoke.ipp
new file mode 100644
index 0000000..7de7e6a
--- /dev/null
+++ b/test/boost_no_cxx17_std_invoke.ipp
@@ -0,0 +1,27 @@
+// (C) Copyright Oliver Kowalke 2016.
+// 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 most recent version.
+
+// MACRO: BOOST_NO_CXX17_STD_INVOKE
+// TITLE: invoke
+// DESCRIPTION: The compiler supports the std::invoke() function.
+
+#include <functional>
+
+namespace boost_no_cxx17_std_invoke {
+
+int foo( int i, int j) {
+ return i + j;
+}
+
+int test() {
+ int i = 1, j = 2;
+ typename std::invoke_result<int(&)(int,int), int, int>::type t = std::invoke( foo, i, j);
+ return 0;
+}
+
+}
+
diff --git a/test/boost_no_cxx17_structured_bindings.ipp b/test/boost_no_cxx17_structured_bindings.ipp
new file mode 100644
index 0000000..c5c7259
--- /dev/null
+++ b/test/boost_no_cxx17_structured_bindings.ipp
@@ -0,0 +1,36 @@
+/*
+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_CXX17_STRUCTURED_BINDINGS
+// TITLE: C++17 structured bindings
+// DESCRIPTION: C++17 structured bindings are not supported.
+
+#include <tuple>
+
+namespace boost_no_cxx17_structured_bindings {
+
+struct P {
+ int x;
+ int y;
+};
+
+int test()
+{
+ auto [c, d] = std::make_tuple(1, 2);
+ if (c != 1 || d != 2) {
+ return 1;
+ }
+ auto [a, b] = P{1, 2};
+ if (a != 1 || b != 2) {
+ return 1;
+ }
+ return 0;
+}
+
+} /* boost_no_cxx17_structured_bindings */
diff --git a/test/boost_no_cxx98_binders.ipp b/test/boost_no_cxx98_binders.ipp
new file mode 100644
index 0000000..c287e35
--- /dev/null
+++ b/test/boost_no_cxx98_binders.ipp
@@ -0,0 +1,30 @@
+// (C) Copyright John Maddock 2017.
+// 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 most recent version.
+
+// MACRO: BOOST_NO_CXX98_BINDERS
+// TITLE: std::bind1st, prt_fun and mem_fun
+// DESCRIPTION: The std lib has C++98 binders and adaptors.
+
+#include <functional>
+
+namespace boost_no_cxx98_binders{
+
+int f2(int a, int b) { return a + b; }
+
+struct A
+{
+ int f1(int a) { return a; }
+};
+
+
+int test()
+{
+ A a;
+ return std::bind1st(std::ptr_fun(f2), 0)(0) + std::bind1st(std::mem_fun(&A::f1), &a)(0);
+}
+
+}
diff --git a/test/boost_no_cxx98_function_base.ipp b/test/boost_no_cxx98_function_base.ipp
new file mode 100644
index 0000000..6bc897b
--- /dev/null
+++ b/test/boost_no_cxx98_function_base.ipp
@@ -0,0 +1,28 @@
+// (C) Copyright John Maddock 2017.
+// 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 most recent version.
+
+// MACRO: BOOST_NO_CXX98_FUNCTION_BASE
+// TITLE: std::unary_function and std::binary_function
+// DESCRIPTION: The std lib has unary_function and binary_function.
+
+#include <functional>
+
+namespace boost_no_cxx98_function_base{
+
+struct A : public std::unary_function<int, int>{};
+struct B : public std::binary_function<int, int, int>{};
+
+int test()
+{
+ A a;
+ B b;
+ (void)a;
+ (void)b;
+ return static_cast<B::result_type>(0);
+}
+
+}
diff --git a/test/boost_no_cxx98_random_shuffle.ipp b/test/boost_no_cxx98_random_shuffle.ipp
new file mode 100644
index 0000000..abef913
--- /dev/null
+++ b/test/boost_no_cxx98_random_shuffle.ipp
@@ -0,0 +1,23 @@
+// (C) Copyright John Maddock 2017.
+// 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 most recent version.
+
+// MACRO: BOOST_NO_CXX98_RANDOM_SHUFFLE
+// TITLE: std::random_shuffle
+// DESCRIPTION: The std lib has random_shuffle.
+
+#include <algorithm>
+
+namespace boost_no_cxx98_random_shuffle{
+
+int test()
+{
+ int my_array[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };
+ std::random_shuffle(&my_array[0], &my_array[9] );
+ return 0;
+}
+
+}
diff --git a/test/boost_no_cxx_hdr_functional.ipp b/test/boost_no_cxx_hdr_functional.ipp
new file mode 100644
index 0000000..fbcc46b
--- /dev/null
+++ b/test/boost_no_cxx_hdr_functional.ipp
@@ -0,0 +1,43 @@
+// (C) Copyright John Maddock 2012
+
+// 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_CXX11_HDR_FUNCTIONAL
+// TITLE: C++11 <functional> unavailable
+// DESCRIPTION: The compiler does not support the C++11 features added to <functional>
+
+#include <functional>
+
+void f(int, float){}
+
+namespace boost_no_cxx11_hdr_functional {
+
+int test()
+{
+ int i = 0;
+ std::ref(i);
+ std::cref(i);
+
+ std::bit_and<int> b1;
+ std::bit_or<int> b2;
+ std::bit_xor<int> b3;
+
+ std::hash<short> hs;
+
+ (void)b1;
+ (void)b2;
+ (void)b3;
+ (void)hs;
+
+ std::bind(f, std::placeholders::_1, 0.0f);
+
+ std::function<void(int, float)> fun(f);
+
+ return 0;
+}
+
+}
diff --git a/test/boost_no_decltype.ipp b/test/boost_no_decltype.ipp
new file mode 100644
index 0000000..0b05924
--- /dev/null
+++ b/test/boost_no_decltype.ipp
@@ -0,0 +1,54 @@
+
+// (C) Copyright Beman Dawes 2008
+
+// 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_CXX11_DECLTYPE
+// TITLE: C++0x decltype unavailable
+// DESCRIPTION: The compiler does not support C++0x decltype
+
+namespace boost_no_cxx11_decltype {
+
+void quiet_warning(int){}
+
+struct test_class
+{
+ test_class() {}
+};
+
+test_class get_test_class()
+{
+ return test_class();
+}
+
+template<typename F>
+void baz(F f)
+{
+ //
+ // Strangely VC-10 deduces the return type of F
+ // to be "test_class&". Remove the constructor
+ // from test_class and then decltype does work OK!!
+ //
+ typedef decltype(f()) res;
+ res r;
+}
+
+int test()
+{
+ int i;
+ decltype(i) j(0);
+ quiet_warning(j);
+ decltype(get_test_class()) k;
+ #ifndef _MSC_VER
+ // Although the VC++ decltype is buggy, we none the less enable support,
+ // so don't test the bugs for now!
+ baz(get_test_class);
+ #endif
+ return 0;
+}
+
+}
diff --git a/test/boost_no_decltype_n3276.ipp b/test/boost_no_decltype_n3276.ipp
new file mode 100644
index 0000000..9173bb3
--- /dev/null
+++ b/test/boost_no_decltype_n3276.ipp
@@ -0,0 +1,137 @@
+
+// (C) Copyright Eric Niebler 2011
+
+// 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_CXX11_DECLTYPE_N3276
+// TITLE: C++0x decltype v1.1 unavailable
+// DESCRIPTION: The compiler does not support extensions to C++0x
+// decltype as described in N3276 and accepted in Madrid,
+// March 2011:
+// <http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2011/n3276.pdf>
+
+namespace boost_no_cxx11_decltype_n3276 {
+
+// A simplified result_of implementation.
+// that uses decltype.
+template<typename Sig>
+struct result_of;
+
+template<typename T>
+T& declvar();
+
+// use decltype
+template<typename Fun, typename T>
+struct result_of<Fun(T)>
+{
+ typedef decltype(declvar<Fun>()(declvar<T>())) type;
+};
+
+template<typename Fun, typename T, typename U>
+struct result_of<Fun(T, U)>
+{
+ typedef decltype(declvar<Fun>()(declvar<T>(), declvar<U>())) type;
+};
+
+// simple tuple type
+template<typename A0 = void, typename A1 = void, typename A2 = void>
+struct tuple;
+
+template<typename A0>
+struct tuple<A0, void, void>
+{
+ A0 a0_;
+
+ tuple(A0 const &a0)
+ : a0_(a0)
+ {}
+};
+
+template<typename A0, typename A1>
+struct tuple<A0, A1>
+{
+ A0 a0_;
+ A1 a1_;
+
+ tuple(A0 const &a0, A1 const & a1)
+ : a0_(a0)
+ , a1_(a1)
+ {}
+};
+
+// A node in an expression tree
+template<class Tag, class Args> // Args is a tuple.
+struct Expr;
+
+// A function object that builds expression nodes
+template<class Tag>
+struct MakeExpr
+{
+ template<class T>
+ Expr<Tag, tuple<T> > operator()(T const & t) const
+ {
+ return Expr<Tag, tuple<T> >(tuple<T>(t));
+ }
+
+ template<class T, typename U>
+ Expr<Tag, tuple<T, U> > operator()(T const & t, U const & u) const
+ {
+ return Expr<Tag, tuple<T, U> >(tuple<T, U>(t, u));
+ }
+};
+
+// Here are tag types that encode in an expression node
+// what operation created the node.
+struct Terminal;
+struct BinaryPlus;
+struct FunctionCall;
+
+typedef MakeExpr<Terminal> MakeTerminal;
+typedef MakeExpr<BinaryPlus> MakeBinaryPlus;
+typedef MakeExpr<FunctionCall> MakeFunctionCall;
+
+template<class Tag, class Args>
+struct Expr
+{
+ Args args_;
+
+ explicit Expr(Args const & t) : args_(t) {}
+
+ // An overloaded operator+ that creates a binary plus node
+ template<typename RTag, typename RArgs>
+ typename result_of<MakeBinaryPlus(Expr, Expr<RTag, RArgs>)>::type
+ operator+(Expr<RTag, RArgs> const &right) const
+ {
+ return MakeBinaryPlus()(*this, right);
+ }
+
+ // An overloaded function call operator that creates a unary
+ // function call node
+ typename result_of<MakeFunctionCall(Expr)>::type
+ operator()() const
+ {
+ return MakeFunctionCall()(*this);
+ }
+};
+
+int test()
+{
+ // This is a terminal in an expression tree
+ Expr<Terminal, tuple<int> > i = MakeTerminal()(42);
+
+ i + i; // OK, this creates a binary plus node.
+
+ i(); // OK, this creates a unary function-call node.
+ // NOTE: If N3276 has not been implemented, this
+ // line will set off an infinite cascade of template
+ // instantiations that will run the compiler out of
+ // memory.
+
+ return 0;
+}
+
+}
diff --git a/test/boost_no_ded_typename.ipp b/test/boost_no_ded_typename.ipp
new file mode 100644
index 0000000..ef58d27
--- /dev/null
+++ b/test/boost_no_ded_typename.ipp
@@ -0,0 +1,40 @@
+// (C) Copyright John Maddock and Dave Abrahams 2002.
+// 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 most recent version.
+
+// MACRO: BOOST_DEDUCED_TYPENAME
+// TITLE: deduced typenames
+// DESCRIPTION: Some compilers can't use the typename keyword in deduced contexts.
+
+#ifndef BOOST_DEDUCED_TYPENAME
+#define BOOST_DEDUCED_TYPENAME typename
+#endif
+
+
+namespace boost_deduced_typename{
+
+template <class T>
+int f(T const volatile*, BOOST_DEDUCED_TYPENAME T::type* = 0)
+{
+ return 0;
+}
+
+struct X { typedef int type; };
+
+int test()
+{
+ return f((X*)0);
+}
+
+}
+
+
+
+
+
+
+
+
diff --git a/test/boost_no_defaulted_functions.ipp b/test/boost_no_defaulted_functions.ipp
new file mode 100644
index 0000000..5c4c7d0
--- /dev/null
+++ b/test/boost_no_defaulted_functions.ipp
@@ -0,0 +1,28 @@
+// (C) Copyright Beman Dawes 2008
+
+// 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_CXX11_DEFAULTED_FUNCTIONS
+// TITLE: C++0x defaulted functions unavailable
+// DESCRIPTION: The compiler does not support C++0x defaulted functions
+
+#if defined(__GNUC__) && !defined(__GXX_EXPERIMENTAL_CXX0X__) && !defined(BOOST_INTEL_STDCXX0X)
+# error Defaulted functions are not supported in non-C++0x mode
+#endif
+
+namespace boost_no_cxx11_defaulted_functions {
+
+ struct foo {
+ foo() = default;
+ };
+
+int test()
+{
+ return 0;
+}
+
+}
diff --git a/test/boost_no_deleted_functions.ipp b/test/boost_no_deleted_functions.ipp
new file mode 100644
index 0000000..4d3f0a9
--- /dev/null
+++ b/test/boost_no_deleted_functions.ipp
@@ -0,0 +1,28 @@
+// (C) Copyright Beman Dawes 2008
+
+// 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_CXX11_DELETED_FUNCTIONS
+// TITLE: C++0x =delete functions unavailable
+// DESCRIPTION: The compiler does not support C++0x =delete functions
+
+#if defined(__GNUC__) && !defined(__GXX_EXPERIMENTAL_CXX0X__) && !defined(BOOST_INTEL_STDCXX0X)
+# error Deleted functions are not supported in non-C++0x mode
+#endif
+
+namespace boost_no_cxx11_deleted_functions {
+
+ struct foo {
+ foo() = delete;
+ };
+
+int test()
+{
+ return 0;
+}
+
+}
diff --git a/test/boost_no_dep_nested_class.ipp b/test/boost_no_dep_nested_class.ipp
new file mode 100644
index 0000000..42c5750
--- /dev/null
+++ b/test/boost_no_dep_nested_class.ipp
@@ -0,0 +1,58 @@
+// (C) Copyright John Maddock 2001.
+// 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 most recent version.
+
+// MACRO: BOOST_NO_DEPENDENT_NESTED_DERIVATIONS
+// TITLE: dependent nested template classes
+// DESCRIPTION: The compiler fails to compile
+// a nested class that has a dependent base class:
+// template<typename T>
+// struct foo : {
+// template<typename U>
+// struct bar : public U {};
+// };
+#ifndef BOOST_NESTED_TEMPLATE
+#define BOOST_NESTED_TEMPLATE template
+#endif
+
+
+namespace boost_no_dependent_nested_derivations{
+
+struct UDT1{};
+struct UDT2{};
+
+template<typename T>
+struct foo
+{
+ template<typename U>
+ struct bar : public foo<U>
+ {};
+};
+
+template <class T>
+void foo_test(T)
+{
+ typedef foo<T> foo_type;
+ typedef typename foo_type::BOOST_NESTED_TEMPLATE bar<UDT2> bar_type;
+ foo<T> ft;
+ bar_type bt;
+ (void) &bt;
+ (void) &ft;
+}
+
+int test()
+{
+ foo_test(UDT1());
+ return 0;
+}
+
+}
+
+
+
+
+
+
diff --git a/test/boost_no_dep_val_param.ipp b/test/boost_no_dep_val_param.ipp
new file mode 100644
index 0000000..759bef0
--- /dev/null
+++ b/test/boost_no_dep_val_param.ipp
@@ -0,0 +1,37 @@
+// (C) Copyright John Maddock 2001.
+// 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 most recent version.
+
+// MACRO: BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS
+// TITLE: dependent non-type template parameters
+// DESCRIPTION: Template value parameters cannot have a dependent
+// type, for example:
+// template<class T, typename T::type value>
+// class X { ... };
+
+
+namespace boost_no_dependent_types_in_template_value_parameters{
+
+template <class T, typename T::type value = 0>
+class X
+{};
+
+template <class T>
+struct typifier
+{
+ typedef T type;
+};
+
+int test()
+{
+ X<typifier<int> > x;
+ (void) &x; // avoid "unused variable" warning
+ return 0;
+}
+
+}
+
+
diff --git a/test/boost_no_excep_std.ipp b/test/boost_no_excep_std.ipp
new file mode 100644
index 0000000..10d48f4
--- /dev/null
+++ b/test/boost_no_excep_std.ipp
@@ -0,0 +1,35 @@
+// (C) Copyright John Maddock 2001.
+// 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 most recent version.
+
+// MACRO: BOOST_NO_EXCEPTION_STD_NAMESPACE
+// TITLE: <exception> is in namespace std
+// DESCRIPTION: Some std libs don't put the contents of
+// <exception> in namespace std.
+
+#include <exception>
+
+namespace boost_no_exception_std_namespace{
+
+int t(int i)
+{
+ if(i)
+ std::terminate();
+ return 0;
+}
+
+int test()
+{
+ return t(0);
+}
+
+}
+
+
+
+
+
+
diff --git a/test/boost_no_exceptions.ipp b/test/boost_no_exceptions.ipp
new file mode 100644
index 0000000..862088f
--- /dev/null
+++ b/test/boost_no_exceptions.ipp
@@ -0,0 +1,43 @@
+// (C) Copyright John Maddock 2001.
+// 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 most recent version.
+
+// MACRO: BOOST_NO_EXCEPTIONS
+// TITLE: exception handling support
+// DESCRIPTION: The compiler in its current translation mode supports
+// exception handling.
+
+
+namespace boost_no_exceptions{
+
+void throw_it(int i)
+{
+ throw i;
+}
+
+int test()
+{
+ try
+ {
+ throw_it(2);
+ }
+ catch(int i)
+ {
+ return (i == 2) ? 0 : -1;
+ }
+ catch(...)
+ {
+ return -1;
+ }
+ return -1;
+}
+
+}
+
+
+
+
+
diff --git a/test/boost_no_exp_func_tem_arg.ipp b/test/boost_no_exp_func_tem_arg.ipp
new file mode 100644
index 0000000..3333b22
--- /dev/null
+++ b/test/boost_no_exp_func_tem_arg.ipp
@@ -0,0 +1,55 @@
+// (C) Copyright John Maddock 2001.
+// 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 most recent version.
+
+// MACRO: BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS
+// TITLE: non-deduced function template parameters
+// DESCRIPTION: Can only use deduced template arguments when
+// calling function template instantiations.
+
+#if defined(BOOST_MSVC) && (BOOST_MSVC <= 1200)
+#error "This is known to be buggy under VC6"
+#endif
+
+
+namespace boost_no_explicit_function_template_arguments{
+
+struct foo
+{
+ template<class T> int bar(){return 0;}
+ template<int I> int bar(){return 1;}
+};
+
+int test_0()
+{
+ return 0;
+}
+
+
+template <int i>
+bool foo_17041(int j)
+{
+ return (i == j);
+}
+
+int test()
+{
+ foo f;
+ int a = f.bar<char>();
+ int b = f.bar<2>();
+ if((a !=0) || (b != 1))return -1;
+
+ if(0 == foo_17041<8>(8)) return -1;
+ if(0 == foo_17041<4>(4)) return -1;
+ if(0 == foo_17041<5>(5)) return -1;
+ return 0;
+}
+
+}
+
+
+
+
diff --git a/test/boost_no_explicit_cvt_ops.ipp b/test/boost_no_explicit_cvt_ops.ipp
new file mode 100644
index 0000000..8b187c0
--- /dev/null
+++ b/test/boost_no_explicit_cvt_ops.ipp
@@ -0,0 +1,33 @@
+// (C) Copyright Beman Dawes 2008
+
+// 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_CXX11_EXPLICIT_CONVERSION_OPERATORS
+// TITLE: C++0x explicit conversion operators unavailable
+// DESCRIPTION: The compiler does not support C++0x explicit conversion operators
+
+#if defined(__GNUC__) && !defined(__GXX_EXPERIMENTAL_CXX0X__) && !defined(BOOST_INTEL_STDCXX0X)
+# error This feature is not available in non-C++0x mode
+#endif
+
+namespace boost_no_cxx11_explicit_conversion_operators {
+
+void quiet_warning(int){}
+
+ struct foo {
+ explicit operator int() { return 1; }
+ };
+
+int test()
+{
+ foo f;
+ int i = int(f);
+ quiet_warning(i);
+ return 0;
+}
+
+}
diff --git a/test/boost_no_extern_template.ipp b/test/boost_no_extern_template.ipp
new file mode 100644
index 0000000..c5e2ca0
--- /dev/null
+++ b/test/boost_no_extern_template.ipp
@@ -0,0 +1,41 @@
+// (C) Copyright Beman Dawes 2008
+
+// 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_CXX11_EXTERN_TEMPLATE
+// TITLE: C++0x extern template unavailable
+// DESCRIPTION: The compiler does not support C++0x extern template
+
+namespace boost_no_cxx11_extern_template {
+
+template<class T, class U> void f(T const* p, U const* q)
+{
+ p = q;
+}
+
+template <class T>
+class must_not_compile
+{
+public:
+ void f(T const* p, int const* q);
+};
+
+template <class T>
+void must_not_compile<T>::f(T const* p, int const* q)
+{
+ p = q;
+}
+
+extern template void f<>(int const*, float const*);
+extern template class must_not_compile<int>;
+
+int test()
+{
+ return 0;
+}
+
+}
diff --git a/test/boost_no_fenv_h.ipp b/test/boost_no_fenv_h.ipp
new file mode 100644
index 0000000..b1e014c
--- /dev/null
+++ b/test/boost_no_fenv_h.ipp
@@ -0,0 +1,58 @@
+// (C) Copyright John Maddock 2001.
+// (C) Copyright Bryce Lelbach 2010.
+// 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 most recent version.
+
+// MACRO: BOOST_NO_FENV_H
+// TITLE: fenv.h
+// DESCRIPTION: There is no standard <fenv.h> available. If <fenv.h> is
+// available, <boost/detail/fenv.hpp> should be included
+// instead of directly including <fenv.h>.
+
+#include <fenv.h>
+
+namespace boost_no_fenv_h {
+
+int test()
+{
+ /// C++0x required typedefs
+ typedef ::fenv_t has_fenv_t;
+ typedef ::fexcept_t has_fexcept_t;
+
+ /// C++0x required macros
+ #if !defined(FE_DIVBYZERO)
+ #error platform does not define FE_DIVBYZERO
+ #endif
+
+ #if !defined(FE_INEXACT)
+ #error platform does not define FE_INEXACT
+ #endif
+
+ #if !defined(FE_ALL_EXCEPT)
+ #error platform does not define FE_ALL_EXCEPT
+ #endif
+
+ int i;
+ has_fexcept_t fe;
+ has_fenv_t env;
+
+ i = feclearexcept(FE_ALL_EXCEPT);
+ i += fetestexcept(FE_ALL_EXCEPT); // All flags should be zero
+ i += fegetexceptflag(&fe, FE_ALL_EXCEPT);
+ i += fesetexceptflag(&fe, FE_ALL_EXCEPT);
+ i += feraiseexcept(0);
+ i += fesetround(fegetround());
+ i += fegetenv(&env);
+ i += fesetenv(&env);
+ i += feholdexcept(&env);
+ if(i)
+ i += feupdateenv(&env);
+
+ return i;
+}
+
+}
+
diff --git a/test/boost_no_fixed_len_variadic_templates.ipp b/test/boost_no_fixed_len_variadic_templates.ipp
new file mode 100644
index 0000000..9baf631
--- /dev/null
+++ b/test/boost_no_fixed_len_variadic_templates.ipp
@@ -0,0 +1,26 @@
+// Copyright (C) 2007 Douglas Gregor
+// 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 most recent version.
+
+// MACRO: BOOST_NO_CXX11_FIXED_LENGTH_VARIADIC_TEMPLATE_EXPANSION_PACKS
+// TITLE: C++0x variadic templates unavailable
+// DESCRIPTION: The compiler does not support C++0x variadic templates
+
+namespace boost_no_cxx11_fixed_length_variadic_template_expansion_packs {
+
+template<char one, char two, char... Others> struct char_tuple {};
+
+template<char... Args> struct super_class : public char_tuple<Args...> {};
+
+int test()
+{
+ super_class<'a', 'b', 'c', 'd'> sc;
+ (void)sc;
+ return 0;
+}
+
+}
+
diff --git a/test/boost_no_func_tmp_order.ipp b/test/boost_no_func_tmp_order.ipp
new file mode 100644
index 0000000..ab69865
--- /dev/null
+++ b/test/boost_no_func_tmp_order.ipp
@@ -0,0 +1,49 @@
+// (C) Copyright John Maddock 2001.
+// 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 most recent version.
+
+// MACRO: BOOST_NO_FUNCTION_TEMPLATE_ORDERING
+// TITLE: no function template ordering
+// DESCRIPTION: The compiler does not perform
+// function template ordering or its function
+// template ordering is incorrect.
+//
+// template<typename T> void f(T); // #1
+// template<typename T, typename U> void f(T (*)(U)); // #2
+// void bar(int);
+// f(&bar); // should choose #2.
+
+
+namespace boost_no_function_template_ordering{
+
+template<typename T>
+bool f(T)
+{
+ return false;
+}
+
+template<typename T, typename U>
+bool f(T (*)(U))
+{
+ return true;
+}
+
+void bar(int)
+{
+}
+
+int test()
+{
+ int i = 0;
+ return f(i) || !f(&bar);
+}
+
+}
+
+
+
+
+
diff --git a/test/boost_no_function_template_default_args.ipp b/test/boost_no_function_template_default_args.ipp
new file mode 100644
index 0000000..cb0c750
--- /dev/null
+++ b/test/boost_no_function_template_default_args.ipp
@@ -0,0 +1,38 @@
+// (C) Copyright Mathias Gaunard 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 the most recent version.
+
+// MACRO: BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
+// TITLE: Default template arguments for function templates
+// DESCRIPTION: Default template arguments for function templates are not supported.
+
+namespace boost_no_cxx11_function_template_default_args
+{
+
+template<typename T = int>
+T foo()
+{
+ return 0;
+}
+
+template<typename T, typename U>
+bool is_same(T, U)
+{
+ return false;
+}
+
+template<typename T>
+bool is_same(T, T)
+{
+ return true;
+}
+
+int test()
+{
+ return !is_same(foo<>(), 0) || is_same(foo<>(), 0L);
+}
+
+} // namespace boost_no_function_template_default_args
diff --git a/test/boost_no_function_type_spec.ipp b/test/boost_no_function_type_spec.ipp
new file mode 100644
index 0000000..d91d0fb
--- /dev/null
+++ b/test/boost_no_function_type_spec.ipp
@@ -0,0 +1,44 @@
+// (C) Copyright John Maddock 2001.
+// (C) Copyright Aleksey Gurtovoy 2003.
+// (C) Copyright Alisdair Meredith 2006.
+// 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 most recent version.
+
+// MACRO: BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS
+// TITLE: template specialisations of function types
+// DESCRIPTION: If the compiler cannot handle template specialisations
+// for function types
+
+
+namespace boost_no_function_type_specializations{
+
+template< typename T > struct is_function
+{
+};
+
+struct X {};
+enum Y { value };
+
+// Tesst can declare specializations
+typedef is_function< int( int ) > scalar_types;
+typedef is_function< X( X ) > user_defined_type;
+typedef is_function< int( Y ) > check_enum;
+typedef is_function< X( X, int ) > multiple_arguments;
+
+// Partial specialization test
+// confirm const, volatile, pointers and references in args
+template< typename X, typename Y, typename Z >
+struct is_function< X( Y const &, volatile Z * ) >
+{
+};
+
+
+int test()
+{
+ return 0;
+}
+
+}
diff --git a/test/boost_no_i64_limits.ipp b/test/boost_no_i64_limits.ipp
new file mode 100644
index 0000000..b82bf2f
--- /dev/null
+++ b/test/boost_no_i64_limits.ipp
@@ -0,0 +1,29 @@
+// (C) Copyright John Maddock 2001.
+// 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 most recent version.
+
+// MACRO: BOOST_NO_MS_INT64_NUMERIC_LIMITS
+// TITLE: std::numeric_limits<__int64>
+// DESCRIPTION: The C++ implementation does not provide the a specialisation
+// for std::numeric_limits<__int64>.
+
+#include <limits>
+
+namespace boost_no_ms_int64_numeric_limits{
+
+int test()
+{
+ if(0 == std::numeric_limits<__int64>::is_specialized) return -1;
+ if(0 == std::numeric_limits<unsigned __int64>::is_specialized) return -1;
+ return 0;
+}
+
+}
+
+
+
+
+
diff --git a/test/boost_no_inline_memb_init.ipp b/test/boost_no_inline_memb_init.ipp
new file mode 100644
index 0000000..4ccacbe
--- /dev/null
+++ b/test/boost_no_inline_memb_init.ipp
@@ -0,0 +1,62 @@
+// (C) Copyright John Maddock 2001.
+// 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 most recent version.
+
+// MACRO: BOOST_NO_INCLASS_MEMBER_INITIALIZATION
+// TITLE: inline member constant initialisation
+// DESCRIPTION: Compiler violates std::9.4.2/4.
+
+
+namespace boost_no_inclass_member_initialization{
+
+struct UDT{};
+
+
+template <bool b1, bool b2, bool b3, bool b4, bool b5, bool b6, bool b7>
+struct ice_or_helper
+{
+ static const bool value = true;
+};
+template <>
+struct ice_or_helper<false, false, false, false, false, false, false>
+{
+ static const bool value = false;
+};
+
+template <bool b1, bool b2, bool b3 = false, bool b4 = false, bool b5 = false, bool b6 = false, bool b7 = false>
+struct ice_or
+{
+ static const bool value = ice_or_helper<b1, b2, b3, b4, b5, b6, b7>::value;
+};
+
+template <class T>
+struct is_int
+{
+ static const bool value = false;
+};
+
+template <>
+struct is_int<int>
+{
+ static const bool value = true;
+};
+
+#if defined(__GNUC__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)))
+# define BOOST_UNUSED_ATTRIBUTE __attribute__((unused))
+#else
+# define BOOST_UNUSED_ATTRIBUTE
+#endif
+
+
+int test()
+{
+ typedef int a1[ice_or< is_int<int>::value, is_int<UDT>::value>::value ? 1 : -1] BOOST_UNUSED_ATTRIBUTE;
+ return 0;
+}
+
+}
+
+#undef BOOST_UNUSED_ATTRIBUTE
diff --git a/test/boost_no_integral_int64_t.ipp b/test/boost_no_integral_int64_t.ipp
new file mode 100644
index 0000000..eb11640
--- /dev/null
+++ b/test/boost_no_integral_int64_t.ipp
@@ -0,0 +1,54 @@
+// (C) Copyright John Maddock 2001.
+// 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 most recent version.
+
+// MACRO: BOOST_NO_INTEGRAL_INT64_T
+// TITLE: long long and integral constant expressions
+// DESCRIPTION: The platform supports long long in integral constant expressions.
+
+#include <cstdlib>
+
+
+namespace boost_no_integral_int64_t{
+
+#ifdef BOOST_NO_INCLASS_MEMBER_INITIALIZATION
+enum{ mask = 1uLL << 50 };
+
+template <unsigned long long m>
+struct llt
+{
+ enum{ value = m };
+};
+#else
+#ifdef __GNUC__
+__extension__
+#endif
+static const unsigned long long mask = 1uLL << 50;
+
+#ifdef __GNUC__
+__extension__
+#endif
+template <unsigned long long m>
+struct llt
+{
+#ifdef __GNUC__
+__extension__
+#endif
+ static const unsigned long long value = m;
+};
+#endif
+
+int test()
+{
+ return llt<mask>::value != (1uLL << 50);
+}
+
+}
+
+
+
+
+
diff --git a/test/boost_no_iosfwd.ipp b/test/boost_no_iosfwd.ipp
new file mode 100644
index 0000000..86ac42e
--- /dev/null
+++ b/test/boost_no_iosfwd.ipp
@@ -0,0 +1,23 @@
+// (C) Copyright Peter Dimov 2007.
+// 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 most recent version.
+
+// MACRO: BOOST_NO_IOSFWD
+// TITLE: <iosfwd>
+// DESCRIPTION: The <iosfwd> header is missing
+
+#include <iosfwd>
+
+namespace boost_no_iosfwd
+{
+
+int test()
+{
+ return 0;
+}
+
+}
+
diff --git a/test/boost_no_iostream.ipp b/test/boost_no_iostream.ipp
new file mode 100644
index 0000000..abaceac
--- /dev/null
+++ b/test/boost_no_iostream.ipp
@@ -0,0 +1,25 @@
+// (C) Copyright Peter Dimov 2007.
+// 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 most recent version.
+
+// MACRO: BOOST_NO_IOSTREAM
+// TITLE: No iostream support
+// DESCRIPTION: The <iostream>, <istream>, <ostream> headers are missing
+
+#include <iostream>
+#include <istream>
+#include <ostream>
+
+namespace boost_no_iostream
+{
+
+int test()
+{
+ return 0;
+}
+
+}
+
diff --git a/test/boost_no_is_abstract.ipp b/test/boost_no_is_abstract.ipp
new file mode 100644
index 0000000..257318e
--- /dev/null
+++ b/test/boost_no_is_abstract.ipp
@@ -0,0 +1,53 @@
+// (C) Copyright John Maddock and Dave Abrahams 2002.
+// 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 most recent version.
+
+// MACRO: BOOST_NO_IS_ABSTRACT
+// TITLE: is_abstract implementation technique
+// DESCRIPTION: Some compilers can't handle the code used for is_abstract even if they support SFINAE.
+
+
+namespace boost_no_is_abstract{
+
+#if defined(__CODEGEARC__)
+template<class T>
+struct is_abstract_test
+{
+ enum{ value = __is_abstract(T) };
+};
+#else
+template<class T>
+struct is_abstract_test
+{
+ // Deduction fails if T is void, function type,
+ // reference type (14.8.2/2)or an abstract class type
+ // according to review status issue #337
+ //
+ template<class U>
+ static double check_sig(U (*)[1]);
+ template<class U>
+ static char check_sig(...);
+
+#ifdef __GNUC__
+ enum{ s1 = sizeof(is_abstract_test<T>::template check_sig<T>(0)) };
+#else
+ enum{ s1 = sizeof(check_sig<T>(0)) };
+#endif
+
+ enum{ value = (s1 == sizeof(char)) };
+};
+#endif
+
+struct non_abstract{};
+struct abstract{ virtual void foo() = 0; };
+
+int test()
+{
+ return static_cast<bool>(is_abstract_test<non_abstract>::value) == static_cast<bool>(is_abstract_test<abstract>::value);
+}
+
+}
+
diff --git a/test/boost_no_iter_construct.ipp b/test/boost_no_iter_construct.ipp
new file mode 100644
index 0000000..e87a76f
--- /dev/null
+++ b/test/boost_no_iter_construct.ipp
@@ -0,0 +1,38 @@
+// (C) Copyright John Maddock 2001.
+// 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 most recent version.
+
+// MACRO: BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
+// TITLE: template iterator-constructors
+// DESCRIPTION: The standard library does not provide
+// templated iterator constructors for its containers.
+
+#include <vector>
+#include <deque>
+#include <list>
+
+namespace boost_no_templated_iterator_constructors{
+
+int test()
+{
+ std::vector<int> v1;
+ std::deque<int> d1;
+ std::list<char> l1;
+
+ //
+ // now try constructors:
+ std::vector<long> v2(d1.begin(), d1.end());
+ std::deque<long> d2(v1.begin(), v1.end());
+ std::list<long> l2(d1.begin(), d1.end());
+
+ return 0;
+}
+
+}
+
+
+
+
diff --git a/test/boost_no_lambdas.ipp b/test/boost_no_lambdas.ipp
new file mode 100644
index 0000000..edd3341
--- /dev/null
+++ b/test/boost_no_lambdas.ipp
@@ -0,0 +1,30 @@
+// (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_CXX11_LAMBDAS
+// TITLE: C++0x lambda feature unavailable
+// DESCRIPTION: The compiler does not support the C++0x lambda feature
+
+#if defined(__GNUC__) && !defined(__GXX_EXPERIMENTAL_CXX0X__) && !defined(BOOST_INTEL_STDCXX0X)
+# error This feature is not available in non-C++0x mode
+#endif
+
+namespace boost_no_cxx11_lambdas {
+
+template <class Func>
+int f(Func f)
+{
+ return f();
+}
+
+int test()
+{
+ return f([](){ return 0; });
+}
+
+}
diff --git a/test/boost_no_limits.ipp b/test/boost_no_limits.ipp
new file mode 100644
index 0000000..e7a011b
--- /dev/null
+++ b/test/boost_no_limits.ipp
@@ -0,0 +1,34 @@
+// (C) Copyright John Maddock 2001.
+// 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 most recent version.
+
+// MACRO: BOOST_NO_LIMITS
+// TITLE: <limits>
+// DESCRIPTION: The C++ implementation does not provide the <limits> header.
+
+#include <limits>
+
+namespace boost_no_limits{
+
+int test()
+{
+ if(0 == std::numeric_limits<int>::is_specialized) return -1;
+ if(0 == std::numeric_limits<long>::is_specialized) return -1;
+ if(0 == std::numeric_limits<char>::is_specialized) return -1;
+ if(0 == std::numeric_limits<unsigned char>::is_specialized) return -1;
+ if(0 == std::numeric_limits<signed char>::is_specialized) return -1;
+ if(0 == std::numeric_limits<float>::is_specialized) return -1;
+ if(0 == std::numeric_limits<double>::is_specialized) return -1;
+ if(0 == std::numeric_limits<long double>::is_specialized) return -1;
+ return 0;
+}
+
+}
+
+
+
+
+
diff --git a/test/boost_no_limits_const_exp.ipp b/test/boost_no_limits_const_exp.ipp
new file mode 100644
index 0000000..8438f7e
--- /dev/null
+++ b/test/boost_no_limits_const_exp.ipp
@@ -0,0 +1,42 @@
+// (C) Copyright John Maddock 2001.
+// 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 most recent version.
+
+// MACRO: BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
+// TITLE: compile time constants in <limits>
+// DESCRIPTION: constants such as numeric_limits<T>::is_signed
+// are not available for use at compile-time.
+
+#include <limits>
+
+namespace boost_no_limits_compile_time_constants{
+
+struct UDT{};
+
+template <int i>
+struct assert_ice
+{
+ enum { value = i };
+};
+
+int test()
+{
+ assert_ice< ::std::numeric_limits<int>::is_signed > one;
+ assert_ice< ::std::numeric_limits<double>::is_specialized > two;
+ assert_ice< ::std::numeric_limits<UDT>::is_specialized > three;
+ assert_ice< ::std::numeric_limits<UDT>::is_signed > four;
+ (void)one;
+ (void)two;
+ (void)three;
+ (void)four;
+ return 0;
+}
+
+}
+
+
+
+
diff --git a/test/boost_no_ll_limits.ipp b/test/boost_no_ll_limits.ipp
new file mode 100644
index 0000000..8f7db7d
--- /dev/null
+++ b/test/boost_no_ll_limits.ipp
@@ -0,0 +1,37 @@
+// (C) Copyright John Maddock 2001.
+// 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 most recent version.
+
+// MACRO: BOOST_NO_LONG_LONG_NUMERIC_LIMITS
+// TITLE: std::numeric_limits<long long>
+// DESCRIPTION: The C++ implementation does not provide the a specialisation
+// for std::numeric_limits<long long>.
+
+#include <limits>
+
+namespace boost_no_long_long_numeric_limits{
+
+int test()
+{
+#ifdef __GNUC__
+__extension__
+#endif
+ typedef long long llt;
+#ifdef __GNUC__
+__extension__
+#endif
+ typedef unsigned long long ullt;
+ if(0 == std::numeric_limits<llt>::is_specialized) return -1;
+ if(0 == std::numeric_limits<ullt>::is_specialized) return -1;
+ return 0;
+}
+
+}
+
+
+
+
+
diff --git a/test/boost_no_long_long.ipp b/test/boost_no_long_long.ipp
new file mode 100644
index 0000000..52ee3ed
--- /dev/null
+++ b/test/boost_no_long_long.ipp
@@ -0,0 +1,36 @@
+// (C) Copyright John Maddock 2001.
+// 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 most recent version.
+
+// MACRO: BOOST_NO_LONG_LONG
+// TITLE: C++0x long long unavailable
+// DESCRIPTION: The platform does not support C++0x long long.
+
+#include <cstdlib>
+
+
+namespace boost_no_long_long{
+
+int test()
+{
+#ifdef __GNUC__
+ __extension__ long long lli = 0LL;
+ __extension__ unsigned long long ulli = 0uLL;
+#else
+ long long lli = 0LL;
+ unsigned long long ulli = 0uLL;
+#endif
+ (void)&lli;
+ (void)&ulli;
+ return 0;
+}
+
+}
+
+
+
+
+
diff --git a/test/boost_no_mem_func_spec.ipp b/test/boost_no_mem_func_spec.ipp
new file mode 100644
index 0000000..96cf92a
--- /dev/null
+++ b/test/boost_no_mem_func_spec.ipp
@@ -0,0 +1,62 @@
+// (C) Copyright John Maddock 2002.
+// 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 most recent version.
+
+// MACRO: BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS
+// TITLE: Specialisation of individual member functions.
+// DESCRIPTION: Verify that specializations of individual members
+// of template classes work OK.
+
+
+namespace boost_no_member_function_specializations{
+
+
+template<class T>
+class foo
+{
+public:
+ foo();
+ foo(const T&);
+ ~foo();
+ int bar();
+};
+
+// declare specialisations:
+template<> foo<int>::foo();
+template<> foo<int>::foo(const int&);
+template<> foo<int>::~foo();
+template<> int foo<int>::bar();
+
+// provide defaults:
+template<class T> foo<T>::foo(){}
+template<class T> foo<T>::foo(const T&){}
+template<class T> foo<T>::~foo(){}
+template<class T> int foo<T>::bar(){ return 0; }
+
+// provide defs:
+template<> foo<int>::foo(){}
+template<> foo<int>::foo(const int&){}
+template<> foo<int>::~foo(){}
+template<> int foo<int>::bar(){ return 1; }
+
+
+int test()
+{
+ foo<double> f1;
+ foo<int> f2;
+ f1.bar();
+ f2.bar();
+ return 0;
+}
+
+
+}
+
+
+
+
+
+
diff --git a/test/boost_no_mem_tem_keyword.ipp b/test/boost_no_mem_tem_keyword.ipp
new file mode 100644
index 0000000..4f0901f
--- /dev/null
+++ b/test/boost_no_mem_tem_keyword.ipp
@@ -0,0 +1,69 @@
+// (C) Copyright John Maddock 2001.
+// 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 most recent version.
+
+// MACRO: BOOST_NO_MEMBER_TEMPLATE_KEYWORD
+// TITLE: member templates keyword
+// DESCRIPTION: Member template keyword not supported.
+
+namespace boost_no_member_template_keyword{
+
+#ifndef BOOST_NO_MEMBER_TEMPLATES
+
+template <class T>
+struct foo
+{
+ template <class U>
+ struct nested
+ {
+ typedef foo<U> other;
+ };
+ template <class U>
+ void mfoo(const U&);
+};
+
+template <class T>
+template <class U>
+void foo<T>::mfoo(const U&)
+{
+}
+
+template <class T>
+void test_proc(T i)
+{
+ foo<double> f1;
+ typedef foo<T> ifoo;
+ f1.mfoo(i);
+ f1.template mfoo<T>(i);
+ typedef typename ifoo::template nested<double> bound_t;
+ typedef typename bound_t::other other;
+ other o;
+ (void) &o; // avoid "unused variable" warning
+}
+
+#else
+template <class T>
+void test_proc(T)
+{
+}
+#endif
+
+int test()
+{
+ test_proc(0);
+ return 0;
+}
+
+
+}
+
+
+
+
+
+
+
+
diff --git a/test/boost_no_mem_tem_pnts.ipp b/test/boost_no_mem_tem_pnts.ipp
new file mode 100644
index 0000000..ad96620
--- /dev/null
+++ b/test/boost_no_mem_tem_pnts.ipp
@@ -0,0 +1,50 @@
+// Copyright (C) Joaquin M Lopez Munoz 2004.
+// 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 most recent version.
+
+// MACRO: BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS
+// TITLE: pointers to members as template arguments
+// DESCRIPTION: Non-type template parameters which take pointers
+// to members, fail to work correctly.
+
+
+namespace boost_no_pointer_to_member_template_parameters{
+
+struct pair
+{
+ int x, y;
+
+ pair(int x_,int y_)
+ : x(x_), y(y_)
+ {}
+};
+
+template<int pair::* PtrToPairMember>
+struct foo
+{
+ int bar(pair& p)
+ {
+ return p.*PtrToPairMember;
+ }
+};
+
+int test()
+{
+ pair p(0,1);
+ foo<&pair::x> fx;
+ foo<&pair::y> fy;
+
+ if((fx.bar(p) != 0) || (fy.bar(p) != 1))
+ return 1;
+ return 0;
+}
+
+}
+
+
+
+
+
diff --git a/test/boost_no_mem_templ_frnds.ipp b/test/boost_no_mem_templ_frnds.ipp
new file mode 100644
index 0000000..c1c1b63
--- /dev/null
+++ b/test/boost_no_mem_templ_frnds.ipp
@@ -0,0 +1,72 @@
+// (C) Copyright John Maddock 2001.
+// 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 most recent version.
+
+// MACRO: BOOST_NO_MEMBER_TEMPLATE_FRIENDS
+// TITLE: member template friends
+// DESCRIPTION: Member template friend syntax
+// ("template<class P> friend class frd;")
+// described in the C++ Standard,
+// 14.5.3, not supported.
+
+
+namespace boost_no_member_template_friends{
+
+template <class T>
+class foobar;
+
+template <class T>
+class foo;
+
+template <class T>
+bool must_be_friend_proc(const foo<T>& f);
+
+template <class T>
+class foo
+{
+private:
+ template<typename Y> friend class foobar;
+ template<typename Y> friend class foo;
+ template<typename Y> friend bool must_be_friend_proc(const foo<Y>& f);
+ int i;
+public:
+ foo(){ i = 0; }
+ template <class U>
+ foo(const foo<U>& f){ i = f.i; }
+};
+
+template <class T>
+bool must_be_friend_proc(const foo<T>& f)
+{ return f.i != 0; }
+
+template <class T>
+class foobar
+{
+ int i;
+public:
+ template <class U>
+ foobar(const foo<U>& f)
+ { i = f.i; }
+};
+
+
+int test()
+{
+ foo<int> fi;
+ foo<double> fd(fi);
+ must_be_friend_proc(fd);
+ foobar<long> fb(fi);
+ (void) &fb; // avoid "unused variable" warning
+ return 0;
+}
+
+}
+
+
+
+
+
+
diff --git a/test/boost_no_mem_templates.ipp b/test/boost_no_mem_templates.ipp
new file mode 100644
index 0000000..873580f
--- /dev/null
+++ b/test/boost_no_mem_templates.ipp
@@ -0,0 +1,64 @@
+// (C) Copyright John Maddock 2001.
+// 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 most recent version.
+
+// MACRO: BOOST_NO_MEMBER_TEMPLATES
+// TITLE: member templates
+// DESCRIPTION: Member template functions not fully supported.
+
+#ifndef BOOST_NESTED_TEMPLATE
+#define BOOST_NESTED_TEMPLATE template
+#endif
+
+
+namespace boost_no_member_templates{
+
+template <class T>
+struct foo
+{
+ template <class U>
+ struct nested
+ {
+ typedef foo<U> other;
+ };
+ template <class U>
+ void mfoo(const U&);
+};
+
+template <class T>
+template <class U>
+void foo<T>::mfoo(const U&)
+{
+}
+
+template <class T>
+void test_proc(T i)
+{
+ foo<double> f1;
+ typedef foo<T> ifoo;
+ f1.mfoo(i);
+ //f1.template mfoo<T>(i);
+ typedef typename ifoo::BOOST_NESTED_TEMPLATE nested<double> bound_t;
+ typedef typename bound_t::other other;
+ other o;
+ (void) &o;
+}
+
+int test()
+{
+ test_proc(0);
+ return 0;
+}
+
+
+}
+
+
+
+
+
+
+
diff --git a/test/boost_no_nested_friendship.ipp b/test/boost_no_nested_friendship.ipp
new file mode 100644
index 0000000..7ff9cc4
--- /dev/null
+++ b/test/boost_no_nested_friendship.ipp
@@ -0,0 +1,44 @@
+// Copyright (C) 2008 N. Musatti
+// 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 most recent version.
+
+// MACRO: BOOST_NO_NESTED_FRIENDSHIP
+// TITLE: Access to private members from nested classes
+// DESCRIPTION: If the compiler fails to support access to private members
+// from nested classes
+
+namespace boost_no_nested_friendship {
+
+class A {
+public:
+ A() {}
+ struct B {
+ int f(A& a)
+ {
+ a.f1();
+ a.f2(a);
+ return a.b;
+ }
+ };
+
+private:
+ static int b;
+ static void f1(){}
+ template <class T>
+ static void f2(const T&){}
+};
+
+int A::b = 0;
+
+int test()
+{
+ A a;
+ A::B b;
+ return b.f(a);
+}
+
+}
+
diff --git a/test/boost_no_noexcept.ipp b/test/boost_no_noexcept.ipp
new file mode 100644
index 0000000..878658f
--- /dev/null
+++ b/test/boost_no_noexcept.ipp
@@ -0,0 +1,26 @@
+// Copyright (C) 2011 Takaya Saito
+// 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 most recent version.
+
+// MACRO: BOOST_NO_CXX11_NOEXCEPT
+// TITLE: C++0x noexcept unavailable
+// DESCRIPTION: The compiler does not support C++0x noexcept
+
+namespace boost_no_cxx11_noexcept {
+
+void quiet_warning(bool){}
+
+int f() noexcept ;
+int g() noexcept( noexcept( f() ) ) ;
+
+int test()
+{
+ bool b = noexcept( g() );
+ quiet_warning(b);
+ return 0;
+}
+
+}
diff --git a/test/boost_no_nullptr.ipp b/test/boost_no_nullptr.ipp
new file mode 100644
index 0000000..5fc12fb
--- /dev/null
+++ b/test/boost_no_nullptr.ipp
@@ -0,0 +1,24 @@
+// (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_CXX11_NULLPTR
+// TITLE: C++0x nullptr feature unavailable
+// DESCRIPTION: The compiler does not support the C++0x nullptr feature
+
+namespace boost_no_cxx11_nullptr {
+
+void quiet_warning(const int*){}
+
+int test()
+{
+ int * p = nullptr;
+ quiet_warning(p);
+ return 0;
+}
+
+}
diff --git a/test/boost_no_ops_in_namespace.ipp b/test/boost_no_ops_in_namespace.ipp
new file mode 100644
index 0000000..895d9ba
--- /dev/null
+++ b/test/boost_no_ops_in_namespace.ipp
@@ -0,0 +1,73 @@
+// (C) Copyright Jeremy Siek 1999.
+// (C) Copyright David Abrahams 1999.
+// (C) Copyright John Maddock 2001.
+// 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 most recent version.
+
+// MACRO: BOOST_NO_OPERATORS_IN_NAMESPACE
+// TITLE: friend operators in namespace
+// DESCRIPTION: Compiler requires inherited operator
+// friend functions to be defined at namespace scope,
+// then using'ed to boost.
+// Probably GCC specific. See boost/operators.hpp for example.
+
+namespace boost{
+
+//
+// the following is taken right out of <boost/operators.hpp>
+//
+template <class T>
+struct addable1
+{
+ friend T operator+(T x, const T& y) { return x += y; }
+ friend bool operator != (const T& a, const T& b) { return !(a == b); }
+};
+
+struct spoiler1
+{};
+
+spoiler1 operator+(const spoiler1&,const spoiler1&);
+bool operator !=(const spoiler1&, const spoiler1&);
+
+
+} // namespace boost
+
+namespace boost_no_operators_in_namespace{
+
+struct spoiler2
+{};
+
+spoiler2 operator+(const spoiler2&,const spoiler2&);
+bool operator !=(const spoiler2&, const spoiler2&);
+
+
+class add : public boost::addable1<add>
+{
+ int val;
+public:
+ add(int i) { val = i; }
+ add(const add& a){ val = a.val; }
+ add& operator+=(const add& a) { val += a.val; return *this; }
+ bool operator==(const add& a)const { return val == a.val; }
+};
+
+int test()
+{
+ add a1(2);
+ add a2(3);
+ add a3(0);
+ a3 = a1 + a2;
+ bool b1 = (a1 == a2);
+ b1 = (a1 != a2);
+ (void)b1;
+ return 0;
+}
+
+}
+
+
+
+
diff --git a/test/boost_no_part_spec_def_args.ipp b/test/boost_no_part_spec_def_args.ipp
new file mode 100644
index 0000000..91ef537
--- /dev/null
+++ b/test/boost_no_part_spec_def_args.ipp
@@ -0,0 +1,46 @@
+// (C) Copyright John Maddock 2008.
+// 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 most recent version.
+
+// MACRO: BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS
+// TITLE: Default arguments in partial specialization
+// DESCRIPTION: The compiler chokes if a partial specialization relies on default arguments in the primary template.
+
+namespace boost_no_partial_specialization_implicit_default_args{
+
+template <class T>
+struct one
+{
+};
+
+template <class T1, class T2 = void>
+struct tag
+{
+};
+
+template <class T1>
+struct tag<one<T1> >
+{
+};
+
+template <class T>
+void consume_variable(T const&){}
+
+int test()
+{
+ tag<int> t1;
+ consume_variable(t1);
+ tag<one<int> > t2;
+ consume_variable(t2);
+ tag<int, double> t3;
+ consume_variable(t3);
+ tag<one<int>, double> t4;
+ consume_variable(t4);
+ return 0;
+}
+
+}
+
diff --git a/test/boost_no_partial_spec.ipp b/test/boost_no_partial_spec.ipp
new file mode 100644
index 0000000..036744e
--- /dev/null
+++ b/test/boost_no_partial_spec.ipp
@@ -0,0 +1,56 @@
+// (C) Copyright John Maddock 2001.
+// 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 most recent version.
+
+// MACRO: BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+// TITLE: partial specialisation
+// DESCRIPTION: Class template partial specialization
+// (14.5.4 [temp.class.spec]) not supported.
+
+
+namespace boost_no_template_partial_specialization{
+
+template <class T>
+struct partial1
+{
+ typedef T& type;
+};
+
+template <class T>
+struct partial1<T&>
+{
+ typedef T& type;
+};
+
+template <class T, bool b>
+struct partial2
+{
+ typedef T& type;
+};
+
+template <class T>
+struct partial2<T,true>
+{
+ typedef T type;
+};
+
+
+int test()
+{
+ int i = 0;
+ partial1<int&>::type p1 = i;
+ partial2<int&,true>::type p2 = i;
+ (void)p1;
+ (void)p2;
+ (void)i;
+ return 0;
+}
+
+}
+
+
+
+
diff --git a/test/boost_no_priv_aggregate.ipp b/test/boost_no_priv_aggregate.ipp
new file mode 100644
index 0000000..ca1aee7
--- /dev/null
+++ b/test/boost_no_priv_aggregate.ipp
@@ -0,0 +1,39 @@
+// (C) Copyright John Maddock 2001.
+// 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 most recent version.
+
+// MACRO: BOOST_NO_PRIVATE_IN_AGGREGATE
+// TITLE: private in aggregate types
+// DESCRIPTION: The compiler misreads 8.5.1, treating classes
+// as non-aggregate if they contain private or
+// protected member functions.
+
+
+namespace boost_no_private_in_aggregate{
+
+struct t
+{
+private:
+ void foo(){ i = j; }
+public:
+ void uncallable(); // silences warning from GCC
+ int i;
+ int j;
+};
+
+
+int test()
+{
+ t inst = { 0, 0, };
+ (void) &inst; // avoid "unused variable" warning
+ return 0;
+}
+
+}
+
+
+
+
diff --git a/test/boost_no_ptr_mem_const.ipp b/test/boost_no_ptr_mem_const.ipp
new file mode 100644
index 0000000..f106966
--- /dev/null
+++ b/test/boost_no_ptr_mem_const.ipp
@@ -0,0 +1,84 @@
+// Copyright (c) 2000
+// Cadenza New Zealand Ltd
+//
+// (C) Copyright John Maddock 2001.
+//
+// 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.
+
+// MACRO: BOOST_NO_POINTER_TO_MEMBER_CONST
+// TITLE: pointers to const member functions
+// DESCRIPTION: The compiler does not correctly handle
+// pointers to const member functions, preventing use
+// of these in overloaded function templates.
+// See boost/functional.hpp for example.
+
+namespace boost_no_pointer_to_member_const{
+
+template <class S, class T>
+class const_mem_fun_t
+{
+public:
+ explicit const_mem_fun_t(S (T::*p)() const)
+ :
+ ptr(p)
+ {}
+ S operator()(const T* p) const
+ {
+ return (p->*ptr)();
+ }
+private:
+ S (T::*ptr)() const;
+};
+
+template <class S, class T, class A>
+class const_mem_fun1_t
+{
+public:
+ explicit const_mem_fun1_t(S (T::*p)(A) const)
+ :
+ ptr(p)
+ {}
+ S operator()(const T* p, const A& x) const
+ {
+ return (p->*ptr)(x);
+ }
+private:
+ S (T::*ptr)(A) const;
+};
+
+template<class S, class T>
+inline const_mem_fun_t<S,T> mem_fun(S (T::*f)() const)
+{
+ return const_mem_fun_t<S,T>(f);
+}
+
+template<class S, class T, class A>
+inline const_mem_fun1_t<S,T,A> mem_fun(S (T::*f)(A) const)
+{
+ return const_mem_fun1_t<S,T,A>(f);
+}
+
+class tester
+{
+public:
+ void foo1()const{}
+ int foo2(int i)const{ return i*2; }
+};
+
+
+int test()
+{
+ boost_no_pointer_to_member_const::mem_fun(&tester::foo1);
+ boost_no_pointer_to_member_const::mem_fun(&tester::foo2);
+ return 0;
+}
+
+}
+
+
+
+
diff --git a/test/boost_no_range_based_for.ipp b/test/boost_no_range_based_for.ipp
new file mode 100644
index 0000000..15468ec
--- /dev/null
+++ b/test/boost_no_range_based_for.ipp
@@ -0,0 +1,23 @@
+// Copyright Beman Dawes 2012
+
+// Distributed under the Boost Software License, Version 1.0.
+// See http://www.boost.org/LICENSE_1_0.txt
+
+// See http://www.boost.org/libs/config for more information.
+
+// MACRO: BOOST_NO_CXX11_RANGE_BASED_FOR
+// TITLE: C++11 ranged-based for statement unavailable
+// DESCRIPTION: The compiler does not support the C++11 range-based for statement
+
+namespace boost_no_cxx11_range_based_for {
+
+int test()
+{
+ // example from 6.5.4 The range-based for statement [stmt.ranged]
+ int array[5] = { 1, 2, 3, 4, 5 };
+ for (int& x : array)
+ x *= 2;
+ return 0;
+}
+
+}
diff --git a/test/boost_no_raw_literals.ipp b/test/boost_no_raw_literals.ipp
new file mode 100644
index 0000000..c3ead77
--- /dev/null
+++ b/test/boost_no_raw_literals.ipp
@@ -0,0 +1,27 @@
+// (C) Copyright Beman Dawes 2008
+
+// 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_CXX11_RAW_LITERALS
+// TITLE: C++0x raw string literals unavailable
+// DESCRIPTION: The compiler does not support C++0x raw string literals
+
+namespace boost_no_cxx11_raw_literals {
+
+void quiet_warning(const char*){}
+void quiet_warning(const wchar_t*){}
+
+int test()
+{
+ const char* s = R"(abc)";
+ quiet_warning(s);
+ const wchar_t* ws = LR"(abc)";
+ quiet_warning(ws);
+ return 0;
+}
+
+}
diff --git a/test/boost_no_restrict_references.ipp b/test/boost_no_restrict_references.ipp
new file mode 100644
index 0000000..548984d
--- /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 <boost/config.hpp>
+
+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/boost_no_ret_det.ipp b/test/boost_no_ret_det.ipp
new file mode 100644
index 0000000..e57c9ed
--- /dev/null
+++ b/test/boost_no_ret_det.ipp
@@ -0,0 +1,43 @@
+// (C) Copyright John Maddock 2001.
+// 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.
+
+// MACRO: BOOST_NO_UNREACHABLE_RETURN_DETECTION
+// TITLE: detection of unreachable returns
+// DESCRIPTION: If a return is unreachable, then no return
+// statement should be required, however some
+// compilers insist on it, while other issue a
+// bunch of warnings if it is in fact present.
+
+#if defined( BOOST_NO_EXCEPTIONS )
+# include <stdlib.h>
+#endif
+
+namespace boost_no_unreachable_return_detection{
+
+int checker()
+{
+#if defined( BOOST_NO_EXCEPTIONS ) && (!defined( _MSC_VER ) || defined(__clang__))
+ abort();
+#else
+ throw 0;
+#endif
+ // no return statement: we don't ever get here...
+}
+
+int check = 0;
+
+int test()
+{
+ if(check)
+ return checker();
+ return 0;
+}
+
+}
+
+
+
diff --git a/test/boost_no_rtti.ipp b/test/boost_no_rtti.ipp
new file mode 100644
index 0000000..4295d70
--- /dev/null
+++ b/test/boost_no_rtti.ipp
@@ -0,0 +1,64 @@
+// (C) Copyright John Maddock 2008.
+// 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 most recent version.
+
+// MACRO: BOOST_NO_RTTI
+// TITLE: RTTI unavailable
+// DESCRIPTION: The compiler does not support RTTI in this mode
+
+#include <typeinfo>
+
+class A
+{
+public:
+ A(){}
+ virtual void t();
+};
+
+void A::t()
+{
+}
+
+class B : public A
+{
+public:
+ B(){}
+ virtual void t();
+};
+
+void B::t()
+{
+}
+
+namespace boost_no_rtti
+{
+
+int check_f(const A& a)
+{
+ return typeid(a) == typeid(B) ? 0 : 1;
+}
+
+int test()
+{
+#if defined( BOOST_NO_EXCEPTIONS )
+ {
+ B b;
+ return check_f(b);
+ }
+#else
+ try{
+ B b;
+ return check_f(b);
+ }
+ catch(...)
+ {
+ return 1;
+ }
+#endif
+}
+
+}
+
diff --git a/test/boost_no_rvalue_references.ipp b/test/boost_no_rvalue_references.ipp
new file mode 100644
index 0000000..219a717
--- /dev/null
+++ b/test/boost_no_rvalue_references.ipp
@@ -0,0 +1,26 @@
+// Copyright (C) 2007 Douglas Gregor
+// 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 most recent version.
+
+// MACRO: BOOST_NO_CXX11_RVALUE_REFERENCES
+// TITLE: C++0x rvalue references unavailable
+// DESCRIPTION: The compiler does not support C++0x rvalue references
+
+namespace boost_no_cxx11_rvalue_references {
+
+void g(int&) {}
+
+template<typename F, typename T>
+void forward(F f, T&& t) { f(static_cast<T&&>(t)); }
+
+int test()
+{
+ int x;
+ forward(g, x);
+ return 0;
+}
+
+}
diff --git a/test/boost_no_scoped_enums.ipp b/test/boost_no_scoped_enums.ipp
new file mode 100644
index 0000000..f1d9dc5
--- /dev/null
+++ b/test/boost_no_scoped_enums.ipp
@@ -0,0 +1,28 @@
+// (C) Copyright Beman Dawes 2008
+
+// 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_CXX11_SCOPED_ENUMS
+// TITLE: C++0x scoped enum unavailable
+// DESCRIPTION: The compiler does not support C++0x scoped enum
+
+namespace boost_no_cxx11_scoped_enums {
+
+int test()
+{
+ enum class scoped_enum { yes, no, maybe };
+ // This tests bug http://gcc.gnu.org/bugzilla/show_bug.cgi?id=38064
+ bool b = (scoped_enum::yes == scoped_enum::yes)
+ && (scoped_enum::yes != scoped_enum::no)
+ && (scoped_enum::yes < scoped_enum::no)
+ && (scoped_enum::yes <= scoped_enum::no)
+ && (scoped_enum::no > scoped_enum::yes)
+ && (scoped_enum::no >= scoped_enum::yes);
+ return b ? 0 : 1;
+}
+
+}
diff --git a/test/boost_no_sfinae.ipp b/test/boost_no_sfinae.ipp
new file mode 100644
index 0000000..57dad28
--- /dev/null
+++ b/test/boost_no_sfinae.ipp
@@ -0,0 +1,68 @@
+// (C) Copyright Eric Friedman 2003.
+// Some modifications by Jeremiah Willcock and Jaakko Jarvi.
+// Use, modification, and distribution is 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)
+
+// MACRO: BOOST_NO_SFINAE
+// TITLE: SFINAE (substitution failure is not an error)
+// DESCRIPTION: SFINAE not supported.
+
+
+namespace boost_no_sfinae {
+
+namespace f1_a {
+template <typename T>
+int f1(T*, float)
+{
+ return 0;
+}
+} using f1_a::f1;
+
+namespace f1_b {
+template <typename T>
+int f1(T*, int, typename T::int_* = 0)
+{
+ return 1;
+}
+} using f1_b::f1;
+
+namespace f2_a {
+template <typename T>
+int f2(T*, float)
+{
+ return 2;
+}
+} using f2_a::f2;
+
+namespace f2_b {
+template <typename T>
+typename T::int_ f2(T*, int)
+{
+ return 3;
+}
+} using f2_b::f2;
+
+struct test_t
+{
+ typedef int int_;
+};
+
+struct test2_t {};
+
+int test()
+{
+ test_t* t = 0;
+ test2_t* t2 = 0;
+ bool correct =
+ (f1(t, 0) == 1) &&
+ (f1(t2, 0) == 0) &&
+ (f2(t, 0) == 3) &&
+ (f2(t2, 0) == 2);
+ return !correct;
+}
+
+}
+
+
+
diff --git a/test/boost_no_sfinae_expr.ipp b/test/boost_no_sfinae_expr.ipp
new file mode 100644
index 0000000..c3ce89e
--- /dev/null
+++ b/test/boost_no_sfinae_expr.ipp
@@ -0,0 +1,37 @@
+// (C) Copyright Mathias Gaunard 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 the most recent version.
+
+// MACRO: BOOST_NO_SFINAE_EXPR
+// TITLE: SFINAE for expressions
+// DESCRIPTION: SFINAE for expressions not supported.
+
+namespace boost_no_sfinae_expr
+{
+
+template<typename T>
+struct has_foo
+{
+ typedef char NotFound;
+ struct Found { char x[2]; };
+
+ template<int> struct dummy {};
+
+ template<class X> static Found test(dummy< sizeof((*(X*)0).foo(), 0) >*);
+ template<class X> static NotFound test( ... );
+
+ static const bool value = (sizeof(Found) == sizeof(test<T>(0)));
+};
+
+struct test1 {};
+struct test2 { void foo(); };
+
+int test()
+{
+ return has_foo<test1>::value || !has_foo<test2>::value;
+}
+
+} // namespace boost_no_sfinae_expr
diff --git a/test/boost_no_sstream.ipp b/test/boost_no_sstream.ipp
new file mode 100644
index 0000000..6d06b11
--- /dev/null
+++ b/test/boost_no_sstream.ipp
@@ -0,0 +1,29 @@
+// (C) Copyright John Maddock 2001.
+// 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.
+
+// MACRO: BOOST_NO_STRINGSTREAM
+// TITLE: <sstream>
+// DESCRIPTION: The C++ implementation does not provide the <sstream> header.
+
+#include <sstream>
+#include <string>
+
+namespace boost_no_stringstream{
+
+int test()
+{
+ std::stringstream ss;
+ ss << "abc";
+ std::string s = ss.str();
+ return (s != "abc");
+}
+
+}
+
+
+
+
diff --git a/test/boost_no_static_assert.ipp b/test/boost_no_static_assert.ipp
new file mode 100644
index 0000000..38ca296
--- /dev/null
+++ b/test/boost_no_static_assert.ipp
@@ -0,0 +1,20 @@
+// Copyright (C) 2007 Douglas Gregor
+// 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 most recent version.
+
+// MACRO: BOOST_NO_CXX11_STATIC_ASSERT
+// TITLE: C++0x static_assert unavailable
+// DESCRIPTION: The compiler does not support C++0x static assertions
+
+namespace boost_no_cxx11_static_assert {
+
+int test()
+{
+ static_assert(true, "OK");
+ return 0;
+}
+
+}
diff --git a/test/boost_no_std_allocator.ipp b/test/boost_no_std_allocator.ipp
new file mode 100644
index 0000000..920bf1d
--- /dev/null
+++ b/test/boost_no_std_allocator.ipp
@@ -0,0 +1,88 @@
+// (C) Copyright John Maddock 2001.
+// 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.
+
+// MACRO: BOOST_NO_STD_ALLOCATOR
+// TITLE: std::allocator
+// DESCRIPTION: The C++ standard library does not provide
+// a standards conforming std::allocator.
+
+#ifndef BOOST_NESTED_TEMPLATE
+#define BOOST_NESTED_TEMPLATE template
+#endif
+
+#include <memory>
+
+namespace boost_no_std_allocator{
+
+#if defined(__GNUC__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7)))
+# define BOOST_UNUSED_ATTRIBUTE __attribute__((unused))
+#else
+# define BOOST_UNUSED_ATTRIBUTE
+#endif
+
+template <class T>
+int test_allocator(const T& i)
+{
+ typedef std::allocator<int> alloc1_t;
+#if !((__cplusplus > 201700) || (defined(_MSVC_LANG) && (_MSVC_LANG > 201700)))
+ // stuff deprecated in C++17:
+ typedef typename alloc1_t::size_type size_type;
+ typedef typename alloc1_t::difference_type difference_type BOOST_UNUSED_ATTRIBUTE;
+ typedef typename alloc1_t::pointer pointer;
+ typedef typename alloc1_t::const_pointer const_pointer;
+ typedef typename alloc1_t::reference reference;
+ typedef typename alloc1_t::const_reference const_reference;
+ #endif
+ typedef typename alloc1_t::value_type value_type BOOST_UNUSED_ATTRIBUTE;
+
+ alloc1_t a1;
+ alloc1_t a2(a1);
+ (void)i;
+#if !((__cplusplus > 201700) || (defined(_MSVC_LANG) && (_MSVC_LANG > 201700)))
+ // stuff deprecated in C++17:
+ typedef typename alloc1_t::BOOST_NESTED_TEMPLATE rebind<double> binder_t;
+ typedef typename binder_t::other alloc2_t;
+ alloc2_t a3(a1);
+ // this chokes early versions of the MSL library
+ // and isn't currently required by anything in boost
+ // so don't test for now...
+ // a3 = a2;
+
+ (void)a2;
+#endif
+
+#if !((__cplusplus > 201700) || (defined(_MSVC_LANG) && (_MSVC_LANG > 201700)))
+ pointer p = a1.allocate(1);
+ const_pointer cp = p;
+ a1.construct(p,i);
+ size_type s = a1.max_size();
+ (void)s;
+ reference r = *p;
+ const_reference cr = *cp;
+ if(p != a1.address(r)) return -1;
+ if(cp != a1.address(cr)) return -1;
+ a1.destroy(p);
+#else
+ auto p = a1.allocate(1);
+#endif
+ a1.deallocate(p,1);
+
+ return 0;
+}
+
+
+int test()
+{
+ return test_allocator(0);
+}
+
+}
+
+#undef BOOST_UNUSED_ATTRIBUTE
+
+
+
diff --git a/test/boost_no_std_distance.ipp b/test/boost_no_std_distance.ipp
new file mode 100644
index 0000000..93affff
--- /dev/null
+++ b/test/boost_no_std_distance.ipp
@@ -0,0 +1,31 @@
+// (C) Copyright John Maddock 2001.
+// 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.
+
+// MACRO: BOOST_NO_STD_DISTANCE
+// TITLE: std::distance
+// DESCRIPTION: The platform does not have a conforming version of std::distance.
+
+#include <algorithm>
+#include <iterator>
+
+
+namespace boost_no_std_distance{
+
+int test()
+{
+ const char* begin = 0;
+ const char* end = 0;
+ if(std::distance(begin, end)) return -1;
+ return 0;
+}
+
+}
+
+
+
+
+
diff --git a/test/boost_no_std_iter_traits.ipp b/test/boost_no_std_iter_traits.ipp
new file mode 100644
index 0000000..31a9394
--- /dev/null
+++ b/test/boost_no_std_iter_traits.ipp
@@ -0,0 +1,80 @@
+// (C) Copyright John Maddock 2001.
+// 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.
+
+// MACRO: BOOST_NO_STD_ITERATOR_TRAITS
+// TITLE: std::iterator_traits
+// DESCRIPTION: The compiler does not provide a standard
+// compliant implementation of std::iterator_traits.
+// Note that the compiler may still have a non-standard
+// implementation.
+
+#include <iterator>
+#include <stddef.h>
+
+namespace boost_no_std_iterator_traits{
+
+struct UDT_iterator
+{
+ typedef int value_type;
+ typedef ptrdiff_t difference_type;
+ typedef int* pointer;
+ typedef int& reference;
+ typedef std::input_iterator_tag iterator_category;
+};
+
+struct UDT{};
+
+
+int test()
+{
+ std::iterator_traits<UDT_iterator>::value_type v = 0;
+ std::iterator_traits<UDT_iterator>::difference_type d = 0;
+ std::iterator_traits<UDT_iterator>::pointer p = &v;
+ std::iterator_traits<UDT_iterator>::reference r = v;
+ std::iterator_traits<UDT_iterator>::iterator_category cat;
+
+ std::iterator_traits<UDT*>::value_type v2;
+ std::iterator_traits<UDT*>::difference_type d2 = 0;
+ std::iterator_traits<UDT*>::pointer p2 = &v2;
+ std::iterator_traits<UDT*>::reference r2 = v2;
+ std::iterator_traits<UDT*>::iterator_category cat2;
+
+ std::iterator_traits<const UDT*>::value_type v3;
+ std::iterator_traits<const UDT*>::difference_type d3 = 0;
+ std::iterator_traits<const UDT*>::pointer p3 = &v3;
+ std::iterator_traits<const UDT*>::reference r3 = v3;
+ std::iterator_traits<const UDT*>::iterator_category cat3;
+
+ //
+ // suppress some warnings:
+ //
+ (void) &v;
+ (void) &d;
+ (void) &p;
+ (void) &r;
+ (void) &cat;
+
+ (void) &v2;
+ (void) &d2;
+ (void) &p2;
+ (void) &r2;
+ (void) &cat2;
+
+ (void) &v3;
+ (void) &d3;
+ (void) &p3;
+ (void) &r3;
+ (void) &cat3;
+
+ return 0;
+}
+
+}
+
+
+
+
diff --git a/test/boost_no_std_iterator.ipp b/test/boost_no_std_iterator.ipp
new file mode 100644
index 0000000..e5332ef
--- /dev/null
+++ b/test/boost_no_std_iterator.ipp
@@ -0,0 +1,67 @@
+// (C) Copyright John Maddock 2001.
+// 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.
+
+// MACRO: BOOST_NO_STD_ITERATOR
+// TITLE: std::iterator
+// DESCRIPTION: The C++ implementation fails to provide the
+// std::iterator class.
+
+#include <iterator>
+#include <stddef.h>
+
+namespace boost_no_std_iterator{
+
+
+int test()
+{
+ typedef std::iterator<
+ std::random_access_iterator_tag,
+ int,
+ ptrdiff_t,
+ int*,
+ int&
+ > iterator_type;
+
+ iterator_type::value_type v = 0;
+ iterator_type::difference_type d = 0;
+ iterator_type::pointer p = &v;
+ iterator_type::reference r = v;
+ iterator_type::iterator_category cat;
+
+ typedef std::iterator<
+ std::random_access_iterator_tag,
+ int
+ > iterator_type_2;
+
+ iterator_type_2::value_type v2 = 0;
+ iterator_type_2::difference_type d2 = 0;
+ iterator_type_2::pointer p2 = &v2;
+ iterator_type_2::reference r2 = v2;
+ iterator_type_2::iterator_category cat2;
+ //
+ // suppress some warnings:
+ //
+ (void) &v;
+ (void) &d;
+ (void) &p;
+ (void) &r;
+ (void) &cat;
+
+ (void) &v2;
+ (void) &d2;
+ (void) &p2;
+ (void) &r2;
+ (void) &cat2;
+
+ return 0;
+}
+
+}
+
+
+
+
diff --git a/test/boost_no_std_locale.ipp b/test/boost_no_std_locale.ipp
new file mode 100644
index 0000000..29d8e32
--- /dev/null
+++ b/test/boost_no_std_locale.ipp
@@ -0,0 +1,36 @@
+// (C) Copyright John Maddock 2001.
+// 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.
+
+// MACRO: BOOST_NO_STD_LOCALE
+// TITLE: std::locale
+// DESCRIPTION: The standard library lacks std::locale.
+
+#include <locale>
+
+namespace boost_no_std_locale{
+
+int test()
+{
+ std::locale l1;
+ //
+ // ideally we would construct a locale from a facet,
+ // but that requires template member functions which
+ // may not be available, instead just check that we can
+ // construct a pointer to a facet:
+ //
+ const std::ctype<char>* pct = 0;
+ (void) &l1;
+ (void) &pct;
+ return 0;
+}
+
+}
+
+
+
+
+
diff --git a/test/boost_no_std_messages.ipp b/test/boost_no_std_messages.ipp
new file mode 100644
index 0000000..3fbd6f0
--- /dev/null
+++ b/test/boost_no_std_messages.ipp
@@ -0,0 +1,39 @@
+// (C) Copyright John Maddock 2001.
+// 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.
+
+// MACRO: BOOST_NO_STD_MESSAGES
+// TITLE: std::messages<charT>
+// DESCRIPTION: The standard library lacks a conforming std::messages facet.
+
+#include <locale>
+
+
+namespace boost_no_std_messages{
+
+//
+// this just has to complile, not run:
+//
+void test_messages(const std::messages<char>& m)
+{
+ static const std::locale l;
+ static const std::string name("foobar");
+ m.close(m.open(name, l));
+}
+
+int test()
+{
+ const std::messages<char>* pmf = 0;
+ (void) &pmf;
+ return 0;
+}
+
+}
+
+
+
+
+
diff --git a/test/boost_no_std_min_max.ipp b/test/boost_no_std_min_max.ipp
new file mode 100644
index 0000000..a826006
--- /dev/null
+++ b/test/boost_no_std_min_max.ipp
@@ -0,0 +1,33 @@
+// (C) Copyright John Maddock 2001.
+// 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.
+
+// MACRO: BOOST_NO_STD_MIN_MAX
+// TITLE: std::min and std::max
+// DESCRIPTION: The C++ standard library does not provide
+// the (min)() and (max)() template functions that
+// should be in <algorithm>.
+
+#include <algorithm>
+
+namespace boost_no_std_min_max{
+
+
+int test()
+{
+ int i = 0;
+ int j = 2;
+ if((std::min)(i,j) != 0) return -1;
+ if((std::max)(i,j) != 2) return -1;
+
+ return 0;
+}
+
+}
+
+
+
+
diff --git a/test/boost_no_std_oi_assign.ipp b/test/boost_no_std_oi_assign.ipp
new file mode 100644
index 0000000..9d50614
--- /dev/null
+++ b/test/boost_no_std_oi_assign.ipp
@@ -0,0 +1,42 @@
+// (C) Copyright John Maddock 2001.
+// 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.
+
+// MACRO: BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN
+// TITLE: That the std output iterators are assignable
+// DESCRIPTION: Some std lib output iterators are not assignable
+// even this is required by the standard.
+
+#include <iterator>
+#include <list>
+#include <iostream>
+
+
+namespace boost_no_std_output_iterator_assign {
+
+int test()
+{
+ std::list<int> l;
+ std::back_insert_iterator<std::list<int> > bi1(l);
+ std::back_insert_iterator<std::list<int> > bi2(l);
+ bi1 = bi2;
+
+ std::front_insert_iterator<std::list<int> > fi1(l);
+ std::front_insert_iterator<std::list<int> > fi2(l);
+ fi1 = fi2;
+
+ std::ostream_iterator<char> osi1(std::cout);
+ std::ostream_iterator<char> osi2(std::cout);
+ osi1 = osi2;
+
+ return 0;
+}
+
+}
+
+
+
+
diff --git a/test/boost_no_std_typeinfo.ipp b/test/boost_no_std_typeinfo.ipp
new file mode 100644
index 0000000..a55a94d
--- /dev/null
+++ b/test/boost_no_std_typeinfo.ipp
@@ -0,0 +1,26 @@
+// (C) Copyright Peter Dimov 2007.
+// 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 most recent version.
+
+// MACRO: BOOST_NO_STD_TYPEINFO
+// TITLE: type_info not in namespace std
+// DESCRIPTION: The <typeinfo> header declares type_info in the global namespace instead of std
+
+#include <typeinfo>
+
+namespace boost_no_std_typeinfo
+{
+void quiet_warning(const std::type_info*){}
+
+int test()
+{
+ std::type_info * p = 0;
+ quiet_warning(p);
+ return 0;
+}
+
+}
+
diff --git a/test/boost_no_std_use_facet.ipp b/test/boost_no_std_use_facet.ipp
new file mode 100644
index 0000000..c207af7
--- /dev/null
+++ b/test/boost_no_std_use_facet.ipp
@@ -0,0 +1,29 @@
+// (C) Copyright John Maddock 2001.
+// 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.
+
+// MACRO: BOOST_NO_STD_USE_FACET
+// TITLE: std::use_facet
+// DESCRIPTION: The standard library lacks a conforming std::use_facet.
+
+#include <locale>
+
+namespace boost_no_std_use_facet{
+
+int test()
+{
+ std::locale l;
+ const std::ctype<char>& ct = std::use_facet<std::ctype<char> >(l);
+ (void)ct;
+ return 0;
+}
+
+}
+
+
+
+
+
diff --git a/test/boost_no_std_wstreambuf.ipp b/test/boost_no_std_wstreambuf.ipp
new file mode 100644
index 0000000..45de242
--- /dev/null
+++ b/test/boost_no_std_wstreambuf.ipp
@@ -0,0 +1,108 @@
+// (C) Copyright John Maddock 2001.
+// 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 most recent version.
+
+// MACRO: BOOST_NO_STD_WSTREAMBUF
+// TITLE: std::basic_streambuf<wchar_t>
+// DESCRIPTION: The standard library lacks std::basic_streambuf<wchar_t>.
+
+#include <iostream>
+#include <streambuf>
+#include <string>
+
+namespace boost_no_std_wstreambuf{
+
+template <class charT,
+ class traits = ::std::char_traits<charT> >
+class parser_buf : public ::std::basic_streambuf<charT, traits>
+{
+ typedef ::std::basic_streambuf<charT, traits> base_type;
+ typedef typename base_type::int_type int_type;
+ typedef typename base_type::char_type char_type;
+ typedef typename base_type::pos_type pos_type;
+ typedef ::std::streamsize streamsize;
+ typedef typename base_type::off_type off_type;
+public:
+ parser_buf() : base_type() { setbuf(0, 0); }
+ const charT* getnext() { return this->gptr(); }
+protected:
+ std::basic_streambuf<charT, traits>* setbuf(char_type* s, streamsize n);
+ typename parser_buf<charT, traits>::pos_type seekpos(pos_type sp, ::std::ios_base::openmode which);
+ typename parser_buf<charT, traits>::pos_type seekoff(off_type off, ::std::ios_base::seekdir way, ::std::ios_base::openmode which);
+private:
+ parser_buf& operator=(const parser_buf&)
+ { return *this; };
+ parser_buf(const parser_buf&);
+};
+
+template<class charT, class traits>
+std::basic_streambuf<charT, traits>*
+parser_buf<charT, traits>::setbuf(char_type* s, streamsize n)
+{
+ this->setg(s, s, s + n);
+ return this;
+}
+
+template<class charT, class traits>
+typename parser_buf<charT, traits>::pos_type
+parser_buf<charT, traits>::seekoff(off_type off, ::std::ios_base::seekdir way, ::std::ios_base::openmode which)
+{
+ typedef typename parser_buf<charT, traits>::pos_type pos_type;
+ if(which & ::std::ios_base::out)
+ return pos_type(off_type(-1));
+ int size = this->egptr() - this->eback();
+ int pos = this->gptr() - this->eback();
+ charT* g = this->eback();
+ switch((int)way)
+ {
+ case ::std::ios_base::beg:
+ if((off < 0) || (off > size))
+ return pos_type(off_type(-1));
+ else
+ this->setg(g, g + off, g + size);
+ case ::std::ios_base::end:
+ if((off < 0) || (off > size))
+ return pos_type(off_type(-1));
+ else
+ this->setg(g, g + size - off, g + size);
+ case ::std::ios_base::cur:
+ {
+ int newpos = pos + off;
+ if((newpos < 0) || (newpos > size))
+ return pos_type(off_type(-1));
+ else
+ this->setg(g, g + newpos, g + size);
+ }
+ }
+ return static_cast<pos_type>(this->gptr() - this->eback());
+}
+
+template<class charT, class traits>
+typename parser_buf<charT, traits>::pos_type
+parser_buf<charT, traits>::seekpos(pos_type sp, ::std::ios_base::openmode which)
+{
+ if(which & ::std::ios_base::out)
+ return pos_type(off_type(-1));
+ int size = this->egptr() - this->eback();
+ charT* g = this->eback();
+ if(off_type(sp) <= size)
+ {
+ this->setg(g, g + off_type(sp), g + size);
+ }
+ return pos_type(off_type(-1));
+}
+
+
+int test()
+{
+ return 0;
+}
+
+template class parser_buf<char>;
+template class parser_buf<wchar_t>;
+
+}
+
diff --git a/test/boost_no_std_wstring.ipp b/test/boost_no_std_wstring.ipp
new file mode 100644
index 0000000..d79fd95
--- /dev/null
+++ b/test/boost_no_std_wstring.ipp
@@ -0,0 +1,28 @@
+// (C) Copyright John Maddock 2001.
+// 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 most recent version.
+
+// MACRO: BOOST_NO_STD_WSTRING
+// TITLE: std::wstring
+// DESCRIPTION: The standard library lacks std::wstring.
+
+#include <string>
+
+namespace boost_no_std_wstring{
+
+int test()
+{
+ std::wstring s;
+ if(*s.c_str() || (s.begin() != s.end()) || s.size() || (sizeof(std::wstring::value_type) != sizeof(wchar_t))) return -1;
+ return 0;
+}
+
+}
+
+
+
+
+
diff --git a/test/boost_no_stdc_namespace.ipp b/test/boost_no_stdc_namespace.ipp
new file mode 100644
index 0000000..3ff3f49
--- /dev/null
+++ b/test/boost_no_stdc_namespace.ipp
@@ -0,0 +1,43 @@
+// (C) Copyright John Maddock 2001.
+// 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 most recent version.
+
+// MACRO: BOOST_NO_STDC_NAMESPACE
+// TITLE: std:: namespace for C API's
+// DESCRIPTION: The contents of C++ standard headers for C library
+// functions (the <c...> headers) have not been placed
+// in namespace std. This test is difficult - some libraries
+// "fake" the std C functions by adding using declarations
+// to import them into namespace std, unfortunately they don't
+// necessarily catch all of them...
+
+#include <cstring>
+#include <cctype>
+#include <ctime>
+
+#undef isspace
+#undef isalpha
+#undef ispunct
+
+namespace boost_no_stdc_namespace{
+
+
+int test()
+{
+ char c = 0;
+#ifndef BOOST_NO_CTYPE_FUNCTIONS
+ (void)std::isspace(c);
+ (void)std::isalpha(c);
+ (void)std::ispunct(c);
+#endif
+ (void)std::strlen(&c);
+ (void)std::clock();
+
+ return 0;
+}
+
+}
+
diff --git a/test/boost_no_swprintf.ipp b/test/boost_no_swprintf.ipp
new file mode 100644
index 0000000..4b3a460
--- /dev/null
+++ b/test/boost_no_swprintf.ipp
@@ -0,0 +1,31 @@
+// (C) Copyright John Maddock 2001.
+// 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 most recent version.
+
+// MACRO: BOOST_NO_SWPRINTF
+// TITLE: swprintf
+// DESCRIPTION: The platform does not have a conforming version of swprintf.
+
+#include <wchar.h>
+#include <stdio.h>
+
+
+namespace boost_no_swprintf{
+
+int test()
+{
+ wchar_t buf[10];
+ swprintf(buf, 10, L"%d", 10);
+ return 0;
+}
+
+}
+
+
+
+
+
+
diff --git a/test/boost_no_tem_local_classes.ipp b/test/boost_no_tem_local_classes.ipp
new file mode 100644
index 0000000..876980e
--- /dev/null
+++ b/test/boost_no_tem_local_classes.ipp
@@ -0,0 +1,33 @@
+
+// Copyright (C) 2009-2012 Lorenzo Caminiti
+// Distributed under the Boost Software License, Version 1.0
+// (see accompanying file LICENSE_1_0.txt or a copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+// Home at http://www.boost.org/libs/config
+
+// MACRO: BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
+// TITLE: local classes as template parameters
+// DESCRIPTION: Local classes cannot be passed as template parameters.
+
+// NOTE: Local classes cannot be passed as template parameters in C++03 (even
+// if some C++03 compilers, like MSVC and older GCC, allow it). Local classes
+// can instead be passed as template parameters in C++11 (see also N2657, note
+// that this macro does not check if unnamed types can also be passed as
+// template parameters but it is intentionally limited to local named classes
+// because some non C++11 compilers might only support local named classes as
+// template parameters which is still very useful to program local functors).
+namespace boost_no_cxx11_local_class_template_parameters {
+
+template<typename T> struct a { void use() {} };
+template<typename T> void f(T) {}
+
+int test() {
+ class local_class {} local_obj;
+ a<local_class> a1;
+ a1.use(); // Avoid unused variable warning.
+ f(local_obj);
+ return 0;
+}
+
+} // namespace
+
diff --git a/test/boost_no_template_aliases.ipp b/test/boost_no_template_aliases.ipp
new file mode 100644
index 0000000..90451e0
--- /dev/null
+++ b/test/boost_no_template_aliases.ipp
@@ -0,0 +1,22 @@
+// (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_CXX11_TEMPLATE_ALIASES
+// TITLE: C++0x template_aliases feature unavailable
+// DESCRIPTION: The compiler does not support the C++0x template_aliases feature
+
+namespace boost_no_cxx11_template_aliases {
+
+using PINT = void (*)(int); // using plus C-style type
+
+int test()
+{
+ return 0;
+}
+
+}
diff --git a/test/boost_no_template_streams.ipp b/test/boost_no_template_streams.ipp
new file mode 100644
index 0000000..bb24e13
--- /dev/null
+++ b/test/boost_no_template_streams.ipp
@@ -0,0 +1,29 @@
+// (C) Copyright John Maddock 2008.
+// 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 most recent version.
+
+// MACRO: BOOST_NO_TEMPLATED_IOSTREAMS
+// TITLE: basic_iostream<>
+// DESCRIPTION: The platform supports "new style" templated iostreams.
+
+#include <iostream>
+
+
+namespace boost_no_templated_iostreams{
+
+int test()
+{
+ std::basic_ostream<char, std::char_traits<char> >& osr = std::cout;
+ (void)osr;
+ return 0;
+}
+
+}
+
+
+
+
+
diff --git a/test/boost_no_template_template.ipp b/test/boost_no_template_template.ipp
new file mode 100644
index 0000000..a079445
--- /dev/null
+++ b/test/boost_no_template_template.ipp
@@ -0,0 +1,50 @@
+// (C) Copyright John Maddock 2002.
+// 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 most recent version.
+
+// MACRO: BOOST_NO_TEMPLATE_TEMPLATES
+// TITLE: template template paramters.
+// DESCRIPTION: Verify that template template parameters both work
+// and can be deduced through a function call.
+
+
+namespace boost_no_template_templates{
+
+
+template<class T>
+class foo
+{
+public:
+ foo(){};
+ foo(const T&){};
+ const foo& bar()const{ return *this; }
+ foo& operator=(const foo&){ return *this; }
+};
+
+template<typename T, template<typename> class U>
+U<T> sinhc_pi(const U<T> x)
+{
+ return x.bar();
+}
+
+
+int test()
+{
+ foo<double> f1;
+ foo<int> f2;
+ f1 = sinhc_pi(f1);
+ f2 = sinhc_pi(f2);
+ return 0;
+}
+
+
+}
+
+
+
+
+
+
diff --git a/test/boost_no_two_phase_lookup.ipp b/test/boost_no_two_phase_lookup.ipp
new file mode 100644
index 0000000..2c5419c
--- /dev/null
+++ b/test/boost_no_two_phase_lookup.ipp
@@ -0,0 +1,41 @@
+// (C) Copyright Alisdair Meredith 2006.
+// 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 most recent version.
+
+// MACRO: BOOST_NO_TWO_PHASE_NAME_LOOKUP
+// TITLE: Two phase name lookup
+// DESCRIPTION: If the compiler does not perform two phase name lookup
+
+namespace boost_no_two_phase_name_lookup {
+
+template< class T >
+struct base {
+ int call() {
+ return 1;
+ }
+};
+
+int call() {
+ return 0;
+}
+
+template< class T >
+struct derived : base< T > {
+ int call_test() {
+ return call();
+ }
+};
+
+int test()
+{
+ derived< int > d;
+ return d.call_test();
+}
+
+}
+
+
+
diff --git a/test/boost_no_typeid.ipp b/test/boost_no_typeid.ipp
new file mode 100644
index 0000000..72dd4d3
--- /dev/null
+++ b/test/boost_no_typeid.ipp
@@ -0,0 +1,24 @@
+// (C) Copyright Peter Dimov 2007.
+// 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 most recent version.
+
+// MACRO: BOOST_NO_TYPEID
+// TITLE: typeid unavailable
+// DESCRIPTION: The compiler does not support typeid in this mode
+
+#include <typeinfo>
+
+namespace boost_no_typeid
+{
+
+int test()
+{
+ (void)typeid(int);
+ return 0;
+}
+
+}
+
diff --git a/test/boost_no_typename_with_ctor.ipp b/test/boost_no_typename_with_ctor.ipp
new file mode 100644
index 0000000..6cf4da8
--- /dev/null
+++ b/test/boost_no_typename_with_ctor.ipp
@@ -0,0 +1,34 @@
+// Copyright (C) 2008 N. Musatti
+// 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 most recent version.
+
+// MACRO: BOOST_NO_TYPENAME_WITH_CTOR
+// TITLE: Use of typename keyword with constructors
+// DESCRIPTION: If the compiler rejects the typename keyword when calling
+// the constructor of a dependent type
+
+namespace boost_no_typename_with_ctor {
+
+struct A {};
+
+template <typename T>
+struct B {
+ typedef T type;
+};
+
+template <typename T>
+typename T::type f() {
+ return typename T::type();
+}
+
+int test() {
+ A a = f<B<A> >();
+ (void)a;
+ return 0;
+}
+
+}
+
diff --git a/test/boost_no_unicode_literals.ipp b/test/boost_no_unicode_literals.ipp
new file mode 100644
index 0000000..d5ffa0c
--- /dev/null
+++ b/test/boost_no_unicode_literals.ipp
@@ -0,0 +1,29 @@
+// (C) Copyright Beman Dawes 2008
+
+// 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_CXX11_UNICODE_LITERALS
+// TITLE: C++0x unicode literals unavailable
+// DESCRIPTION: The compiler does not support C++0x Unicode literals (N2442)
+
+namespace boost_no_cxx11_unicode_literals {
+
+template <class CharT>
+void quiet_warning(const CharT*){}
+
+int test()
+{
+ const char* c8 = u8"";
+ const char16_t* c16 = u"";
+ const char32_t* c32 = U"";
+ quiet_warning(c8);
+ quiet_warning(c16);
+ quiet_warning(c32);
+ return 0;
+}
+
+}
diff --git a/test/boost_no_unified_init.ipp b/test/boost_no_unified_init.ipp
new file mode 100644
index 0000000..428c8f4
--- /dev/null
+++ b/test/boost_no_unified_init.ipp
@@ -0,0 +1,59 @@
+// Copyright (C) 2011 John Maddock
+// 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 most recent version.
+
+// MACRO: BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
+// TITLE: C++0x unified initialization syntax unavailable
+// DESCRIPTION: The compiler does not support C++0x unified initialization syntax: see http://en.wikipedia.org/wiki/C%2B%2B0x#Uniform_initialization
+
+#include <string>
+
+namespace boost_no_cxx11_unified_initialization_syntax {
+
+struct BasicStruct
+{
+ int x;
+ double y;
+};
+
+struct AltStruct
+{
+public:
+ AltStruct(int x, double y) : x_{x}, y_{y} {}
+ int X() const { return x_; }
+ double Y() const { return y_; }
+private:
+ int x_;
+ double y_;
+};
+
+struct IdString
+{
+ std::string name;
+ int identifier;
+ bool operator == (const IdString& other)
+ {
+ return identifier == other.identifier && name == other.name;
+ }
+};
+
+IdString get_string()
+{
+ return {"SomeName", 4}; //Note the lack of explicit type.
+}
+
+int test()
+{
+ BasicStruct var1{5, 3.2};
+ AltStruct var2{2, 4.3};
+ (void) var1;
+ (void) var2;
+
+ IdString id{"SomeName", 4};
+ return id == get_string() ? 0 : 1;
+}
+
+}
diff --git a/test/boost_no_using_breaks_adl.ipp b/test/boost_no_using_breaks_adl.ipp
new file mode 100644
index 0000000..e44e285
--- /dev/null
+++ b/test/boost_no_using_breaks_adl.ipp
@@ -0,0 +1,73 @@
+// (C) Copyright John Maddock 2001.
+// 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 most recent version.
+
+// MACRO: BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
+// TITLE: broken ADL
+// DESCRIPTION: Using declarations break argument dependent lookup
+// (probably Borland specific), the fix is to use
+// using namespace whatever; rather than
+// using whatever::symbol;.
+
+
+namespace boost_ns
+{
+ template <class T>
+ T* get_pointer(T* p)
+ { return p; }
+
+ namespace inner2
+ {
+ template <class T>
+ struct X {};
+
+ template <class T>
+ T* get_pointer(X<T>)
+ { return 0; }
+ }
+}
+
+namespace user_ns
+{
+ template <class T>
+ struct Y{};
+
+ template <class T>
+ T* get_pointer(user_ns::Y<T>)
+ { return 0; }
+
+ template <class T>
+ int f(T x)
+ {
+ // use this as a workaround:
+ //using namespace boost;
+ // this statement breaks ADL:
+ using boost_ns::get_pointer; // conforming compilers require
+ // this one to find the auto_ptr
+ // and T* overloads
+ return get_pointer(x) == 0;
+ }
+}
+
+namespace boost_function_scope_using_declaration_breaks_adl{
+
+int test()
+{
+ int i;
+ typedef void* pv;
+ i = user_ns::f(pv());
+ i = user_ns::f(boost_ns::inner2::X<int>());
+ (void)i;
+ return 0;
+}
+
+}
+
+
+
+
+
+
diff --git a/test/boost_no_using_decl_overld.ipp b/test/boost_no_using_decl_overld.ipp
new file mode 100644
index 0000000..c017463
--- /dev/null
+++ b/test/boost_no_using_decl_overld.ipp
@@ -0,0 +1,33 @@
+// (C) Copyright Eric Friedman 2002.
+// 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)
+
+// MACRO: BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE
+// TITLE: using declaration function overloads from a typename base
+// DESCRIPTION: The compiler will not accept a using declaration
+// that brings a function from a typename used as a base class
+// into a derived class if functions of the same name
+// are present in the derived class.
+
+namespace boost_no_using_declaration_overloads_from_typename_base {
+
+struct base
+{
+ static void f() { }
+};
+
+template <typename T, typename Base>
+struct using_overloads_from_typename_base : Base
+{
+ using Base::f;
+ static T f(const T& t) { return t; }
+};
+
+int test()
+{
+ using_overloads_from_typename_base<int,base>::f();
+ return using_overloads_from_typename_base<int,base>::f(0);
+}
+
+}
diff --git a/test/boost_no_using_template.ipp b/test/boost_no_using_template.ipp
new file mode 100644
index 0000000..73e8b9f
--- /dev/null
+++ b/test/boost_no_using_template.ipp
@@ -0,0 +1,47 @@
+// (C) Copyright John Maddock 2001.
+// 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 most recent version.
+
+// MACRO: BOOST_NO_USING_TEMPLATE
+// TITLE: using template declarations
+// DESCRIPTION: The compiler will not accept a using declaration
+// that imports a class or function template
+// into a named namespace. Probably Borland/MSVC6 specific.
+
+template <class T>
+int global_foo(T)
+{
+ return 0;
+}
+
+template <class T, class U = void>
+struct op
+{
+ friend op<T,U> operator +(const op&, const op&)
+ {
+ return op();
+ };
+};
+
+namespace boost_no_using_template{
+
+using ::global_foo;
+using ::op;
+
+int test()
+{
+ boost_no_using_template::op<int, int> a;
+ boost_no_using_template::op<int, int> b;
+ a+b;
+ return boost_no_using_template::global_foo(0);
+}
+
+}
+
+
+
+
+
diff --git a/test/boost_no_variadic_macros.ipp b/test/boost_no_variadic_macros.ipp
new file mode 100644
index 0000000..50f60a7
--- /dev/null
+++ b/test/boost_no_variadic_macros.ipp
@@ -0,0 +1,64 @@
+// Copyright (C) 2010 Edward Diener
+// 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 most recent version.
+
+// MACRO: BOOST_NO_CXX11_VARIADIC_MACROS
+// TITLE: C++0x variadic macros unavailable
+// DESCRIPTION: The compiler does not support C++0x variadic macros
+
+// This is a simple test
+
+#define TEST_VARIADIC_MACRO_SIMPLE(avalue,...) __VA_ARGS__
+
+/*
+
+ This is a more complicated test, which Steve Watanabe graciously
+ supplied, when I asked if it were possible to strip the parantheses
+ from a macro argument. I have changed the names somewhat to prevent
+ any common clashes with other macros in the config testing suite
+ by prepending to each macro name TEST_VARIADIC_MACRO_.
+
+ You may find this test overdone and may want to remove it.
+
+*/
+
+#define TEST_VARIADIC_MACRO_CAT(x, y) TEST_VARIADIC_MACRO_CAT_I(x, y)
+#define TEST_VARIADIC_MACRO_CAT_I(x, y) x ## y
+
+#define TEST_VARIADIC_MACRO_APPLY(macro, args) TEST_VARIADIC_MACRO_APPLY_I(macro, args)
+#define TEST_VARIADIC_MACRO_APPLY_I(macro, args) macro args
+
+#define TEST_VARIADIC_MACRO_STRIP_PARENS(x) TEST_VARIADIC_MACRO_EVAL((TEST_VARIADIC_MACRO_STRIP_PARENS_I x), x)
+#define TEST_VARIADIC_MACRO_STRIP_PARENS_I(...) 1,1
+
+#define TEST_VARIADIC_MACRO_EVAL(test, x) TEST_VARIADIC_MACRO_EVAL_I(test, x)
+#define TEST_VARIADIC_MACRO_EVAL_I(test, x) TEST_VARIADIC_MACRO_MAYBE_STRIP_PARENS(TEST_VARIADIC_MACRO_TEST_ARITY test, x)
+
+#define TEST_VARIADIC_MACRO_TEST_ARITY(...) TEST_VARIADIC_MACRO_APPLY(TEST_VARIADIC_MACRO_TEST_ARITY_I, (__VA_ARGS__, 2, 1))
+#define TEST_VARIADIC_MACRO_TEST_ARITY_I(a,b,c,...) c
+
+#define TEST_VARIADIC_MACRO_MAYBE_STRIP_PARENS(cond, x) TEST_VARIADIC_MACRO_MAYBE_STRIP_PARENS_I(cond, x)
+#define TEST_VARIADIC_MACRO_MAYBE_STRIP_PARENS_I(cond, x) TEST_VARIADIC_MACRO_CAT(TEST_VARIADIC_MACRO_MAYBE_STRIP_PARENS_, cond)(x)
+
+#define TEST_VARIADIC_MACRO_MAYBE_STRIP_PARENS_1(x) x
+#define TEST_VARIADIC_MACRO_MAYBE_STRIP_PARENS_2(x) TEST_VARIADIC_MACRO_APPLY(TEST_VARIADIC_MACRO_MAYBE_STRIP_PARENS_2_I, x)
+#define TEST_VARIADIC_MACRO_MAYBE_STRIP_PARENS_2_I(...) __VA_ARGS__
+
+namespace boost_no_cxx11_variadic_macros {
+
+void quiet_warning(int){}
+
+template<TEST_VARIADIC_MACRO_STRIP_PARENS((typename T,int))> struct test_variadic_macro_class {};
+
+int test()
+{
+
+ int x = TEST_VARIADIC_MACRO_STRIP_PARENS(3);
+ quiet_warning(x);
+ return 0;
+}
+
+}
diff --git a/test/boost_no_variadic_templates.ipp b/test/boost_no_variadic_templates.ipp
new file mode 100644
index 0000000..570e8f2
--- /dev/null
+++ b/test/boost_no_variadic_templates.ipp
@@ -0,0 +1,21 @@
+// Copyright (C) 2007 Douglas Gregor
+// 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 most recent version.
+
+// MACRO: BOOST_NO_CXX11_VARIADIC_TEMPLATES
+// TITLE: C++0x variadic templates unavailable
+// DESCRIPTION: The compiler does not support C++0x variadic templates
+
+namespace boost_no_cxx11_variadic_templates {
+
+template<typename... Elements> struct tuple {};
+
+int test()
+{
+ return 0;
+}
+
+}
diff --git a/test/boost_no_void_returns.ipp b/test/boost_no_void_returns.ipp
new file mode 100644
index 0000000..920c44b
--- /dev/null
+++ b/test/boost_no_void_returns.ipp
@@ -0,0 +1,34 @@
+// (C) Copyright John Maddock 2001.
+// 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 most recent version.
+
+// MACRO: BOOST_NO_VOID_RETURNS
+// TITLE: no void returns
+// DESCRIPTION: The compiler does not allow a void function
+// to return the result of calling another void
+// function.
+//
+// void f() {}
+// void g() { return f(); }
+
+
+namespace boost_no_void_returns{
+
+void f() {}
+
+void g() { return f(); }
+
+int test()
+{
+ return 0;
+}
+
+}
+
+
+
+
+
diff --git a/test/boost_no_wchar_t.ipp b/test/boost_no_wchar_t.ipp
new file mode 100644
index 0000000..8a98258
--- /dev/null
+++ b/test/boost_no_wchar_t.ipp
@@ -0,0 +1,45 @@
+// (C) Copyright John Maddock 2001.
+// 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 most recent version.
+
+// MACRO: BOOST_NO_INTRINSIC_WCHAR_T
+// TITLE: intrinsic wchar_t
+// DESCRIPTION: The C++ implementation does not provide wchar_t,
+// or it is really a synonym for another integral type.
+// Use this symbol to decide whether it is appropriate
+// to explicitly specialize a template on wchar_t if there
+// is already a specialization for other integer types.
+
+#ifndef BOOST_NO_CWCHAR
+#include <wchar.h>
+#endif
+
+namespace boost_no_intrinsic_wchar_t{
+
+template <class T>
+struct is_int{ int i; };
+
+template <> struct is_int<unsigned char>{ int i; };
+template <> struct is_int<signed char>{ int i; };
+template <> struct is_int<char>{ int i; };
+template <> struct is_int<unsigned short>{ int i; };
+template <> struct is_int<short>{ int i; };
+template <> struct is_int<unsigned int>{ int i; };
+template <> struct is_int<int>{ int i; };
+template <> struct is_int<unsigned long>{ int i; };
+template <> struct is_int<long>{ int i; };
+template <> struct is_int<wchar_t>{ int i; };
+
+int test()
+{
+ return 0;
+}
+
+}
+
+
+
+
diff --git a/test/cmd_line_check.cpp b/test/cmd_line_check.cpp
new file mode 100644
index 0000000..33dff64
--- /dev/null
+++ b/test/cmd_line_check.cpp
@@ -0,0 +1,9 @@
+
+#ifndef __clang__
+# error "This test is for Clang only"
+#endif
+
+int main()
+{
+ return 0;
+}
\ No newline at end of file
diff --git a/test/config_build_check.cpp b/test/config_build_check.cpp
new file mode 100644
index 0000000..480e93e
--- /dev/null
+++ b/test/config_build_check.cpp
@@ -0,0 +1,20 @@
+// Copyright John Maddock 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 the most recent version.//
+// Revision $Id$
+//
+// We include this as it contains some workarounds we may need (like a declaration for ::gets to get clang building):
+#include <boost/config.hpp>
+
+# include "../test/boost_has_int128.ipp"
+# include "../test/boost_no_constexpr.ipp"
+# include "../test/boost_no_cxx11_user_lit.ipp"
+
+int main( int, char *[] )
+{
+ return boost_has_int128::test() || boost_no_cxx11_constexpr::test() || boost_no_cxx11_user_defined_literals::test();
+}
+
diff --git a/test/config_info.cpp b/test/config_info.cpp
new file mode 100644
index 0000000..b562977
--- /dev/null
+++ b/test/config_info.cpp
@@ -0,0 +1,1339 @@
+// Boost config.hpp configuration test program file -----------------------//
+
+// (C) Copyright John Maddock 2001 - 2003.
+// (C) Copyright Jens Maurer 2001.
+// (C) Copyright Peter Dimov 2001.
+// (C) Copyright Darin Adler 2001.
+// (C) Copyright Beman Dawes 2002.
+// 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 most recent version.
+//
+// Revision $Id$
+//
+
+#include <boost/config.hpp>
+#include <boost/version.hpp>
+#include <iostream>
+#include <iomanip>
+#include <string.h>
+#include <limits.h>
+#include <stdlib.h>
+#include <stddef.h>
+
+#ifdef BOOST_HAS_UNISTD_H
+#include <unistd.h>
+#endif
+
+#if defined(__MINGW32__)
+# include <_mingw.h>
+#endif
+
+static unsigned int indent = 4;
+static unsigned int width = 40;
+
+using std::cout;
+using std::istream;
+
+void print_macro(const char* name, const char* value)
+{
+ // if name == value+1 then then macro is not defined,
+ // in which case we don't print anything:
+ if(0 != strcmp(name, value+1))
+ {
+ for(unsigned i = 0; i < indent; ++i) std::cout.put(' ');
+ std::cout << std::setw(width);
+ cout.setf(istream::left, istream::adjustfield);
+ std::cout << name;
+ if(value[1])
+ {
+ // macro has a value:
+ std::cout << value << "\n";
+ }
+ else
+ {
+ // macro is defined but has no value:
+ std::cout << " [no value]\n";
+ }
+ }
+}
+
+#define PRINT_MACRO(X) print_macro(#X, BOOST_STRINGIZE(=X))
+
+template <class T>
+void print_expression(const char* expression, T val)
+{
+ for(unsigned i = 0; i < indent; ++i) std::cout.put(' ');
+ std::cout << std::setw(width);
+ std::cout.setf(istream::left, istream::adjustfield);
+ std::cout << expression << "=" << val << std::endl;
+}
+
+#define PRINT_EXPRESSION(E) print_expression(#E, E);
+
+template <class T>
+void print_byte_order(const char* what, T /* t */ )
+{
+ T val = 0;
+ unsigned i;
+ for(i = 1; i < sizeof(T); ++i)
+ {
+ val |= (CHAR_BIT * static_cast<T>(i)) << (CHAR_BIT * static_cast<T>(i));
+ }
+ const char* p = reinterpret_cast<const char*>(&val);
+
+ for(i = 0; i < indent; ++i) std::cout.put(' ');
+ std::cout << std::setw(width);
+ std::cout.setf(istream::left, istream::adjustfield);
+ std::cout << what << "=";
+ for(i = 0; i < sizeof(T); ++i)
+ {
+ std::cout << (int)p[i] << " ";
+ }
+ std::cout << std::endl;
+}
+
+#define PRINT_ORDER(T) print_byte_order(BOOST_STRINGIZE(byte order for type T), T())
+
+template <class T>
+void print_sign(const char* what, T t)
+{
+ t = static_cast<T>(-1); // cast suppresses warnings
+ for(unsigned i = 0; i < indent; ++i) std::cout.put(' ');
+ std::cout << "Type " << what << " is " << ((t > 0) ? "unsigned" : "signed") << std::endl;
+}
+
+#define PRINT_SIGN(T) print_sign(#T, T())
+
+
+void print_compiler_macros()
+{
+ std::cout << BOOST_COMPILER << "\n";
+ // Borland options:
+ PRINT_MACRO(__BORLANDC__);
+ PRINT_MACRO(__CDECL__);
+ PRINT_MACRO(_CHAR_UNSIGNED);
+ PRINT_MACRO(__CODEGUARD__);
+ PRINT_MACRO(__CONSOLE__);
+ PRINT_MACRO(_CPPUNWIND);
+ PRINT_MACRO(__cplusplus);
+ PRINT_MACRO(__FLAT__);
+ PRINT_MACRO(__FUNC__);
+ PRINT_MACRO(_M_IX86);
+ PRINT_MACRO(__MSDOS__);
+ PRINT_MACRO(__MT__ );
+ PRINT_MACRO(__PASCAL__);
+ PRINT_MACRO(__STDC__);
+ PRINT_MACRO(__TLS__);
+ PRINT_MACRO(_WCHAR_T);
+ PRINT_MACRO(_Windows);
+ PRINT_MACRO(__WIN32__);
+ PRINT_MACRO(_WIN32);
+ PRINT_MACRO(_WIN64);
+ PRINT_MACRO(_WIN32_WCE);
+ PRINT_MACRO(WIN32);
+ PRINT_MACRO(_RTLDLL);
+ PRINT_MACRO(__DEBUG);
+
+// Internal MSVC 7 error workaround (Peter Dimov)
+
+#ifndef _NATIVE_WCHAR_T_DEFINED
+ PRINT_MACRO(_WCHAR_T_DEFINED);
+#endif
+ // MSVC macros:
+ PRINT_MACRO(_ALIGNED_NEW_SUPPORTED);
+ PRINT_MACRO(__ATOM__);
+ PRINT_MACRO(__AVX__);
+ PRINT_MACRO(__AVX2__);
+ PRINT_MACRO(_CHAR_UNSIGNED);
+ PRINT_MACRO(_CLR_VER);
+ PRINT_MACRO(_CONTROL_FLOW_GUARD);
+ PRINT_MACRO(__cplusplus_cli);
+ PRINT_MACRO(__cplusplus_winrt);
+ PRINT_MACRO(_CPPRTTI);
+ PRINT_MACRO(_CPPUNWIND);
+ PRINT_MACRO(_DLL);
+ PRINT_MACRO(_INLINE_VARIABLES_SUPPORTED);
+ PRINT_MACRO(_ISO_VOLATILE);
+ PRINT_MACRO(_M_AMD64);
+ PRINT_MACRO(_M_ARM);
+ PRINT_MACRO(_M_ARM_ARMV7VE);
+ PRINT_MACRO(_M_ARM_FP);
+ PRINT_MACRO(_M_ARM64);
+ PRINT_MACRO(_M_CEE);
+ PRINT_MACRO(_M_CEE_PURE);
+ PRINT_MACRO(_M_CEE_SAFE);
+ PRINT_MACRO(_M_FP_EXCEPT);
+ PRINT_MACRO(_M_FP_FAST);
+ PRINT_MACRO(_M_FP_PRECISE);
+ PRINT_MACRO(_M_FP_STRICT);
+ PRINT_MACRO(_M_IX86);
+ PRINT_MACRO(_M_IX86_FP);
+ PRINT_MACRO(_M_X64);
+ PRINT_MACRO(_M_ALPHA);
+ PRINT_MACRO(_M_MPPC);
+ PRINT_MACRO(_M_MRX000);
+ PRINT_MACRO(_M_PPC);
+ PRINT_MACRO(_MANAGED);
+ PRINT_MACRO(_MSC_BUILD);
+ PRINT_MACRO(_MFC_VER);
+ PRINT_MACRO(_MSC_EXTENSIONS);
+ PRINT_MACRO(_MSC_VER);
+ PRINT_MACRO(_MSC_FULL_VER);
+ PRINT_MACRO(_MSVC_LANG);
+ PRINT_MACRO(_MSVC_WARNING_LEVEL);
+ PRINT_MACRO(__MSVC_RUNTIME_CHECKS);
+ PRINT_MACRO(_MT);
+ PRINT_MACRO(_NATIVE_WCHAR_T_DEFINED);
+ PRINT_MACRO(_NOEXCEPT_TYPES_SUPPORTED);
+ PRINT_MACRO(_OPENMP);
+ PRINT_MACRO(_PREFAST_);
+ // GNUC options:
+ PRINT_MACRO(__GNUC__);
+ PRINT_MACRO(__GNUC_MINOR__);
+ PRINT_MACRO(__GNUC_PATCHLEVEL__);
+ PRINT_MACRO(__STDC_VERSION__);
+ PRINT_MACRO(__GNUG__);
+ PRINT_MACRO(__STRICT_ANSI__);
+ PRINT_MACRO(__GXX_EXPERIMENTAL_CXX0X__);
+ PRINT_MACRO(__VERSION__);
+ PRINT_MACRO(__OPTIMIZE__);
+ PRINT_MACRO(__CHAR_UNSIGNED__);
+ PRINT_MACRO(__REGISTER_PREFIX__);
+ PRINT_MACRO(__USER_LABEL_PREFIX__);
+ PRINT_MACRO(__GNUPRO__);
+ PRINT_MACRO(__EXCEPTIONS);
+ PRINT_MACRO(__FreeBSD__);
+ PRINT_MACRO(__FreeBSD_cc_version);
+ PRINT_MACRO(__ELF__);
+ PRINT_MACRO(__GNUPRO__);
+ PRINT_MACRO(unix);
+ PRINT_MACRO(bsd);
+ PRINT_MACRO(vax);
+ PRINT_MACRO(mc68000);
+ PRINT_MACRO(m68k);
+ PRINT_MACRO(M68020);
+ PRINT_MACRO(_AM29K);
+ PRINT_MACRO(ns32000);
+ PRINT_MACRO(sun);
+ PRINT_MACRO(pyr);
+ PRINT_MACRO(sequent);
+ PRINT_MACRO(__i386__);
+ PRINT_MACRO(__sparc);
+ PRINT_MACRO(__sparc__);
+ PRINT_MACRO(__powerpc__);
+ PRINT_MACRO(__hppa);
+ PRINT_MACRO(__CYGWIN__);
+ PRINT_MACRO(__MINGW32__);
+ PRINT_MACRO(__GXX_RTTI);
+ PRINT_MACRO(__alpha__);
+ PRINT_MACRO(__amd64__);
+ PRINT_MACRO(__arm__);
+ PRINT_MACRO(__aarch64__);
+ PRINT_MACRO(__bfin);
+ PRINT_MACRO(__convex__);
+ PRINT_MACRO(__epiphany__);
+ PRINT_MACRO(__hppa__);
+ PRINT_MACRO(__ia64__);
+ PRINT_MACRO(__IA64);
+ PRINT_MACRO(__IA64__);
+ PRINT_MACRO(__m68k__);
+ PRINT_MACRO(__mips__);
+ PRINT_MACRO(__powerpc);
+ PRINT_MACRO(__powerpc__);
+ PRINT_MACRO(__powerpc64__);
+ PRINT_MACRO(__POWERPC__);
+ PRINT_MACRO(__ppc__);
+ PRINT_MACRO(__ppc64__);
+ PRINT_MACRO(__PPC__);
+ PRINT_MACRO(__PPC64__);
+ PRINT_MACRO(_ARCH_PPC);
+ PRINT_MACRO(_ARCH_PPC64);
+ PRINT_MACRO(__sh__);
+ PRINT_MACRO(__370__);
+ PRINT_MACRO(__THW_370__);
+ // HP aCC:
+ PRINT_MACRO(__HP_aCC);
+ PRINT_MACRO(_HPACC_);
+ PRINT_MACRO(__LP64__);
+ PRINT_MACRO(__RISC2_0__);
+ PRINT_MACRO(__STDCPP__);
+ PRINT_MACRO(__hppa);
+ PRINT_MACRO(__hpux);
+ PRINT_MACRO(__hp9000s800);
+ PRINT_MACRO(__hp9000s700);
+ PRINT_MACRO(_PA_RISC1_1);
+ PRINT_MACRO(__HPUX_SOURCE);
+ PRINT_MACRO(_INCLUDE__STDC_A1_SOURCE);
+ // SGI IRIX:
+ PRINT_MACRO(__sgi);
+ PRINT_MACRO(_COMPILER_VERSION);
+ // Sunpro:
+ PRINT_MACRO(__SUNPRO_CC);
+ PRINT_MACRO(__SUNPRO_CC_COMPAT);
+ PRINT_MACRO(__BUILTIN_VA_ARG_INCR);
+ PRINT_MACRO(__sun);
+ PRINT_MACRO(__SVR4);
+ PRINT_MACRO(__unix);
+ PRINT_MACRO(__sparcv9);
+ PRINT_MACRO(__i386);
+ PRINT_MACRO(i386);
+ // Metrowerks
+ PRINT_MACRO(__MWERKS__);
+ PRINT_MACRO(__MSL__);
+ PRINT_MACRO(__MSL_CPP__);
+ PRINT_MACRO(__A5__);
+ PRINT_MACRO(__embedded_cplusplus);
+ PRINT_MACRO(__fourbyteints__);
+ PRINT_MACRO(__IEEEdoubles__);
+ PRINT_MACRO(__MC68K__);
+ PRINT_MACRO(__MC68020__);
+ PRINT_MACRO(__MC68881__);
+ PRINT_MACRO(__MIPS__);
+ PRINT_MACRO(__MIPS_ISA2__);
+ PRINT_MACRO(__MIPS_ISA3__);
+ PRINT_MACRO(__MIPS_ISA4__);
+ PRINT_MACRO(__MWBROWSER__);
+ PRINT_MACRO(__profile__);
+ PRINT_MACRO(__powerc);
+ PRINT_MACRO(_powerc);
+ PRINT_MACRO(__POWERPC__);
+ PRINT_MACRO(macintosh);
+ PRINT_MACRO(__MACH__);
+ PRINT_MACRO(__APPLE__);
+ PRINT_MACRO(__APPLE_CC__);
+ // MPW (MrCpp and SCpp)
+ PRINT_MACRO(__MRC__);
+ PRINT_MACRO(__SC__);
+ PRINT_MACRO(__FPCE__);
+ PRINT_MACRO(__FPCE_IEEE__);
+ PRINT_MACRO(MPW_CPLUS);
+ PRINT_MACRO(MPW_C);
+ PRINT_MACRO(__MC601);
+ PRINT_MACRO(__POWERPC);
+ PRINT_MACRO(__useAppleExts__);
+ PRINT_MACRO(powerc);
+ PRINT_MACRO(MC68000);
+ PRINT_MACRO(THINK_PLUS);
+ PRINT_MACRO(mc68881);
+ PRINT_MACRO(__FAR_CODE__);
+ PRINT_MACRO(__FAR_DATA__);
+ PRINT_MACRO(__CFM68K__);
+ // EDG
+ PRINT_MACRO(__EDG__);
+ PRINT_MACRO(__EDG_VERSION__);
+ PRINT_MACRO(c_plusplus); // indication for strict mode
+ PRINT_MACRO(_BOOL);
+ PRINT_MACRO(_EXPLICIT);
+ PRINT_MACRO(__SIGNED_CHARS__);
+ PRINT_MACRO(_TYPENAME);
+ PRINT_MACRO(_WCHAR_T);
+ PRINT_MACRO(__ARRAY_OPERATORS);
+ PRINT_MACRO(__EDG_ABI_COMPATIBILITY_VERSION);
+ PRINT_MACRO(__EDG_IMPLICIT_USING_STD);
+ PRINT_MACRO(__EDG_RUNTIME_USES_NAMESPACES);
+ PRINT_MACRO(__BOOL_DEFINED);
+ PRINT_MACRO(__RTTI);
+ PRINT_MACRO(__PLACEMENT_DELETE);
+ PRINT_MACRO(__NO_LONG_LONG);
+
+ // Intel options:
+ PRINT_MACRO(__INTEL__);
+ PRINT_MACRO(__ICC);
+ PRINT_MACRO(__ICL);
+ PRINT_MACRO(__ECC);
+ PRINT_MACRO(__INTEL_COMPILER);
+ PRINT_MACRO(__INITIAL_POINTER_SIZE);
+ PRINT_MACRO(_INTEGRAL_MAX_BITS);
+ PRINT_MACRO(__INTEL_COMPILER_BUILD_DATE);
+ PRINT_MACRO(__INTEL_MS_COMPAT_LEVEL);
+ PRINT_MACRO(__LONG_DOUBLE_SIZE__);
+ PRINT_MACRO(_M_X64);
+ PRINT_MACRO(_OPENMP);
+ PRINT_MACRO(_OPENMPT);
+ PRINT_MACRO(_PGO_INSTRUMENT);
+ PRINT_MACRO(__QMSPP_);
+ PRINT_MACRO(__INTEL_RTTI__);
+ PRINT_MACRO(__INTEL_CXX11_MODE__);
+
+ // Cray options:
+ PRINT_MACRO(_CRAYC);
+ PRINT_MACRO(_RELEASE);
+ PRINT_MACRO(cray);
+ PRINT_MACRO(CRAY);
+ PRINT_MACRO(CRAY1);
+ PRINT_MACRO(_CRAY1);
+ PRINT_MACRO(_CRAYMPP);
+ PRINT_MACRO(_CRAYT3E);
+ PRINT_MACRO(_CRAYIEEE);
+ PRINT_MACRO(_ADDR32);
+ PRINT_MACRO(_ADDR64);
+ PRINT_MACRO(_LD64);
+ PRINT_MACRO(_FASTMD);
+ PRINT_MACRO(_MAXVL);
+
+ // clang options:
+ PRINT_MACRO(__clang__);
+ PRINT_MACRO(__clang_major__);
+ PRINT_MACRO(__clang_minor__);
+ PRINT_MACRO(__clang_version__);
+ PRINT_MACRO(__clang_patchlevel__);
+
+ // misc compilers not covered so far:
+ PRINT_MACRO(__USLC__);
+ PRINT_MACRO(__DECCXX);
+ PRINT_MACRO(__IBMCPP__);
+ PRINT_MACRO(_REENTRANT);
+ PRINT_MACRO(_PTHREADS);
+ PRINT_MACRO(__STDC_HOSTED__);
+ PRINT_MACRO(__COMO__);
+ PRINT_MACRO(__COMO_VERSION__);
+ PRINT_MACRO(__DM__);
+ PRINT_MACRO(__osf__);
+ PRINT_MACRO(__OSF__);
+ PRINT_MACRO(__QNXNTO__);
+ PRINT_MACRO(__QNX__);
+ PRINT_MACRO(_NTO_VERSION);
+ PRINT_MACRO(__OPEN64__);
+ PRINT_MACRO(__open64);
+ PRINT_MACRO(__NVCC__);
+ PRINT_MACRO(__CUDACC__);
+ PRINT_MACRO(__CUDACC_RDC__);
+ PRINT_MACRO(__CUDACC_VER_MAJOR__);
+ PRINT_MACRO(__CUDACC_VER_MINOR__);
+ PRINT_MACRO(__CUDACC_VER_BUILD__);
+ PRINT_MACRO(__CUDACC_VER__);
+
+ // Android:
+ PRINT_MACRO(ANDROID);
+ PRINT_MACRO(__ANDROID__);
+}
+
+void print_stdlib_macros()
+{
+ std::cout << BOOST_STDLIB << std::endl;
+ #ifdef _RWSTD_VER
+ // Rogue Wave 2.x config options:
+ PRINT_MACRO(__NO_EDG_EXCEPTION_CLASSES);
+ PRINT_MACRO(_RWSTD_ALLOCATOR);
+ PRINT_MACRO(_RWSTD_BAD_ALLOC_DEFINED);
+ PRINT_MACRO(_RWSTD_BAD_EXCEPTION_DEFINED);
+ PRINT_MACRO(_RWSTD_BOUNDS_CHECKING);
+ PRINT_MACRO(_RWSTD_COMPILE_INSTANTIATE);
+ PRINT_MACRO(_RWSTD_DEFAULT_PRECISION);
+ PRINT_MACRO(_RWSTD_EXCEPTION_DEFINED);
+ PRINT_MACRO(_RWSTD_EXCEPTION_HANDLER_IN_STD);
+ PRINT_MACRO(_RWSTD_EXCEPTION_PREDEFINED);
+ PRINT_MACRO(_RWSTD_FLT_ROUNDS_IS_CONSTANT);
+ PRINT_MACRO(_RWSTD_LOCALIZED_ERRORS);
+ PRINT_MACRO(_RWSTD_MESSAGE);
+ PRINT_MACRO(_RWSTD_MUTEXATTR_DEFAULT);
+ PRINT_MACRO(_RWSTD_NO_ANSI_SPRINTF);
+ PRINT_MACRO(_RWSTD_NO_ARG_MATCH);
+ PRINT_MACRO(_RWSTD_NO_BAD_CAST);
+ PRINT_MACRO(_RWSTD_NO_BASE_CLASS_MATCH);
+ PRINT_MACRO(_RWSTD_NO_BOOL);
+ PRINT_MACRO(_RWSTD_NO_BUILTIN_CTOR);
+ PRINT_MACRO(_RWSTD_NO_CATOPEN_CATGETS);
+ PRINT_MACRO(_RWSTD_NO_CLASS_PARTIAL_SPEC);
+ PRINT_MACRO(_RWSTD_NO_COMPLEX_DEFAULT_TEMPLATES);
+ PRINT_MACRO(_RWSTD_NO_COMPLICATED_EXCEPTIONS);
+ PRINT_MACRO(_RWSTD_NO_COMPLICATED_TYPEDEF);
+ PRINT_MACRO(_RWSTD_NO_CONST_INST);
+ PRINT_MACRO(_RWSTD_NO_CTOR_RETURN);
+ PRINT_MACRO(_RWSTD_NO_DEFAULT_FOR_TPARAM);
+ PRINT_MACRO(_RWSTD_NO_DEFAULT_TEMPLATE_ARGS);
+ PRINT_MACRO(_RWSTD_NO_DESTROY_BUILTIN);
+ PRINT_MACRO(_RWSTD_NO_DESTROY_NONBUILTIN);
+ PRINT_MACRO(_RWSTD_NO_EMBEDDED_TYPEDEF);
+ PRINT_MACRO(_RWSTD_NO_EX_SPEC);
+ PRINT_MACRO(_RWSTD_NO_EXCEPTIONS);
+ PRINT_MACRO(_RWSTD_NO_EXPLICIT);
+ PRINT_MACRO(_RWSTD_NO_EXPLICIT_ARG);
+ PRINT_MACRO(_RWSTD_NO_EXPLICIT_FUNC_INSTANTIATION);
+ PRINT_MACRO(_RWSTD_NO_EXPLICIT_INSTANTIATION);
+ PRINT_MACRO(_RWSTD_NO_EXTENSION);
+ PRINT_MACRO(_RWSTD_NO_FORWARD_SPECIALIZATIONS);
+ PRINT_MACRO(_RWSTD_NO_FPOS_T);
+ PRINT_MACRO(_RWSTD_NO_FRIEND_TEMPLATES);
+ PRINT_MACRO(_RWSTD_NO_FUNC_PARTIAL_SPEC);
+ PRINT_MACRO(_RWSTD_NO_GETTIMEOFDAY);
+ PRINT_MACRO(_RWSTD_NO_GLOBAL_TZ);
+ PRINT_MACRO(_RWSTD_NO_INHERITED_TYPEDEFS);
+ PRINT_MACRO(_RWSTD_NO_INIT_CONST_TEMPLATE_REF_ARG);
+ PRINT_MACRO(_RWSTD_NO_INT_TYPEDEF);
+ PRINT_MACRO(_RWSTD_NO_LDIV);
+ PRINT_MACRO(_RWSTD_NO_LEADING_UNDERSCORE);
+ PRINT_MACRO(_RWSTD_NO_LOCALE);
+ PRINT_MACRO(_RWSTD_NO_LONG_NAME);
+ PRINT_MACRO(_RWSTD_NO_LONGDOUBLE);
+ PRINT_MACRO(_RWSTD_NO_MBSTATE_T);
+ PRINT_MACRO(_RWSTD_NO_MEM_CLASS_TEMPLATES);
+ PRINT_MACRO(_RWSTD_NO_MEMBER_TEMPLATES);
+ PRINT_MACRO(_RWSTD_NO_MEMBER_TYPE_TPARAM);
+ PRINT_MACRO(_RWSTD_NO_MEMBER_WO_DEF_CTOR);
+ PRINT_MACRO(_RWSTD_NO_MEMMOVE);
+ PRINT_MACRO(_RWSTD_NO_MULTI_DIM_ARRAY);
+ PRINT_MACRO(_RWSTD_NO_MUTABLE);
+ PRINT_MACRO(_RWSTD_NO_NAME_INJECTION);
+ PRINT_MACRO(_RWSTD_NO_NAMESPACE);
+ PRINT_MACRO(_RWSTD_NO_NESTING_TEMPLATES);
+ PRINT_MACRO(_RWSTD_NO_NEW_BRACKETS);
+ PRINT_MACRO(_RWSTD_NO_NEW_DECL);
+ PRINT_MACRO(_RWSTD_NO_NEW_HEADER);
+ PRINT_MACRO(_RWSTD_NO_NEW_TEMPLATE_SYNTAX);
+ PRINT_MACRO(_RWSTD_NO_NONCLASS_ARROW_RETURN);
+ PRINT_MACRO(_RWSTD_NO_NONTYPE_ARGS);
+ PRINT_MACRO(_RWSTD_NO_ONLY_NEEDED_INSTANTIATION);
+ PRINT_MACRO(_RWSTD_NO_OVERLOAD_C_POW);
+ PRINT_MACRO(_RWSTD_NO_OVERLOAD_OF_TEMPLATE_FUNCTION);
+ PRINT_MACRO(_RWSTD_NO_OVERLOAD_WCHAR);
+ PRINT_MACRO(_RWSTD_NO_PART_SPEC_OVERLOAD);
+ PRINT_MACRO(_RWSTD_NO_RET_TEMPLATE);
+ PRINT_MACRO(_RWSTD_NO_SIMPLE_DEFAULT_TEMPLATES);
+ PRINT_MACRO(_RWSTD_NO_STATIC_CAST);
+ PRINT_MACRO(_RWSTD_NO_STATIC_DEF);
+ PRINT_MACRO(_RWSTD_NO_STATIC_DEF2);
+ PRINT_MACRO(_RWSTD_NO_STATIC_DEF3);
+ PRINT_MACRO(_RWSTD_NO_STATIC_MEM_DEF);
+ PRINT_MACRO(_RWSTD_NO_STI_SIMPLE);
+ PRINT_MACRO(_RWSTD_NO_STI_TEMPLATE);
+ PRINT_MACRO(_RWSTD_NO_STREAM_LONG_DOUBLE);
+ PRINT_MACRO(_RWSTD_NO_STRFTIME_CAPC);
+ PRINT_MACRO(_RWSTD_NO_STRICT_TEMPLATE_INSTANTIATE);
+ PRINT_MACRO(_RWSTD_NO_SWPRINTF);
+ PRINT_MACRO(_RWSTD_NO_TEMPLATE_ON_RETURN_TYPE);
+ PRINT_MACRO(_RWSTD_NO_TEMPLATE_TEMPLATE);
+ PRINT_MACRO(_RWSTD_NO_THREADS);
+ PRINT_MACRO(_RWSTD_NO_THROW_SPEC_ON_NEW);
+ PRINT_MACRO(_RWSTD_NO_THROW_WITH_SHARED);
+ PRINT_MACRO(_RWSTD_NO_TYPEDEF_INST);
+ PRINT_MACRO(_RWSTD_NO_TYPEDEF_OVERLOAD);
+ PRINT_MACRO(_RWSTD_NO_TYPENAME);
+ PRINT_MACRO(_RWSTD_NO_UNDEFINED_FRIEND);
+ PRINT_MACRO(_RWSTD_NO_UNINITIALIZED_STATIC_DEF);
+ PRINT_MACRO(_RWSTD_NO_WCHAR_H);
+ PRINT_MACRO(_RWSTD_NO_WCTYPE_H);
+ PRINT_MACRO(_RWSTD_NO_WIDE_CHAR);
+ PRINT_MACRO(_RWSTD_NO_WINT_TYPE);
+ PRINT_MACRO(_RWSTD_NO_WSTR);
+ PRINT_MACRO(_RWSTD_NOT_ALL_WSTR_CFUNCTIONS);
+ PRINT_MACRO(_RWSTD_POSIX_D10_THREADS);
+ PRINT_MACRO(_RWSTD_POSIX_THREADS);
+ PRINT_MACRO(_RWSTD_REQUIRES_IEEEFP);
+ PRINT_MACRO(_RWSTD_SOLARIS_THREADS);
+ PRINT_MACRO(_RWSTD_STRUCT_TM_TZ);
+ PRINT_MACRO(_RWSTD_WIDE_STRING_NULL_PROBLEM);
+ #elif defined(__STD_RWCOMPILER_H__)
+ // Rogue Wave 1.x std lib:
+ PRINT_MACRO(__NO_EDG_EXCEPTION_CLASSES);
+ PRINT_MACRO(RWSTD_ALLOCATOR);
+ PRINT_MACRO(RWSTD_BAD_ALLOC_DEFINED);
+ PRINT_MACRO(RWSTD_BAD_EXCEPTION_DEFINED);
+ PRINT_MACRO(RWSTD_BOUNDS_CHECKING);
+ PRINT_MACRO(RWSTD_COMPILE_INSTANTIATE);
+ PRINT_MACRO(RWSTD_DEFAULT_PRECISION);
+ PRINT_MACRO(RWSTD_EXCEPTION_DEFINED);
+ PRINT_MACRO(RWSTD_EXCEPTION_HANDLER_IN_STD);
+ PRINT_MACRO(RWSTD_EXCEPTION_PREDEFINED);
+ PRINT_MACRO(RWSTD_FLT_ROUNDS_IS_CONSTANT);
+ PRINT_MACRO(RWSTD_LOCALIZED_ERRORS);
+ PRINT_MACRO(RWSTD_MESSAGE);
+ PRINT_MACRO(RWSTD_MUTEXATTR_DEFAULT);
+ PRINT_MACRO(RWSTD_NO_ANSI_SPRINTF);
+ PRINT_MACRO(RWSTD_NO_ARG_MATCH);
+ PRINT_MACRO(RWSTD_NO_BAD_CAST);
+ PRINT_MACRO(RWSTD_NO_BASE_CLASS_MATCH);
+ PRINT_MACRO(RWSTD_NO_BOOL);
+ PRINT_MACRO(RWSTD_NO_BUILTIN_CTOR);
+ PRINT_MACRO(RWSTD_NO_CATOPEN_CATGETS);
+ PRINT_MACRO(RWSTD_NO_CLASS_PARTIAL_SPEC);
+ PRINT_MACRO(RWSTD_NO_COMPLEX_DEFAULT_TEMPLATES);
+ PRINT_MACRO(RWSTD_NO_COMPLICATED_EXCEPTIONS);
+ PRINT_MACRO(RWSTD_NO_COMPLICATED_TYPEDEF);
+ PRINT_MACRO(RWSTD_NO_CONST_INST);
+ PRINT_MACRO(RWSTD_NO_CTOR_RETURN);
+ PRINT_MACRO(RWSTD_NO_DEFAULT_FOR_TPARAM);
+ PRINT_MACRO(RWSTD_NO_DEFAULT_TEMPLATE_ARGS);
+ PRINT_MACRO(RWSTD_NO_DESTROY_BUILTIN);
+ PRINT_MACRO(RWSTD_NO_DESTROY_NONBUILTIN);
+ PRINT_MACRO(RWSTD_NO_EMBEDDED_TYPEDEF);
+ PRINT_MACRO(RWSTD_NO_EX_SPEC);
+ PRINT_MACRO(RWSTD_NO_EXCEPTIONS);
+ PRINT_MACRO(RWSTD_NO_EXPLICIT);
+ PRINT_MACRO(RWSTD_NO_EXPLICIT_ARG);
+ PRINT_MACRO(RWSTD_NO_EXPLICIT_FUNC_INSTANTIATION);
+ PRINT_MACRO(RWSTD_NO_EXPLICIT_INSTANTIATION);
+ PRINT_MACRO(RWSTD_NO_EXTENSION);
+ PRINT_MACRO(RWSTD_NO_FORWARD_SPECIALIZATIONS);
+ PRINT_MACRO(RWSTD_NO_FPOS_T);
+ PRINT_MACRO(RWSTD_NO_FRIEND_TEMPLATES);
+ PRINT_MACRO(RWSTD_NO_FUNC_PARTIAL_SPEC);
+ PRINT_MACRO(RWSTD_NO_GETTIMEOFDAY);
+ PRINT_MACRO(RWSTD_NO_GLOBAL_TZ);
+ PRINT_MACRO(RWSTD_NO_INHERITED_TYPEDEFS);
+ PRINT_MACRO(RWSTD_NO_INIT_CONST_TEMPLATE_REF_ARG);
+ PRINT_MACRO(RWSTD_NO_INT_TYPEDEF);
+ PRINT_MACRO(RWSTD_NO_LDIV);
+ PRINT_MACRO(RWSTD_NO_LEADING_UNDERSCORE);
+ PRINT_MACRO(RWSTD_NO_LOCALE);
+ PRINT_MACRO(RWSTD_NO_LONG_NAME);
+ PRINT_MACRO(RWSTD_NO_LONGDOUBLE);
+ PRINT_MACRO(RWSTD_NO_MBSTATE_T);
+ PRINT_MACRO(RWSTD_NO_MEM_CLASS_TEMPLATES);
+ PRINT_MACRO(RWSTD_NO_MEMBER_TEMPLATES);
+ PRINT_MACRO(RWSTD_NO_MEMBER_TYPE_TPARAM);
+ PRINT_MACRO(RWSTD_NO_MEMBER_WO_DEF_CTOR);
+ PRINT_MACRO(RWSTD_NO_MEMMOVE);
+ PRINT_MACRO(RWSTD_NO_MULTI_DIM_ARRAY);
+ PRINT_MACRO(RWSTD_NO_MUTABLE);
+ PRINT_MACRO(RWSTD_NO_NAME_INJECTION);
+ PRINT_MACRO(RWSTD_NO_NAMESPACE);
+ PRINT_MACRO(RWSTD_NO_NESTING_TEMPLATES);
+ PRINT_MACRO(RWSTD_NO_NEW_BRACKETS);
+ PRINT_MACRO(RWSTD_NO_NEW_DECL);
+ PRINT_MACRO(RWSTD_NO_NEW_HEADER);
+ PRINT_MACRO(RWSTD_NO_NEW_TEMPLATE_SYNTAX);
+ PRINT_MACRO(RWSTD_NO_NONCLASS_ARROW_RETURN);
+ PRINT_MACRO(RWSTD_NO_NONTYPE_ARGS);
+ PRINT_MACRO(RWSTD_NO_ONLY_NEEDED_INSTANTIATION);
+ PRINT_MACRO(RWSTD_NO_OVERLOAD_C_POW);
+ PRINT_MACRO(RWSTD_NO_OVERLOAD_OF_TEMPLATE_FUNCTION);
+ PRINT_MACRO(RWSTD_NO_OVERLOAD_WCHAR);
+ PRINT_MACRO(RWSTD_NO_PART_SPEC_OVERLOAD);
+ PRINT_MACRO(RWSTD_NO_RET_TEMPLATE);
+ PRINT_MACRO(RWSTD_NO_SIMPLE_DEFAULT_TEMPLATES);
+ PRINT_MACRO(RWSTD_NO_STATIC_CAST);
+ PRINT_MACRO(RWSTD_NO_STATIC_DEF);
+ PRINT_MACRO(RWSTD_NO_STATIC_DEF2);
+ PRINT_MACRO(RWSTD_NO_STATIC_DEF3);
+ PRINT_MACRO(RWSTD_NO_STATIC_MEM_DEF);
+ PRINT_MACRO(RWSTD_NO_STI_SIMPLE);
+ PRINT_MACRO(RWSTD_NO_STI_TEMPLATE);
+ PRINT_MACRO(RWSTD_NO_STREAM_LONG_DOUBLE);
+ PRINT_MACRO(RWSTD_NO_STRFTIME_CAPC);
+ PRINT_MACRO(RWSTD_NO_STRICT_TEMPLATE_INSTANTIATE);
+ PRINT_MACRO(RWSTD_NO_SWPRINTF);
+ PRINT_MACRO(RWSTD_NO_TEMPLATE_ON_RETURN_TYPE);
+ PRINT_MACRO(RWSTD_NO_TEMPLATE_TEMPLATE);
+ PRINT_MACRO(RWSTD_NO_THREADS);
+ PRINT_MACRO(RWSTD_NO_THROW_SPEC_ON_NEW);
+ PRINT_MACRO(RWSTD_NO_THROW_WITH_SHARED);
+ PRINT_MACRO(RWSTD_NO_TYPEDEF_INST);
+ PRINT_MACRO(RWSTD_NO_TYPEDEF_OVERLOAD);
+ PRINT_MACRO(RWSTD_NO_TYPENAME);
+ PRINT_MACRO(RWSTD_NO_UNDEFINED_FRIEND);
+ PRINT_MACRO(RWSTD_NO_UNINITIALIZED_STATIC_DEF);
+ PRINT_MACRO(RWSTD_NO_WCHAR_H);
+ PRINT_MACRO(RWSTD_NO_WCTYPE_H);
+ PRINT_MACRO(RWSTD_NO_WIDE_CHAR);
+ PRINT_MACRO(RWSTD_NO_WINT_TYPE);
+ PRINT_MACRO(RWSTD_NO_WSTR);
+ PRINT_MACRO(RWSTD_NOT_ALL_WSTR_CFUNCTIONS);
+ PRINT_MACRO(RWSTD_POSIX_D10_THREADS);
+ PRINT_MACRO(RWSTD_POSIX_THREADS);
+ PRINT_MACRO(RWSTD_REQUIRES_IEEEFP);
+ PRINT_MACRO(RWSTD_SOLARIS_THREADS);
+ PRINT_MACRO(RWSTD_STRUCT_TM_TZ);
+ PRINT_MACRO(RWSTD_WIDE_STRING_NULL_PROBLEM);
+ #endif
+ // Dinkumware options:
+ PRINT_MACRO(_CPPLIB_VER);
+ PRINT_MACRO(_MSVC_STL_VERSION); // VS2017 15.5+
+ PRINT_MACRO(_MSVC_STL_UPDATE); // VS2017 15.5+
+ PRINT_MACRO(_GLOBAL_USING);
+ PRINT_MACRO(_HAS_EXCEPTIONS);
+ PRINT_MACRO(_HAS_MEMBER_TEMPLATES_REBIND);
+ PRINT_MACRO(_HAS_TEMPLATE_PARTIAL_ORDERING);
+ // https://blogs.msdn.microsoft.com/vcblog/2016/08/12/stl-fixes-in-vs-2015-update-3/
+ PRINT_MACRO(_HAS_CXX17);
+ PRINT_MACRO(_HAS_AUTO_PTR_ETC);
+ PRINT_MACRO(_HAS_OLD_IOSTREAMS_MEMBERS);
+ PRINT_MACRO(_HAS_FUNCTION_ASSIGN);
+ PRINT_MACRO(_HAS_TR1_NAMESPACE);
+ PRINT_MACRO(_HAS_IDENTITY_STRUCT);
+ // VS2017 15.5+
+ PRINT_MACRO(_HAS_STATIC_RTTI);
+ PRINT_MACRO(_HAS_UNEXPECTED);
+ PRINT_MACRO(_HAS_STD_BYTE);
+ PRINT_MACRO(_HAS_FUNCTION_ALLOCATOR_SUPPORT);
+ PRINT_MACRO(_HAS_TR2_SYS_NAMESPACE);
+ PRINT_MACRO(_ENFORCE_MATCHING_ALLOCATORS);
+ PRINT_MACRO(_HAS_HAS_UNIQUE_OBJECT_REPRESENTATIONS);
+ PRINT_MACRO(_HAS_INLINE_VARIABLES);
+ PRINT_MACRO(_HAS_ALIGNED_NEW);
+ PRINT_MACRO(_HAS_NOEXCEPT_FUNCTION_TYPES);
+ PRINT_MACRO(_ITERATOR_DEBUG_LEVEL);
+ PRINT_MACRO(_HAS_ITERATOR_DEBUGGING);
+ PRINT_MACRO(_ITERATOR_DEBUG_ARRAY_OVERLOADS);
+ // Libc++:
+ PRINT_MACRO(_LIBCPP_VERSION);
+ // STLPort and generic SGI STL options:
+ PRINT_MACRO(__SGI_STL_NO_ARROW_OPERATOR);
+ PRINT_MACRO(__SGI_STL_OWN_IOSTREAMS);
+ PRINT_MACRO(__SGI_STL_PORT);
+ PRINT_MACRO(__STL_AUTOMATIC_TYPE_TRAITS);
+ PRINT_MACRO(__STL_BASE_MATCH_BUG);
+ PRINT_MACRO(__STL_BASE_TYPEDEF_BUG);
+ PRINT_MACRO(__STL_BASE_TYPEDEF_OUTSIDE_BUG);
+ PRINT_MACRO(__STL_BROKEN_USING_DIRECTIVE);
+ PRINT_MACRO(__STL_CONST_CONSTRUCTOR_BUG);
+ PRINT_MACRO(__STL_DEBUG);
+ PRINT_MACRO(__STL_DEBUG_ALLOC);
+ PRINT_MACRO(__STL_DEFAULT_CONSTRUCTOR_BUG);
+ PRINT_MACRO(__STL_DEFAULT_TYPE_PARAM);
+ PRINT_MACRO(__STL_DONT_REDEFINE_STD);
+ PRINT_MACRO(__STL_DONT_USE_BOOL_TYPEDEF);
+ PRINT_MACRO(__STL_HAS_NO_EXCEPTIONS);
+ PRINT_MACRO(__STL_HAS_NO_NAMESPACES);
+ PRINT_MACRO(__STL_HAS_NO_NEW_C_HEADERS);
+ PRINT_MACRO(__STL_HAS_NO_NEW_IOSTREAMS);
+ PRINT_MACRO(__STL_IMPORT_VENDOR_CSTD);
+ PRINT_MACRO(__STL_LIMITED_DEFAULT_TEMPLATES);
+ PRINT_MACRO(__STL_LINK_TIME_INSTANTIATION);
+ PRINT_MACRO(__STL_LONG_LONG);
+ PRINT_MACRO(__STL_LOOP_INLINE_PROBLEMS);
+ PRINT_MACRO(__STL_MEMBER_POINTER_PARAM_BUG);
+ PRINT_MACRO(__STL_NEED_EXPLICIT);
+ PRINT_MACRO(__STL_NEED_MUTABLE);
+ PRINT_MACRO(__STL_NEED_TYPENAME);
+ PRINT_MACRO(__STL_NESTED_TYPE_PARAM_BUG);
+ PRINT_MACRO(__STL_NO_BAD_ALLOC);
+ PRINT_MACRO(__STL_NO_BOOL);
+ PRINT_MACRO(__STL_NO_CLASS_PARTIAL_SPECIALIZATION);
+ PRINT_MACRO(__STL_NO_CSTD_FUNCTION_IMPORTS);
+ PRINT_MACRO(__STL_NO_DEFAULT_NON_TYPE_PARAM);
+ PRINT_MACRO(__STL_NO_EXCEPTION_HEADER);
+ PRINT_MACRO(__STL_NO_EXCEPTION_SPEC);
+ PRINT_MACRO(__STL_NO_EXCEPTIONS);
+ PRINT_MACRO(__STL_NO_EXPLICIT_FUNCTION_TMPL_ARGS);
+ PRINT_MACRO(__STL_NO_FRIEND_TEMPLATES);
+ PRINT_MACRO(__STL_NO_FUNCTION_TMPL_PARTIAL_ORDER);
+ PRINT_MACRO(__STL_NO_IOSTREAMS);
+ PRINT_MACRO(__STL_NO_LONG_DOUBLE);
+ PRINT_MACRO(__STL_NO_MEMBER_TEMPLATE_CLASSES);
+ PRINT_MACRO(__STL_NO_MEMBER_TEMPLATE_KEYWORD);
+ PRINT_MACRO(__STL_NO_MEMBER_TEMPLATES);
+ PRINT_MACRO(__STL_NO_METHOD_SPECIALIZATION);
+ PRINT_MACRO(__STL_NO_NAMESPACES);
+ PRINT_MACRO(__STL_NO_NEW_IOSTREAMS);
+ PRINT_MACRO(__STL_NO_NEW_NEW_HEADER);
+ PRINT_MACRO(__STL_NO_NEW_STYLE_CASTS);
+ PRINT_MACRO(__STL_NO_PARTIAL_SPECIALIZATION_SYNTAX);
+ PRINT_MACRO(__STL_NO_QUALIFIED_FRIENDS);
+ PRINT_MACRO(__STL_NO_RELOPS_NAMESPACE);
+ PRINT_MACRO(__STL_NO_SGI_IOSTREAMS);
+ PRINT_MACRO(__STL_NO_STATIC_TEMPLATE_DATA);
+ PRINT_MACRO(__STL_NO_TEMPLATE_CONVERSIONS);
+ PRINT_MACRO(__STL_NO_WCHAR_T);
+ PRINT_MACRO(__STL_NON_TYPE_TMPL_PARAM_BUG);
+ PRINT_MACRO(__STL_NONTEMPL_BASE_MATCH_BUG);
+ PRINT_MACRO(__STL_PARTIAL_SPEC_NEEDS_TEMPLATE_ARGS);
+ PRINT_MACRO(__STL_RAND48);
+ PRINT_MACRO(__STL_STATIC_ARRAY_BUG);
+ PRINT_MACRO(__STL_STATIC_CONST_INIT_BUG);
+ PRINT_MACRO(__STL_STATIC_CONST_INIT_BUG);
+ PRINT_MACRO(__STL_THROW_RETURN_BUG);
+ PRINT_MACRO(__STL_TRIVIAL_CONSTRUCTOR_BUG);
+ PRINT_MACRO(__STL_TRIVIAL_DESTRUCTOR_BUG);
+ PRINT_MACRO(__STL_UNINITIALIZABLE_PRIVATE);
+ PRINT_MACRO(__STL_USE_ABBREVS);
+ PRINT_MACRO(__STL_USE_DEFALLOC);
+ PRINT_MACRO(__STL_USE_MALLOC);
+ PRINT_MACRO(__STL_USE_NEW_C_HEADERS);
+ PRINT_MACRO(__STL_USE_NEW_IOSTREAMS);
+ PRINT_MACRO(__STL_USE_NEWALLOC);
+ PRINT_MACRO(__STL_USE_OWN_NAMESPACE);
+ PRINT_MACRO(__STL_USE_SGI_ALLOCATORS);
+ PRINT_MACRO(__STL_WCHAR_T_IS_USHORT);
+ PRINT_MACRO(__STL_WEAK_ATTRIBUTE);
+ PRINT_MACRO(__STL_YVALS_H);
+ PRINT_MACRO(_NOTHREADS);
+ PRINT_MACRO(_PTHREADS);
+#if defined(__SGI_STL_PORT) && (__SGI_STL_PORT > 0x0400)
+ PRINT_MACRO(_STLP_AUTOMATIC_TYPE_TRAITS);
+ PRINT_MACRO(_STLP_BASE_MATCH_BUG);
+ PRINT_MACRO(_STLP_BASE_TYPEDEF_BUG);
+ PRINT_MACRO(_STLP_BASE_TYPEDEF_OUTSIDE_BUG);
+ PRINT_MACRO(_STLP_BROKEN_USING_DIRECTIVE);
+ PRINT_MACRO(_STLP_CONST_CONSTRUCTOR_BUG);
+ PRINT_MACRO(_STLP_DEBUG);
+ PRINT_MACRO(_STLP_DEBUG_ALLOC);
+ PRINT_MACRO(_STLP_DEFAULT_CONSTRUCTOR_BUG);
+ PRINT_MACRO(_STLP_DEFAULT_TYPE_PARAM);
+ PRINT_MACRO(_STLP_DONT_REDEFINE_STD);
+ PRINT_MACRO(_STLP_DONT_USE_BOOL_TYPEDEF);
+ PRINT_MACRO(_STLP_HAS_NO_EXCEPTIONS);
+ PRINT_MACRO(_STLP_HAS_NO_NAMESPACES);
+ PRINT_MACRO(_STLP_HAS_NO_NEW_C_HEADERS);
+ PRINT_MACRO(_STLP_HAS_NO_NEW_IOSTREAMS);
+ PRINT_MACRO(_STLP_IMPORT_VENDOR_CSTD);
+ PRINT_MACRO(_STLP_LIMITED_DEFAULT_TEMPLATES);
+ PRINT_MACRO(_STLP_LINK_TIME_INSTANTIATION);
+ PRINT_MACRO(_STLP_LONG_LONG);
+ PRINT_MACRO(_STLP_LOOP_INLINE_PROBLEMS);
+ PRINT_MACRO(_STLP_MEMBER_POINTER_PARAM_BUG);
+ PRINT_MACRO(_STLP_NEED_EXPLICIT);
+ PRINT_MACRO(_STLP_NEED_MUTABLE);
+ PRINT_MACRO(_STLP_NEED_TYPENAME);
+ PRINT_MACRO(_STLP_NESTED_TYPE_PARAM_BUG);
+ PRINT_MACRO(_STLP_NO_ARROW_OPERATOR);
+ PRINT_MACRO(_STLP_NO_BAD_ALLOC);
+ PRINT_MACRO(_STLP_NO_BOOL);
+ PRINT_MACRO(_STLP_NO_CLASS_PARTIAL_SPECIALIZATION);
+ PRINT_MACRO(_STLP_NO_CSTD_FUNCTION_IMPORTS);
+ PRINT_MACRO(_STLP_NO_DEFAULT_NON_TYPE_PARAM);
+ PRINT_MACRO(_STLP_NO_EXCEPTION_HEADER);
+ PRINT_MACRO(_STLP_NO_EXCEPTION_SPEC);
+ PRINT_MACRO(_STLP_NO_EXCEPTIONS);
+ PRINT_MACRO(_STLP_NO_EXPLICIT_FUNCTION_TMPL_ARGS);
+ PRINT_MACRO(_STLP_NO_FRIEND_TEMPLATES);
+ PRINT_MACRO(_STLP_NO_FUNCTION_TMPL_PARTIAL_ORDER);
+ PRINT_MACRO(_STLP_NO_IOSTREAMS);
+ PRINT_MACRO(_STLP_NO_LONG_DOUBLE);
+ PRINT_MACRO(_STLP_NO_MEMBER_TEMPLATE_CLASSES);
+ PRINT_MACRO(_STLP_NO_MEMBER_TEMPLATE_KEYWORD);
+ PRINT_MACRO(_STLP_NO_MEMBER_TEMPLATES);
+ PRINT_MACRO(_STLP_NO_METHOD_SPECIALIZATION);
+ PRINT_MACRO(_STLP_NO_NAMESPACES);
+ PRINT_MACRO(_STLP_NO_NEW_IOSTREAMS);
+ PRINT_MACRO(_STLP_NO_NEW_NEW_HEADER);
+ PRINT_MACRO(_STLP_NO_NEW_STYLE_CASTS);
+ PRINT_MACRO(_STLP_NO_PARTIAL_SPECIALIZATION_SYNTAX);
+ PRINT_MACRO(_STLP_NO_QUALIFIED_FRIENDS);
+ PRINT_MACRO(_STLP_NO_RELOPS_NAMESPACE);
+ PRINT_MACRO(_STLP_NO_SGI_IOSTREAMS);
+ PRINT_MACRO(_STLP_NO_STATIC_TEMPLATE_DATA);
+ PRINT_MACRO(_STLP_NO_TEMPLATE_CONVERSIONS);
+ PRINT_MACRO(_STLP_NO_WCHAR_T);
+ PRINT_MACRO(_STLP_NON_TYPE_TMPL_PARAM_BUG);
+ PRINT_MACRO(_STLP_NONTEMPL_BASE_MATCH_BUG);
+ PRINT_MACRO(_STLP_OWN_IOSTREAMS);
+ PRINT_MACRO(_STLP_PARTIAL_SPEC_NEEDS_TEMPLATE_ARGS);
+ PRINT_MACRO(_STLP_RAND48);
+ PRINT_MACRO(_STLP_STATIC_ARRAY_BUG);
+ PRINT_MACRO(_STLP_STATIC_CONST_INIT_BUG);
+ PRINT_MACRO(_STLP_STATIC_CONST_INIT_BUG);
+ PRINT_MACRO(_STLP_THROW_RETURN_BUG);
+ PRINT_MACRO(_STLP_TRIVIAL_CONSTRUCTOR_BUG);
+ PRINT_MACRO(_STLP_TRIVIAL_DESTRUCTOR_BUG);
+ PRINT_MACRO(_STLP_UNINITIALIZABLE_PRIVATE);
+ PRINT_MACRO(_STLP_USE_ABBREVS);
+ PRINT_MACRO(_STLP_USE_DEFALLOC);
+ PRINT_MACRO(_STLP_USE_MALLOC);
+ PRINT_MACRO(_STLP_USE_NEW_C_HEADERS);
+ PRINT_MACRO(_STLP_USE_NEWALLOC);
+ PRINT_MACRO(_STLP_USE_OWN_NAMESPACE);
+ PRINT_MACRO(_STLP_USE_SGI_ALLOCATORS);
+ PRINT_MACRO(_STLP_WCHAR_T_IS_USHORT);
+ PRINT_MACRO(_STLP_WEAK_ATTRIBUTE);
+ PRINT_MACRO(_STLP_YVALS_H);
+#endif
+ PRINT_MACRO(__GLIBCPP__);
+ PRINT_MACRO(_GLIBCPP_USE_WCHAR_T);
+ PRINT_MACRO(_GLIBCPP_VERSION);
+ PRINT_MACRO(__GLIBCXX__);
+ PRINT_MACRO(_GLIBCXX_USE_WCHAR_T);
+ PRINT_MACRO(_GLIBCXX_VERSION);
+ PRINT_MACRO(_GLIBCXX_USE_LONG_LONG);
+ PRINT_MACRO(_GLIBCXX_USE_NLS);
+ PRINT_MACRO(_GLIBCXX_USE_C99_MATH);
+ PRINT_MACRO(_GLIBCXX_USE_C99);
+ PRINT_MACRO(_GLIBCXX_CONCEPT_CHECKS);
+ PRINT_MACRO(_GLIBCXX_USE_LFS);
+ PRINT_MACRO(_GLIBCXX_SYMVER);
+ PRINT_MACRO(_GLIBCXX_MEM_LIMITS);
+ PRINT_MACRO(_GLIBCXX_HOSTED);
+ PRINT_MACRO(_GLIBCXX_SJLJ_EXCEPTIONS);
+ PRINT_MACRO(_GLIBCXX_RELEASE);
+
+ // Modena C++ standard library
+ PRINT_MACRO(MSIPL_ANSI_HEADER);
+ PRINT_MACRO(MSIPL_BOOL_BUILTIN);
+ PRINT_MACRO(MSIPL_DEF_EXPLICIT);
+ PRINT_MACRO(MSIPL_DEF_TEMPARG);
+ PRINT_MACRO(MSIPL_EXPINST_ALLOWED);
+ PRINT_MACRO(MSIPL_EXPLICIT_FUNC_TEMPLATE_ARG);
+ PRINT_MACRO(MISPL_EXPLICIT_TEMPLATE_ARGUMENT);
+ PRINT_MACRO(MSIPL_FUNC_TEMPLATE_DEFARG);
+ PRINT_MACRO(MSIPL_MEMBER_TEMPLATE);
+ PRINT_MACRO(MSIPL_MULTITHREAD);
+ PRINT_MACRO(MSIPL_NON_TYPE_TEMPARG);
+ PRINT_MACRO(MSIPL_PARTIAL_TEMPL);
+ PRINT_MACRO(MSIPL_STATIC_CONST_INIT);
+ PRINT_MACRO(MSIPL_TEMPL_NEWSPEC);
+ PRINT_MACRO(MSIPL_TYPENAME);
+ PRINT_MACRO(MSIPL_USING_NAMESPACE);
+ PRINT_MACRO(MSIPL_WCHART);
+}
+
+void print_platform_macros()
+{
+ std::cout << "Detected Platform: " << BOOST_PLATFORM << std::endl;
+ // signedness:
+ PRINT_SIGN(char);
+ PRINT_SIGN(wchar_t);
+ // byte ordering:
+ PRINT_ORDER(short);
+ PRINT_ORDER(int);
+ PRINT_ORDER(long);
+ // sizes:
+ PRINT_EXPRESSION(sizeof(wchar_t));
+ PRINT_EXPRESSION(sizeof(short));
+ PRINT_EXPRESSION(sizeof(int));
+ PRINT_EXPRESSION(sizeof(long));
+ PRINT_EXPRESSION(sizeof(size_t));
+ PRINT_EXPRESSION(sizeof(ptrdiff_t));
+ PRINT_EXPRESSION(sizeof(void*));
+ PRINT_EXPRESSION(sizeof(void(*)(void)));
+ PRINT_EXPRESSION(sizeof(float));
+ PRINT_EXPRESSION(sizeof(double));
+ PRINT_EXPRESSION(sizeof(long double));
+ // limits:
+ PRINT_MACRO(CHAR_BIT);
+ PRINT_MACRO(CHAR_MAX);
+ PRINT_MACRO(WCHAR_MAX);
+ PRINT_MACRO(SHRT_MAX);
+ PRINT_MACRO(INT_MAX);
+ PRINT_MACRO(LONG_MAX);
+ PRINT_MACRO(LLONG_MAX);
+ PRINT_MACRO(LONG_LONG_MAX);
+ PRINT_MACRO(LONGLONG_MAX);
+ PRINT_MACRO(ULLONG_MAX); // <boost/cstdint.hpp> uses these, so we need to know them
+ PRINT_MACRO(ULONG_LONG_MAX);
+ PRINT_MACRO(ULONGLONG_MAX);
+ // general C99:
+ PRINT_MACRO(__STDC_IEC_559__);
+ PRINT_MACRO(__STDC_IEC_559_COMPLEX__);
+ PRINT_MACRO(__STDC_ISO_10646__);
+ // GNU:
+ PRINT_MACRO(__GLIBC__);
+ PRINT_MACRO(__GLIBC_MINOR__);
+ PRINT_MACRO(__GNU_LIBRARY__);
+ PRINT_MACRO(_BSD_SOURCE);
+ PRINT_MACRO(_GNU_SOURCE);
+ PRINT_MACRO(_ISOC99_SOURCE);
+ PRINT_MACRO(_ISOC9X_SOURCE);
+ PRINT_MACRO(_LARGEFILE_SOURCE);
+ PRINT_MACRO(_LARGEFILE64_SOURCE);
+ PRINT_MACRO(_SVID_SOURCE);
+ PRINT_MACRO(_THREAD_SAFE);
+ PRINT_MACRO(_XOPEN_SOURCE_EXTENDED);
+ PRINT_MACRO(XPG);
+ PRINT_MACRO(__MINGW32_MAJOR_VERSION);
+ PRINT_MACRO(__MINGW32_MINOR_VERSION);
+ // POSIX:
+ PRINT_MACRO(_POSIX_ADVISORY_INFO);
+ PRINT_MACRO(_POSIX_ASYNCHRONOUS_IO);
+ PRINT_MACRO(_POSIX_BARRIERS);
+ PRINT_MACRO(_POSIX_C_SOURCE);
+ PRINT_MACRO(_POSIX_CHOWN_RESTRICTED);
+ PRINT_MACRO(_POSIX_CLOCK_SELECTION);
+ PRINT_MACRO(_POSIX_CPUTIME);
+ PRINT_MACRO(_POSIX_FSYNC);
+ PRINT_MACRO(_POSIX_JOB_CONTROL);
+ PRINT_MACRO(_POSIX_MAPPED_FILES);
+ PRINT_MACRO(_POSIX_MEMLOCK);
+ PRINT_MACRO(_POSIX_MEMLOCK_RANGE);
+ PRINT_MACRO(_POSIX_MEMORY_PROTECTION);
+ PRINT_MACRO(_POSIX_MESSAGE_PASSING);
+ PRINT_MACRO(_POSIX_MONOTONIC_CLOCK);
+ PRINT_MACRO(_POSIX_NO_TRUNC);
+ PRINT_MACRO(_POSIX_PRIORITIZED_IO);
+ PRINT_MACRO(_POSIX_PRIORITY_SCHEDULING);
+ PRINT_MACRO(_POSIX_RAW_SOCKETS);
+ PRINT_MACRO(_POSIX_READER_WRITER_LOCKS);
+ PRINT_MACRO(_POSIX_REALTIME_SIGNALS);
+ PRINT_MACRO(_POSIX_REGEXP);
+ PRINT_MACRO(_POSIX_SAVED_IDS);
+ PRINT_MACRO(_POSIX_SEMAPHORES);
+ PRINT_MACRO(_POSIX_SHARED_MEMORY_OBJECTS);
+ PRINT_MACRO(_POSIX_SHELL);
+ PRINT_MACRO(_POSIX_SOURCE);
+ PRINT_MACRO(_POSIX_SPAWN);
+ PRINT_MACRO(_POSIX_SPIN_LOCKS);
+ PRINT_MACRO(_POSIX_SPORADIC_SERVER);
+ PRINT_MACRO(_POSIX_SYNCHRONIZED_IO);
+ PRINT_MACRO(_POSIX_THREAD_ATTR_STACKADDR);
+ PRINT_MACRO(_POSIX_THREAD_ATTR_STACKSIZE);
+ PRINT_MACRO(_POSIX_THREAD_CPUTIME);
+ PRINT_MACRO(_POSIX_THREAD_PRIO_INHERIT);
+ PRINT_MACRO(_POSIX_THREAD_PRIO_PROTECT);
+ PRINT_MACRO(_POSIX_THREAD_PRIORITY_SCHEDULING);
+ PRINT_MACRO(_POSIX_THREAD_PROCESS_SHARED);
+ PRINT_MACRO(_POSIX_THREAD_SAFE_FUNCTIONS);
+ PRINT_MACRO(_POSIX_THREAD_SPORADIC_SERVER);
+ PRINT_MACRO(_POSIX_THREADS);
+ PRINT_MACRO(_POSIX_TIMEOUTS);
+ PRINT_MACRO(_POSIX_TIMERS);
+ PRINT_MACRO(_POSIX_TRACE);
+ PRINT_MACRO(_POSIX_TRACE_EVENT_FILTER);
+ PRINT_MACRO(_POSIX_TRACE_INHERIT);
+ PRINT_MACRO(_POSIX_TRACE_LOG);
+ PRINT_MACRO(_POSIX_TYPED_MEMORY_OBJECTS);
+ PRINT_MACRO(_POSIX_VDISABLE);
+ PRINT_MACRO(_POSIX_VERSION);
+ PRINT_MACRO(_POSIX2_C_BIND);
+ PRINT_MACRO(_POSIX2_C_DEV);
+ PRINT_MACRO(_POSIX2_CHAR_TERM);
+ PRINT_MACRO(_POSIX2_FORT_DEV);
+ PRINT_MACRO(_POSIX2_FORT_RUN);
+ PRINT_MACRO(_POSIX2_LOCALEDEF);
+ PRINT_MACRO(_POSIX2_PBS);
+ PRINT_MACRO(_POSIX2_PBS_ACCOUNTING);
+ PRINT_MACRO(_POSIX2_PBS_CHECKPOINT);
+ PRINT_MACRO(_POSIX2_PBS_LOCATE);
+ PRINT_MACRO(_POSIX2_PBS_MESSAGE);
+ PRINT_MACRO(_POSIX2_PBS_TRACK);
+ PRINT_MACRO(_POSIX2_SW_DEV);
+ PRINT_MACRO(_POSIX2_UPE);
+ PRINT_MACRO(_POSIX2_VERSION);
+ PRINT_MACRO(_V6_ILP32_OFF32);
+ PRINT_MACRO(_V6_ILP32_OFFBIG);
+ PRINT_MACRO(_V6_LP64_OFF64);
+ PRINT_MACRO(_V6_LPBIG_OFFBIG);
+ PRINT_MACRO(_XBS5_ILP32_OFF32);
+ PRINT_MACRO(_XBS5_ILP32_OFFBIG);
+ PRINT_MACRO(_XBS5_LP64_OFF64);
+ PRINT_MACRO(_XBS5_LPBIG_OFFBIG);
+ PRINT_MACRO(_XOPEN_CRYPT);
+ PRINT_MACRO(_XOPEN_ENH_I18N);
+ PRINT_MACRO(_XOPEN_LEGACY);
+ PRINT_MACRO(_XOPEN_REALTIME);
+ PRINT_MACRO(_XOPEN_REALTIME_THREADS);
+ PRINT_MACRO(_XOPEN_SHM);
+ PRINT_MACRO(_XOPEN_SOURCE);
+ PRINT_MACRO(_XOPEN_STREAMS);
+ PRINT_MACRO(_XOPEN_UNIX);
+ PRINT_MACRO(_XOPEN_VERSION);
+ // Misc:
+ PRINT_MACRO(__USE_BSD);
+ PRINT_MACRO(_FILE_OFFSET_BITS);
+}
+
+void print_boost_macros()
+{
+ std::cout << "Boost version " << BOOST_STRINGIZE(BOOST_VERSION) << std::endl;
+ // config setup macros first:
+ PRINT_MACRO(BOOST_USER_CONFIG);
+ PRINT_MACRO(BOOST_COMPILER_CONFIG);
+ PRINT_MACRO(BOOST_STDLIB_CONFIG);
+ PRINT_MACRO(BOOST_PLATFORM_CONFIG);
+ PRINT_MACRO(BOOST_NO_CONFIG);
+ PRINT_MACRO(BOOST_NO_USER_CONFIG);
+ PRINT_MACRO(BOOST_NO_COMPILER_CONFIG);
+ PRINT_MACRO(BOOST_NO_STDLIB_CONFIG);
+ PRINT_MACRO(BOOST_NO_PLATFORM_CONFIG);
+ // then defect and feature macros:
+ PRINT_MACRO(BOOST_DISABLE_THREADS);
+ PRINT_MACRO(BOOST_DISABLE_WIN32);
+ PRINT_MACRO(BOOST_HAS_THREADS);
+ PRINT_MACRO(BOOST_WINDOWS);
+
+ // BEGIN GENERATED BLOCK DO NOT EDIT THIS!!!!!!
+ PRINT_MACRO(BOOST_BCB_PARTIAL_SPECIALIZATION_BUG);
+ PRINT_MACRO(BOOST_DEDUCED_TYPENAME);
+ PRINT_MACRO(BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL);
+ PRINT_MACRO(BOOST_HAS_BETHREADS);
+ PRINT_MACRO(BOOST_HAS_CLOCK_GETTIME);
+ PRINT_MACRO(BOOST_HAS_DIRENT_H);
+ PRINT_MACRO(BOOST_HAS_EXPM1);
+ PRINT_MACRO(BOOST_HAS_FLOAT128);
+ PRINT_MACRO(BOOST_HAS_FTIME);
+ PRINT_MACRO(BOOST_HAS_GETSYSTEMTIMEASFILETIME);
+ PRINT_MACRO(BOOST_HAS_GETTIMEOFDAY);
+ PRINT_MACRO(BOOST_HAS_HASH);
+ PRINT_MACRO(BOOST_HAS_INT128);
+ PRINT_MACRO(BOOST_HAS_LOG1P);
+ PRINT_MACRO(BOOST_HAS_LONG_LONG);
+ PRINT_MACRO(BOOST_HAS_MACRO_USE_FACET);
+ PRINT_MACRO(BOOST_HAS_MS_INT64);
+ PRINT_MACRO(BOOST_HAS_NANOSLEEP);
+ PRINT_MACRO(BOOST_HAS_NL_TYPES_H);
+ PRINT_MACRO(BOOST_HAS_NRVO);
+ PRINT_MACRO(BOOST_HAS_PARTIAL_STD_ALLOCATOR);
+ PRINT_MACRO(BOOST_HAS_PRAGMA_DETECT_MISMATCH);
+ PRINT_MACRO(BOOST_HAS_PTHREADS);
+ PRINT_MACRO(BOOST_HAS_PTHREAD_DELAY_NP);
+ PRINT_MACRO(BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE);
+ PRINT_MACRO(BOOST_HAS_PTHREAD_YIELD);
+ PRINT_MACRO(BOOST_HAS_RVALUE_REFS);
+ PRINT_MACRO(BOOST_HAS_SCHED_YIELD);
+ PRINT_MACRO(BOOST_HAS_SGI_TYPE_TRAITS);
+ PRINT_MACRO(BOOST_HAS_SIGACTION);
+ PRINT_MACRO(BOOST_HAS_SLIST);
+ PRINT_MACRO(BOOST_HAS_STATIC_ASSERT);
+ PRINT_MACRO(BOOST_HAS_STDINT_H);
+ PRINT_MACRO(BOOST_HAS_STLP_USE_FACET);
+ PRINT_MACRO(BOOST_HAS_TWO_ARG_USE_FACET);
+ PRINT_MACRO(BOOST_HAS_UNISTD_H);
+ PRINT_MACRO(BOOST_HAS_VARIADIC_TMPL);
+ PRINT_MACRO(BOOST_HAS_WINTHREADS);
+ PRINT_MACRO(BOOST_MSVC6_MEMBER_TEMPLATES);
+ PRINT_MACRO(BOOST_MSVC_STD_ITERATOR);
+ PRINT_MACRO(BOOST_NO_ADL_BARRIER);
+ PRINT_MACRO(BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP);
+ PRINT_MACRO(BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS);
+ PRINT_MACRO(BOOST_NO_AUTO_PTR);
+ PRINT_MACRO(BOOST_NO_COMPLETE_VALUE_INITIALIZATION);
+ PRINT_MACRO(BOOST_NO_CTYPE_FUNCTIONS);
+ PRINT_MACRO(BOOST_NO_CV_SPECIALIZATIONS);
+ PRINT_MACRO(BOOST_NO_CV_VOID_SPECIALIZATIONS);
+ PRINT_MACRO(BOOST_NO_CWCHAR);
+ PRINT_MACRO(BOOST_NO_CWCTYPE);
+ PRINT_MACRO(BOOST_NO_CXX11_ADDRESSOF);
+ PRINT_MACRO(BOOST_NO_CXX11_ALIGNAS);
+ PRINT_MACRO(BOOST_NO_CXX11_ALLOCATOR);
+ PRINT_MACRO(BOOST_NO_CXX11_ATOMIC_SMART_PTR);
+ PRINT_MACRO(BOOST_NO_CXX11_AUTO_DECLARATIONS);
+ PRINT_MACRO(BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS);
+ PRINT_MACRO(BOOST_NO_CXX11_CHAR16_T);
+ PRINT_MACRO(BOOST_NO_CXX11_CHAR32_T);
+ PRINT_MACRO(BOOST_NO_CXX11_CONSTEXPR);
+ PRINT_MACRO(BOOST_NO_CXX11_DECLTYPE);
+ PRINT_MACRO(BOOST_NO_CXX11_DECLTYPE_N3276);
+ PRINT_MACRO(BOOST_NO_CXX11_DEFAULTED_FUNCTIONS);
+ PRINT_MACRO(BOOST_NO_CXX11_DEFAULTED_MOVES);
+ PRINT_MACRO(BOOST_NO_CXX11_DELETED_FUNCTIONS);
+ PRINT_MACRO(BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS);
+ PRINT_MACRO(BOOST_NO_CXX11_EXTERN_TEMPLATE);
+ PRINT_MACRO(BOOST_NO_CXX11_FINAL);
+ PRINT_MACRO(BOOST_NO_CXX11_FIXED_LENGTH_VARIADIC_TEMPLATE_EXPANSION_PACKS);
+ PRINT_MACRO(BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS);
+ PRINT_MACRO(BOOST_NO_CXX11_HDR_ARRAY);
+ PRINT_MACRO(BOOST_NO_CXX11_HDR_ATOMIC);
+ PRINT_MACRO(BOOST_NO_CXX11_HDR_CHRONO);
+ PRINT_MACRO(BOOST_NO_CXX11_HDR_CODECVT);
+ PRINT_MACRO(BOOST_NO_CXX11_HDR_CONDITION_VARIABLE);
+ PRINT_MACRO(BOOST_NO_CXX11_HDR_FORWARD_LIST);
+ PRINT_MACRO(BOOST_NO_CXX11_HDR_FUNCTIONAL);
+ PRINT_MACRO(BOOST_NO_CXX11_HDR_FUTURE);
+ PRINT_MACRO(BOOST_NO_CXX11_HDR_INITIALIZER_LIST);
+ PRINT_MACRO(BOOST_NO_CXX11_HDR_MUTEX);
+ PRINT_MACRO(BOOST_NO_CXX11_HDR_RANDOM);
+ PRINT_MACRO(BOOST_NO_CXX11_HDR_RATIO);
+ PRINT_MACRO(BOOST_NO_CXX11_HDR_REGEX);
+ PRINT_MACRO(BOOST_NO_CXX11_HDR_SYSTEM_ERROR);
+ PRINT_MACRO(BOOST_NO_CXX11_HDR_THREAD);
+ PRINT_MACRO(BOOST_NO_CXX11_HDR_TUPLE);
+ PRINT_MACRO(BOOST_NO_CXX11_HDR_TYPEINDEX);
+ PRINT_MACRO(BOOST_NO_CXX11_HDR_TYPE_TRAITS);
+ PRINT_MACRO(BOOST_NO_CXX11_HDR_UNORDERED_MAP);
+ PRINT_MACRO(BOOST_NO_CXX11_HDR_UNORDERED_SET);
+ PRINT_MACRO(BOOST_NO_CXX11_INLINE_NAMESPACES);
+ PRINT_MACRO(BOOST_NO_CXX11_LAMBDAS);
+ PRINT_MACRO(BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS);
+ PRINT_MACRO(BOOST_NO_CXX11_NOEXCEPT);
+ PRINT_MACRO(BOOST_NO_CXX11_NON_PUBLIC_DEFAULTED_FUNCTIONS);
+ PRINT_MACRO(BOOST_NO_CXX11_NULLPTR);
+ PRINT_MACRO(BOOST_NO_CXX11_NUMERIC_LIMITS);
+ PRINT_MACRO(BOOST_NO_CXX11_POINTER_TRAITS);
+ PRINT_MACRO(BOOST_NO_CXX11_RANGE_BASED_FOR);
+ PRINT_MACRO(BOOST_NO_CXX11_RAW_LITERALS);
+ PRINT_MACRO(BOOST_NO_CXX11_REF_QUALIFIERS);
+ PRINT_MACRO(BOOST_NO_CXX11_RVALUE_REFERENCES);
+ 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_STATIC_ASSERT);
+ PRINT_MACRO(BOOST_NO_CXX11_STD_ALIGN);
+ PRINT_MACRO(BOOST_NO_CXX11_TEMPLATE_ALIASES);
+ PRINT_MACRO(BOOST_NO_CXX11_THREAD_LOCAL);
+ PRINT_MACRO(BOOST_NO_CXX11_TRAILING_RESULT_TYPES);
+ PRINT_MACRO(BOOST_NO_CXX11_UNICODE_LITERALS);
+ PRINT_MACRO(BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX);
+ PRINT_MACRO(BOOST_NO_CXX11_USER_DEFINED_LITERALS);
+ PRINT_MACRO(BOOST_NO_CXX11_VARIADIC_MACROS);
+ 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_SEPARATORS);
+ PRINT_MACRO(BOOST_NO_CXX14_GENERIC_LAMBDAS);
+ PRINT_MACRO(BOOST_NO_CXX14_HDR_SHARED_MUTEX);
+ PRINT_MACRO(BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES);
+ PRINT_MACRO(BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION);
+ PRINT_MACRO(BOOST_NO_CXX14_STD_EXCHANGE);
+ PRINT_MACRO(BOOST_NO_CXX14_VARIABLE_TEMPLATES);
+ PRINT_MACRO(BOOST_NO_CXX17_FOLD_EXPRESSIONS);
+ PRINT_MACRO(BOOST_NO_CXX17_IF_CONSTEXPR);
+ PRINT_MACRO(BOOST_NO_CXX17_INLINE_VARIABLES);
+ PRINT_MACRO(BOOST_NO_CXX17_ITERATOR_TRAITS);
+ PRINT_MACRO(BOOST_NO_CXX17_STD_APPLY);
+ PRINT_MACRO(BOOST_NO_CXX17_STD_INVOKE);
+ PRINT_MACRO(BOOST_NO_CXX17_STRUCTURED_BINDINGS);
+ PRINT_MACRO(BOOST_NO_CXX98_BINDERS);
+ PRINT_MACRO(BOOST_NO_CXX98_FUNCTION_BASE);
+ PRINT_MACRO(BOOST_NO_CXX98_RANDOM_SHUFFLE);
+ PRINT_MACRO(BOOST_NO_DEPENDENT_NESTED_DERIVATIONS);
+ PRINT_MACRO(BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS);
+ PRINT_MACRO(BOOST_NO_EXCEPTIONS);
+ PRINT_MACRO(BOOST_NO_EXCEPTION_STD_NAMESPACE);
+ PRINT_MACRO(BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS);
+ PRINT_MACRO(BOOST_NO_FENV_H);
+ PRINT_MACRO(BOOST_NO_FUNCTION_TEMPLATE_ORDERING);
+ PRINT_MACRO(BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS);
+ PRINT_MACRO(BOOST_NO_INCLASS_MEMBER_INITIALIZATION);
+ PRINT_MACRO(BOOST_NO_INTEGRAL_INT64_T);
+ PRINT_MACRO(BOOST_NO_INTRINSIC_WCHAR_T);
+ PRINT_MACRO(BOOST_NO_IOSFWD);
+ PRINT_MACRO(BOOST_NO_IOSTREAM);
+ PRINT_MACRO(BOOST_NO_IS_ABSTRACT);
+ PRINT_MACRO(BOOST_NO_LIMITS);
+ PRINT_MACRO(BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS);
+ PRINT_MACRO(BOOST_NO_LONG_LONG);
+ PRINT_MACRO(BOOST_NO_LONG_LONG_NUMERIC_LIMITS);
+ PRINT_MACRO(BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS);
+ PRINT_MACRO(BOOST_NO_MEMBER_TEMPLATES);
+ PRINT_MACRO(BOOST_NO_MEMBER_TEMPLATE_FRIENDS);
+ PRINT_MACRO(BOOST_NO_MEMBER_TEMPLATE_KEYWORD);
+ PRINT_MACRO(BOOST_NO_MS_INT64_NUMERIC_LIMITS);
+ PRINT_MACRO(BOOST_NO_NESTED_FRIENDSHIP);
+ PRINT_MACRO(BOOST_NO_OPERATORS_IN_NAMESPACE);
+ PRINT_MACRO(BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS);
+ 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);
+ PRINT_MACRO(BOOST_NO_STDC_NAMESPACE);
+ PRINT_MACRO(BOOST_NO_STD_ALLOCATOR);
+ PRINT_MACRO(BOOST_NO_STD_DISTANCE);
+ PRINT_MACRO(BOOST_NO_STD_ITERATOR);
+ PRINT_MACRO(BOOST_NO_STD_ITERATOR_TRAITS);
+ PRINT_MACRO(BOOST_NO_STD_LOCALE);
+ PRINT_MACRO(BOOST_NO_STD_MESSAGES);
+ PRINT_MACRO(BOOST_NO_STD_MIN_MAX);
+ PRINT_MACRO(BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN);
+ PRINT_MACRO(BOOST_NO_STD_TYPEINFO);
+ PRINT_MACRO(BOOST_NO_STD_USE_FACET);
+ PRINT_MACRO(BOOST_NO_STD_WSTREAMBUF);
+ PRINT_MACRO(BOOST_NO_STD_WSTRING);
+ PRINT_MACRO(BOOST_NO_STRINGSTREAM);
+ PRINT_MACRO(BOOST_NO_SWPRINTF);
+ PRINT_MACRO(BOOST_NO_TEMPLATED_IOSTREAMS);
+ PRINT_MACRO(BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS);
+ PRINT_MACRO(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION);
+ PRINT_MACRO(BOOST_NO_TEMPLATE_TEMPLATES);
+ PRINT_MACRO(BOOST_NO_TWO_PHASE_NAME_LOOKUP);
+ PRINT_MACRO(BOOST_NO_TYPEID);
+ PRINT_MACRO(BOOST_NO_TYPENAME_WITH_CTOR);
+ PRINT_MACRO(BOOST_NO_UNREACHABLE_RETURN_DETECTION);
+ PRINT_MACRO(BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE);
+ PRINT_MACRO(BOOST_NO_USING_TEMPLATE);
+ PRINT_MACRO(BOOST_NO_VOID_RETURNS);
+
+
+
+
+
+
+
+
+
+
+ // END GENERATED BLOCK
+
+ PRINT_MACRO(BOOST_INTEL);
+ PRINT_MACRO(BOOST_MSVC);
+ PRINT_MACRO(BOOST_GCC);
+ PRINT_MACRO(BOOST_LIBSTDCXX_VERSION);
+ PRINT_MACRO(BOOST_STD_EXTENSION_NAMESPACE);
+ PRINT_MACRO(BOOST_UNREACHABLE_RETURN(0));
+ PRINT_MACRO(BOOST_CONSTEXPR);
+ PRINT_MACRO(BOOST_CONSTEXPR_OR_CONST);
+ PRINT_MACRO(BOOST_STATIC_CONSTEXPR);
+ PRINT_MACRO(BOOST_NOEXCEPT);
+ PRINT_MACRO(BOOST_FORCEINLINE);
+ PRINT_MACRO(BOOST_NOINLINE);
+ PRINT_MACRO(BOOST_FALLTHROUGH);
+ PRINT_MACRO(BOOST_MAY_ALIAS);
+ PRINT_MACRO(BOOST_NO_MAY_ALIAS);
+}
+
+void print_sd6_macros()
+{
+ // http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2017/p0096r5.html
+
+ // C++17:
+ PRINT_MACRO(__cpp_hex_float);
+ PRINT_MACRO(__cpp_inline_variables);
+ PRINT_MACRO(__cpp_aligned_new);
+ PRINT_MACRO(__cpp_guaranteed_copy_elision);
+ PRINT_MACRO(__cpp_noexcept_function_type);
+ PRINT_MACRO(__cpp_fold_expressions);
+ PRINT_MACRO(__cpp_capture_star_this);
+ PRINT_MACRO(__cpp_constexpr);
+ PRINT_MACRO(__cpp_if_constexpr);
+ PRINT_MACRO(__cpp_range_based_for);
+ PRINT_MACRO(__cpp_static_assert);
+ PRINT_MACRO(__cpp_deduction_guides);
+ PRINT_MACRO(__cpp_nontype_template_parameter_auto);
+ PRINT_MACRO(__cpp_namespace_attributes);
+ PRINT_MACRO(__cpp_enumerator_attributes);
+ PRINT_MACRO(__cpp_inheriting_constructors);
+ PRINT_MACRO(__cpp_variadic_using);
+ PRINT_MACRO(__cpp_structured_bindings);
+ PRINT_MACRO(__cpp_aggregate_bases);
+ PRINT_MACRO(__cpp_nontype_template_args);
+ PRINT_MACRO(__cpp_template_template_args);
+
+ // C++14:
+ PRINT_MACRO(__cpp_binary_literals);
+ PRINT_MACRO(__cpp_init_captures);
+ PRINT_MACRO(__cpp_generic_lambdas);
+ PRINT_MACRO(__cpp_sized_deallocation);
+ PRINT_MACRO(__cpp_decltype_auto);
+ PRINT_MACRO(__cpp_return_type_deduction);
+ PRINT_MACRO(__cpp_aggregate_nsdmi);
+ PRINT_MACRO(__cpp_variable_templates);
+
+ // C++11:
+ PRINT_MACRO(__cpp_unicode_characters);
+ PRINT_MACRO(__cpp_raw_strings);
+ PRINT_MACRO(__cpp_unicode_literals);
+ PRINT_MACRO(__cpp_user_defined_literals);
+ PRINT_MACRO(__cpp_threadsafe_static_init);
+ PRINT_MACRO(__cpp_lambdas);
+ PRINT_MACRO(__cpp_decltype);
+ PRINT_MACRO(__cpp_attributes);
+ PRINT_MACRO(__cpp_rvalue_references);
+ PRINT_MACRO(__cpp_variadic_templates);
+ PRINT_MACRO(__cpp_initializer_lists);
+ PRINT_MACRO(__cpp_delegating_constructors);
+ PRINT_MACRO(__cpp_nsdmi);
+ PRINT_MACRO(__cpp_ref_qualifiers);
+ PRINT_MACRO(__cpp_alias_templates);
+
+ // C++98:
+ PRINT_MACRO(__cpp_rtti);
+ PRINT_MACRO(__cpp_exceptions);
+}
+
+void print_separator()
+{
+ std::cout <<
+"\n\n*********************************************************************\n\n";
+}
+
+int main()
+{
+
+ // boost compiler workaround defines
+ print_compiler_macros();
+ print_separator();
+ print_stdlib_macros();
+ print_separator();
+ print_platform_macros();
+ print_separator();
+ print_boost_macros();
+ print_separator();
+ print_sd6_macros();
+
+ return 0;
+}
diff --git a/test/config_test.cpp b/test/config_test.cpp
new file mode 100644
index 0000000..c7e4e8a
--- /dev/null
+++ b/test/config_test.cpp
@@ -0,0 +1,1971 @@
+// This file was automatically generated on Wed Apr 18 20:03:40 2018
+// 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 config setup
+// This file should compile, if it does not then
+// one or more macros need to be defined.
+// see boost_*.ipp for more details
+
+// Do not edit this file, it was generated automatically by
+
+#include <boost/config.hpp>
+#include <iostream>
+#include "test.hpp"
+
+int error_count = 0;
+
+#ifndef BOOST_NO_ADL_BARRIER
+#include "boost_no_adl_barrier.ipp"
+#else
+namespace boost_no_adl_barrier = empty_boost;
+#endif
+#ifndef BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
+#include "boost_no_arg_dep_lookup.ipp"
+#else
+namespace boost_no_argument_dependent_lookup = empty_boost;
+#endif
+#ifndef BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS
+#include "boost_no_array_type_spec.ipp"
+#else
+namespace boost_no_array_type_specializations = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX11_AUTO_DECLARATIONS
+#include "boost_no_auto_declarations.ipp"
+#else
+namespace boost_no_cxx11_auto_declarations = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS
+#include "boost_no_auto_multidecl.ipp"
+#else
+namespace boost_no_cxx11_auto_multideclarations = empty_boost;
+#endif
+#ifndef BOOST_NO_AUTO_PTR
+#include "boost_no_auto_ptr.ipp"
+#else
+namespace boost_no_auto_ptr = empty_boost;
+#endif
+#ifndef BOOST_BCB_PARTIAL_SPECIALIZATION_BUG
+#include "boost_no_bcb_partial_spec.ipp"
+#else
+namespace boost_bcb_partial_specialization_bug = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX11_CHAR16_T
+#include "boost_no_char16_t.ipp"
+#else
+namespace boost_no_cxx11_char16_t = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX11_CHAR32_T
+#include "boost_no_char32_t.ipp"
+#else
+namespace boost_no_cxx11_char32_t = empty_boost;
+#endif
+#ifndef BOOST_NO_COMPLETE_VALUE_INITIALIZATION
+#include "boost_no_com_value_init.ipp"
+#else
+namespace boost_no_complete_value_initialization = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX11_CONSTEXPR
+#include "boost_no_constexpr.ipp"
+#else
+namespace boost_no_cxx11_constexpr = empty_boost;
+#endif
+#ifndef BOOST_NO_CTYPE_FUNCTIONS
+#include "boost_no_ctype_functions.ipp"
+#else
+namespace boost_no_ctype_functions = empty_boost;
+#endif
+#ifndef BOOST_NO_CV_SPECIALIZATIONS
+#include "boost_no_cv_spec.ipp"
+#else
+namespace boost_no_cv_specializations = empty_boost;
+#endif
+#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
+#include "boost_no_cv_void_spec.ipp"
+#else
+namespace boost_no_cv_void_specializations = empty_boost;
+#endif
+#ifndef BOOST_NO_CWCHAR
+#include "boost_no_cwchar.ipp"
+#else
+namespace boost_no_cwchar = empty_boost;
+#endif
+#ifndef BOOST_NO_CWCTYPE
+#include "boost_no_cwctype.ipp"
+#else
+namespace boost_no_cwctype = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX11_ADDRESSOF
+#include "boost_no_cxx11_addressof.ipp"
+#else
+namespace boost_no_cxx11_addressof = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX11_ALIGNAS
+#include "boost_no_cxx11_alignas.ipp"
+#else
+namespace boost_no_cxx11_alignas = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX11_ALLOCATOR
+#include "boost_no_cxx11_allocator.ipp"
+#else
+namespace boost_no_cxx11_allocator = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX11_ATOMIC_SMART_PTR
+#include "boost_no_cxx11_atomic_sp.ipp"
+#else
+namespace boost_no_cxx11_atomic_smart_ptr = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX11_DEFAULTED_MOVES
+#include "boost_no_cxx11_defaulted_moves.ipp"
+#else
+namespace boost_no_cxx11_defaulted_moves = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX11_FINAL
+#include "boost_no_cxx11_final.ipp"
+#else
+namespace boost_no_cxx11_final = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX11_HDR_ARRAY
+#include "boost_no_cxx11_hdr_array.ipp"
+#else
+namespace boost_no_cxx11_hdr_array = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX11_HDR_ATOMIC
+#include "boost_no_cxx11_hdr_atomic.ipp"
+#else
+namespace boost_no_cxx11_hdr_atomic = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX11_HDR_CHRONO
+#include "boost_no_cxx11_hdr_chrono.ipp"
+#else
+namespace boost_no_cxx11_hdr_chrono = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX11_HDR_CODECVT
+#include "boost_no_cxx11_hdr_codecvt.ipp"
+#else
+namespace boost_no_cxx11_hdr_codecvt = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX11_HDR_CONDITION_VARIABLE
+#include "boost_no_cxx11_hdr_condition_variable.ipp"
+#else
+namespace boost_no_cxx11_hdr_condition_variable = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX11_HDR_FORWARD_LIST
+#include "boost_no_cxx11_hdr_forward_list.ipp"
+#else
+namespace boost_no_cxx11_hdr_forward_list = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX11_HDR_FUTURE
+#include "boost_no_cxx11_hdr_future.ipp"
+#else
+namespace boost_no_cxx11_hdr_future = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX11_HDR_INITIALIZER_LIST
+#include "boost_no_cxx11_hdr_initializer_list.ipp"
+#else
+namespace boost_no_cxx11_hdr_initializer_list = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX11_HDR_MUTEX
+#include "boost_no_cxx11_hdr_mutex.ipp"
+#else
+namespace boost_no_cxx11_hdr_mutex = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX11_HDR_RANDOM
+#include "boost_no_cxx11_hdr_random.ipp"
+#else
+namespace boost_no_cxx11_hdr_random = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX11_HDR_RATIO
+#include "boost_no_cxx11_hdr_ratio.ipp"
+#else
+namespace boost_no_cxx11_hdr_ratio = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX11_HDR_REGEX
+#include "boost_no_cxx11_hdr_regex.ipp"
+#else
+namespace boost_no_cxx11_hdr_regex = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX11_HDR_SYSTEM_ERROR
+#include "boost_no_cxx11_hdr_system_error.ipp"
+#else
+namespace boost_no_cxx11_hdr_system_error = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX11_HDR_THREAD
+#include "boost_no_cxx11_hdr_thread.ipp"
+#else
+namespace boost_no_cxx11_hdr_thread = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX11_HDR_TUPLE
+#include "boost_no_cxx11_hdr_tuple.ipp"
+#else
+namespace boost_no_cxx11_hdr_tuple = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX11_HDR_TYPE_TRAITS
+#include "boost_no_cxx11_hdr_type_traits.ipp"
+#else
+namespace boost_no_cxx11_hdr_type_traits = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX11_HDR_TYPEINDEX
+#include "boost_no_cxx11_hdr_typeindex.ipp"
+#else
+namespace boost_no_cxx11_hdr_typeindex = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX11_HDR_UNORDERED_MAP
+#include "boost_no_cxx11_hdr_unordered_map.ipp"
+#else
+namespace boost_no_cxx11_hdr_unordered_map = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX11_HDR_UNORDERED_SET
+#include "boost_no_cxx11_hdr_unordered_set.ipp"
+#else
+namespace boost_no_cxx11_hdr_unordered_set = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX11_INLINE_NAMESPACES
+#include "boost_no_cxx11_inline_namespaces.ipp"
+#else
+namespace boost_no_cxx11_inline_namespaces = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX11_NON_PUBLIC_DEFAULTED_FUNCTIONS
+#include "boost_no_cxx11_non_pub_def_fun.ipp"
+#else
+namespace boost_no_cxx11_non_public_defaulted_functions = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX11_NUMERIC_LIMITS
+#include "boost_no_cxx11_numeric_limits.ipp"
+#else
+namespace boost_no_cxx11_numeric_limits = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX11_POINTER_TRAITS
+#include "boost_no_cxx11_pointer_traits.ipp"
+#else
+namespace boost_no_cxx11_pointer_traits = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX11_REF_QUALIFIERS
+#include "boost_no_cxx11_ref_qualifiers.ipp"
+#else
+namespace boost_no_cxx11_ref_qualifiers = empty_boost;
+#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
+#include "boost_no_cxx11_smart_ptr.ipp"
+#else
+namespace boost_no_cxx11_smart_ptr = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX11_STD_ALIGN
+#include "boost_no_cxx11_std_align.ipp"
+#else
+namespace boost_no_cxx11_std_align = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX11_THREAD_LOCAL
+#include "boost_no_cxx11_thread_local.ipp"
+#else
+namespace boost_no_cxx11_thread_local = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX11_TRAILING_RESULT_TYPES
+#include "boost_no_cxx11_trailing_result_types.ipp"
+#else
+namespace boost_no_cxx11_trailing_result_types = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX11_USER_DEFINED_LITERALS
+#include "boost_no_cxx11_user_lit.ipp"
+#else
+namespace boost_no_cxx11_user_defined_literals = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX14_BINARY_LITERALS
+#include "boost_no_cxx14_binary_literals.ipp"
+#else
+namespace boost_no_cxx14_binary_literals = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX14_CONSTEXPR
+#include "boost_no_cxx14_constexpr.ipp"
+#else
+namespace boost_no_cxx14_constexpr = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX14_DECLTYPE_AUTO
+#include "boost_no_cxx14_decltype_auto.ipp"
+#else
+namespace boost_no_cxx14_decltype_auto = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX14_DIGIT_SEPARATORS
+#include "boost_no_cxx14_digit_separator.ipp"
+#else
+namespace boost_no_cxx14_digit_separators = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX14_GENERIC_LAMBDAS
+#include "boost_no_cxx14_generic_lambda.ipp"
+#else
+namespace boost_no_cxx14_generic_lambdas = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX14_HDR_SHARED_MUTEX
+#include "boost_no_cxx14_hdr_shared_mutex.ipp"
+#else
+namespace boost_no_cxx14_hdr_shared_mutex = empty_boost;
+#endif
+#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
+#ifndef BOOST_NO_CXX14_AGGREGATE_NSDMI
+#include "boost_no_cxx14_member_init.ipp"
+#else
+namespace boost_no_cxx14_aggregate_nsdmi = empty_boost;
+#endif
+#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
+#ifndef BOOST_NO_CXX14_STD_EXCHANGE
+#include "boost_no_cxx14_std_exchange.ipp"
+#else
+namespace boost_no_cxx14_std_exchange = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX14_VARIABLE_TEMPLATES
+#include "boost_no_cxx14_var_templ.ipp"
+#else
+namespace boost_no_cxx14_variable_templates = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX17_FOLD_EXPRESSIONS
+#include "boost_no_cxx17_fold_expressions.ipp"
+#else
+namespace boost_no_cxx17_fold_expressions = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX17_IF_CONSTEXPR
+#include "boost_no_cxx17_if_constexpr.ipp"
+#else
+namespace boost_no_cxx17_if_constexpr = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX17_INLINE_VARIABLES
+#include "boost_no_cxx17_inline_variables.ipp"
+#else
+namespace boost_no_cxx17_inline_variables = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX17_ITERATOR_TRAITS
+#include "boost_no_cxx17_iterator_traits.ipp"
+#else
+namespace boost_no_cxx17_iterator_traits = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX17_STD_APPLY
+#include "boost_no_cxx17_std_apply.ipp"
+#else
+namespace boost_no_cxx17_std_apply = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX17_STD_INVOKE
+#include "boost_no_cxx17_std_invoke.ipp"
+#else
+namespace boost_no_cxx17_std_invoke = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX17_STRUCTURED_BINDINGS
+#include "boost_no_cxx17_structured_bindings.ipp"
+#else
+namespace boost_no_cxx17_structured_bindings = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX98_BINDERS
+#include "boost_no_cxx98_binders.ipp"
+#else
+namespace boost_no_cxx98_binders = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX98_FUNCTION_BASE
+#include "boost_no_cxx98_function_base.ipp"
+#else
+namespace boost_no_cxx98_function_base = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX98_RANDOM_SHUFFLE
+#include "boost_no_cxx98_random_shuffle.ipp"
+#else
+namespace boost_no_cxx98_random_shuffle = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX11_HDR_FUNCTIONAL
+#include "boost_no_cxx_hdr_functional.ipp"
+#else
+namespace boost_no_cxx11_hdr_functional = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX11_DECLTYPE
+#include "boost_no_decltype.ipp"
+#else
+namespace boost_no_cxx11_decltype = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX11_DECLTYPE_N3276
+#include "boost_no_decltype_n3276.ipp"
+#else
+namespace boost_no_cxx11_decltype_n3276 = empty_boost;
+#endif
+#ifndef BOOST_DEDUCED_TYPENAME
+#include "boost_no_ded_typename.ipp"
+#else
+namespace boost_deduced_typename = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX11_DEFAULTED_FUNCTIONS
+#include "boost_no_defaulted_functions.ipp"
+#else
+namespace boost_no_cxx11_defaulted_functions = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX11_DELETED_FUNCTIONS
+#include "boost_no_deleted_functions.ipp"
+#else
+namespace boost_no_cxx11_deleted_functions = empty_boost;
+#endif
+#ifndef BOOST_NO_DEPENDENT_NESTED_DERIVATIONS
+#include "boost_no_dep_nested_class.ipp"
+#else
+namespace boost_no_dependent_nested_derivations = empty_boost;
+#endif
+#ifndef BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS
+#include "boost_no_dep_val_param.ipp"
+#else
+namespace boost_no_dependent_types_in_template_value_parameters = empty_boost;
+#endif
+#ifndef BOOST_NO_EXCEPTION_STD_NAMESPACE
+#include "boost_no_excep_std.ipp"
+#else
+namespace boost_no_exception_std_namespace = empty_boost;
+#endif
+#ifndef BOOST_NO_EXCEPTIONS
+#include "boost_no_exceptions.ipp"
+#else
+namespace boost_no_exceptions = empty_boost;
+#endif
+#ifndef BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS
+#include "boost_no_exp_func_tem_arg.ipp"
+#else
+namespace boost_no_explicit_function_template_arguments = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS
+#include "boost_no_explicit_cvt_ops.ipp"
+#else
+namespace boost_no_cxx11_explicit_conversion_operators = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX11_EXTERN_TEMPLATE
+#include "boost_no_extern_template.ipp"
+#else
+namespace boost_no_cxx11_extern_template = empty_boost;
+#endif
+#ifndef BOOST_NO_FENV_H
+#include "boost_no_fenv_h.ipp"
+#else
+namespace boost_no_fenv_h = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX11_FIXED_LENGTH_VARIADIC_TEMPLATE_EXPANSION_PACKS
+#include "boost_no_fixed_len_variadic_templates.ipp"
+#else
+namespace boost_no_cxx11_fixed_length_variadic_template_expansion_packs = empty_boost;
+#endif
+#ifndef BOOST_NO_FUNCTION_TEMPLATE_ORDERING
+#include "boost_no_func_tmp_order.ipp"
+#else
+namespace boost_no_function_template_ordering = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS
+#include "boost_no_function_template_default_args.ipp"
+#else
+namespace boost_no_cxx11_function_template_default_args = empty_boost;
+#endif
+#ifndef BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS
+#include "boost_no_function_type_spec.ipp"
+#else
+namespace boost_no_function_type_specializations = empty_boost;
+#endif
+#ifndef BOOST_NO_MS_INT64_NUMERIC_LIMITS
+#include "boost_no_i64_limits.ipp"
+#else
+namespace boost_no_ms_int64_numeric_limits = empty_boost;
+#endif
+#ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION
+#include "boost_no_inline_memb_init.ipp"
+#else
+namespace boost_no_inclass_member_initialization = empty_boost;
+#endif
+#ifndef BOOST_NO_INTEGRAL_INT64_T
+#include "boost_no_integral_int64_t.ipp"
+#else
+namespace boost_no_integral_int64_t = empty_boost;
+#endif
+#ifndef BOOST_NO_IOSFWD
+#include "boost_no_iosfwd.ipp"
+#else
+namespace boost_no_iosfwd = empty_boost;
+#endif
+#ifndef BOOST_NO_IOSTREAM
+#include "boost_no_iostream.ipp"
+#else
+namespace boost_no_iostream = empty_boost;
+#endif
+#ifndef BOOST_NO_IS_ABSTRACT
+#include "boost_no_is_abstract.ipp"
+#else
+namespace boost_no_is_abstract = empty_boost;
+#endif
+#ifndef BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
+#include "boost_no_iter_construct.ipp"
+#else
+namespace boost_no_templated_iterator_constructors = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX11_LAMBDAS
+#include "boost_no_lambdas.ipp"
+#else
+namespace boost_no_cxx11_lambdas = empty_boost;
+#endif
+#ifndef BOOST_NO_LIMITS
+#include "boost_no_limits.ipp"
+#else
+namespace boost_no_limits = empty_boost;
+#endif
+#ifndef BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
+#include "boost_no_limits_const_exp.ipp"
+#else
+namespace boost_no_limits_compile_time_constants = empty_boost;
+#endif
+#ifndef BOOST_NO_LONG_LONG_NUMERIC_LIMITS
+#include "boost_no_ll_limits.ipp"
+#else
+namespace boost_no_long_long_numeric_limits = empty_boost;
+#endif
+#ifndef BOOST_NO_LONG_LONG
+#include "boost_no_long_long.ipp"
+#else
+namespace boost_no_long_long = empty_boost;
+#endif
+#ifndef BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS
+#include "boost_no_mem_func_spec.ipp"
+#else
+namespace boost_no_member_function_specializations = empty_boost;
+#endif
+#ifndef BOOST_NO_MEMBER_TEMPLATE_KEYWORD
+#include "boost_no_mem_tem_keyword.ipp"
+#else
+namespace boost_no_member_template_keyword = empty_boost;
+#endif
+#ifndef BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS
+#include "boost_no_mem_tem_pnts.ipp"
+#else
+namespace boost_no_pointer_to_member_template_parameters = empty_boost;
+#endif
+#ifndef BOOST_NO_MEMBER_TEMPLATE_FRIENDS
+#include "boost_no_mem_templ_frnds.ipp"
+#else
+namespace boost_no_member_template_friends = empty_boost;
+#endif
+#ifndef BOOST_NO_MEMBER_TEMPLATES
+#include "boost_no_mem_templates.ipp"
+#else
+namespace boost_no_member_templates = empty_boost;
+#endif
+#ifndef BOOST_NO_NESTED_FRIENDSHIP
+#include "boost_no_nested_friendship.ipp"
+#else
+namespace boost_no_nested_friendship = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX11_NOEXCEPT
+#include "boost_no_noexcept.ipp"
+#else
+namespace boost_no_cxx11_noexcept = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX11_NULLPTR
+#include "boost_no_nullptr.ipp"
+#else
+namespace boost_no_cxx11_nullptr = empty_boost;
+#endif
+#ifndef BOOST_NO_OPERATORS_IN_NAMESPACE
+#include "boost_no_ops_in_namespace.ipp"
+#else
+namespace boost_no_operators_in_namespace = empty_boost;
+#endif
+#ifndef BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS
+#include "boost_no_part_spec_def_args.ipp"
+#else
+namespace boost_no_partial_specialization_implicit_default_args = empty_boost;
+#endif
+#ifndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+#include "boost_no_partial_spec.ipp"
+#else
+namespace boost_no_template_partial_specialization = empty_boost;
+#endif
+#ifndef BOOST_NO_PRIVATE_IN_AGGREGATE
+#include "boost_no_priv_aggregate.ipp"
+#else
+namespace boost_no_private_in_aggregate = empty_boost;
+#endif
+#ifndef BOOST_NO_POINTER_TO_MEMBER_CONST
+#include "boost_no_ptr_mem_const.ipp"
+#else
+namespace boost_no_pointer_to_member_const = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX11_RANGE_BASED_FOR
+#include "boost_no_range_based_for.ipp"
+#else
+namespace boost_no_cxx11_range_based_for = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX11_RAW_LITERALS
+#include "boost_no_raw_literals.ipp"
+#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
+namespace boost_no_unreachable_return_detection = empty_boost;
+#endif
+#ifndef BOOST_NO_RTTI
+#include "boost_no_rtti.ipp"
+#else
+namespace boost_no_rtti = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
+#include "boost_no_rvalue_references.ipp"
+#else
+namespace boost_no_cxx11_rvalue_references = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX11_SCOPED_ENUMS
+#include "boost_no_scoped_enums.ipp"
+#else
+namespace boost_no_cxx11_scoped_enums = empty_boost;
+#endif
+#ifndef BOOST_NO_SFINAE
+#include "boost_no_sfinae.ipp"
+#else
+namespace boost_no_sfinae = empty_boost;
+#endif
+#ifndef BOOST_NO_SFINAE_EXPR
+#include "boost_no_sfinae_expr.ipp"
+#else
+namespace boost_no_sfinae_expr = empty_boost;
+#endif
+#ifndef BOOST_NO_STRINGSTREAM
+#include "boost_no_sstream.ipp"
+#else
+namespace boost_no_stringstream = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX11_STATIC_ASSERT
+#include "boost_no_static_assert.ipp"
+#else
+namespace boost_no_cxx11_static_assert = empty_boost;
+#endif
+#ifndef BOOST_NO_STD_ALLOCATOR
+#include "boost_no_std_allocator.ipp"
+#else
+namespace boost_no_std_allocator = empty_boost;
+#endif
+#ifndef BOOST_NO_STD_DISTANCE
+#include "boost_no_std_distance.ipp"
+#else
+namespace boost_no_std_distance = empty_boost;
+#endif
+#ifndef BOOST_NO_STD_ITERATOR_TRAITS
+#include "boost_no_std_iter_traits.ipp"
+#else
+namespace boost_no_std_iterator_traits = empty_boost;
+#endif
+#ifndef BOOST_NO_STD_ITERATOR
+#include "boost_no_std_iterator.ipp"
+#else
+namespace boost_no_std_iterator = empty_boost;
+#endif
+#ifndef BOOST_NO_STD_LOCALE
+#include "boost_no_std_locale.ipp"
+#else
+namespace boost_no_std_locale = empty_boost;
+#endif
+#ifndef BOOST_NO_STD_MESSAGES
+#include "boost_no_std_messages.ipp"
+#else
+namespace boost_no_std_messages = empty_boost;
+#endif
+#ifndef BOOST_NO_STD_MIN_MAX
+#include "boost_no_std_min_max.ipp"
+#else
+namespace boost_no_std_min_max = empty_boost;
+#endif
+#ifndef BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN
+#include "boost_no_std_oi_assign.ipp"
+#else
+namespace boost_no_std_output_iterator_assign = empty_boost;
+#endif
+#ifndef BOOST_NO_STD_TYPEINFO
+#include "boost_no_std_typeinfo.ipp"
+#else
+namespace boost_no_std_typeinfo = empty_boost;
+#endif
+#ifndef BOOST_NO_STD_USE_FACET
+#include "boost_no_std_use_facet.ipp"
+#else
+namespace boost_no_std_use_facet = empty_boost;
+#endif
+#ifndef BOOST_NO_STD_WSTREAMBUF
+#include "boost_no_std_wstreambuf.ipp"
+#else
+namespace boost_no_std_wstreambuf = empty_boost;
+#endif
+#ifndef BOOST_NO_STD_WSTRING
+#include "boost_no_std_wstring.ipp"
+#else
+namespace boost_no_std_wstring = empty_boost;
+#endif
+#ifndef BOOST_NO_STDC_NAMESPACE
+#include "boost_no_stdc_namespace.ipp"
+#else
+namespace boost_no_stdc_namespace = empty_boost;
+#endif
+#ifndef BOOST_NO_SWPRINTF
+#include "boost_no_swprintf.ipp"
+#else
+namespace boost_no_swprintf = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS
+#include "boost_no_tem_local_classes.ipp"
+#else
+namespace boost_no_cxx11_local_class_template_parameters = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX11_TEMPLATE_ALIASES
+#include "boost_no_template_aliases.ipp"
+#else
+namespace boost_no_cxx11_template_aliases = empty_boost;
+#endif
+#ifndef BOOST_NO_TEMPLATED_IOSTREAMS
+#include "boost_no_template_streams.ipp"
+#else
+namespace boost_no_templated_iostreams = empty_boost;
+#endif
+#ifndef BOOST_NO_TEMPLATE_TEMPLATES
+#include "boost_no_template_template.ipp"
+#else
+namespace boost_no_template_templates = empty_boost;
+#endif
+#ifndef BOOST_NO_TWO_PHASE_NAME_LOOKUP
+#include "boost_no_two_phase_lookup.ipp"
+#else
+namespace boost_no_two_phase_name_lookup = empty_boost;
+#endif
+#ifndef BOOST_NO_TYPEID
+#include "boost_no_typeid.ipp"
+#else
+namespace boost_no_typeid = empty_boost;
+#endif
+#ifndef BOOST_NO_TYPENAME_WITH_CTOR
+#include "boost_no_typename_with_ctor.ipp"
+#else
+namespace boost_no_typename_with_ctor = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX11_UNICODE_LITERALS
+#include "boost_no_unicode_literals.ipp"
+#else
+namespace boost_no_cxx11_unicode_literals = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
+#include "boost_no_unified_init.ipp"
+#else
+namespace boost_no_cxx11_unified_initialization_syntax = empty_boost;
+#endif
+#ifndef BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
+#include "boost_no_using_breaks_adl.ipp"
+#else
+namespace boost_function_scope_using_declaration_breaks_adl = empty_boost;
+#endif
+#ifndef BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE
+#include "boost_no_using_decl_overld.ipp"
+#else
+namespace boost_no_using_declaration_overloads_from_typename_base = empty_boost;
+#endif
+#ifndef BOOST_NO_USING_TEMPLATE
+#include "boost_no_using_template.ipp"
+#else
+namespace boost_no_using_template = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX11_VARIADIC_MACROS
+#include "boost_no_variadic_macros.ipp"
+#else
+namespace boost_no_cxx11_variadic_macros = empty_boost;
+#endif
+#ifndef BOOST_NO_CXX11_VARIADIC_TEMPLATES
+#include "boost_no_variadic_templates.ipp"
+#else
+namespace boost_no_cxx11_variadic_templates = empty_boost;
+#endif
+#ifndef BOOST_NO_VOID_RETURNS
+#include "boost_no_void_returns.ipp"
+#else
+namespace boost_no_void_returns = empty_boost;
+#endif
+#ifndef BOOST_NO_INTRINSIC_WCHAR_T
+#include "boost_no_wchar_t.ipp"
+#else
+namespace boost_no_intrinsic_wchar_t = empty_boost;
+#endif
+
+#ifdef BOOST_HAS_TWO_ARG_USE_FACET
+#include "boost_has_2arg_use_facet.ipp"
+#else
+namespace boost_has_two_arg_use_facet = empty_boost;
+#endif
+#ifdef BOOST_HAS_BETHREADS
+#include "boost_has_bethreads.ipp"
+#else
+namespace boost_has_bethreads = empty_boost;
+#endif
+#ifdef BOOST_HAS_CLOCK_GETTIME
+#include "boost_has_clock_gettime.ipp"
+#else
+namespace boost_has_clock_gettime = empty_boost;
+#endif
+#ifdef BOOST_HAS_PRAGMA_DETECT_MISMATCH
+#include "boost_has_detect_mismatch.ipp"
+#else
+namespace boost_has_pragma_detect_mismatch = empty_boost;
+#endif
+#ifdef BOOST_HAS_DIRENT_H
+#include "boost_has_dirent_h.ipp"
+#else
+namespace boost_has_dirent_h = empty_boost;
+#endif
+#ifdef BOOST_HAS_EXPM1
+#include "boost_has_expm1.ipp"
+#else
+namespace boost_has_expm1 = empty_boost;
+#endif
+#ifdef BOOST_HAS_FLOAT128
+#include "boost_has_float128.ipp"
+#else
+namespace boost_has_float128 = empty_boost;
+#endif
+#ifdef BOOST_HAS_FTIME
+#include "boost_has_ftime.ipp"
+#else
+namespace boost_has_ftime = empty_boost;
+#endif
+#ifdef BOOST_HAS_GETSYSTEMTIMEASFILETIME
+#include "boost_has_getsystemtimeasfiletime.ipp"
+#else
+namespace boost_has_getsystemtimeasfiletime = empty_boost;
+#endif
+#ifdef BOOST_HAS_GETTIMEOFDAY
+#include "boost_has_gettimeofday.ipp"
+#else
+namespace boost_has_gettimeofday = empty_boost;
+#endif
+#ifdef BOOST_HAS_HASH
+#include "boost_has_hash.ipp"
+#else
+namespace boost_has_hash = empty_boost;
+#endif
+#ifdef BOOST_HAS_INT128
+#include "boost_has_int128.ipp"
+#else
+namespace boost_has_int128 = empty_boost;
+#endif
+#ifdef BOOST_HAS_LOG1P
+#include "boost_has_log1p.ipp"
+#else
+namespace boost_has_log1p = empty_boost;
+#endif
+#ifdef BOOST_HAS_LONG_LONG
+#include "boost_has_long_long.ipp"
+#else
+namespace boost_has_long_long = empty_boost;
+#endif
+#ifdef BOOST_HAS_MACRO_USE_FACET
+#include "boost_has_macro_use_facet.ipp"
+#else
+namespace boost_has_macro_use_facet = empty_boost;
+#endif
+#ifdef BOOST_HAS_MS_INT64
+#include "boost_has_ms_int64.ipp"
+#else
+namespace boost_has_ms_int64 = empty_boost;
+#endif
+#ifdef BOOST_HAS_NANOSLEEP
+#include "boost_has_nanosleep.ipp"
+#else
+namespace boost_has_nanosleep = empty_boost;
+#endif
+#ifdef BOOST_HAS_NL_TYPES_H
+#include "boost_has_nl_types_h.ipp"
+#else
+namespace boost_has_nl_types_h = empty_boost;
+#endif
+#ifdef BOOST_HAS_NRVO
+#include "boost_has_nrvo.ipp"
+#else
+namespace boost_has_nrvo = empty_boost;
+#endif
+#ifdef BOOST_HAS_PARTIAL_STD_ALLOCATOR
+#include "boost_has_part_alloc.ipp"
+#else
+namespace boost_has_partial_std_allocator = empty_boost;
+#endif
+#ifdef BOOST_HAS_PTHREAD_DELAY_NP
+#include "boost_has_pthread_delay_np.ipp"
+#else
+namespace boost_has_pthread_delay_np = empty_boost;
+#endif
+#ifdef BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
+#include "boost_has_pthread_ma_st.ipp"
+#else
+namespace boost_has_pthread_mutexattr_settype = empty_boost;
+#endif
+#ifdef BOOST_HAS_PTHREAD_YIELD
+#include "boost_has_pthread_yield.ipp"
+#else
+namespace boost_has_pthread_yield = empty_boost;
+#endif
+#ifdef BOOST_HAS_PTHREADS
+#include "boost_has_pthreads.ipp"
+#else
+namespace boost_has_pthreads = empty_boost;
+#endif
+#ifdef BOOST_HAS_RVALUE_REFS
+#include "boost_has_rvalue_refs.ipp"
+#else
+namespace boost_has_rvalue_refs = empty_boost;
+#endif
+#ifdef BOOST_HAS_SCHED_YIELD
+#include "boost_has_sched_yield.ipp"
+#else
+namespace boost_has_sched_yield = empty_boost;
+#endif
+#ifdef BOOST_HAS_SGI_TYPE_TRAITS
+#include "boost_has_sgi_type_traits.ipp"
+#else
+namespace boost_has_sgi_type_traits = empty_boost;
+#endif
+#ifdef BOOST_HAS_SIGACTION
+#include "boost_has_sigaction.ipp"
+#else
+namespace boost_has_sigaction = empty_boost;
+#endif
+#ifdef BOOST_HAS_SLIST
+#include "boost_has_slist.ipp"
+#else
+namespace boost_has_slist = empty_boost;
+#endif
+#ifdef BOOST_HAS_STATIC_ASSERT
+#include "boost_has_static_assert.ipp"
+#else
+namespace boost_has_static_assert = empty_boost;
+#endif
+#ifdef BOOST_HAS_STDINT_H
+#include "boost_has_stdint_h.ipp"
+#else
+namespace boost_has_stdint_h = empty_boost;
+#endif
+#ifdef BOOST_HAS_STLP_USE_FACET
+#include "boost_has_stlp_use_facet.ipp"
+#else
+namespace boost_has_stlp_use_facet = empty_boost;
+#endif
+#ifdef BOOST_HAS_UNISTD_H
+#include "boost_has_unistd_h.ipp"
+#else
+namespace boost_has_unistd_h = empty_boost;
+#endif
+#ifdef BOOST_HAS_VARIADIC_TMPL
+#include "boost_has_variadic_tmpl.ipp"
+#else
+namespace boost_has_variadic_tmpl = empty_boost;
+#endif
+#ifdef BOOST_MSVC6_MEMBER_TEMPLATES
+#include "boost_has_vc6_mem_templ.ipp"
+#else
+namespace boost_msvc6_member_templates = empty_boost;
+#endif
+#ifdef BOOST_MSVC_STD_ITERATOR
+#include "boost_has_vc_iterator.ipp"
+#else
+namespace boost_msvc_std_iterator = empty_boost;
+#endif
+#ifdef BOOST_HAS_WINTHREADS
+#include "boost_has_winthreads.ipp"
+#else
+namespace boost_has_winthreads = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ if(0 != boost_has_two_arg_use_facet::test())
+ {
+ std::cerr << "Failed test for BOOST_HAS_TWO_ARG_USE_FACET at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_has_bethreads::test())
+ {
+ std::cerr << "Failed test for BOOST_HAS_BETHREADS at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_has_clock_gettime::test())
+ {
+ std::cerr << "Failed test for BOOST_HAS_CLOCK_GETTIME at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_has_pragma_detect_mismatch::test())
+ {
+ std::cerr << "Failed test for BOOST_HAS_PRAGMA_DETECT_MISMATCH at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_has_dirent_h::test())
+ {
+ std::cerr << "Failed test for BOOST_HAS_DIRENT_H at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_has_expm1::test())
+ {
+ std::cerr << "Failed test for BOOST_HAS_EXPM1 at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_has_float128::test())
+ {
+ std::cerr << "Failed test for BOOST_HAS_FLOAT128 at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_has_ftime::test())
+ {
+ std::cerr << "Failed test for BOOST_HAS_FTIME at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_has_getsystemtimeasfiletime::test())
+ {
+ std::cerr << "Failed test for BOOST_HAS_GETSYSTEMTIMEASFILETIME at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_has_gettimeofday::test())
+ {
+ std::cerr << "Failed test for BOOST_HAS_GETTIMEOFDAY at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_has_hash::test())
+ {
+ std::cerr << "Failed test for BOOST_HAS_HASH at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_has_int128::test())
+ {
+ std::cerr << "Failed test for BOOST_HAS_INT128 at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_has_log1p::test())
+ {
+ std::cerr << "Failed test for BOOST_HAS_LOG1P at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_has_long_long::test())
+ {
+ std::cerr << "Failed test for BOOST_HAS_LONG_LONG at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_has_macro_use_facet::test())
+ {
+ std::cerr << "Failed test for BOOST_HAS_MACRO_USE_FACET at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_has_ms_int64::test())
+ {
+ std::cerr << "Failed test for BOOST_HAS_MS_INT64 at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_has_nanosleep::test())
+ {
+ std::cerr << "Failed test for BOOST_HAS_NANOSLEEP at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_has_nl_types_h::test())
+ {
+ std::cerr << "Failed test for BOOST_HAS_NL_TYPES_H at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_has_nrvo::test())
+ {
+ std::cerr << "Failed test for BOOST_HAS_NRVO at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_has_partial_std_allocator::test())
+ {
+ std::cerr << "Failed test for BOOST_HAS_PARTIAL_STD_ALLOCATOR at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_has_pthread_delay_np::test())
+ {
+ std::cerr << "Failed test for BOOST_HAS_PTHREAD_DELAY_NP at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_has_pthread_mutexattr_settype::test())
+ {
+ std::cerr << "Failed test for BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_has_pthread_yield::test())
+ {
+ std::cerr << "Failed test for BOOST_HAS_PTHREAD_YIELD at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_has_pthreads::test())
+ {
+ std::cerr << "Failed test for BOOST_HAS_PTHREADS at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_has_rvalue_refs::test())
+ {
+ std::cerr << "Failed test for BOOST_HAS_RVALUE_REFS at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_has_sched_yield::test())
+ {
+ std::cerr << "Failed test for BOOST_HAS_SCHED_YIELD at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_has_sgi_type_traits::test())
+ {
+ std::cerr << "Failed test for BOOST_HAS_SGI_TYPE_TRAITS at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_has_sigaction::test())
+ {
+ std::cerr << "Failed test for BOOST_HAS_SIGACTION at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_has_slist::test())
+ {
+ std::cerr << "Failed test for BOOST_HAS_SLIST at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_has_static_assert::test())
+ {
+ std::cerr << "Failed test for BOOST_HAS_STATIC_ASSERT at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_has_stdint_h::test())
+ {
+ std::cerr << "Failed test for BOOST_HAS_STDINT_H at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_has_stlp_use_facet::test())
+ {
+ std::cerr << "Failed test for BOOST_HAS_STLP_USE_FACET at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_has_unistd_h::test())
+ {
+ std::cerr << "Failed test for BOOST_HAS_UNISTD_H at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_has_variadic_tmpl::test())
+ {
+ std::cerr << "Failed test for BOOST_HAS_VARIADIC_TMPL at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_msvc6_member_templates::test())
+ {
+ std::cerr << "Failed test for BOOST_MSVC6_MEMBER_TEMPLATES at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_msvc_std_iterator::test())
+ {
+ std::cerr << "Failed test for BOOST_MSVC_STD_ITERATOR at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_has_winthreads::test())
+ {
+ std::cerr << "Failed test for BOOST_HAS_WINTHREADS at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_adl_barrier::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_ADL_BARRIER at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_argument_dependent_lookup::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_array_type_specializations::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx11_auto_declarations::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX11_AUTO_DECLARATIONS at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx11_auto_multideclarations::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_auto_ptr::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_AUTO_PTR at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_bcb_partial_specialization_bug::test())
+ {
+ std::cerr << "Failed test for BOOST_BCB_PARTIAL_SPECIALIZATION_BUG at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx11_char16_t::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX11_CHAR16_T at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx11_char32_t::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX11_CHAR32_T at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_complete_value_initialization::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_COMPLETE_VALUE_INITIALIZATION at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx11_constexpr::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX11_CONSTEXPR at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_ctype_functions::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CTYPE_FUNCTIONS at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cv_specializations::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CV_SPECIALIZATIONS at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cv_void_specializations::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CV_VOID_SPECIALIZATIONS at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cwchar::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CWCHAR at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cwctype::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CWCTYPE at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx11_addressof::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX11_ADDRESSOF at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx11_alignas::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX11_ALIGNAS at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx11_allocator::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX11_ALLOCATOR at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx11_atomic_smart_ptr::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX11_ATOMIC_SMART_PTR at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx11_defaulted_moves::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX11_DEFAULTED_MOVES at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx11_final::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX11_FINAL at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx11_hdr_array::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX11_HDR_ARRAY at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx11_hdr_atomic::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX11_HDR_ATOMIC at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx11_hdr_chrono::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX11_HDR_CHRONO at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx11_hdr_codecvt::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX11_HDR_CODECVT at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx11_hdr_condition_variable::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX11_HDR_CONDITION_VARIABLE at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx11_hdr_forward_list::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX11_HDR_FORWARD_LIST at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx11_hdr_future::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX11_HDR_FUTURE at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx11_hdr_initializer_list::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX11_HDR_INITIALIZER_LIST at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx11_hdr_mutex::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX11_HDR_MUTEX at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx11_hdr_random::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX11_HDR_RANDOM at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx11_hdr_ratio::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX11_HDR_RATIO at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx11_hdr_regex::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX11_HDR_REGEX at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx11_hdr_system_error::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX11_HDR_SYSTEM_ERROR at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx11_hdr_thread::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX11_HDR_THREAD at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx11_hdr_tuple::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX11_HDR_TUPLE at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx11_hdr_type_traits::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX11_HDR_TYPE_TRAITS at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx11_hdr_typeindex::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX11_HDR_TYPEINDEX at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx11_hdr_unordered_map::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX11_HDR_UNORDERED_MAP at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx11_hdr_unordered_set::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX11_HDR_UNORDERED_SET at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx11_inline_namespaces::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX11_INLINE_NAMESPACES at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx11_non_public_defaulted_functions::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX11_NON_PUBLIC_DEFAULTED_FUNCTIONS at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx11_numeric_limits::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX11_NUMERIC_LIMITS at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx11_pointer_traits::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX11_POINTER_TRAITS at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx11_ref_qualifiers::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX11_REF_QUALIFIERS at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++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())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX11_SMART_PTR at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx11_std_align::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX11_STD_ALIGN at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx11_thread_local::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX11_THREAD_LOCAL at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx11_trailing_result_types::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX11_TRAILING_RESULT_TYPES at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx11_user_defined_literals::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX11_USER_DEFINED_LITERALS at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx14_binary_literals::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX14_BINARY_LITERALS at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx14_constexpr::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX14_CONSTEXPR at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx14_decltype_auto::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX14_DECLTYPE_AUTO at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx14_digit_separators::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX14_DIGIT_SEPARATORS at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx14_generic_lambdas::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX14_GENERIC_LAMBDAS at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx14_hdr_shared_mutex::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX14_HDR_SHARED_MUTEX at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx14_initialized_lambda_captures::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX14_INITIALIZED_LAMBDA_CAPTURES at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx14_aggregate_nsdmi::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX14_AGGREGATE_NSDMI at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx14_return_type_deduction::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX14_RETURN_TYPE_DEDUCTION at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx14_std_exchange::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX14_STD_EXCHANGE at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx14_variable_templates::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX14_VARIABLE_TEMPLATES at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx17_fold_expressions::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX17_FOLD_EXPRESSIONS at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx17_if_constexpr::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX17_IF_CONSTEXPR at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx17_inline_variables::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX17_INLINE_VARIABLES at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx17_iterator_traits::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX17_ITERATOR_TRAITS at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx17_std_apply::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX17_STD_APPLY at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx17_std_invoke::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX17_STD_INVOKE at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx17_structured_bindings::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX17_STRUCTURED_BINDINGS at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx98_binders::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX98_BINDERS at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx98_function_base::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX98_FUNCTION_BASE at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx98_random_shuffle::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX98_RANDOM_SHUFFLE at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx11_hdr_functional::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX11_HDR_FUNCTIONAL at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx11_decltype::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX11_DECLTYPE at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx11_decltype_n3276::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX11_DECLTYPE_N3276 at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_deduced_typename::test())
+ {
+ std::cerr << "Failed test for BOOST_DEDUCED_TYPENAME at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx11_defaulted_functions::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX11_DEFAULTED_FUNCTIONS at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx11_deleted_functions::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX11_DELETED_FUNCTIONS at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_dependent_nested_derivations::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_DEPENDENT_NESTED_DERIVATIONS at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_dependent_types_in_template_value_parameters::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_exception_std_namespace::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_EXCEPTION_STD_NAMESPACE at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_exceptions::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_EXCEPTIONS at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_explicit_function_template_arguments::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx11_explicit_conversion_operators::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx11_extern_template::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX11_EXTERN_TEMPLATE at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_fenv_h::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_FENV_H at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx11_fixed_length_variadic_template_expansion_packs::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX11_FIXED_LENGTH_VARIADIC_TEMPLATE_EXPANSION_PACKS at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_function_template_ordering::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_FUNCTION_TEMPLATE_ORDERING at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx11_function_template_default_args::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_function_type_specializations::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_ms_int64_numeric_limits::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_MS_INT64_NUMERIC_LIMITS at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_inclass_member_initialization::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_INCLASS_MEMBER_INITIALIZATION at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_integral_int64_t::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_INTEGRAL_INT64_T at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_iosfwd::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_IOSFWD at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_iostream::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_IOSTREAM at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_is_abstract::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_IS_ABSTRACT at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_templated_iterator_constructors::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx11_lambdas::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX11_LAMBDAS at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_limits::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_LIMITS at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_limits_compile_time_constants::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_long_long_numeric_limits::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_LONG_LONG_NUMERIC_LIMITS at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_long_long::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_LONG_LONG at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_member_function_specializations::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_member_template_keyword::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_MEMBER_TEMPLATE_KEYWORD at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_pointer_to_member_template_parameters::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_member_template_friends::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_MEMBER_TEMPLATE_FRIENDS at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_member_templates::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_MEMBER_TEMPLATES at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_nested_friendship::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_NESTED_FRIENDSHIP at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx11_noexcept::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX11_NOEXCEPT at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx11_nullptr::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX11_NULLPTR at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_operators_in_namespace::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_OPERATORS_IN_NAMESPACE at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_partial_specialization_implicit_default_args::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_template_partial_specialization::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_private_in_aggregate::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_PRIVATE_IN_AGGREGATE at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_pointer_to_member_const::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_POINTER_TO_MEMBER_CONST at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx11_range_based_for::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX11_RANGE_BASED_FOR at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx11_raw_literals::test())
+ {
+ 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;
+ ++error_count;
+ }
+ if(0 != boost_no_rtti::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_RTTI at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx11_rvalue_references::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX11_RVALUE_REFERENCES at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx11_scoped_enums::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX11_SCOPED_ENUMS at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_sfinae::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_SFINAE at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_sfinae_expr::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_SFINAE_EXPR at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_stringstream::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_STRINGSTREAM at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx11_static_assert::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX11_STATIC_ASSERT at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_std_allocator::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_STD_ALLOCATOR at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_std_distance::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_STD_DISTANCE at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_std_iterator_traits::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_STD_ITERATOR_TRAITS at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_std_iterator::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_STD_ITERATOR at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_std_locale::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_STD_LOCALE at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_std_messages::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_STD_MESSAGES at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_std_min_max::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_STD_MIN_MAX at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_std_output_iterator_assign::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_std_typeinfo::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_STD_TYPEINFO at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_std_use_facet::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_STD_USE_FACET at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_std_wstreambuf::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_STD_WSTREAMBUF at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_std_wstring::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_STD_WSTRING at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_stdc_namespace::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_STDC_NAMESPACE at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_swprintf::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_SWPRINTF at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx11_local_class_template_parameters::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx11_template_aliases::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX11_TEMPLATE_ALIASES at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_templated_iostreams::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_TEMPLATED_IOSTREAMS at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_template_templates::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_TEMPLATE_TEMPLATES at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_two_phase_name_lookup::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_TWO_PHASE_NAME_LOOKUP at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_typeid::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_TYPEID at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_typename_with_ctor::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_TYPENAME_WITH_CTOR at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx11_unicode_literals::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX11_UNICODE_LITERALS at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx11_unified_initialization_syntax::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_function_scope_using_declaration_breaks_adl::test())
+ {
+ std::cerr << "Failed test for BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_using_declaration_overloads_from_typename_base::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_using_template::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_USING_TEMPLATE at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx11_variadic_macros::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX11_VARIADIC_MACROS at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_cxx11_variadic_templates::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_CXX11_VARIADIC_TEMPLATES at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_void_returns::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_VOID_RETURNS at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ if(0 != boost_no_intrinsic_wchar_t::test())
+ {
+ std::cerr << "Failed test for BOOST_NO_INTRINSIC_WCHAR_T at: " << __FILE__ << ":" << __LINE__ << std::endl;
+ ++error_count;
+ }
+ return error_count;
+}
+
diff --git a/test/config_test_c.c b/test/config_test_c.c
new file mode 100644
index 0000000..9955dbe
--- /dev/null
+++ b/test/config_test_c.c
@@ -0,0 +1,9 @@
+
+
+#include <boost/config.hpp>
+
+
+int main()
+{
+ return 0;
+}
diff --git a/test/cstdint_include_test.cpp b/test/cstdint_include_test.cpp
new file mode 100644
index 0000000..25d37c8
--- /dev/null
+++ b/test/cstdint_include_test.cpp
@@ -0,0 +1,69 @@
+// Copyright John Maddock 2009.
+// Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+#define __STDC_CONSTANT_MACROS
+#include <boost/cstdint.hpp> // must be the only #include!
+
+int main()
+{
+ boost::int8_t i8 = INT8_C(0);
+ (void)i8;
+ boost::uint8_t ui8 = UINT8_C(0);
+ (void)ui8;
+ boost::int16_t i16 = INT16_C(0);
+ (void)i16;
+ boost::uint16_t ui16 = UINT16_C(0);
+ (void)ui16;
+ boost::int32_t i32 = INT32_C(0);
+ (void)i32;
+ boost::uint32_t ui32 = UINT32_C(0);
+ (void)ui32;
+#ifndef BOOST_NO_INT64_T
+ boost::int64_t i64 = 0;
+ (void)i64;
+ boost::uint64_t ui64 = 0;
+ (void)ui64;
+#endif
+ boost::int_least8_t i8least = INT8_C(0);
+ (void)i8least;
+ boost::uint_least8_t ui8least = UINT8_C(0);
+ (void)ui8least;
+ boost::int_least16_t i16least = INT16_C(0);
+ (void)i16least;
+ boost::uint_least16_t ui16least = UINT16_C(0);
+ (void)ui16least;
+ boost::int_least32_t i32least = INT32_C(0);
+ (void)i32least;
+ boost::uint_least32_t ui32least = UINT32_C(0);
+ (void)ui32least;
+#ifndef BOOST_NO_INT64_T
+ boost::int_least64_t i64least = 0;
+ (void)i64least;
+ boost::uint_least64_t ui64least = 0;
+ (void)ui64least;
+#endif
+ boost::int_fast8_t i8fast = INT8_C(0);
+ (void)i8fast;
+ boost::uint_fast8_t ui8fast = UINT8_C(0);
+ (void)ui8fast;
+ boost::int_fast16_t i16fast = INT16_C(0);
+ (void)i16fast;
+ boost::uint_fast16_t ui16fast = UINT16_C(0);
+ (void)ui16fast;
+ boost::int_fast32_t i32fast = INT32_C(0);
+ (void)i32fast;
+ boost::uint_fast32_t ui32fast = UINT32_C(0);
+ (void)ui32fast;
+#ifndef BOOST_NO_INT64_T
+ boost::int_fast64_t i64fast = 0;
+ (void)i64fast;
+ boost::uint_fast64_t ui64fast = 0;
+ (void)ui64fast;
+#endif
+ boost::intmax_t im = 0;
+ (void)im;
+ boost::uintmax_t uim = 0;
+ (void)uim;
+}
diff --git a/test/cstdint_test.cpp b/test/cstdint_test.cpp
new file mode 100644
index 0000000..f3cbd9b
--- /dev/null
+++ b/test/cstdint_test.cpp
@@ -0,0 +1,238 @@
+// boost cstdint.hpp test program ------------------------------------------//
+
+// Copyright Beman Dawes 2000. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+// See http://www.boost.org/libs/integer for documentation.
+
+// Revision History
+// 11 Sep 01 Adapted to work with macros defined in native stdint.h (John Maddock)
+// 12 Nov 00 Adapted to merged <boost/cstdint.hpp>
+// 23 Sep 00 Added INTXX_C constant macro support + int64_t support (John Maddock).
+// 28 Jun 00 Initial version
+
+//
+// There are two ways to test this: in version 1, we include cstdint.hpp as the first
+// include, which means we get decide whether __STDC_CONSTANT_MACROS is defined.
+// In version two we include stdint.h with __STDC_CONSTANT_MACROS *NOT* defined first,
+// and check that we still end up with compatible definitions for the INT#_C macros.
+//
+// This is version 1.
+//
+
+#if defined(__GNUC__) && (__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4))
+// We can't suppress this warning on the command line as not all GCC versions support -Wno-type-limits :
+#pragma GCC diagnostic ignored "-Wtype-limits"
+#endif
+
+#include <boost/cstdint.hpp>
+#include <boost/detail/lightweight_test.hpp>
+#include <iostream>
+
+#ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION
+//
+// the following class is designed to verify
+// that the various INTXX_C macros can be used
+// in integral constant expressions:
+//
+struct integral_constant_checker
+{
+ static const boost::int8_t int8 = INT8_C(-127);
+ static const boost::int_least8_t int_least8 = INT8_C(-127);
+ static const boost::int_fast8_t int_fast8 = INT8_C(-127);
+
+ static const boost::uint8_t uint8 = UINT8_C(255);
+ static const boost::uint_least8_t uint_least8 = UINT8_C(255);
+ static const boost::uint_fast8_t uint_fast8 = UINT8_C(255);
+
+ static const boost::int16_t int16 = INT16_C(-32767);
+ static const boost::int_least16_t int_least16 = INT16_C(-32767);
+ static const boost::int_fast16_t int_fast16 = INT16_C(-32767);
+
+ static const boost::uint16_t uint16 = UINT16_C(65535);
+ static const boost::uint_least16_t uint_least16 = UINT16_C(65535);
+ static const boost::uint_fast16_t uint_fast16 = UINT16_C(65535);
+
+ static const boost::int32_t int32 = INT32_C(-2147483647);
+ static const boost::int_least32_t int_least32 = INT32_C(-2147483647);
+ static const boost::int_fast32_t int_fast32 = INT32_C(-2147483647);
+
+ static const boost::uint32_t uint32 = UINT32_C(4294967295);
+ static const boost::uint_least32_t uint_least32 = UINT32_C(4294967295);
+ static const boost::uint_fast32_t uint_fast32 = UINT32_C(4294967295);
+
+ static void check();
+};
+
+void integral_constant_checker::check()
+{
+ BOOST_TEST( int8 == -127 );
+ BOOST_TEST( int_least8 == -127 );
+ BOOST_TEST( int_fast8 == -127 );
+ BOOST_TEST( uint8 == 255u );
+ BOOST_TEST( uint_least8 == 255u );
+ BOOST_TEST( uint_fast8 == 255u );
+ BOOST_TEST( int16 == -32767 );
+ BOOST_TEST( int_least16 == -32767 );
+ BOOST_TEST( int_fast16 == -32767 );
+ BOOST_TEST( uint16 == 65535u );
+ BOOST_TEST( uint_least16 == 65535u );
+ BOOST_TEST( uint_fast16 == 65535u );
+ BOOST_TEST( int32 == -2147483647 );
+ BOOST_TEST( int_least32 == -2147483647 );
+ BOOST_TEST( int_fast32 == -2147483647 );
+ BOOST_TEST( uint32 == 4294967295u );
+ BOOST_TEST( uint_least32 == 4294967295u );
+ BOOST_TEST( uint_fast32 == 4294967295u );
+}
+#endif // BOOST_NO_INCLASS_MEMBER_INITIALIZATION
+
+//
+// the following function simply verifies that the type
+// of an integral constant is correctly defined:
+//
+#ifdef __BORLANDC__
+#pragma option -w-8008
+#pragma option -w-8066
+#endif
+template <class T1, class T2>
+void integral_constant_type_check(T1, T2)
+{
+ //
+ // the types T1 and T2 may not be exactly
+ // the same type, but they should be the
+ // same size and signedness. We could use
+ // numeric_limits to verify this, but
+ // numeric_limits implementations currently
+ // vary too much, or are incomplete or missing.
+ //
+ T1 t1 = static_cast<T1>(-1); // cast suppresses warnings
+ T2 t2 = static_cast<T2>(-1); // ditto
+#if defined(BOOST_HAS_STDINT_H)
+ // if we have a native stdint.h
+ // then the INTXX_C macros may define
+ // a type that's wider than required:
+ BOOST_TEST(sizeof(T1) <= sizeof(T2));
+#else
+ BOOST_TEST(sizeof(T1) == sizeof(T2));
+ BOOST_TEST(t1 == t2);
+#endif
+#if defined(BOOST_HAS_STDINT_H)
+ // native headers are permitted to promote small
+ // unsigned types to type int:
+ if(sizeof(T1) >= sizeof(int))
+ {
+ if(t1 > 0)
+ BOOST_TEST(t2 > 0);
+ else
+ BOOST_TEST(!(t2 > 0));
+ }
+ else if(t1 < 0)
+ BOOST_TEST(!(t2 > 0));
+#else
+ if(t1 > 0)
+ BOOST_TEST(t2 > 0);
+ else
+ BOOST_TEST(!(t2 > 0));
+#endif
+}
+
+
+int main(int, char*[])
+{
+#ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION
+ integral_constant_checker::check();
+#endif
+ //
+ // verify the types of the integral constants:
+ //
+ integral_constant_type_check(boost::int8_t(0), INT8_C(0));
+ integral_constant_type_check(boost::uint8_t(0), UINT8_C(0));
+ integral_constant_type_check(boost::int16_t(0), INT16_C(0));
+ integral_constant_type_check(boost::uint16_t(0), UINT16_C(0));
+ integral_constant_type_check(boost::int32_t(0), INT32_C(0));
+ integral_constant_type_check(boost::uint32_t(0), UINT32_C(0));
+#ifndef BOOST_NO_INT64_T
+ integral_constant_type_check(boost::int64_t(0), INT64_C(0));
+ integral_constant_type_check(boost::uint64_t(0), UINT64_C(0));
+#endif
+ //
+ boost::int8_t int8 = INT8_C(-127);
+ boost::int_least8_t int_least8 = INT8_C(-127);
+ boost::int_fast8_t int_fast8 = INT8_C(-127);
+
+ boost::uint8_t uint8 = UINT8_C(255);
+ boost::uint_least8_t uint_least8 = UINT8_C(255);
+ boost::uint_fast8_t uint_fast8 = UINT8_C(255);
+
+ boost::int16_t int16 = INT16_C(-32767);
+ boost::int_least16_t int_least16 = INT16_C(-32767);
+ boost::int_fast16_t int_fast16 = INT16_C(-32767);
+
+ boost::uint16_t uint16 = UINT16_C(65535);
+ boost::uint_least16_t uint_least16 = UINT16_C(65535);
+ boost::uint_fast16_t uint_fast16 = UINT16_C(65535);
+
+ boost::int32_t int32 = INT32_C(-2147483647);
+ boost::int_least32_t int_least32 = INT32_C(-2147483647);
+ boost::int_fast32_t int_fast32 = INT32_C(-2147483647);
+
+ boost::uint32_t uint32 = UINT32_C(4294967295);
+ boost::uint_least32_t uint_least32 = UINT32_C(4294967295);
+ boost::uint_fast32_t uint_fast32 = UINT32_C(4294967295);
+
+#ifndef BOOST_NO_INT64_T
+ boost::int64_t int64 = INT64_C(-9223372036854775807);
+ boost::int_least64_t int_least64 = INT64_C(-9223372036854775807);
+ boost::int_fast64_t int_fast64 = INT64_C(-9223372036854775807);
+
+ boost::uint64_t uint64 = UINT64_C(18446744073709551615);
+ boost::uint_least64_t uint_least64 = UINT64_C(18446744073709551615);
+ boost::uint_fast64_t uint_fast64 = UINT64_C(18446744073709551615);
+
+ boost::intmax_t intmax = INTMAX_C(-9223372036854775807);
+ boost::uintmax_t uintmax = UINTMAX_C(18446744073709551615);
+#else
+ boost::intmax_t intmax = INTMAX_C(-2147483647);
+ boost::uintmax_t uintmax = UINTMAX_C(4294967295);
+#endif
+
+ BOOST_TEST( int8 == -127 );
+ BOOST_TEST( int_least8 == -127 );
+ BOOST_TEST( int_fast8 == -127 );
+ BOOST_TEST( uint8 == 255u );
+ BOOST_TEST( uint_least8 == 255u );
+ BOOST_TEST( uint_fast8 == 255u );
+ BOOST_TEST( int16 == -32767 );
+ BOOST_TEST( int_least16 == -32767 );
+ BOOST_TEST( int_fast16 == -32767 );
+ BOOST_TEST( uint16 == 65535u );
+ BOOST_TEST( uint_least16 == 65535u );
+ BOOST_TEST( uint_fast16 == 65535u );
+ BOOST_TEST( int32 == -2147483647 );
+ BOOST_TEST( int_least32 == -2147483647 );
+ BOOST_TEST( int_fast32 == -2147483647 );
+ BOOST_TEST( uint32 == 4294967295u );
+ BOOST_TEST( uint_least32 == 4294967295u );
+ BOOST_TEST( uint_fast32 == 4294967295u );
+
+#ifndef BOOST_NO_INT64_T
+ BOOST_TEST( int64 == INT64_C(-9223372036854775807) );
+ BOOST_TEST( int_least64 == INT64_C(-9223372036854775807) );
+ BOOST_TEST( int_fast64 == INT64_C(-9223372036854775807) );
+ BOOST_TEST( uint64 == UINT64_C(18446744073709551615) );
+ BOOST_TEST( uint_least64 == UINT64_C(18446744073709551615) );
+ BOOST_TEST( uint_fast64 == UINT64_C(18446744073709551615) );
+ BOOST_TEST( intmax == INT64_C(-9223372036854775807) );
+ BOOST_TEST( uintmax == UINT64_C(18446744073709551615) );
+#else
+ BOOST_TEST( intmax == -2147483647 );
+ BOOST_TEST( uintmax == 4294967295u );
+#endif
+
+
+ std::cout << "OK\n";
+ return boost::report_errors();
+}
diff --git a/test/cstdint_test2.cpp b/test/cstdint_test2.cpp
new file mode 100644
index 0000000..91ff28f
--- /dev/null
+++ b/test/cstdint_test2.cpp
@@ -0,0 +1,248 @@
+// boost cstdint.hpp test program ------------------------------------------//
+
+// Copyright Beman Dawes 2000. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+
+// See http://www.boost.org/libs/integer for documentation.
+
+// Revision History
+// 11 Sep 01 Adapted to work with macros defined in native stdint.h (John Maddock)
+// 12 Nov 00 Adapted to merged <boost/cstdint.hpp>
+// 23 Sep 00 Added INTXX_C constant macro support + int64_t support (John Maddock).
+// 28 Jun 00 Initial version
+
+//
+// There are two ways to test this: in version 1, we include cstdint.hpp as the first
+// include, which means we get decide whether __STDC_CONSTANT_MACROS is defined.
+// In version two we include stdint.h with __STDC_CONSTANT_MACROS *NOT* defined first,
+// and check that we still end up with compatible definitions for the INT#_C macros.
+//
+// This is version 2.
+//
+
+#if defined(__GNUC__) && (__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 4))
+// We can't suppress this warning on the command line as not all GCC versions support -Wno-type-limits :
+#pragma GCC diagnostic ignored "-Wtype-limits"
+#endif
+
+#include <boost/config.hpp>
+
+#ifdef BOOST_HAS_STDINT_H
+#ifdef __hpux
+# include <inttypes.h>
+#else
+# include <stdint.h>
+#endif
+#endif
+
+#include <boost/cstdint.hpp>
+#include <boost/detail/lightweight_test.hpp>
+#include <iostream>
+
+#ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION
+//
+// the following class is designed to verify
+// that the various INTXX_C macros can be used
+// in integral constant expressions:
+//
+struct integral_constant_checker
+{
+ static const boost::int8_t int8 = INT8_C(-127);
+ static const boost::int_least8_t int_least8 = INT8_C(-127);
+ static const boost::int_fast8_t int_fast8 = INT8_C(-127);
+
+ static const boost::uint8_t uint8 = UINT8_C(255);
+ static const boost::uint_least8_t uint_least8 = UINT8_C(255);
+ static const boost::uint_fast8_t uint_fast8 = UINT8_C(255);
+
+ static const boost::int16_t int16 = INT16_C(-32767);
+ static const boost::int_least16_t int_least16 = INT16_C(-32767);
+ static const boost::int_fast16_t int_fast16 = INT16_C(-32767);
+
+ static const boost::uint16_t uint16 = UINT16_C(65535);
+ static const boost::uint_least16_t uint_least16 = UINT16_C(65535);
+ static const boost::uint_fast16_t uint_fast16 = UINT16_C(65535);
+
+ static const boost::int32_t int32 = INT32_C(-2147483647);
+ static const boost::int_least32_t int_least32 = INT32_C(-2147483647);
+ static const boost::int_fast32_t int_fast32 = INT32_C(-2147483647);
+
+ static const boost::uint32_t uint32 = UINT32_C(4294967295);
+ static const boost::uint_least32_t uint_least32 = UINT32_C(4294967295);
+ static const boost::uint_fast32_t uint_fast32 = UINT32_C(4294967295);
+
+ static void check();
+};
+
+void integral_constant_checker::check()
+{
+ BOOST_TEST( int8 == -127 );
+ BOOST_TEST( int_least8 == -127 );
+ BOOST_TEST( int_fast8 == -127 );
+ BOOST_TEST( uint8 == 255u );
+ BOOST_TEST( uint_least8 == 255u );
+ BOOST_TEST( uint_fast8 == 255u );
+ BOOST_TEST( int16 == -32767 );
+ BOOST_TEST( int_least16 == -32767 );
+ BOOST_TEST( int_fast16 == -32767 );
+ BOOST_TEST( uint16 == 65535u );
+ BOOST_TEST( uint_least16 == 65535u );
+ BOOST_TEST( uint_fast16 == 65535u );
+ BOOST_TEST( int32 == -2147483647 );
+ BOOST_TEST( int_least32 == -2147483647 );
+ BOOST_TEST( int_fast32 == -2147483647 );
+ BOOST_TEST( uint32 == 4294967295u );
+ BOOST_TEST( uint_least32 == 4294967295u );
+ BOOST_TEST( uint_fast32 == 4294967295u );
+}
+#endif // BOOST_NO_INCLASS_MEMBER_INITIALIZATION
+
+//
+// the following function simply verifies that the type
+// of an integral constant is correctly defined:
+//
+#ifdef __BORLANDC__
+#pragma option -w-8008
+#pragma option -w-8066
+#endif
+template <class T1, class T2>
+void integral_constant_type_check(T1, T2)
+{
+ //
+ // the types T1 and T2 may not be exactly
+ // the same type, but they should be the
+ // same size and signedness. We could use
+ // numeric_limits to verify this, but
+ // numeric_limits implementations currently
+ // vary too much, or are incomplete or missing.
+ //
+ T1 t1 = static_cast<T1>(-1); // cast suppresses warnings
+ T2 t2 = static_cast<T2>(-1); // ditto
+#if defined(BOOST_HAS_STDINT_H)
+ // if we have a native stdint.h
+ // then the INTXX_C macros may define
+ // a type that's wider than required:
+ BOOST_TEST(sizeof(T1) <= sizeof(T2));
+#else
+ BOOST_TEST(sizeof(T1) == sizeof(T2));
+ BOOST_TEST(t1 == t2);
+#endif
+#if defined(BOOST_HAS_STDINT_H)
+ // native headers are permitted to promote small
+ // unsigned types to type int:
+ if(sizeof(T1) >= sizeof(int))
+ {
+ if(t1 > 0)
+ BOOST_TEST(t2 > 0);
+ else
+ BOOST_TEST(!(t2 > 0));
+ }
+ else if(t1 < 0)
+ BOOST_TEST(!(t2 > 0));
+#else
+ if(t1 > 0)
+ BOOST_TEST(t2 > 0);
+ else
+ BOOST_TEST(!(t2 > 0));
+#endif
+}
+
+
+int main(int, char*[])
+{
+#ifndef BOOST_NO_INCLASS_MEMBER_INITIALIZATION
+ integral_constant_checker::check();
+#endif
+ //
+ // verify the types of the integral constants:
+ //
+ integral_constant_type_check(boost::int8_t(0), INT8_C(0));
+ integral_constant_type_check(boost::uint8_t(0), UINT8_C(0));
+ integral_constant_type_check(boost::int16_t(0), INT16_C(0));
+ integral_constant_type_check(boost::uint16_t(0), UINT16_C(0));
+ integral_constant_type_check(boost::int32_t(0), INT32_C(0));
+ integral_constant_type_check(boost::uint32_t(0), UINT32_C(0));
+#ifndef BOOST_NO_INT64_T
+ integral_constant_type_check(boost::int64_t(0), INT64_C(0));
+ integral_constant_type_check(boost::uint64_t(0), UINT64_C(0));
+#endif
+ //
+ boost::int8_t int8 = INT8_C(-127);
+ boost::int_least8_t int_least8 = INT8_C(-127);
+ boost::int_fast8_t int_fast8 = INT8_C(-127);
+
+ boost::uint8_t uint8 = UINT8_C(255);
+ boost::uint_least8_t uint_least8 = UINT8_C(255);
+ boost::uint_fast8_t uint_fast8 = UINT8_C(255);
+
+ boost::int16_t int16 = INT16_C(-32767);
+ boost::int_least16_t int_least16 = INT16_C(-32767);
+ boost::int_fast16_t int_fast16 = INT16_C(-32767);
+
+ boost::uint16_t uint16 = UINT16_C(65535);
+ boost::uint_least16_t uint_least16 = UINT16_C(65535);
+ boost::uint_fast16_t uint_fast16 = UINT16_C(65535);
+
+ boost::int32_t int32 = INT32_C(-2147483647);
+ boost::int_least32_t int_least32 = INT32_C(-2147483647);
+ boost::int_fast32_t int_fast32 = INT32_C(-2147483647);
+
+ boost::uint32_t uint32 = UINT32_C(4294967295);
+ boost::uint_least32_t uint_least32 = UINT32_C(4294967295);
+ boost::uint_fast32_t uint_fast32 = UINT32_C(4294967295);
+
+#ifndef BOOST_NO_INT64_T
+ boost::int64_t int64 = INT64_C(-9223372036854775807);
+ boost::int_least64_t int_least64 = INT64_C(-9223372036854775807);
+ boost::int_fast64_t int_fast64 = INT64_C(-9223372036854775807);
+
+ boost::uint64_t uint64 = UINT64_C(18446744073709551615);
+ boost::uint_least64_t uint_least64 = UINT64_C(18446744073709551615);
+ boost::uint_fast64_t uint_fast64 = UINT64_C(18446744073709551615);
+
+ boost::intmax_t intmax = INTMAX_C(-9223372036854775807);
+ boost::uintmax_t uintmax = UINTMAX_C(18446744073709551615);
+#else
+ boost::intmax_t intmax = INTMAX_C(-2147483647);
+ boost::uintmax_t uintmax = UINTMAX_C(4294967295);
+#endif
+
+ BOOST_TEST( int8 == -127 );
+ BOOST_TEST( int_least8 == -127 );
+ BOOST_TEST( int_fast8 == -127 );
+ BOOST_TEST( uint8 == 255u );
+ BOOST_TEST( uint_least8 == 255u );
+ BOOST_TEST( uint_fast8 == 255u );
+ BOOST_TEST( int16 == -32767 );
+ BOOST_TEST( int_least16 == -32767 );
+ BOOST_TEST( int_fast16 == -32767 );
+ BOOST_TEST( uint16 == 65535u );
+ BOOST_TEST( uint_least16 == 65535u );
+ BOOST_TEST( uint_fast16 == 65535u );
+ BOOST_TEST( int32 == -2147483647 );
+ BOOST_TEST( int_least32 == -2147483647 );
+ BOOST_TEST( int_fast32 == -2147483647 );
+ BOOST_TEST( uint32 == 4294967295u );
+ BOOST_TEST( uint_least32 == 4294967295u );
+ BOOST_TEST( uint_fast32 == 4294967295u );
+
+#ifndef BOOST_NO_INT64_T
+ BOOST_TEST( int64 == INT64_C(-9223372036854775807) );
+ BOOST_TEST( int_least64 == INT64_C(-9223372036854775807) );
+ BOOST_TEST( int_fast64 == INT64_C(-9223372036854775807) );
+ BOOST_TEST( uint64 == UINT64_C(18446744073709551615) );
+ BOOST_TEST( uint_least64 == UINT64_C(18446744073709551615) );
+ BOOST_TEST( uint_fast64 == UINT64_C(18446744073709551615) );
+ BOOST_TEST( intmax == INT64_C(-9223372036854775807) );
+ BOOST_TEST( uintmax == UINT64_C(18446744073709551615) );
+#else
+ BOOST_TEST( intmax == -2147483647 );
+ BOOST_TEST( uintmax == 4294967295u );
+#endif
+
+
+ std::cout << "OK\n";
+ return boost::report_errors();
+}
diff --git a/test/has_2arg_use_facet_fail.cpp b/test/has_2arg_use_facet_fail.cpp
new file mode 100644
index 0000000..1d0999d
--- /dev/null
+++ b/test/has_2arg_use_facet_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:03:59 2004
+// 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.
+
+// Test file for macro BOOST_HAS_TWO_ARG_USE_FACET
+// This file should not compile, if it does then
+// BOOST_HAS_TWO_ARG_USE_FACET should be defined.
+// See file boost_has_2arg_use_facet.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_HAS_TWO_ARG_USE_FACET
+#include "boost_has_2arg_use_facet.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_two_arg_use_facet::test();
+}
+
diff --git a/test/has_2arg_use_facet_pass.cpp b/test/has_2arg_use_facet_pass.cpp
new file mode 100644
index 0000000..dbfda30
--- /dev/null
+++ b/test/has_2arg_use_facet_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:03:59 2004
+// 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.
+
+// Test file for macro BOOST_HAS_TWO_ARG_USE_FACET
+// This file should compile, if it does not then
+// BOOST_HAS_TWO_ARG_USE_FACET should not be defined.
+// See file boost_has_2arg_use_facet.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_HAS_TWO_ARG_USE_FACET
+#include "boost_has_2arg_use_facet.ipp"
+#else
+namespace boost_has_two_arg_use_facet = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_two_arg_use_facet::test();
+}
+
diff --git a/test/has_bethreads_fail.cpp b/test/has_bethreads_fail.cpp
new file mode 100644
index 0000000..8606f3d
--- /dev/null
+++ b/test/has_bethreads_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:03:59 2004
+// 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.
+
+// Test file for macro BOOST_HAS_BETHREADS
+// This file should not compile, if it does then
+// BOOST_HAS_BETHREADS should be defined.
+// See file boost_has_bethreads.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_HAS_BETHREADS
+#include "boost_has_bethreads.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_bethreads::test();
+}
+
diff --git a/test/has_bethreads_pass.cpp b/test/has_bethreads_pass.cpp
new file mode 100644
index 0000000..5f4bbdbe
--- /dev/null
+++ b/test/has_bethreads_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:03:59 2004
+// 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.
+
+// Test file for macro BOOST_HAS_BETHREADS
+// This file should compile, if it does not then
+// BOOST_HAS_BETHREADS should not be defined.
+// See file boost_has_bethreads.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_HAS_BETHREADS
+#include "boost_has_bethreads.ipp"
+#else
+namespace boost_has_bethreads = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_bethreads::test();
+}
+
diff --git a/test/has_clock_gettime_fail.cpp b/test/has_clock_gettime_fail.cpp
new file mode 100644
index 0000000..4cf5dfe
--- /dev/null
+++ b/test/has_clock_gettime_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:03:59 2004
+// 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.
+
+// Test file for macro BOOST_HAS_CLOCK_GETTIME
+// This file should not compile, if it does then
+// BOOST_HAS_CLOCK_GETTIME should be defined.
+// See file boost_has_clock_gettime.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_HAS_CLOCK_GETTIME
+#include "boost_has_clock_gettime.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_clock_gettime::test();
+}
+
diff --git a/test/has_clock_gettime_pass.cpp b/test/has_clock_gettime_pass.cpp
new file mode 100644
index 0000000..16e57b4
--- /dev/null
+++ b/test/has_clock_gettime_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:03:59 2004
+// 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.
+
+// Test file for macro BOOST_HAS_CLOCK_GETTIME
+// This file should compile, if it does not then
+// BOOST_HAS_CLOCK_GETTIME should not be defined.
+// See file boost_has_clock_gettime.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_HAS_CLOCK_GETTIME
+#include "boost_has_clock_gettime.ipp"
+#else
+namespace boost_has_clock_gettime = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_clock_gettime::test();
+}
+
diff --git a/test/has_detect_mismatch_fail.cpp b/test/has_detect_mismatch_fail.cpp
new file mode 100644
index 0000000..5a544b1
--- /dev/null
+++ b/test/has_detect_mismatch_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Wed Apr 18 20:03:40 2018
+// 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_HAS_PRAGMA_DETECT_MISMATCH
+// This file should not compile, if it does then
+// BOOST_HAS_PRAGMA_DETECT_MISMATCH should be defined.
+// See file boost_has_detect_mismatch.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_HAS_PRAGMA_DETECT_MISMATCH
+#include "boost_has_detect_mismatch.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_pragma_detect_mismatch::test();
+}
+
diff --git a/test/has_detect_mismatch_pass.cpp b/test/has_detect_mismatch_pass.cpp
new file mode 100644
index 0000000..ea47fb8
--- /dev/null
+++ b/test/has_detect_mismatch_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Wed Apr 18 20:03:40 2018
+// 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_HAS_PRAGMA_DETECT_MISMATCH
+// This file should compile, if it does not then
+// BOOST_HAS_PRAGMA_DETECT_MISMATCH should not be defined.
+// See file boost_has_detect_mismatch.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_HAS_PRAGMA_DETECT_MISMATCH
+#include "boost_has_detect_mismatch.ipp"
+#else
+namespace boost_has_pragma_detect_mismatch = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_pragma_detect_mismatch::test();
+}
+
diff --git a/test/has_dirent_h_fail.cpp b/test/has_dirent_h_fail.cpp
new file mode 100644
index 0000000..4304df3
--- /dev/null
+++ b/test/has_dirent_h_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:03:59 2004
+// 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.
+
+// Test file for macro BOOST_HAS_DIRENT_H
+// This file should not compile, if it does then
+// BOOST_HAS_DIRENT_H should be defined.
+// See file boost_has_dirent_h.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_HAS_DIRENT_H
+#include "boost_has_dirent_h.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_dirent_h::test();
+}
+
diff --git a/test/has_dirent_h_pass.cpp b/test/has_dirent_h_pass.cpp
new file mode 100644
index 0000000..184152b
--- /dev/null
+++ b/test/has_dirent_h_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:03:59 2004
+// 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.
+
+// Test file for macro BOOST_HAS_DIRENT_H
+// This file should compile, if it does not then
+// BOOST_HAS_DIRENT_H should not be defined.
+// See file boost_has_dirent_h.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_HAS_DIRENT_H
+#include "boost_has_dirent_h.ipp"
+#else
+namespace boost_has_dirent_h = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_dirent_h::test();
+}
+
diff --git a/test/has_expm1_fail.cpp b/test/has_expm1_fail.cpp
new file mode 100644
index 0000000..2ccd286
--- /dev/null
+++ b/test/has_expm1_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Oct 14 18:38:49 2005
+// 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.
+
+// Test file for macro BOOST_HAS_EXPM1
+// This file should not compile, if it does then
+// BOOST_HAS_EXPM1 should be defined.
+// See file boost_has_expm1.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_HAS_EXPM1
+#include "boost_has_expm1.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_expm1::test();
+}
+
diff --git a/test/has_expm1_pass.cpp b/test/has_expm1_pass.cpp
new file mode 100644
index 0000000..9f9af2f
--- /dev/null
+++ b/test/has_expm1_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Oct 14 18:38:49 2005
+// 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.
+
+// Test file for macro BOOST_HAS_EXPM1
+// This file should compile, if it does not then
+// BOOST_HAS_EXPM1 should not be defined.
+// See file boost_has_expm1.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_HAS_EXPM1
+#include "boost_has_expm1.ipp"
+#else
+namespace boost_has_expm1 = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_expm1::test();
+}
+
diff --git a/test/has_float128_fail.cpp b/test/has_float128_fail.cpp
new file mode 100644
index 0000000..cbb42b2
--- /dev/null
+++ b/test/has_float128_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Thu Aug 13 16:29:35 2015
+// 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_HAS_FLOAT128
+// This file should not compile, if it does then
+// BOOST_HAS_FLOAT128 should be defined.
+// See file boost_has_float128.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_HAS_FLOAT128
+#include "boost_has_float128.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_float128::test();
+}
+
diff --git a/test/has_float128_pass.cpp b/test/has_float128_pass.cpp
new file mode 100644
index 0000000..fb0a568
--- /dev/null
+++ b/test/has_float128_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Thu Aug 13 16:29:35 2015
+// 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_HAS_FLOAT128
+// This file should compile, if it does not then
+// BOOST_HAS_FLOAT128 should not be defined.
+// See file boost_has_float128.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_HAS_FLOAT128
+#include "boost_has_float128.ipp"
+#else
+namespace boost_has_float128 = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_float128::test();
+}
+
diff --git a/test/has_ftime_fail.cpp b/test/has_ftime_fail.cpp
new file mode 100644
index 0000000..ecbfde3
--- /dev/null
+++ b/test/has_ftime_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:03:59 2004
+// 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.
+
+// Test file for macro BOOST_HAS_FTIME
+// This file should not compile, if it does then
+// BOOST_HAS_FTIME should be defined.
+// See file boost_has_ftime.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_HAS_FTIME
+#include "boost_has_ftime.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_ftime::test();
+}
+
diff --git a/test/has_ftime_pass.cpp b/test/has_ftime_pass.cpp
new file mode 100644
index 0000000..6dc150f
--- /dev/null
+++ b/test/has_ftime_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:03:59 2004
+// 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.
+
+// Test file for macro BOOST_HAS_FTIME
+// This file should compile, if it does not then
+// BOOST_HAS_FTIME should not be defined.
+// See file boost_has_ftime.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_HAS_FTIME
+#include "boost_has_ftime.ipp"
+#else
+namespace boost_has_ftime = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_ftime::test();
+}
+
diff --git a/test/has_getsystemtimeasfiletime_fail.cpp b/test/has_getsystemtimeasfiletime_fail.cpp
new file mode 100644
index 0000000..1541493
--- /dev/null
+++ b/test/has_getsystemtimeasfiletime_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Wed Jul 13 18:50:13 2011
+// by libs/config/tools/generate.cpp
+// Copyright John Maddock 2002-4.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id: generate.cpp 72327 2011-06-01 14:51:03Z eric_niebler $
+//
+
+
+// Test file for macro BOOST_HAS_GETSYSTEMTIMEASFILETIME
+// This file should not compile, if it does then
+// BOOST_HAS_GETSYSTEMTIMEASFILETIME should be defined.
+// See file boost_has_getsystemtimeasfiletime.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_HAS_GETSYSTEMTIMEASFILETIME
+#include "boost_has_getsystemtimeasfiletime.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_getsystemtimeasfiletime::test();
+}
+
diff --git a/test/has_getsystemtimeasfiletime_pass.cpp b/test/has_getsystemtimeasfiletime_pass.cpp
new file mode 100644
index 0000000..e8ea83b
--- /dev/null
+++ b/test/has_getsystemtimeasfiletime_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Wed Jul 13 18:50:13 2011
+// by libs/config/tools/generate.cpp
+// Copyright John Maddock 2002-4.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id: generate.cpp 72327 2011-06-01 14:51:03Z eric_niebler $
+//
+
+
+// Test file for macro BOOST_HAS_GETSYSTEMTIMEASFILETIME
+// This file should compile, if it does not then
+// BOOST_HAS_GETSYSTEMTIMEASFILETIME should not be defined.
+// See file boost_has_getsystemtimeasfiletime.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_HAS_GETSYSTEMTIMEASFILETIME
+#include "boost_has_getsystemtimeasfiletime.ipp"
+#else
+namespace boost_has_getsystemtimeasfiletime = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_getsystemtimeasfiletime::test();
+}
+
diff --git a/test/has_gettimeofday_fail.cpp b/test/has_gettimeofday_fail.cpp
new file mode 100644
index 0000000..4f59b56
--- /dev/null
+++ b/test/has_gettimeofday_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:03:59 2004
+// 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.
+
+// Test file for macro BOOST_HAS_GETTIMEOFDAY
+// This file should not compile, if it does then
+// BOOST_HAS_GETTIMEOFDAY should be defined.
+// See file boost_has_gettimeofday.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_HAS_GETTIMEOFDAY
+#include "boost_has_gettimeofday.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_gettimeofday::test();
+}
+
diff --git a/test/has_gettimeofday_pass.cpp b/test/has_gettimeofday_pass.cpp
new file mode 100644
index 0000000..033a88f
--- /dev/null
+++ b/test/has_gettimeofday_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:03:59 2004
+// 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.
+
+// Test file for macro BOOST_HAS_GETTIMEOFDAY
+// This file should compile, if it does not then
+// BOOST_HAS_GETTIMEOFDAY should not be defined.
+// See file boost_has_gettimeofday.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_HAS_GETTIMEOFDAY
+#include "boost_has_gettimeofday.ipp"
+#else
+namespace boost_has_gettimeofday = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_gettimeofday::test();
+}
+
diff --git a/test/has_hash_fail.cpp b/test/has_hash_fail.cpp
new file mode 100644
index 0000000..6b3ac3a
--- /dev/null
+++ b/test/has_hash_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:03:59 2004
+// 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.
+
+// Test file for macro BOOST_HAS_HASH
+// This file should not compile, if it does then
+// BOOST_HAS_HASH should be defined.
+// See file boost_has_hash.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_HAS_HASH
+#include "boost_has_hash.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_hash::test();
+}
+
diff --git a/test/has_hash_pass.cpp b/test/has_hash_pass.cpp
new file mode 100644
index 0000000..3f3dd82
--- /dev/null
+++ b/test/has_hash_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:03:59 2004
+// 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.
+
+// Test file for macro BOOST_HAS_HASH
+// This file should compile, if it does not then
+// BOOST_HAS_HASH should not be defined.
+// See file boost_has_hash.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_HAS_HASH
+#include "boost_has_hash.ipp"
+#else
+namespace boost_has_hash = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_hash::test();
+}
+
diff --git a/test/has_int128_fail.cpp b/test/has_int128_fail.cpp
new file mode 100644
index 0000000..a227557
--- /dev/null
+++ b/test/has_int128_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Thu Oct 25 10:14:36 2012
+// 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_HAS_INT128
+// This file should not compile, if it does then
+// BOOST_HAS_INT128 should be defined.
+// See file boost_has_int128.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_HAS_INT128
+#include "boost_has_int128.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_int128::test();
+}
+
diff --git a/test/has_int128_pass.cpp b/test/has_int128_pass.cpp
new file mode 100644
index 0000000..9c59390
--- /dev/null
+++ b/test/has_int128_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Thu Oct 25 10:14:36 2012
+// 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_HAS_INT128
+// This file should compile, if it does not then
+// BOOST_HAS_INT128 should not be defined.
+// See file boost_has_int128.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_HAS_INT128
+#include "boost_has_int128.ipp"
+#else
+namespace boost_has_int128 = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_int128::test();
+}
+
diff --git a/test/has_log1p_fail.cpp b/test/has_log1p_fail.cpp
new file mode 100644
index 0000000..a2de7cb
--- /dev/null
+++ b/test/has_log1p_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Sat Apr 02 11:49:11 2005
+// 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.
+
+// Test file for macro BOOST_HAS_LOG1P
+// This file should not compile, if it does then
+// BOOST_HAS_LOG1P should be defined.
+// See file boost_has_log1p.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_HAS_LOG1P
+#include "boost_has_log1p.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_log1p::test();
+}
+
diff --git a/test/has_log1p_pass.cpp b/test/has_log1p_pass.cpp
new file mode 100644
index 0000000..bf44feb
--- /dev/null
+++ b/test/has_log1p_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Sat Apr 02 11:49:11 2005
+// 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.
+
+// Test file for macro BOOST_HAS_LOG1P
+// This file should compile, if it does not then
+// BOOST_HAS_LOG1P should not be defined.
+// See file boost_has_log1p.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_HAS_LOG1P
+#include "boost_has_log1p.ipp"
+#else
+namespace boost_has_log1p = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_log1p::test();
+}
+
diff --git a/test/has_long_long_fail.cpp b/test/has_long_long_fail.cpp
new file mode 100644
index 0000000..8463267
--- /dev/null
+++ b/test/has_long_long_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:00 2004
+// 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.
+
+// Test file for macro BOOST_HAS_LONG_LONG
+// This file should not compile, if it does then
+// BOOST_HAS_LONG_LONG should be defined.
+// See file boost_has_long_long.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_HAS_LONG_LONG
+#include "boost_has_long_long.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_long_long::test();
+}
+
diff --git a/test/has_long_long_pass.cpp b/test/has_long_long_pass.cpp
new file mode 100644
index 0000000..6042e66
--- /dev/null
+++ b/test/has_long_long_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:00 2004
+// 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.
+
+// Test file for macro BOOST_HAS_LONG_LONG
+// This file should compile, if it does not then
+// BOOST_HAS_LONG_LONG should not be defined.
+// See file boost_has_long_long.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_HAS_LONG_LONG
+#include "boost_has_long_long.ipp"
+#else
+namespace boost_has_long_long = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_long_long::test();
+}
+
diff --git a/test/has_macro_use_facet_fail.cpp b/test/has_macro_use_facet_fail.cpp
new file mode 100644
index 0000000..8da1183
--- /dev/null
+++ b/test/has_macro_use_facet_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:00 2004
+// 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.
+
+// Test file for macro BOOST_HAS_MACRO_USE_FACET
+// This file should not compile, if it does then
+// BOOST_HAS_MACRO_USE_FACET should be defined.
+// See file boost_has_macro_use_facet.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_HAS_MACRO_USE_FACET
+#include "boost_has_macro_use_facet.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_macro_use_facet::test();
+}
+
diff --git a/test/has_macro_use_facet_pass.cpp b/test/has_macro_use_facet_pass.cpp
new file mode 100644
index 0000000..041d026
--- /dev/null
+++ b/test/has_macro_use_facet_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:00 2004
+// 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.
+
+// Test file for macro BOOST_HAS_MACRO_USE_FACET
+// This file should compile, if it does not then
+// BOOST_HAS_MACRO_USE_FACET should not be defined.
+// See file boost_has_macro_use_facet.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_HAS_MACRO_USE_FACET
+#include "boost_has_macro_use_facet.ipp"
+#else
+namespace boost_has_macro_use_facet = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_macro_use_facet::test();
+}
+
diff --git a/test/has_ms_int64_fail.cpp b/test/has_ms_int64_fail.cpp
new file mode 100644
index 0000000..6171fed
--- /dev/null
+++ b/test/has_ms_int64_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:00 2004
+// 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.
+
+// Test file for macro BOOST_HAS_MS_INT64
+// This file should not compile, if it does then
+// BOOST_HAS_MS_INT64 should be defined.
+// See file boost_has_ms_int64.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_HAS_MS_INT64
+#include "boost_has_ms_int64.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_ms_int64::test();
+}
+
diff --git a/test/has_ms_int64_pass.cpp b/test/has_ms_int64_pass.cpp
new file mode 100644
index 0000000..94038d9
--- /dev/null
+++ b/test/has_ms_int64_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:00 2004
+// 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.
+
+// Test file for macro BOOST_HAS_MS_INT64
+// This file should compile, if it does not then
+// BOOST_HAS_MS_INT64 should not be defined.
+// See file boost_has_ms_int64.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_HAS_MS_INT64
+#include "boost_has_ms_int64.ipp"
+#else
+namespace boost_has_ms_int64 = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_ms_int64::test();
+}
+
diff --git a/test/has_nanosleep_fail.cpp b/test/has_nanosleep_fail.cpp
new file mode 100644
index 0000000..cb7eba9
--- /dev/null
+++ b/test/has_nanosleep_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:00 2004
+// 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.
+
+// Test file for macro BOOST_HAS_NANOSLEEP
+// This file should not compile, if it does then
+// BOOST_HAS_NANOSLEEP should be defined.
+// See file boost_has_nanosleep.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_HAS_NANOSLEEP
+#include "boost_has_nanosleep.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_nanosleep::test();
+}
+
diff --git a/test/has_nanosleep_pass.cpp b/test/has_nanosleep_pass.cpp
new file mode 100644
index 0000000..3aeac63
--- /dev/null
+++ b/test/has_nanosleep_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:00 2004
+// 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.
+
+// Test file for macro BOOST_HAS_NANOSLEEP
+// This file should compile, if it does not then
+// BOOST_HAS_NANOSLEEP should not be defined.
+// See file boost_has_nanosleep.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_HAS_NANOSLEEP
+#include "boost_has_nanosleep.ipp"
+#else
+namespace boost_has_nanosleep = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_nanosleep::test();
+}
+
diff --git a/test/has_nl_types_h_fail.cpp b/test/has_nl_types_h_fail.cpp
new file mode 100644
index 0000000..ffd76cf
--- /dev/null
+++ b/test/has_nl_types_h_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:00 2004
+// 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.
+
+// Test file for macro BOOST_HAS_NL_TYPES_H
+// This file should not compile, if it does then
+// BOOST_HAS_NL_TYPES_H should be defined.
+// See file boost_has_nl_types_h.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_HAS_NL_TYPES_H
+#include "boost_has_nl_types_h.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_nl_types_h::test();
+}
+
diff --git a/test/has_nl_types_h_pass.cpp b/test/has_nl_types_h_pass.cpp
new file mode 100644
index 0000000..6310314
--- /dev/null
+++ b/test/has_nl_types_h_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:00 2004
+// 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.
+
+// Test file for macro BOOST_HAS_NL_TYPES_H
+// This file should compile, if it does not then
+// BOOST_HAS_NL_TYPES_H should not be defined.
+// See file boost_has_nl_types_h.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_HAS_NL_TYPES_H
+#include "boost_has_nl_types_h.ipp"
+#else
+namespace boost_has_nl_types_h = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_nl_types_h::test();
+}
+
diff --git a/test/has_nrvo_fail.cpp b/test/has_nrvo_fail.cpp
new file mode 100644
index 0000000..c05f17c
--- /dev/null
+++ b/test/has_nrvo_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:00 2004
+// 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.
+
+// Test file for macro BOOST_HAS_NRVO
+// This file should not compile, if it does then
+// BOOST_HAS_NRVO should be defined.
+// See file boost_has_nrvo.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_HAS_NRVO
+#include "boost_has_nrvo.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_nrvo::test();
+}
+
diff --git a/test/has_nrvo_pass.cpp b/test/has_nrvo_pass.cpp
new file mode 100644
index 0000000..e216186
--- /dev/null
+++ b/test/has_nrvo_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:00 2004
+// 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.
+
+// Test file for macro BOOST_HAS_NRVO
+// This file should compile, if it does not then
+// BOOST_HAS_NRVO should not be defined.
+// See file boost_has_nrvo.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_HAS_NRVO
+#include "boost_has_nrvo.ipp"
+#else
+namespace boost_has_nrvo = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_nrvo::test();
+}
+
diff --git a/test/has_part_alloc_fail.cpp b/test/has_part_alloc_fail.cpp
new file mode 100644
index 0000000..33c5424
--- /dev/null
+++ b/test/has_part_alloc_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:00 2004
+// 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.
+
+// Test file for macro BOOST_HAS_PARTIAL_STD_ALLOCATOR
+// This file should not compile, if it does then
+// BOOST_HAS_PARTIAL_STD_ALLOCATOR should be defined.
+// See file boost_has_part_alloc.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_HAS_PARTIAL_STD_ALLOCATOR
+#include "boost_has_part_alloc.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_partial_std_allocator::test();
+}
+
diff --git a/test/has_part_alloc_pass.cpp b/test/has_part_alloc_pass.cpp
new file mode 100644
index 0000000..c885e20
--- /dev/null
+++ b/test/has_part_alloc_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:00 2004
+// 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.
+
+// Test file for macro BOOST_HAS_PARTIAL_STD_ALLOCATOR
+// This file should compile, if it does not then
+// BOOST_HAS_PARTIAL_STD_ALLOCATOR should not be defined.
+// See file boost_has_part_alloc.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_HAS_PARTIAL_STD_ALLOCATOR
+#include "boost_has_part_alloc.ipp"
+#else
+namespace boost_has_partial_std_allocator = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_partial_std_allocator::test();
+}
+
diff --git a/test/has_pthread_delay_np_fail.cpp b/test/has_pthread_delay_np_fail.cpp
new file mode 100644
index 0000000..9f21869
--- /dev/null
+++ b/test/has_pthread_delay_np_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:00 2004
+// 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.
+
+// Test file for macro BOOST_HAS_PTHREAD_DELAY_NP
+// This file should not compile, if it does then
+// BOOST_HAS_PTHREAD_DELAY_NP should be defined.
+// See file boost_has_pthread_delay_np.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_HAS_PTHREAD_DELAY_NP
+#include "boost_has_pthread_delay_np.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_pthread_delay_np::test();
+}
+
diff --git a/test/has_pthread_delay_np_pass.cpp b/test/has_pthread_delay_np_pass.cpp
new file mode 100644
index 0000000..6f78617
--- /dev/null
+++ b/test/has_pthread_delay_np_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:00 2004
+// 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.
+
+// Test file for macro BOOST_HAS_PTHREAD_DELAY_NP
+// This file should compile, if it does not then
+// BOOST_HAS_PTHREAD_DELAY_NP should not be defined.
+// See file boost_has_pthread_delay_np.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_HAS_PTHREAD_DELAY_NP
+#include "boost_has_pthread_delay_np.ipp"
+#else
+namespace boost_has_pthread_delay_np = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_pthread_delay_np::test();
+}
+
diff --git a/test/has_pthread_ma_st_fail.cpp b/test/has_pthread_ma_st_fail.cpp
new file mode 100644
index 0000000..a3bbab8
--- /dev/null
+++ b/test/has_pthread_ma_st_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:00 2004
+// 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.
+
+// Test file for macro BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
+// This file should not compile, if it does then
+// BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE should be defined.
+// See file boost_has_pthread_ma_st.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_HAS_PTHREAD_MUTEXATTR_SETTYPE
+#include "boost_has_pthread_ma_st.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_pthread_mutexattr_settype::test();
+}
+
diff --git a/test/has_pthread_ma_st_pass.cpp b/test/has_pthread_ma_st_pass.cpp
new file mode 100644
index 0000000..a0cb1a0
--- /dev/null
+++ b/test/has_pthread_ma_st_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:00 2004
+// 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.
+
+// Test file for macro BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
+// This file should compile, if it does not then
+// BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE should not be defined.
+// See file boost_has_pthread_ma_st.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_HAS_PTHREAD_MUTEXATTR_SETTYPE
+#include "boost_has_pthread_ma_st.ipp"
+#else
+namespace boost_has_pthread_mutexattr_settype = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_pthread_mutexattr_settype::test();
+}
+
diff --git a/test/has_pthread_yield_fail.cpp b/test/has_pthread_yield_fail.cpp
new file mode 100644
index 0000000..eb4228b
--- /dev/null
+++ b/test/has_pthread_yield_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:00 2004
+// 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.
+
+// Test file for macro BOOST_HAS_PTHREAD_YIELD
+// This file should not compile, if it does then
+// BOOST_HAS_PTHREAD_YIELD should be defined.
+// See file boost_has_pthread_yield.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_HAS_PTHREAD_YIELD
+#include "boost_has_pthread_yield.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_pthread_yield::test();
+}
+
diff --git a/test/has_pthread_yield_pass.cpp b/test/has_pthread_yield_pass.cpp
new file mode 100644
index 0000000..4af209a
--- /dev/null
+++ b/test/has_pthread_yield_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:00 2004
+// 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.
+
+// Test file for macro BOOST_HAS_PTHREAD_YIELD
+// This file should compile, if it does not then
+// BOOST_HAS_PTHREAD_YIELD should not be defined.
+// See file boost_has_pthread_yield.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_HAS_PTHREAD_YIELD
+#include "boost_has_pthread_yield.ipp"
+#else
+namespace boost_has_pthread_yield = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_pthread_yield::test();
+}
+
diff --git a/test/has_pthreads_fail.cpp b/test/has_pthreads_fail.cpp
new file mode 100644
index 0000000..1415664
--- /dev/null
+++ b/test/has_pthreads_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:00 2004
+// 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.
+
+// Test file for macro BOOST_HAS_PTHREADS
+// This file should not compile, if it does then
+// BOOST_HAS_PTHREADS should be defined.
+// See file boost_has_pthreads.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_HAS_PTHREADS
+#include "boost_has_pthreads.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_pthreads::test();
+}
+
diff --git a/test/has_pthreads_pass.cpp b/test/has_pthreads_pass.cpp
new file mode 100644
index 0000000..0737392
--- /dev/null
+++ b/test/has_pthreads_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:00 2004
+// 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.
+
+// Test file for macro BOOST_HAS_PTHREADS
+// This file should compile, if it does not then
+// BOOST_HAS_PTHREADS should not be defined.
+// See file boost_has_pthreads.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_HAS_PTHREADS
+#include "boost_has_pthreads.ipp"
+#else
+namespace boost_has_pthreads = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_pthreads::test();
+}
+
diff --git a/test/has_rvalue_refs_fail.cpp b/test/has_rvalue_refs_fail.cpp
new file mode 100644
index 0000000..cf880e9
--- /dev/null
+++ b/test/has_rvalue_refs_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Sat Aug 25 12:32:21 2007
+// 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.
+
+// Test file for macro BOOST_HAS_RVALUE_REFS
+// This file should not compile, if it does then
+// BOOST_HAS_RVALUE_REFS should be defined.
+// See file boost_has_rvalue_refs.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_HAS_RVALUE_REFS
+#include "boost_has_rvalue_refs.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_rvalue_refs::test();
+}
+
diff --git a/test/has_rvalue_refs_pass.cpp b/test/has_rvalue_refs_pass.cpp
new file mode 100644
index 0000000..6169249
--- /dev/null
+++ b/test/has_rvalue_refs_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Sat Aug 25 12:32:21 2007
+// 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.
+
+// Test file for macro BOOST_HAS_RVALUE_REFS
+// This file should compile, if it does not then
+// BOOST_HAS_RVALUE_REFS should not be defined.
+// See file boost_has_rvalue_refs.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_HAS_RVALUE_REFS
+#include "boost_has_rvalue_refs.ipp"
+#else
+namespace boost_has_rvalue_refs = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_rvalue_refs::test();
+}
+
diff --git a/test/has_sched_yield_fail.cpp b/test/has_sched_yield_fail.cpp
new file mode 100644
index 0000000..b494ed1
--- /dev/null
+++ b/test/has_sched_yield_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:00 2004
+// 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.
+
+// Test file for macro BOOST_HAS_SCHED_YIELD
+// This file should not compile, if it does then
+// BOOST_HAS_SCHED_YIELD should be defined.
+// See file boost_has_sched_yield.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_HAS_SCHED_YIELD
+#include "boost_has_sched_yield.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_sched_yield::test();
+}
+
diff --git a/test/has_sched_yield_pass.cpp b/test/has_sched_yield_pass.cpp
new file mode 100644
index 0000000..56741d1
--- /dev/null
+++ b/test/has_sched_yield_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:00 2004
+// 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.
+
+// Test file for macro BOOST_HAS_SCHED_YIELD
+// This file should compile, if it does not then
+// BOOST_HAS_SCHED_YIELD should not be defined.
+// See file boost_has_sched_yield.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_HAS_SCHED_YIELD
+#include "boost_has_sched_yield.ipp"
+#else
+namespace boost_has_sched_yield = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_sched_yield::test();
+}
+
diff --git a/test/has_sgi_type_traits_fail.cpp b/test/has_sgi_type_traits_fail.cpp
new file mode 100644
index 0000000..1be7182
--- /dev/null
+++ b/test/has_sgi_type_traits_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:00 2004
+// 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.
+
+// Test file for macro BOOST_HAS_SGI_TYPE_TRAITS
+// This file should not compile, if it does then
+// BOOST_HAS_SGI_TYPE_TRAITS should be defined.
+// See file boost_has_sgi_type_traits.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_HAS_SGI_TYPE_TRAITS
+#include "boost_has_sgi_type_traits.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_sgi_type_traits::test();
+}
+
diff --git a/test/has_sgi_type_traits_pass.cpp b/test/has_sgi_type_traits_pass.cpp
new file mode 100644
index 0000000..81f0592
--- /dev/null
+++ b/test/has_sgi_type_traits_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:00 2004
+// 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.
+
+// Test file for macro BOOST_HAS_SGI_TYPE_TRAITS
+// This file should compile, if it does not then
+// BOOST_HAS_SGI_TYPE_TRAITS should not be defined.
+// See file boost_has_sgi_type_traits.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_HAS_SGI_TYPE_TRAITS
+#include "boost_has_sgi_type_traits.ipp"
+#else
+namespace boost_has_sgi_type_traits = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_sgi_type_traits::test();
+}
+
diff --git a/test/has_sigaction_fail.cpp b/test/has_sigaction_fail.cpp
new file mode 100644
index 0000000..b9ea989
--- /dev/null
+++ b/test/has_sigaction_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:00 2004
+// 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.
+
+// Test file for macro BOOST_HAS_SIGACTION
+// This file should not compile, if it does then
+// BOOST_HAS_SIGACTION should be defined.
+// See file boost_has_sigaction.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_HAS_SIGACTION
+#include "boost_has_sigaction.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_sigaction::test();
+}
+
diff --git a/test/has_sigaction_pass.cpp b/test/has_sigaction_pass.cpp
new file mode 100644
index 0000000..5fa1040
--- /dev/null
+++ b/test/has_sigaction_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:00 2004
+// 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.
+
+// Test file for macro BOOST_HAS_SIGACTION
+// This file should compile, if it does not then
+// BOOST_HAS_SIGACTION should not be defined.
+// See file boost_has_sigaction.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_HAS_SIGACTION
+#include "boost_has_sigaction.ipp"
+#else
+namespace boost_has_sigaction = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_sigaction::test();
+}
+
diff --git a/test/has_slist_fail.cpp b/test/has_slist_fail.cpp
new file mode 100644
index 0000000..0d656fd
--- /dev/null
+++ b/test/has_slist_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:00 2004
+// 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.
+
+// Test file for macro BOOST_HAS_SLIST
+// This file should not compile, if it does then
+// BOOST_HAS_SLIST should be defined.
+// See file boost_has_slist.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_HAS_SLIST
+#include "boost_has_slist.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_slist::test();
+}
+
diff --git a/test/has_slist_pass.cpp b/test/has_slist_pass.cpp
new file mode 100644
index 0000000..79af700
--- /dev/null
+++ b/test/has_slist_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:00 2004
+// 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.
+
+// Test file for macro BOOST_HAS_SLIST
+// This file should compile, if it does not then
+// BOOST_HAS_SLIST should not be defined.
+// See file boost_has_slist.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_HAS_SLIST
+#include "boost_has_slist.ipp"
+#else
+namespace boost_has_slist = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_slist::test();
+}
+
diff --git a/test/has_static_assert_fail.cpp b/test/has_static_assert_fail.cpp
new file mode 100644
index 0000000..a6456ed
--- /dev/null
+++ b/test/has_static_assert_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Sat Aug 25 12:32:21 2007
+// 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.
+
+// Test file for macro BOOST_HAS_STATIC_ASSERT
+// This file should not compile, if it does then
+// BOOST_HAS_STATIC_ASSERT should be defined.
+// See file boost_has_static_assert.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_HAS_STATIC_ASSERT
+#include "boost_has_static_assert.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_static_assert::test();
+}
+
diff --git a/test/has_static_assert_pass.cpp b/test/has_static_assert_pass.cpp
new file mode 100644
index 0000000..00f0389
--- /dev/null
+++ b/test/has_static_assert_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Sat Aug 25 12:32:21 2007
+// 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.
+
+// Test file for macro BOOST_HAS_STATIC_ASSERT
+// This file should compile, if it does not then
+// BOOST_HAS_STATIC_ASSERT should not be defined.
+// See file boost_has_static_assert.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_HAS_STATIC_ASSERT
+#include "boost_has_static_assert.ipp"
+#else
+namespace boost_has_static_assert = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_static_assert::test();
+}
+
diff --git a/test/has_stdint_h_fail.cpp b/test/has_stdint_h_fail.cpp
new file mode 100644
index 0000000..66a1017
--- /dev/null
+++ b/test/has_stdint_h_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:00 2004
+// 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.
+
+// Test file for macro BOOST_HAS_STDINT_H
+// This file should not compile, if it does then
+// BOOST_HAS_STDINT_H should be defined.
+// See file boost_has_stdint_h.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_HAS_STDINT_H
+#include "boost_has_stdint_h.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_stdint_h::test();
+}
+
diff --git a/test/has_stdint_h_pass.cpp b/test/has_stdint_h_pass.cpp
new file mode 100644
index 0000000..4b8eca9
--- /dev/null
+++ b/test/has_stdint_h_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:00 2004
+// 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.
+
+// Test file for macro BOOST_HAS_STDINT_H
+// This file should compile, if it does not then
+// BOOST_HAS_STDINT_H should not be defined.
+// See file boost_has_stdint_h.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_HAS_STDINT_H
+#include "boost_has_stdint_h.ipp"
+#else
+namespace boost_has_stdint_h = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_stdint_h::test();
+}
+
diff --git a/test/has_stlp_use_facet_fail.cpp b/test/has_stlp_use_facet_fail.cpp
new file mode 100644
index 0000000..115f03b
--- /dev/null
+++ b/test/has_stlp_use_facet_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:00 2004
+// 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.
+
+// Test file for macro BOOST_HAS_STLP_USE_FACET
+// This file should not compile, if it does then
+// BOOST_HAS_STLP_USE_FACET should be defined.
+// See file boost_has_stlp_use_facet.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_HAS_STLP_USE_FACET
+#include "boost_has_stlp_use_facet.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_stlp_use_facet::test();
+}
+
diff --git a/test/has_stlp_use_facet_pass.cpp b/test/has_stlp_use_facet_pass.cpp
new file mode 100644
index 0000000..9c50c63
--- /dev/null
+++ b/test/has_stlp_use_facet_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:00 2004
+// 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.
+
+// Test file for macro BOOST_HAS_STLP_USE_FACET
+// This file should compile, if it does not then
+// BOOST_HAS_STLP_USE_FACET should not be defined.
+// See file boost_has_stlp_use_facet.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_HAS_STLP_USE_FACET
+#include "boost_has_stlp_use_facet.ipp"
+#else
+namespace boost_has_stlp_use_facet = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_stlp_use_facet::test();
+}
+
diff --git a/test/has_unistd_h_fail.cpp b/test/has_unistd_h_fail.cpp
new file mode 100644
index 0000000..363aea2
--- /dev/null
+++ b/test/has_unistd_h_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:00 2004
+// 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.
+
+// Test file for macro BOOST_HAS_UNISTD_H
+// This file should not compile, if it does then
+// BOOST_HAS_UNISTD_H should be defined.
+// See file boost_has_unistd_h.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_HAS_UNISTD_H
+#include "boost_has_unistd_h.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_unistd_h::test();
+}
+
diff --git a/test/has_unistd_h_pass.cpp b/test/has_unistd_h_pass.cpp
new file mode 100644
index 0000000..70f8137
--- /dev/null
+++ b/test/has_unistd_h_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:00 2004
+// 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.
+
+// Test file for macro BOOST_HAS_UNISTD_H
+// This file should compile, if it does not then
+// BOOST_HAS_UNISTD_H should not be defined.
+// See file boost_has_unistd_h.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_HAS_UNISTD_H
+#include "boost_has_unistd_h.ipp"
+#else
+namespace boost_has_unistd_h = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_unistd_h::test();
+}
+
diff --git a/test/has_variadic_tmpl_fail.cpp b/test/has_variadic_tmpl_fail.cpp
new file mode 100644
index 0000000..17baab7
--- /dev/null
+++ b/test/has_variadic_tmpl_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Sat Aug 25 12:32:21 2007
+// 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.
+
+// Test file for macro BOOST_HAS_VARIADIC_TMPL
+// This file should not compile, if it does then
+// BOOST_HAS_VARIADIC_TMPL should be defined.
+// See file boost_has_variadic_tmpl.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_HAS_VARIADIC_TMPL
+#include "boost_has_variadic_tmpl.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_variadic_tmpl::test();
+}
+
diff --git a/test/has_variadic_tmpl_pass.cpp b/test/has_variadic_tmpl_pass.cpp
new file mode 100644
index 0000000..8b65b8d
--- /dev/null
+++ b/test/has_variadic_tmpl_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Sat Aug 25 12:32:21 2007
+// 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.
+
+// Test file for macro BOOST_HAS_VARIADIC_TMPL
+// This file should compile, if it does not then
+// BOOST_HAS_VARIADIC_TMPL should not be defined.
+// See file boost_has_variadic_tmpl.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_HAS_VARIADIC_TMPL
+#include "boost_has_variadic_tmpl.ipp"
+#else
+namespace boost_has_variadic_tmpl = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_variadic_tmpl::test();
+}
+
diff --git a/test/has_vc6_mem_templ_fail.cpp b/test/has_vc6_mem_templ_fail.cpp
new file mode 100644
index 0000000..6fa512a
--- /dev/null
+++ b/test/has_vc6_mem_templ_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:00 2004
+// 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.
+
+// Test file for macro BOOST_MSVC6_MEMBER_TEMPLATES
+// This file should not compile, if it does then
+// BOOST_MSVC6_MEMBER_TEMPLATES should be defined.
+// See file boost_has_vc6_mem_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_MSVC6_MEMBER_TEMPLATES
+#include "boost_has_vc6_mem_templ.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_msvc6_member_templates::test();
+}
+
diff --git a/test/has_vc6_mem_templ_pass.cpp b/test/has_vc6_mem_templ_pass.cpp
new file mode 100644
index 0000000..85325a9
--- /dev/null
+++ b/test/has_vc6_mem_templ_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:00 2004
+// 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.
+
+// Test file for macro BOOST_MSVC6_MEMBER_TEMPLATES
+// This file should compile, if it does not then
+// BOOST_MSVC6_MEMBER_TEMPLATES should not be defined.
+// See file boost_has_vc6_mem_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_MSVC6_MEMBER_TEMPLATES
+#include "boost_has_vc6_mem_templ.ipp"
+#else
+namespace boost_msvc6_member_templates = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_msvc6_member_templates::test();
+}
+
diff --git a/test/has_vc_iterator_fail.cpp b/test/has_vc_iterator_fail.cpp
new file mode 100644
index 0000000..e453e56
--- /dev/null
+++ b/test/has_vc_iterator_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:00 2004
+// 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.
+
+// Test file for macro BOOST_MSVC_STD_ITERATOR
+// This file should not compile, if it does then
+// BOOST_MSVC_STD_ITERATOR should be defined.
+// See file boost_has_vc_iterator.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_MSVC_STD_ITERATOR
+#include "boost_has_vc_iterator.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_msvc_std_iterator::test();
+}
+
diff --git a/test/has_vc_iterator_pass.cpp b/test/has_vc_iterator_pass.cpp
new file mode 100644
index 0000000..102cab7
--- /dev/null
+++ b/test/has_vc_iterator_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:00 2004
+// 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.
+
+// Test file for macro BOOST_MSVC_STD_ITERATOR
+// This file should compile, if it does not then
+// BOOST_MSVC_STD_ITERATOR should not be defined.
+// See file boost_has_vc_iterator.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_MSVC_STD_ITERATOR
+#include "boost_has_vc_iterator.ipp"
+#else
+namespace boost_msvc_std_iterator = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_msvc_std_iterator::test();
+}
+
diff --git a/test/has_winthreads_fail.cpp b/test/has_winthreads_fail.cpp
new file mode 100644
index 0000000..e9f6c71
--- /dev/null
+++ b/test/has_winthreads_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:00 2004
+// 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.
+
+// Test file for macro BOOST_HAS_WINTHREADS
+// This file should not compile, if it does then
+// BOOST_HAS_WINTHREADS should be defined.
+// See file boost_has_winthreads.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_HAS_WINTHREADS
+#include "boost_has_winthreads.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_winthreads::test();
+}
+
diff --git a/test/has_winthreads_pass.cpp b/test/has_winthreads_pass.cpp
new file mode 100644
index 0000000..49d020f
--- /dev/null
+++ b/test/has_winthreads_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:00 2004
+// 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.
+
+// Test file for macro BOOST_HAS_WINTHREADS
+// This file should compile, if it does not then
+// BOOST_HAS_WINTHREADS should not be defined.
+// See file boost_has_winthreads.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_HAS_WINTHREADS
+#include "boost_has_winthreads.ipp"
+#else
+namespace boost_has_winthreads = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_has_winthreads::test();
+}
+
diff --git a/test/header_deprecated_test.cpp b/test/header_deprecated_test.cpp
new file mode 100644
index 0000000..6a99a97
--- /dev/null
+++ b/test/header_deprecated_test.cpp
@@ -0,0 +1,18 @@
+// Copyright 2017 Peter Dimov.
+//
+// Distributed under the Boost Software License, Version 1.0.
+//
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+
+#include <boost/config/header_deprecated.hpp>
+
+BOOST_HEADER_DEPRECATED("<boost/config/workaround.hpp>")
+
+#define ALTERNATIVE "the suitable component header"
+BOOST_HEADER_DEPRECATED(ALTERNATIVE)
+
+#include <boost/config.hpp> // BOOST_STRINGIZE
+
+#define HEADER <boost/config/workaround.hpp>
+BOOST_HEADER_DEPRECATED(BOOST_STRINGIZE(HEADER))
diff --git a/test/helper_macro_test.cpp b/test/helper_macro_test.cpp
new file mode 100644
index 0000000..e3b1112
--- /dev/null
+++ b/test/helper_macro_test.cpp
@@ -0,0 +1,63 @@
+// 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;
+}
+
+struct BOOST_MAY_ALIAS aliasing_struct {};
+typedef unsigned int BOOST_MAY_ALIAS aliasing_uint;
+
+
+#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;
+}
+
diff --git a/test/helper_macros_test.cpp b/test/helper_macros_test.cpp
new file mode 100644
index 0000000..5bbea8d
--- /dev/null
+++ b/test/helper_macros_test.cpp
@@ -0,0 +1,30 @@
+// Copyright 2017 Peter Dimov.
+//
+// Distributed under the Boost Software License, Version 1.0.
+//
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+
+#include <boost/config/helper_macros.hpp>
+#include <boost/core/lightweight_test.hpp>
+
+int main()
+{
+#define X pumpkin
+
+ BOOST_TEST_CSTR_EQ( BOOST_STRINGIZE(X), "pumpkin" );
+ BOOST_TEST_CSTR_EQ( BOOST_STRINGIZE(__LINE__), "16" );
+
+#define Y 2
+
+ int BOOST_JOIN(X, Y) = 0;
+ (void)pumpkin2;
+
+ int BOOST_JOIN(X, __LINE__) = 0;
+ (void)pumpkin23;
+
+ BOOST_TEST_CSTR_EQ( BOOST_STRINGIZE(BOOST_JOIN(X, Y)), "pumpkin2" );
+ BOOST_TEST_CSTR_EQ( BOOST_STRINGIZE(BOOST_JOIN(X, __LINE__)), "pumpkin27" );
+
+ return boost::report_errors();
+}
diff --git a/test/limits_test.cpp b/test/limits_test.cpp
new file mode 100644
index 0000000..6244496
--- /dev/null
+++ b/test/limits_test.cpp
@@ -0,0 +1,213 @@
+/* boost limits_test.cpp test your <limits> file for important
+ *
+ * Copyright Jens Maurer 2000
+ * Distributed under the Boost Software License, Version 1.0. (See
+ * accompanying file LICENSE_1_0.txt or copy at
+ * http://www.boost.org/LICENSE_1_0.txt)
+ *
+ * $Id$
+ */
+
+#include <boost/limits.hpp>
+#include <boost/detail/lightweight_main.hpp>
+#include <boost/core/lightweight_test.hpp>
+#include <iostream>
+
+/*
+ * General portability note:
+ * MSVC mis-compiles explicit function template instantiations.
+ * For example, f<A>() and f<B>() are both compiled to call f<A>().
+ * BCC is unable to implicitly convert a "const char *" to a std::string
+ * when using explicit function template instantiations.
+ *
+ * Therefore, avoid explicit function template instantiations.
+ */
+#if defined(BOOST_MSVC) && (BOOST_MSVC <= 1300)
+template<typename T> inline T make_char_numeric_for_streaming(T x) { return x; }
+namespace fix{
+inline int make_char_numeric_for_streaming(char c) { return c; }
+inline int make_char_numeric_for_streaming(signed char c) { return c; }
+inline int make_char_numeric_for_streaming(unsigned char c) { return c; }
+}
+using namespace fix;
+# if defined(_YVALS) && !defined(_CPPLIB_VER) && !defined(__SGI_STL_PORT) && !defined(_STLPORT_VERSION)
+// fix for missing operator<< in original Dinkumware lib:
+std::ostream& operator<<(std::ostream& os, __int64 i )
+{
+ char buf[80];
+ sprintf(buf,"%I64d", i );
+ os << buf;
+ return os;
+}
+std::ostream& operator<<(std::ostream& os, unsigned __int64 i )
+{
+ char buf[80];
+ sprintf(buf,"%I64u", i );
+ os << buf;
+ return os;
+}
+# endif
+#else
+template<typename T> inline T make_char_numeric_for_streaming(T x) { return x; }
+inline int make_char_numeric_for_streaming(char c) { return c; }
+inline int make_char_numeric_for_streaming(signed char c) { return c; }
+inline int make_char_numeric_for_streaming(unsigned char c) { return c; }
+#endif
+
+#if (defined(_GLIBCPP_VERSION) || defined(_GLIBCXX_VERSION)) \
+ && defined(BOOST_HAS_LONG_LONG) \
+ && !defined(_GLIBCPP_USE_LONG_LONG) \
+ && !defined(_GLIBCXX_USE_LONG_LONG)
+//
+// Some libstdc++ versions have numeric_limits<long long> but no
+// iostream support for long long. TODO, find a better fix!!
+//
+std::ostream& operator<<(std::ostream& os, long long i )
+{
+ return os << static_cast<long double>(i);
+}
+std::ostream& operator<<(std::ostream& os, unsigned long long i )
+{
+ return os << static_cast<long double>(i);
+}
+#endif
+
+template<class T>
+void test_integral_limits(const T &, const char * msg)
+{
+ typedef std::numeric_limits<T> lim;
+ std::cout << "Testing " << msg
+ << " (size " << sizeof(T) << ")"
+ << " min: " << make_char_numeric_for_streaming((lim::min)())
+ << ", max: " << make_char_numeric_for_streaming((lim::max)())
+ << std::endl;
+
+ BOOST_TEST(static_cast<bool>(lim::is_specialized));
+ BOOST_TEST(static_cast<bool>(lim::is_integer));
+ // BOOST_TEST(lim::is_modulo);
+ BOOST_TEST(static_cast<bool>((lim::min)() < (lim::max)()));
+}
+
+template <class T>
+void print_hex_val(T t, const char* name)
+{
+ const unsigned char* p = (const unsigned char*)&t;
+ std::cout << "hex value of " << name << " is: ";
+ for (unsigned int i = 0; i < sizeof(T); ++i) {
+ if(p[i] <= 0xF)
+ std::cout << "0";
+ std::cout << std::hex << (int)p[i];
+ }
+ std::cout << std::dec << std::endl;
+}
+
+template<class T>
+void test_float_limits(const T &, const char * msg)
+{
+ std::cout << "\nTesting " << msg << std::endl;
+ typedef std::numeric_limits<T> lim;
+
+ BOOST_TEST(static_cast<bool>(lim::is_specialized));
+ BOOST_TEST(static_cast<bool>(!lim::is_modulo));
+ BOOST_TEST(static_cast<bool>(!lim::is_integer));
+ BOOST_TEST(static_cast<bool>(lim::is_signed));
+
+ const T infinity = lim::infinity();
+ const T qnan = lim::quiet_NaN();
+ const T snan = lim::signaling_NaN();
+
+ std::cout << "IEEE-compatible: " << lim::is_iec559
+ << ", traps: " << lim::traps
+ << ", bounded: " << lim::is_bounded
+ << ", exact: " << lim::is_exact << '\n'
+ << "min: " << (lim::min)() << ", max: " << (lim::max)() << '\n'
+ << "infinity: " << infinity << ", QNaN: " << qnan << '\n';
+ print_hex_val((lim::max)(), "max");
+ print_hex_val(infinity, "infinity");
+ print_hex_val(qnan, "qnan");
+ print_hex_val(snan, "snan");
+
+ BOOST_TEST((lim::max)() > 1000);
+ BOOST_TEST((lim::min)() > 0);
+ BOOST_TEST((lim::min)() < 0.001);
+ BOOST_TEST(lim::epsilon() > 0);
+
+ if(lim::is_iec559) {
+ BOOST_TEST(static_cast<bool>(lim::has_infinity));
+ BOOST_TEST(static_cast<bool>(lim::has_quiet_NaN));
+ BOOST_TEST(static_cast<bool>(lim::has_signaling_NaN));
+ } else {
+ std::cout << "Does not claim IEEE conformance" << std::endl;
+ }
+
+ if(lim::has_infinity) {
+ // Make sure those values are not 0 or similar nonsense.
+ // Infinity must compare as if larger than the maximum representable value.
+ BOOST_TEST(infinity > (lim::max)());
+ BOOST_TEST(-infinity < -(lim::max)());
+ } else {
+ std::cout << "Does not have infinity" << std::endl;
+ }
+
+ if(lim::has_quiet_NaN) {
+ // NaNs shall always compare "false" when compared for equality
+ // If one of these fail, your compiler may be optimizing incorrectly,
+ // or the standard library is incorrectly configured.
+ BOOST_TEST(! (qnan == 42));
+ BOOST_TEST(qnan != 42);
+ if(lim::is_iec559)
+ {
+ BOOST_TEST(! (qnan == qnan));
+ BOOST_TEST(qnan != qnan);
+ }
+
+ // The following tests may cause arithmetic traps.
+ // BOOST_TEST(! (qnan < 42));
+ // BOOST_TEST(! (qnan > 42));
+ // BOOST_TEST(! (qnan <= 42));
+ // BOOST_TEST(! (qnan >= 42));
+ } else {
+ std::cout << "Does not have QNaN" << std::endl;
+ }
+}
+
+
+int cpp_main(int, char*[])
+{
+ test_integral_limits(bool(), "bool");
+ test_integral_limits(char(), "char");
+ typedef signed char signed_char;
+ test_integral_limits(signed_char(), "signed char");
+ typedef unsigned char unsigned_char;
+ test_integral_limits(unsigned_char(), "unsigned char");
+ test_integral_limits(wchar_t(), "wchar_t");
+ test_integral_limits(short(), "short");
+ typedef unsigned short unsigned_short;
+ test_integral_limits(unsigned_short(), "unsigned short");
+ test_integral_limits(int(), "int");
+ typedef unsigned int unsigned_int;
+ test_integral_limits(unsigned_int(), "unsigned int");
+ test_integral_limits(long(), "long");
+ typedef unsigned long unsigned_long;
+ test_integral_limits(unsigned_long(), "unsigned long");
+#if defined(BOOST_HAS_LONG_LONG)
+ test_integral_limits(::boost::long_long_type(), "long long");
+ test_integral_limits(::boost::ulong_long_type(), "unsigned long long");
+#endif
+#ifdef BOOST_HAS_MS_INT64
+ typedef __int64 long_long2;
+ test_integral_limits(long_long2(), "__int64");
+ typedef unsigned __int64 unsigned_long_long2;
+ test_integral_limits(unsigned_long_long2(), "unsigned __int64");
+#endif
+
+ test_float_limits(float(), "float");
+ test_float_limits(double(), "double");
+ typedef long double long_double;
+ test_float_limits(long_double(), "long double");
+ // Some compilers don't pay attention to std:3.6.1/5 and issue a
+ // warning here if "return 0;" is omitted.
+ return 0;
+}
+
+
diff --git a/test/link/Jamfile.v2 b/test/link/Jamfile.v2
new file mode 100644
index 0000000..c5da6c2
--- /dev/null
+++ b/test/link/Jamfile.v2
@@ -0,0 +1,19 @@
+# copyright John Maddock 2003
+# 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)
+
+lib link_test : link_test.cpp
+ : <link>shared <runtime-link>shared
+ # This is needed to make the test work, I'm unsure if this
+ # should be set globally.
+ <define>BOOST_DYN_LINK=1
+ # Override <threading>multi inherited from parent.
+ <threading>single
+ :
+ debug release
+ ;
+
+run main.cpp link_test : : : <define>BOOST_DYN_LINK=1 <define>BOOST_CONFIG_NO_LIB <link>shared <runtime-link>shared <threading>single : link_test_test ;
+
+
diff --git a/test/link/bc_gen.sh b/test/link/bc_gen.sh
new file mode 100644
index 0000000..07ff3aa
--- /dev/null
+++ b/test/link/bc_gen.sh
@@ -0,0 +1,286 @@
+#! /usr/bin/env bash
+
+# copyright John Maddock 2005
+# 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)
+
+libname=""
+src=""
+header=""
+all_dep=""
+
+# current makefile:
+out=""
+# temporary file:
+tout=""
+# install target temp file:
+iout=""
+# debug flag:
+debug="no"
+# compile options:
+opts=""
+# main output sub-directory:
+subdir=""
+
+#######################################################################
+#
+# section for C++ Builder
+#
+#######################################################################
+
+function bcb_gen_lib()
+{
+ all_dep="$all_dep $subdir\\$libname $subdir\\$libname.lib $subdir\\$libname.exe"
+ echo " copy $subdir\\$libname.lib \$(BCROOT)\\lib" >> $iout
+#
+# set up section comments:
+ cat >> $tout << EOF
+########################################################
+#
+# section for $libname.lib
+#
+########################################################
+EOF
+#
+# process source files:
+ all_obj=""
+ all_lib_obj=""
+ for file in $src
+ do
+ obj=`echo "$file" | sed 's/\(.*\)cpp/\1obj/g'`
+ obj="$subdir\\$libname\\$obj"
+ all_obj="$all_obj $obj"
+ all_lib_obj="$all_lib_obj \"$obj\""
+ echo "$obj: $file \$(ALL_HEADER)" >> $tout
+ echo " bcc32 @&&|" >> $tout
+ echo "-c \$(INCLUDES) $opts \$(CXXFLAGS) -o$obj $file" >> $tout
+ echo "|" >> $tout
+ echo "" >> $tout
+ done
+#
+# now for the directories for this library:
+ echo "$subdir\\$libname : " >> $tout
+ echo " -@mkdir $subdir\\$libname" >> $tout
+ echo "" >> $tout
+#
+# now for the clean options for this library:
+ all_clean="$all_clean $libname""_clean"
+ echo "$libname"_clean : >> $tout
+ echo " del $subdir\\$libname\\"'*.obj' >> $tout
+ echo " del $subdir\\$libname\\"'*.il?' >> $tout
+ echo " del $subdir\\$libname\\"'*.csm' >> $tout
+ echo " del $subdir\\$libname\\"'*.tds' >> $tout
+ echo "" >> $tout
+#
+# now for the main target for this library:
+ echo $subdir\\$libname.lib : $all_obj >> $tout
+ echo " tlib @&&|" >> $tout
+ echo "/P128 /C /u /a \$(XSFLAGS) \"$subdir\\$libname.lib\" $all_lib_obj" >> $tout
+ echo "|" >> $tout
+ echo "" >> $tout
+# now the test program:
+ echo "$subdir\\$libname.exe : main.cpp $subdir\\$libname.lib" >> $tout
+ echo " bcc32 \$(INCLUDES) $opts /DBOOST_LIB_DIAGNOSTIC=1 \$(CXXFLAGS) -L./$subdir -e./$subdir/$libname.exe main.cpp" >> $tout
+ echo " echo running test progam $subdir"'\'"$libname.exe" >> $tout
+ echo " $subdir"'\'"$libname.exe" >> $tout
+ echo "" >> $tout
+}
+
+function bcb_gen_dll()
+{
+ all_dep="$all_dep $subdir\\$libname $subdir\\$libname.lib $subdir\\$libname.exe"
+ echo " copy $subdir\\$libname.lib \$(BCROOT)\\lib" >> $iout
+ echo " copy $subdir\\$libname.dll \$(BCROOT)\\bin" >> $iout
+ echo " copy $subdir\\$libname.tds \$(BCROOT)\\bin" >> $iout
+#
+# set up section comments:
+ cat >> $tout << EOF
+########################################################
+#
+# section for $libname.lib
+#
+########################################################
+EOF
+#
+# process source files:
+ all_obj=""
+ for file in $src
+ do
+ obj=`echo "$file" | sed 's/\(.*\)cpp/\1obj/g'`
+ obj="$subdir\\$libname\\$obj"
+ all_obj="$all_obj $obj"
+ echo "$obj: $file \$(ALL_HEADER)" >> $tout
+ echo " bcc32 @&&|" >> $tout
+ echo "-c \$(INCLUDES) $opts \$(CXXFLAGS) -DBOOST_DYN_LINK -o$obj $file" >> $tout
+ echo "|" >> $tout
+ echo "" >> $tout
+ done
+#
+# now for the directories for this library:
+ echo "$subdir\\$libname :" >> $tout
+ echo " -@mkdir $subdir\\$libname" >> $tout
+ echo "" >> $tout
+#
+# now for the clean options for this library:
+ all_clean="$all_clean $libname""_clean"
+ echo "$libname"_clean : >> $tout
+ echo " del $subdir\\$libname\\"'*.obj' >> $tout
+ echo " del $subdir\\$libname\\"'*.il?' >> $tout
+ echo " del $subdir\\$libname\\"'*.csm' >> $tout
+ echo " del $subdir\\$libname\\"'*.tds' >> $tout
+ echo " del $subdir\\"'*.tds' >> $tout
+ echo "" >> $tout
+#
+# now for the main target for this library:
+ echo $subdir\\$libname.lib : $all_obj >> $tout
+ echo " bcc32 @&&|" >> $tout
+ echo "-lw-dup -lw-dpl $opts -e$subdir\\$libname.dll \$(XLFLAGS) $all_obj \$(LIBS)" >> $tout
+ echo "|" >> $tout
+ echo " implib -w $subdir\\$libname.lib $subdir\\$libname.dll" >> $tout
+ echo "" >> $tout
+# now the test program:
+ echo "$subdir\\$libname.exe : main.cpp $subdir\\$libname.lib" >> $tout
+ echo " bcc32 \$(INCLUDES) $opts /DBOOST_LIB_DIAGNOSTIC=1 \$(CXXFLAGS) -DBOOST_DYN_LINK -L./$subdir -e./$subdir/$libname.exe main.cpp" >> $tout
+ echo " echo running test program $subdir"'\'"$libname.exe" >> $tout
+ echo " $subdir"'\'"$libname.exe" >> $tout
+ echo "" >> $tout
+}
+
+
+
+function bcb_gen()
+{
+ tout="temp"
+ iout="temp_install"
+ all_dep="$subdir"
+ all_clean=""
+ echo > $out
+ echo > $tout
+ rm -f $iout
+
+ libname="liblink_test-${subdir}-s-${boost_version}"
+ opts="-tWM- -D_NO_VCL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8037 -w-8057 -DSTRICT; -I\$(BCROOT)\include;../../../../"
+ bcb_gen_lib
+
+ libname="liblink_test-${subdir}-mt-s-${boost_version}"
+ opts="-tWM -D_NO_VCL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I\$(BCROOT)\include;../../../../"
+ bcb_gen_lib
+
+ libname="link_test-${subdir}-mt-${boost_version}"
+ opts="-tWD -tWM -tWR -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I\$(BCROOT)\include;../../../../ -L\$(BCROOT)\lib;\$(BCROOT)\lib\release;"
+ bcb_gen_dll
+
+ libname="link_test-${subdir}-${boost_version}"
+ opts="-tWD -tWR -tWM- -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I\$(BCROOT)\include;../../../../ -L\$(BCROOT)\lib;\$(BCROOT)\lib\release;"
+ bcb_gen_dll
+
+ libname="liblink_test-${subdir}-mt-${boost_version}"
+ opts="-tWD -tWM -tWR -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I\$(BCROOT)\include;../../../../ -L\$(BCROOT)\lib;\$(BCROOT)\lib\release;"
+ bcb_gen_lib
+
+ libname="liblink_test-${subdir}-${boost_version}"
+ opts="-tWD -tWR -tWM- -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I\$(BCROOT)\include;../../../../ -L\$(BCROOT)\lib;\$(BCROOT)\lib\release;"
+ bcb_gen_lib
+ #
+ # debug versions:
+ libname="liblink_test-${subdir}-sd-${boost_version}"
+ opts="-tWM- -D_NO_VCL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8037 -w-8057 -DSTRICT; -I\$(BCROOT)\include;../../../../"
+ bcb_gen_lib
+
+ libname="liblink_test-${subdir}-mt-sd-${boost_version}"
+ opts="-tWM -D_NO_VCL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I\$(BCROOT)\include;../../../../"
+ bcb_gen_lib
+
+ libname="link_test-${subdir}-mt-d-${boost_version}"
+ opts="-tWD -tWM -tWR -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I\$(BCROOT)\include;../../../../ -L\$(BCROOT)\lib;\$(BCROOT)\lib\release;"
+ bcb_gen_dll
+
+ libname="link_test-${subdir}-d-${boost_version}"
+ opts="-tWD -tWR -tWM- -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I\$(BCROOT)\include;../../../../ -L\$(BCROOT)\lib;\$(BCROOT)\lib\release;"
+ bcb_gen_dll
+
+ libname="liblink_test-${subdir}-mt-d-${boost_version}"
+ opts="-tWD -tWM -tWR -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I\$(BCROOT)\include;../../../../ -L\$(BCROOT)\lib;\$(BCROOT)\lib\release;"
+ bcb_gen_lib
+
+ libname="liblink_test-${subdir}-d-${boost_version}"
+ opts="-tWD -tWR -tWM- -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I\$(BCROOT)\include;../../../../ -L\$(BCROOT)\lib;\$(BCROOT)\lib\release;"
+ bcb_gen_lib
+
+
+ cat > $out << EOF
+# copyright John Maddock 2005
+# 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)
+#
+# auto generated makefile for C++ Builder
+#
+# usage:
+# make
+# brings libraries up to date
+# make install
+# brings libraries up to date and copies binaries to your C++ Builder /lib and /bin directories (recomended)
+# make clean
+# removes all temporary files.
+
+#
+# Add additional compiler options here:
+#
+CXXFLAGS=
+#
+# Add additional include directories here:
+#
+INCLUDES=
+#
+# add additional linker flags here:
+#
+XLFLAGS=
+#
+# add additional libraries to link to here:
+#
+LIBS=
+#
+# add additional static-library creation flags here:
+#
+XSFLAGS=
+
+!ifndef BCROOT
+BCROOT=\$(MAKEDIR)\\..
+!endif
+
+EOF
+ echo "" >> $out
+ echo "ALL_HEADER=$header" >> $out
+ echo "" >> $out
+ echo "all : $all_dep" >> $out
+ echo >> $out
+ echo "clean : $all_clean" >> $out
+ echo >> $out
+ echo "install : all" >> $out
+ cat $iout >> $out
+ echo >> $out
+ echo $subdir : >> $out
+ echo " -@mkdir $subdir" >> $out
+ echo "" >> $out
+
+ cat $tout >> $out
+}
+
+. common.sh
+
+#
+# generate C++ Builder 6 files:
+out="borland.mak"
+subdir="borland"
+has_stlport="yes"
+bcb_gen
+
+
+
+
+
+
+
+
diff --git a/test/link/borland.mak b/test/link/borland.mak
new file mode 100644
index 0000000..624759c
--- /dev/null
+++ b/test/link/borland.mak
@@ -0,0 +1,429 @@
+# copyright John Maddock 2005
+# 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)
+#
+# auto generated makefile for C++ Builder
+#
+# usage:
+# make
+# brings libraries up to date
+# make install
+# brings libraries up to date and copies binaries to your C++ Builder /lib and /bin directories (recomended)
+# make clean
+# removes all temporary files.
+
+#
+# Add additional compiler options here:
+#
+CXXFLAGS=
+#
+# Add additional include directories here:
+#
+INCLUDES=
+#
+# add additional linker flags here:
+#
+XLFLAGS=
+#
+# add additional libraries to link to here:
+#
+LIBS=
+#
+# add additional static-library creation flags here:
+#
+XSFLAGS=
+
+!ifndef BCROOT
+BCROOT=$(MAKEDIR)\..
+!endif
+
+
+ALL_HEADER=
+
+all : borland borland\liblink_test-borland-s-1_35 borland\liblink_test-borland-s-1_35.lib borland\liblink_test-borland-s-1_35.exe borland\liblink_test-borland-mt-s-1_35 borland\liblink_test-borland-mt-s-1_35.lib borland\liblink_test-borland-mt-s-1_35.exe borland\link_test-borland-mt-1_35 borland\link_test-borland-mt-1_35.lib borland\link_test-borland-mt-1_35.exe borland\link_test-borland-1_35 borland\link_test-borland-1_35.lib borland\link_test-borland-1_35.exe borland\liblink_test-borland-mt-1_35 borland\liblink_test-borland-mt-1_35.lib borland\liblink_test-borland-mt-1_35.exe borland\liblink_test-borland-1_35 borland\liblink_test-borland-1_35.lib borland\liblink_test-borland-1_35.exe borland\liblink_test-borland-sd-1_35 borland\liblink_test-borland-sd-1_35.lib borland\liblink_test-borland-sd-1_35.exe borland\liblink_test-borland-mt-sd-1_35 borland\liblink_test-borland-mt-sd-1_35.lib borland\liblink_test-borland-mt-sd-1_35.exe borland\link_test-borland-mt-d-1_35 borland\link_test-borland-mt-d-1_35.lib borland\link_test-borland-mt-d-1_35.exe borland\link_test-borland-d-1_35 borland\link_test-borland-d-1_35.lib borland\link_test-borland-d-1_35.exe borland\liblink_test-borland-mt-d-1_35 borland\liblink_test-borland-mt-d-1_35.lib borland\liblink_test-borland-mt-d-1_35.exe borland\liblink_test-borland-d-1_35 borland\liblink_test-borland-d-1_35.lib borland\liblink_test-borland-d-1_35.exe
+
+clean : liblink_test-borland-s-1_35_clean liblink_test-borland-mt-s-1_35_clean link_test-borland-mt-1_35_clean link_test-borland-1_35_clean liblink_test-borland-mt-1_35_clean liblink_test-borland-1_35_clean liblink_test-borland-sd-1_35_clean liblink_test-borland-mt-sd-1_35_clean link_test-borland-mt-d-1_35_clean link_test-borland-d-1_35_clean liblink_test-borland-mt-d-1_35_clean liblink_test-borland-d-1_35_clean
+
+install : all
+ copy borland\liblink_test-borland-s-1_35.lib $(BCROOT)\lib
+ copy borland\liblink_test-borland-mt-s-1_35.lib $(BCROOT)\lib
+ copy borland\link_test-borland-mt-1_35.lib $(BCROOT)\lib
+ copy borland\link_test-borland-mt-1_35.dll $(BCROOT)\bin
+ copy borland\link_test-borland-mt-1_35.tds $(BCROOT)\bin
+ copy borland\link_test-borland-1_35.lib $(BCROOT)\lib
+ copy borland\link_test-borland-1_35.dll $(BCROOT)\bin
+ copy borland\link_test-borland-1_35.tds $(BCROOT)\bin
+ copy borland\liblink_test-borland-mt-1_35.lib $(BCROOT)\lib
+ copy borland\liblink_test-borland-1_35.lib $(BCROOT)\lib
+ copy borland\liblink_test-borland-sd-1_35.lib $(BCROOT)\lib
+ copy borland\liblink_test-borland-mt-sd-1_35.lib $(BCROOT)\lib
+ copy borland\link_test-borland-mt-d-1_35.lib $(BCROOT)\lib
+ copy borland\link_test-borland-mt-d-1_35.dll $(BCROOT)\bin
+ copy borland\link_test-borland-mt-d-1_35.tds $(BCROOT)\bin
+ copy borland\link_test-borland-d-1_35.lib $(BCROOT)\lib
+ copy borland\link_test-borland-d-1_35.dll $(BCROOT)\bin
+ copy borland\link_test-borland-d-1_35.tds $(BCROOT)\bin
+ copy borland\liblink_test-borland-mt-d-1_35.lib $(BCROOT)\lib
+ copy borland\liblink_test-borland-d-1_35.lib $(BCROOT)\lib
+
+borland :
+ -@mkdir borland
+
+
+########################################################
+#
+# section for liblink_test-borland-s-1_35.lib
+#
+########################################################
+borland\liblink_test-borland-s-1_35\link_test.obj: link_test.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM- -D_NO_VCL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8037 -w-8057 -DSTRICT; -I$(BCROOT)\include;../../../../ $(CXXFLAGS) -oborland\liblink_test-borland-s-1_35\link_test.obj link_test.cpp
+|
+
+borland\liblink_test-borland-s-1_35 :
+ -@mkdir borland\liblink_test-borland-s-1_35
+
+liblink_test-borland-s-1_35_clean :
+ del borland\liblink_test-borland-s-1_35\*.obj
+ del borland\liblink_test-borland-s-1_35\*.il?
+ del borland\liblink_test-borland-s-1_35\*.csm
+ del borland\liblink_test-borland-s-1_35\*.tds
+
+borland\liblink_test-borland-s-1_35.lib : borland\liblink_test-borland-s-1_35\link_test.obj
+ tlib @&&|
+/P128 /C /u /a $(XSFLAGS) "borland\liblink_test-borland-s-1_35.lib" "borland\liblink_test-borland-s-1_35\link_test.obj"
+|
+
+borland\liblink_test-borland-s-1_35.exe : main.cpp borland\liblink_test-borland-s-1_35.lib
+ bcc32 $(INCLUDES) -tWM- -D_NO_VCL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8037 -w-8057 -DSTRICT; -I$(BCROOT)\include;../../../../ /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -L./borland -e./borland/liblink_test-borland-s-1_35.exe main.cpp
+ echo running test progam borland\liblink_test-borland-s-1_35.exe
+ borland\liblink_test-borland-s-1_35.exe
+
+########################################################
+#
+# section for liblink_test-borland-mt-s-1_35.lib
+#
+########################################################
+borland\liblink_test-borland-mt-s-1_35\link_test.obj: link_test.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM -D_NO_VCL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../../ $(CXXFLAGS) -oborland\liblink_test-borland-mt-s-1_35\link_test.obj link_test.cpp
+|
+
+borland\liblink_test-borland-mt-s-1_35 :
+ -@mkdir borland\liblink_test-borland-mt-s-1_35
+
+liblink_test-borland-mt-s-1_35_clean :
+ del borland\liblink_test-borland-mt-s-1_35\*.obj
+ del borland\liblink_test-borland-mt-s-1_35\*.il?
+ del borland\liblink_test-borland-mt-s-1_35\*.csm
+ del borland\liblink_test-borland-mt-s-1_35\*.tds
+
+borland\liblink_test-borland-mt-s-1_35.lib : borland\liblink_test-borland-mt-s-1_35\link_test.obj
+ tlib @&&|
+/P128 /C /u /a $(XSFLAGS) "borland\liblink_test-borland-mt-s-1_35.lib" "borland\liblink_test-borland-mt-s-1_35\link_test.obj"
+|
+
+borland\liblink_test-borland-mt-s-1_35.exe : main.cpp borland\liblink_test-borland-mt-s-1_35.lib
+ bcc32 $(INCLUDES) -tWM -D_NO_VCL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../../ /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -L./borland -e./borland/liblink_test-borland-mt-s-1_35.exe main.cpp
+ echo running test progam borland\liblink_test-borland-mt-s-1_35.exe
+ borland\liblink_test-borland-mt-s-1_35.exe
+
+########################################################
+#
+# section for link_test-borland-mt-1_35.lib
+#
+########################################################
+borland\link_test-borland-mt-1_35\link_test.obj: link_test.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_DYN_LINK -oborland\link_test-borland-mt-1_35\link_test.obj link_test.cpp
+|
+
+borland\link_test-borland-mt-1_35 :
+ -@mkdir borland\link_test-borland-mt-1_35
+
+link_test-borland-mt-1_35_clean :
+ del borland\link_test-borland-mt-1_35\*.obj
+ del borland\link_test-borland-mt-1_35\*.il?
+ del borland\link_test-borland-mt-1_35\*.csm
+ del borland\link_test-borland-mt-1_35\*.tds
+ del borland\*.tds
+
+borland\link_test-borland-mt-1_35.lib : borland\link_test-borland-mt-1_35\link_test.obj
+ bcc32 @&&|
+-lw-dup -lw-dpl -tWD -tWM -tWR -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; -eborland\link_test-borland-mt-1_35.dll $(XLFLAGS) borland\link_test-borland-mt-1_35\link_test.obj $(LIBS)
+|
+ implib -w borland\link_test-borland-mt-1_35.lib borland\link_test-borland-mt-1_35.dll
+
+borland\link_test-borland-mt-1_35.exe : main.cpp borland\link_test-borland-mt-1_35.lib
+ bcc32 $(INCLUDES) -tWD -tWM -tWR -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -DBOOST_DYN_LINK -L./borland -e./borland/link_test-borland-mt-1_35.exe main.cpp
+ echo running test program borland\link_test-borland-mt-1_35.exe
+ borland\link_test-borland-mt-1_35.exe
+
+########################################################
+#
+# section for link_test-borland-1_35.lib
+#
+########################################################
+borland\link_test-borland-1_35\link_test.obj: link_test.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_DYN_LINK -oborland\link_test-borland-1_35\link_test.obj link_test.cpp
+|
+
+borland\link_test-borland-1_35 :
+ -@mkdir borland\link_test-borland-1_35
+
+link_test-borland-1_35_clean :
+ del borland\link_test-borland-1_35\*.obj
+ del borland\link_test-borland-1_35\*.il?
+ del borland\link_test-borland-1_35\*.csm
+ del borland\link_test-borland-1_35\*.tds
+ del borland\*.tds
+
+borland\link_test-borland-1_35.lib : borland\link_test-borland-1_35\link_test.obj
+ bcc32 @&&|
+-lw-dup -lw-dpl -tWD -tWR -tWM- -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; -eborland\link_test-borland-1_35.dll $(XLFLAGS) borland\link_test-borland-1_35\link_test.obj $(LIBS)
+|
+ implib -w borland\link_test-borland-1_35.lib borland\link_test-borland-1_35.dll
+
+borland\link_test-borland-1_35.exe : main.cpp borland\link_test-borland-1_35.lib
+ bcc32 $(INCLUDES) -tWD -tWR -tWM- -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -DBOOST_DYN_LINK -L./borland -e./borland/link_test-borland-1_35.exe main.cpp
+ echo running test program borland\link_test-borland-1_35.exe
+ borland\link_test-borland-1_35.exe
+
+########################################################
+#
+# section for liblink_test-borland-mt-1_35.lib
+#
+########################################################
+borland\liblink_test-borland-mt-1_35\link_test.obj: link_test.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -oborland\liblink_test-borland-mt-1_35\link_test.obj link_test.cpp
+|
+
+borland\liblink_test-borland-mt-1_35 :
+ -@mkdir borland\liblink_test-borland-mt-1_35
+
+liblink_test-borland-mt-1_35_clean :
+ del borland\liblink_test-borland-mt-1_35\*.obj
+ del borland\liblink_test-borland-mt-1_35\*.il?
+ del borland\liblink_test-borland-mt-1_35\*.csm
+ del borland\liblink_test-borland-mt-1_35\*.tds
+
+borland\liblink_test-borland-mt-1_35.lib : borland\liblink_test-borland-mt-1_35\link_test.obj
+ tlib @&&|
+/P128 /C /u /a $(XSFLAGS) "borland\liblink_test-borland-mt-1_35.lib" "borland\liblink_test-borland-mt-1_35\link_test.obj"
+|
+
+borland\liblink_test-borland-mt-1_35.exe : main.cpp borland\liblink_test-borland-mt-1_35.lib
+ bcc32 $(INCLUDES) -tWD -tWM -tWR -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -L./borland -e./borland/liblink_test-borland-mt-1_35.exe main.cpp
+ echo running test progam borland\liblink_test-borland-mt-1_35.exe
+ borland\liblink_test-borland-mt-1_35.exe
+
+########################################################
+#
+# section for liblink_test-borland-1_35.lib
+#
+########################################################
+borland\liblink_test-borland-1_35\link_test.obj: link_test.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -oborland\liblink_test-borland-1_35\link_test.obj link_test.cpp
+|
+
+borland\liblink_test-borland-1_35 :
+ -@mkdir borland\liblink_test-borland-1_35
+
+liblink_test-borland-1_35_clean :
+ del borland\liblink_test-borland-1_35\*.obj
+ del borland\liblink_test-borland-1_35\*.il?
+ del borland\liblink_test-borland-1_35\*.csm
+ del borland\liblink_test-borland-1_35\*.tds
+
+borland\liblink_test-borland-1_35.lib : borland\liblink_test-borland-1_35\link_test.obj
+ tlib @&&|
+/P128 /C /u /a $(XSFLAGS) "borland\liblink_test-borland-1_35.lib" "borland\liblink_test-borland-1_35\link_test.obj"
+|
+
+borland\liblink_test-borland-1_35.exe : main.cpp borland\liblink_test-borland-1_35.lib
+ bcc32 $(INCLUDES) -tWD -tWR -tWM- -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -O2 -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -L./borland -e./borland/liblink_test-borland-1_35.exe main.cpp
+ echo running test progam borland\liblink_test-borland-1_35.exe
+ borland\liblink_test-borland-1_35.exe
+
+########################################################
+#
+# section for liblink_test-borland-sd-1_35.lib
+#
+########################################################
+borland\liblink_test-borland-sd-1_35\link_test.obj: link_test.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM- -D_NO_VCL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8037 -w-8057 -DSTRICT; -I$(BCROOT)\include;../../../../ $(CXXFLAGS) -oborland\liblink_test-borland-sd-1_35\link_test.obj link_test.cpp
+|
+
+borland\liblink_test-borland-sd-1_35 :
+ -@mkdir borland\liblink_test-borland-sd-1_35
+
+liblink_test-borland-sd-1_35_clean :
+ del borland\liblink_test-borland-sd-1_35\*.obj
+ del borland\liblink_test-borland-sd-1_35\*.il?
+ del borland\liblink_test-borland-sd-1_35\*.csm
+ del borland\liblink_test-borland-sd-1_35\*.tds
+
+borland\liblink_test-borland-sd-1_35.lib : borland\liblink_test-borland-sd-1_35\link_test.obj
+ tlib @&&|
+/P128 /C /u /a $(XSFLAGS) "borland\liblink_test-borland-sd-1_35.lib" "borland\liblink_test-borland-sd-1_35\link_test.obj"
+|
+
+borland\liblink_test-borland-sd-1_35.exe : main.cpp borland\liblink_test-borland-sd-1_35.lib
+ bcc32 $(INCLUDES) -tWM- -D_NO_VCL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8037 -w-8057 -DSTRICT; -I$(BCROOT)\include;../../../../ /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -L./borland -e./borland/liblink_test-borland-sd-1_35.exe main.cpp
+ echo running test progam borland\liblink_test-borland-sd-1_35.exe
+ borland\liblink_test-borland-sd-1_35.exe
+
+########################################################
+#
+# section for liblink_test-borland-mt-sd-1_35.lib
+#
+########################################################
+borland\liblink_test-borland-mt-sd-1_35\link_test.obj: link_test.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWM -D_NO_VCL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../../ $(CXXFLAGS) -oborland\liblink_test-borland-mt-sd-1_35\link_test.obj link_test.cpp
+|
+
+borland\liblink_test-borland-mt-sd-1_35 :
+ -@mkdir borland\liblink_test-borland-mt-sd-1_35
+
+liblink_test-borland-mt-sd-1_35_clean :
+ del borland\liblink_test-borland-mt-sd-1_35\*.obj
+ del borland\liblink_test-borland-mt-sd-1_35\*.il?
+ del borland\liblink_test-borland-mt-sd-1_35\*.csm
+ del borland\liblink_test-borland-mt-sd-1_35\*.tds
+
+borland\liblink_test-borland-mt-sd-1_35.lib : borland\liblink_test-borland-mt-sd-1_35\link_test.obj
+ tlib @&&|
+/P128 /C /u /a $(XSFLAGS) "borland\liblink_test-borland-mt-sd-1_35.lib" "borland\liblink_test-borland-mt-sd-1_35\link_test.obj"
+|
+
+borland\liblink_test-borland-mt-sd-1_35.exe : main.cpp borland\liblink_test-borland-mt-sd-1_35.lib
+ bcc32 $(INCLUDES) -tWM -D_NO_VCL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../../ /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -L./borland -e./borland/liblink_test-borland-mt-sd-1_35.exe main.cpp
+ echo running test progam borland\liblink_test-borland-mt-sd-1_35.exe
+ borland\liblink_test-borland-mt-sd-1_35.exe
+
+########################################################
+#
+# section for link_test-borland-mt-d-1_35.lib
+#
+########################################################
+borland\link_test-borland-mt-d-1_35\link_test.obj: link_test.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_DYN_LINK -oborland\link_test-borland-mt-d-1_35\link_test.obj link_test.cpp
+|
+
+borland\link_test-borland-mt-d-1_35 :
+ -@mkdir borland\link_test-borland-mt-d-1_35
+
+link_test-borland-mt-d-1_35_clean :
+ del borland\link_test-borland-mt-d-1_35\*.obj
+ del borland\link_test-borland-mt-d-1_35\*.il?
+ del borland\link_test-borland-mt-d-1_35\*.csm
+ del borland\link_test-borland-mt-d-1_35\*.tds
+ del borland\*.tds
+
+borland\link_test-borland-mt-d-1_35.lib : borland\link_test-borland-mt-d-1_35\link_test.obj
+ bcc32 @&&|
+-lw-dup -lw-dpl -tWD -tWM -tWR -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; -eborland\link_test-borland-mt-d-1_35.dll $(XLFLAGS) borland\link_test-borland-mt-d-1_35\link_test.obj $(LIBS)
+|
+ implib -w borland\link_test-borland-mt-d-1_35.lib borland\link_test-borland-mt-d-1_35.dll
+
+borland\link_test-borland-mt-d-1_35.exe : main.cpp borland\link_test-borland-mt-d-1_35.lib
+ bcc32 $(INCLUDES) -tWD -tWM -tWR -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -DBOOST_DYN_LINK -L./borland -e./borland/link_test-borland-mt-d-1_35.exe main.cpp
+ echo running test program borland\link_test-borland-mt-d-1_35.exe
+ borland\link_test-borland-mt-d-1_35.exe
+
+########################################################
+#
+# section for link_test-borland-d-1_35.lib
+#
+########################################################
+borland\link_test-borland-d-1_35\link_test.obj: link_test.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -DBOOST_DYN_LINK -oborland\link_test-borland-d-1_35\link_test.obj link_test.cpp
+|
+
+borland\link_test-borland-d-1_35 :
+ -@mkdir borland\link_test-borland-d-1_35
+
+link_test-borland-d-1_35_clean :
+ del borland\link_test-borland-d-1_35\*.obj
+ del borland\link_test-borland-d-1_35\*.il?
+ del borland\link_test-borland-d-1_35\*.csm
+ del borland\link_test-borland-d-1_35\*.tds
+ del borland\*.tds
+
+borland\link_test-borland-d-1_35.lib : borland\link_test-borland-d-1_35\link_test.obj
+ bcc32 @&&|
+-lw-dup -lw-dpl -tWD -tWR -tWM- -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; -eborland\link_test-borland-d-1_35.dll $(XLFLAGS) borland\link_test-borland-d-1_35\link_test.obj $(LIBS)
+|
+ implib -w borland\link_test-borland-d-1_35.lib borland\link_test-borland-d-1_35.dll
+
+borland\link_test-borland-d-1_35.exe : main.cpp borland\link_test-borland-d-1_35.lib
+ bcc32 $(INCLUDES) -tWD -tWR -tWM- -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -DBOOST_DYN_LINK -L./borland -e./borland/link_test-borland-d-1_35.exe main.cpp
+ echo running test program borland\link_test-borland-d-1_35.exe
+ borland\link_test-borland-d-1_35.exe
+
+########################################################
+#
+# section for liblink_test-borland-mt-d-1_35.lib
+#
+########################################################
+borland\liblink_test-borland-mt-d-1_35\link_test.obj: link_test.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWM -tWR -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -oborland\liblink_test-borland-mt-d-1_35\link_test.obj link_test.cpp
+|
+
+borland\liblink_test-borland-mt-d-1_35 :
+ -@mkdir borland\liblink_test-borland-mt-d-1_35
+
+liblink_test-borland-mt-d-1_35_clean :
+ del borland\liblink_test-borland-mt-d-1_35\*.obj
+ del borland\liblink_test-borland-mt-d-1_35\*.il?
+ del borland\liblink_test-borland-mt-d-1_35\*.csm
+ del borland\liblink_test-borland-mt-d-1_35\*.tds
+
+borland\liblink_test-borland-mt-d-1_35.lib : borland\liblink_test-borland-mt-d-1_35\link_test.obj
+ tlib @&&|
+/P128 /C /u /a $(XSFLAGS) "borland\liblink_test-borland-mt-d-1_35.lib" "borland\liblink_test-borland-mt-d-1_35\link_test.obj"
+|
+
+borland\liblink_test-borland-mt-d-1_35.exe : main.cpp borland\liblink_test-borland-mt-d-1_35.lib
+ bcc32 $(INCLUDES) -tWD -tWM -tWR -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -L./borland -e./borland/liblink_test-borland-mt-d-1_35.exe main.cpp
+ echo running test progam borland\liblink_test-borland-mt-d-1_35.exe
+ borland\liblink_test-borland-mt-d-1_35.exe
+
+########################################################
+#
+# section for liblink_test-borland-d-1_35.lib
+#
+########################################################
+borland\liblink_test-borland-d-1_35\link_test.obj: link_test.cpp $(ALL_HEADER)
+ bcc32 @&&|
+-c $(INCLUDES) -tWD -tWR -tWM- -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; $(CXXFLAGS) -oborland\liblink_test-borland-d-1_35\link_test.obj link_test.cpp
+|
+
+borland\liblink_test-borland-d-1_35 :
+ -@mkdir borland\liblink_test-borland-d-1_35
+
+liblink_test-borland-d-1_35_clean :
+ del borland\liblink_test-borland-d-1_35\*.obj
+ del borland\liblink_test-borland-d-1_35\*.il?
+ del borland\liblink_test-borland-d-1_35\*.csm
+ del borland\liblink_test-borland-d-1_35\*.tds
+
+borland\liblink_test-borland-d-1_35.lib : borland\liblink_test-borland-d-1_35\link_test.obj
+ tlib @&&|
+/P128 /C /u /a $(XSFLAGS) "borland\liblink_test-borland-d-1_35.lib" "borland\liblink_test-borland-d-1_35\link_test.obj"
+|
+
+borland\liblink_test-borland-d-1_35.exe : main.cpp borland\liblink_test-borland-d-1_35.lib
+ bcc32 $(INCLUDES) -tWD -tWR -tWM- -DBOOST_REGEX_STATIC_LINK -D_NO_VCL -D_RTLDLL -v -Ve -Vx -w-inl -w-aus -w-rch -w-8012 -w-8057 -w-8037 -DSTRICT; -I$(BCROOT)\include;../../../../ -L$(BCROOT)\lib;$(BCROOT)\lib\release; /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -L./borland -e./borland/liblink_test-borland-d-1_35.exe main.cpp
+ echo running test progam borland\liblink_test-borland-d-1_35.exe
+ borland\liblink_test-borland-d-1_35.exe
+
diff --git a/test/link/common.sh b/test/link/common.sh
new file mode 100644
index 0000000..9725a5c
--- /dev/null
+++ b/test/link/common.sh
@@ -0,0 +1,19 @@
+# copyright John Maddock 2005
+# 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)
+#
+# locate all the header dependencies:
+header=""
+#
+# locate all the source files:
+src=link_test.cpp
+
+boost_version=$(grep 'define.*BOOST_LIB_VERSION' ../../../../boost/version.hpp | sed 's/.*"\([^"]*\)".*/\1/')
+
+
+
+
+
+
+
diff --git a/test/link/link_test.cpp b/test/link/link_test.cpp
new file mode 100644
index 0000000..be80bfc
--- /dev/null
+++ b/test/link/link_test.cpp
@@ -0,0 +1,54 @@
+// (C) Copyright John Maddock 2003.
+// 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.
+
+
+#define BOOST_CONFIG_SOURCE
+
+#include "link_test.hpp"
+#include <iostream>
+#include <iomanip>
+
+bool BOOST_CONFIG_DECL check_options(
+ bool m_dyn_link,
+ bool m_dyn_rtl,
+ bool m_has_threads,
+ bool m_debug,
+ bool m_stlp_debug)
+{
+ if(m_dyn_link != dyn_link)
+ {
+ std::cout << "Dynamic link options do not match" << std::endl;
+ std::cout << "Application setting = " << m_dyn_link << " Library setting = " << dyn_link << std::endl;
+ return false;
+ }
+ if(m_dyn_rtl != dyn_rtl)
+ {
+ std::cout << "Runtime library options do not match" << std::endl;
+ std::cout << "Application setting = " << m_dyn_rtl << " Library setting = " << dyn_rtl << std::endl;
+ return false;
+ }
+ if(m_has_threads != has_threads)
+ {
+ std::cout << "Threading options do not match" << std::endl;
+ std::cout << "Application setting = " << m_has_threads << " Library setting = " << has_threads << std::endl;
+ return false;
+ }
+ if(m_debug != debug)
+ {
+ std::cout << "Debug options do not match" << std::endl;
+ std::cout << "Application setting = " << m_debug << " Library setting = " << debug << std::endl;
+ return false;
+ }
+ if(m_stlp_debug != stl_debug)
+ {
+ std::cout << "STLPort debug options do not match" << std::endl;
+ std::cout << "Application setting = " << m_stlp_debug << " Library setting = " << stl_debug << std::endl;
+ return false;
+ }
+ return true;
+}
+
diff --git a/test/link/link_test.hpp b/test/link/link_test.hpp
new file mode 100644
index 0000000..c95d963
--- /dev/null
+++ b/test/link/link_test.hpp
@@ -0,0 +1,108 @@
+// (C) Copyright John Maddock 2003.
+// 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.
+
+#ifndef BOOST_LINK_TEST_HPP
+#define BOOST_LINK_TEST_HPP
+
+#include <boost/config.hpp>
+
+//
+// set up code to determine our compilers options,
+// we will check that these are the same in the
+// .exe and the .dll:
+//
+#ifdef BOOST_DYN_LINK
+static const bool dyn_link = true;
+#else
+static const bool dyn_link = false;
+#endif
+#if defined(_DLL) || defined(_RTLDLL)
+static const bool dyn_rtl = true;
+#else
+static const bool dyn_rtl = false;
+#endif
+#if defined(BOOST_HAS_THREADS)
+static const bool has_threads = true;
+#else
+static const bool has_threads = false;
+#endif
+#if defined(_DEBUG)
+static const bool debug = true;
+#else
+static const bool debug = false;
+#endif
+#if defined(__STL_DEBUG) || defined(_STLP_DEBUG)
+static const bool stl_debug = true;
+#else
+static const bool stl_debug = false;
+#endif
+
+//
+// set up import and export options:
+//
+#if defined(BOOST_DYN_LINK)
+# ifdef BOOST_CONFIG_SOURCE
+# define BOOST_CONFIG_DECL BOOST_SYMBOL_EXPORT
+# else
+# define BOOST_CONFIG_DECL BOOST_SYMBOL_IMPORT
+# endif
+#endif
+#ifndef BOOST_CONFIG_DECL
+# define BOOST_CONFIG_DECL
+#endif
+
+//
+// define our entry point:
+//
+bool BOOST_CONFIG_DECL check_options(
+ bool m_dyn_link,
+ bool m_dyn_rtl,
+ bool m_has_threads,
+ bool m_debug,
+ bool m_stlp_debug);
+
+//
+// set up automatic linking:
+//
+#if !defined(BOOST_CONFIG_SOURCE) && !defined(BOOST_CONFIG_NO_LIB)
+# define BOOST_LIB_NAME link_test
+# include <boost/config/auto_link.hpp>
+#endif
+
+#ifndef BOOST_NO_CXX11_EXTERN_TEMPLATE
+
+template <class T>
+T test_free_proc(T v)
+{
+ return v;
+}
+
+template <class T>
+struct tester
+{
+ static int test();
+};
+
+template <class T>
+int tester<T>::test()
+{
+ return 0;
+}
+
+#ifdef BOOST_CONFIG_SOURCE
+template BOOST_SYMBOL_EXPORT int test_free_proc<int>(int);
+template BOOST_SYMBOL_EXPORT int tester<int>::test();
+#else
+extern template BOOST_SYMBOL_IMPORT int test_free_proc<int>(int);
+extern template BOOST_SYMBOL_IMPORT int tester<int>::test();
+#endif
+
+#endif // BOOST_NO_CXX11_EXTERN_TEMPLATE
+
+#endif // BOOST_LINK_TEST_HPP
+
+
diff --git a/test/link/main.cpp b/test/link/main.cpp
new file mode 100644
index 0000000..7233560
--- /dev/null
+++ b/test/link/main.cpp
@@ -0,0 +1,19 @@
+// (C) Copyright John Maddock 2003.
+// 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.
+
+#include "link_test.hpp"
+
+int main()
+{
+#ifndef BOOST_NO_CXX11_EXTERN_TEMPLATE
+ test_free_proc<int>(0);
+ tester<int>::test();
+#endif
+ return check_options(dyn_link, dyn_rtl, has_threads, debug, stl_debug) ? 0 : -1;
+}
+
+
diff --git a/test/link/test/Jamfile.v2 b/test/link/test/Jamfile.v2
new file mode 100644
index 0000000..251e525
--- /dev/null
+++ b/test/link/test/Jamfile.v2
@@ -0,0 +1,117 @@
+# copyright John Maddock 2006
+# 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)
+
+import type ;
+
+type.register AUTOLINK_LIB ;
+
+import generators ;
+import "class" : new ;
+
+# This generator creates library using standard generators,
+# and then add <library-path> usage requirements with the
+# path of the created library.
+class autolink-generator : generator
+{
+ import generators ;
+ import "class" ;
+ import property-set ;
+ import path ;
+
+ rule run ( project name ? : property-set : sources + )
+ {
+ local result = [ generators.construct $(project) $(name)
+ : LIB : $(property-set) : $(sources) ] ;
+
+ local targets ;
+ local usage-requirements ;
+
+ if [ class.is-a $(result[1]) : property-set ]
+ {
+ usage-requirements = $(result[1]) ;
+ targets = $(result[2-]) ;
+ }
+ else
+ {
+ usage-requirements = [ property-set.empty ] ;
+ targets = $(result) ;
+ }
+
+ local extra ;
+ local paths ;
+ local pwd = [ path.pwd ] ;
+ for local t in $(targets)
+ {
+ if [ type.is-derived [ $(t).type ] LIB ]
+ {
+ paths += [ path.root [ path.make [ $(t).path ] ] $(pwd) ] ;
+ }
+ }
+ extra += $(paths:G=<library-path>) ;
+ if $(extra)
+ {
+ extra = [ sequence.unique $(extra) ] ;
+ usage-requirements = [ $(usage-requirements).add-raw $(extra) ] ;
+ }
+ return $(usage-requirements) $(targets) ;
+ }
+}
+
+generators.register [
+ new autolink-generator $(__name__).autolink : : AUTOLINK_LIB ] ;
+
+project : requirements -<threading>multi <hardcode-dll-paths>false ;
+
+autolink-lib link_test : ../link_test.cpp
+ : <link>shared:<define>BOOST_DYN_LINK=1
+ :
+ ;
+
+
+explicit 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 <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
+ : : : <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
+ : : : <link>static <runtime-link>static <threading>multi debug : link_test_smd ;
+
+run ../main.cpp link_test
+ : : : <link>static <runtime-link>static <threading>multi release : link_test_smr ;
+
+run ../main.cpp link_test
+ : : : <link>static <runtime-link>shared <threading>multi debug : link_test_dmd ;
+
+run ../main.cpp link_test
+ : : : <link>static <runtime-link>shared <threading>multi release : link_test_dmr ;
+
+run ../main.cpp link_test
+ : : : <link>static <runtime-link>shared <threading>single debug : link_test_dsd ;
+
+run ../main.cpp link_test
+ : : : <link>static <runtime-link>shared <threading>single release : link_test_dsr ;
+
+run ../main.cpp link_test
+ : : : <define>BOOST_DYN_LINK=1 <link>shared <runtime-link>shared <threading>multi debug : link_test_dll_dmd ;
+
+run ../main.cpp link_test
+ : : : <define>BOOST_DYN_LINK=1 <link>shared <runtime-link>shared <threading>multi release : link_test_dll_dmr ;
+
+run ../main.cpp link_test
+ : : : <define>BOOST_DYN_LINK=1 <link>shared <runtime-link>shared <threading>single debug : link_test_dll_dsd ;
+
+run ../main.cpp link_test
+ : : : <define>BOOST_DYN_LINK=1 <link>shared <runtime-link>shared <threading>single release : link_test_dll_dsr ;
+
+
+
+
+
+
+
+
diff --git a/test/link/vc6-stlport.mak b/test/link/vc6-stlport.mak
new file mode 100644
index 0000000..3eb3dc5
--- /dev/null
+++ b/test/link/vc6-stlport.mak
@@ -0,0 +1,292 @@
+# copyright John Maddock 2005
+# 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)
+#
+# auto generated makefile for VC6+STLPort
+#
+# usage:
+# make
+# brings libraries up to date
+# make install
+# brings libraries up to date and copies binaries to your VC6 /lib and /bin directories (recomended)
+#
+
+#
+# Add additional compiler options here:
+#
+CXXFLAGS=
+#
+# Add additional include directories here:
+#
+INCLUDES=
+#
+# add additional linker flags here:
+#
+XLFLAGS=
+#
+# add additional static-library creation flags here:
+#
+XSFLAGS=
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE
+NULL=nul
+!ENDIF
+
+!IF "$(MSVCDIR)" == ""
+!ERROR Variable MSVCDIR not set.
+!ENDIF
+
+!IF "$(STLPORT_PATH)" == ""
+!ERROR Variable STLPORT_PATH not set.
+!ENDIF
+
+
+ALL_HEADER=
+
+all : main_dir liblink_test-vc6-stlport-mt-s-1_35_dir ./vc6-stlport/liblink_test-vc6-stlport-mt-s-1_35.lib ./vc6-stlport/liblink_test-vc6-stlport-mt-s-1_35.exe liblink_test-vc6-stlport-mt-sgd-1_35_dir ./vc6-stlport/liblink_test-vc6-stlport-mt-sgd-1_35.lib ./vc6-stlport/liblink_test-vc6-stlport-mt-sgd-1_35.exe link_test-vc6-stlport-mt-gd-1_35_dir ./vc6-stlport/link_test-vc6-stlport-mt-gd-1_35.lib ./vc6-stlport/link_test-vc6-stlport-mt-gd-1_35.exe link_test-vc6-stlport-mt-1_35_dir ./vc6-stlport/link_test-vc6-stlport-mt-1_35.lib ./vc6-stlport/link_test-vc6-stlport-mt-1_35.exe liblink_test-vc6-stlport-mt-1_35_dir ./vc6-stlport/liblink_test-vc6-stlport-mt-1_35.lib ./vc6-stlport/liblink_test-vc6-stlport-mt-1_35.exe liblink_test-vc6-stlport-mt-gd-1_35_dir ./vc6-stlport/liblink_test-vc6-stlport-mt-gd-1_35.lib ./vc6-stlport/liblink_test-vc6-stlport-mt-gd-1_35.exe link_test-vc6-stlport-mt-pgd-1_35_dir ./vc6-stlport/link_test-vc6-stlport-mt-pgd-1_35.lib ./vc6-stlport/link_test-vc6-stlport-mt-pgd-1_35.exe liblink_test-vc6-stlport-mt-spgd-1_35_dir ./vc6-stlport/liblink_test-vc6-stlport-mt-spgd-1_35.lib ./vc6-stlport/liblink_test-vc6-stlport-mt-spgd-1_35.exe liblink_test-vc6-stlport-mt-pgd-1_35_dir ./vc6-stlport/liblink_test-vc6-stlport-mt-pgd-1_35.lib ./vc6-stlport/liblink_test-vc6-stlport-mt-pgd-1_35.exe
+
+clean : liblink_test-vc6-stlport-mt-s-1_35_clean liblink_test-vc6-stlport-mt-sgd-1_35_clean link_test-vc6-stlport-mt-gd-1_35_clean link_test-vc6-stlport-mt-1_35_clean liblink_test-vc6-stlport-mt-1_35_clean liblink_test-vc6-stlport-mt-gd-1_35_clean link_test-vc6-stlport-mt-pgd-1_35_clean liblink_test-vc6-stlport-mt-spgd-1_35_clean liblink_test-vc6-stlport-mt-pgd-1_35_clean
+
+install : stlport_check all
+ copy vc6-stlport\liblink_test-vc6-stlport-mt-s-1_35.lib "$(MSVCDIR)\lib"
+ copy vc6-stlport\liblink_test-vc6-stlport-mt-sgd-1_35.lib "$(MSVCDIR)\lib"
+ copy vc6-stlport\link_test-vc6-stlport-mt-gd-1_35.lib "$(MSVCDIR)\lib"
+ copy vc6-stlport\link_test-vc6-stlport-mt-gd-1_35.dll "$(MSVCDIR)\bin"
+ copy vc6-stlport\link_test-vc6-stlport-mt-1_35.lib "$(MSVCDIR)\lib"
+ copy vc6-stlport\link_test-vc6-stlport-mt-1_35.dll "$(MSVCDIR)\bin"
+ copy vc6-stlport\liblink_test-vc6-stlport-mt-1_35.lib "$(MSVCDIR)\lib"
+ copy vc6-stlport\liblink_test-vc6-stlport-mt-gd-1_35.lib "$(MSVCDIR)\lib"
+ copy vc6-stlport\link_test-vc6-stlport-mt-pgd-1_35.lib "$(MSVCDIR)\lib"
+ copy vc6-stlport\link_test-vc6-stlport-mt-pgd-1_35.dll "$(MSVCDIR)\bin"
+ copy vc6-stlport\link_test-vc6-stlport-mt-pgd-1_35.pdb "$(MSVCDIR)\lib"
+ copy vc6-stlport\liblink_test-vc6-stlport-mt-spgd-1_35.lib "$(MSVCDIR)\lib"
+ copy vc6-stlport\liblink_test-vc6-stlport-mt-spgd-1_35.pdb "$(MSVCDIR)\lib"
+ copy vc6-stlport\liblink_test-vc6-stlport-mt-pgd-1_35.lib "$(MSVCDIR)\lib"
+ copy vc6-stlport\liblink_test-vc6-stlport-mt-pgd-1_35.pdb "$(MSVCDIR)\lib"
+
+main_dir :
+ @if not exist "vc6-stlport\$(NULL)" mkdir vc6-stlport
+
+stlport_check : $(STLPORT_PATH)\stlport\string
+ echo
+
+
+########################################################
+#
+# section for liblink_test-vc6-stlport-mt-s-1_35.lib
+#
+########################################################
+vc6-stlport/liblink_test-vc6-stlport-mt-s-1_35/link_test.obj: link_test.cpp $(ALL_HEADER)
+ cl /c $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB $(CXXFLAGS) -Y- -Fo./vc6-stlport/liblink_test-vc6-stlport-mt-s-1_35/ -Fdvc6-stlport/liblink_test-vc6-stlport-mt-s-1_35.pdb link_test.cpp
+
+liblink_test-vc6-stlport-mt-s-1_35_dir :
+ @if not exist "vc6-stlport\liblink_test-vc6-stlport-mt-s-1_35\$(NULL)" mkdir vc6-stlport\liblink_test-vc6-stlport-mt-s-1_35
+
+liblink_test-vc6-stlport-mt-s-1_35_clean :
+ del vc6-stlport\liblink_test-vc6-stlport-mt-s-1_35\*.obj
+ del vc6-stlport\liblink_test-vc6-stlport-mt-s-1_35\*.idb
+ del vc6-stlport\liblink_test-vc6-stlport-mt-s-1_35\*.exp
+ del vc6-stlport\liblink_test-vc6-stlport-mt-s-1_35\*.pch
+
+./vc6-stlport/liblink_test-vc6-stlport-mt-s-1_35.lib : vc6-stlport/liblink_test-vc6-stlport-mt-s-1_35/link_test.obj
+ link -lib /nologo /out:vc6-stlport/liblink_test-vc6-stlport-mt-s-1_35.lib $(XSFLAGS) vc6-stlport/liblink_test-vc6-stlport-mt-s-1_35/link_test.obj
+
+./vc6-stlport/liblink_test-vc6-stlport-mt-s-1_35.exe : main.cpp ./vc6-stlport/liblink_test-vc6-stlport-mt-s-1_35.lib
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc6-stlport/liblink_test-vc6-stlport-mt-s-1_35.exe main.cpp /link /LIBPATH:./vc6-stlport
+ vc6-stlport\liblink_test-vc6-stlport-mt-s-1_35.exe
+
+########################################################
+#
+# section for liblink_test-vc6-stlport-mt-sgd-1_35.lib
+#
+########################################################
+vc6-stlport/liblink_test-vc6-stlport-mt-sgd-1_35/link_test.obj: link_test.cpp $(ALL_HEADER)
+ cl /c $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX $(CXXFLAGS) -Y- -Fo./vc6-stlport/liblink_test-vc6-stlport-mt-sgd-1_35/ -Fdvc6-stlport/liblink_test-vc6-stlport-mt-sgd-1_35.pdb link_test.cpp
+
+liblink_test-vc6-stlport-mt-sgd-1_35_dir :
+ @if not exist "vc6-stlport\liblink_test-vc6-stlport-mt-sgd-1_35\$(NULL)" mkdir vc6-stlport\liblink_test-vc6-stlport-mt-sgd-1_35
+
+liblink_test-vc6-stlport-mt-sgd-1_35_clean :
+ del vc6-stlport\liblink_test-vc6-stlport-mt-sgd-1_35\*.obj
+ del vc6-stlport\liblink_test-vc6-stlport-mt-sgd-1_35\*.idb
+ del vc6-stlport\liblink_test-vc6-stlport-mt-sgd-1_35\*.exp
+ del vc6-stlport\liblink_test-vc6-stlport-mt-sgd-1_35\*.pch
+
+./vc6-stlport/liblink_test-vc6-stlport-mt-sgd-1_35.lib : vc6-stlport/liblink_test-vc6-stlport-mt-sgd-1_35/link_test.obj
+ link -lib /nologo /out:vc6-stlport/liblink_test-vc6-stlport-mt-sgd-1_35.lib $(XSFLAGS) vc6-stlport/liblink_test-vc6-stlport-mt-sgd-1_35/link_test.obj
+
+./vc6-stlport/liblink_test-vc6-stlport-mt-sgd-1_35.exe : main.cpp ./vc6-stlport/liblink_test-vc6-stlport-mt-sgd-1_35.lib
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc6-stlport/liblink_test-vc6-stlport-mt-sgd-1_35.exe main.cpp /link /LIBPATH:./vc6-stlport
+ vc6-stlport\liblink_test-vc6-stlport-mt-sgd-1_35.exe
+
+########################################################
+#
+# section for link_test-vc6-stlport-mt-gd-1_35.lib
+#
+########################################################
+vc6-stlport/link_test-vc6-stlport-mt-gd-1_35/link_test.obj: link_test.cpp $(ALL_HEADER)
+ cl /c $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_DYN_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX $(CXXFLAGS) -Y- -Fo./vc6-stlport/link_test-vc6-stlport-mt-gd-1_35/ -Fdvc6-stlport/link_test-vc6-stlport-mt-gd-1_35.pdb link_test.cpp
+
+link_test-vc6-stlport-mt-gd-1_35_dir :
+ @if not exist "vc6-stlport\link_test-vc6-stlport-mt-gd-1_35\$(NULL)" mkdir vc6-stlport\link_test-vc6-stlport-mt-gd-1_35
+
+link_test-vc6-stlport-mt-gd-1_35_clean :
+ del vc6-stlport\link_test-vc6-stlport-mt-gd-1_35\*.obj
+ del vc6-stlport\link_test-vc6-stlport-mt-gd-1_35\*.idb
+ del vc6-stlport\link_test-vc6-stlport-mt-gd-1_35\*.exp
+ del vc6-stlport\link_test-vc6-stlport-mt-gd-1_35\*.pch
+
+./vc6-stlport/link_test-vc6-stlport-mt-gd-1_35.lib : vc6-stlport/link_test-vc6-stlport-mt-gd-1_35/link_test.obj
+ link kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /pdb:"vc6-stlport/link_test-vc6-stlport-mt-gd-1_35.pdb" /debug /machine:I386 /out:"vc6-stlport/link_test-vc6-stlport-mt-gd-1_35.dll" /implib:"vc6-stlport/link_test-vc6-stlport-mt-gd-1_35.lib" /LIBPATH:$(STLPORT_PATH)\lib $(XLFLAGS) vc6-stlport/link_test-vc6-stlport-mt-gd-1_35/link_test.obj
+
+./vc6-stlport/link_test-vc6-stlport-mt-gd-1_35.exe : main.cpp ./vc6-stlport/link_test-vc6-stlport-mt-gd-1_35.lib
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_DYN_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc6-stlport/link_test-vc6-stlport-mt-gd-1_35.exe main.cpp /link /LIBPATH:./vc6-stlport
+ vc6-stlport\link_test-vc6-stlport-mt-gd-1_35.exe
+
+########################################################
+#
+# section for link_test-vc6-stlport-mt-1_35.lib
+#
+########################################################
+vc6-stlport/link_test-vc6-stlport-mt-1_35/link_test.obj: link_test.cpp $(ALL_HEADER)
+ cl /c $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /I$(STLPORT_PATH)\stlport /Gy /I..\..\..\..\ /DBOOST_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL $(CXXFLAGS) -Y- -Fo./vc6-stlport/link_test-vc6-stlport-mt-1_35/ -Fdvc6-stlport/link_test-vc6-stlport-mt-1_35.pdb link_test.cpp
+
+link_test-vc6-stlport-mt-1_35_dir :
+ @if not exist "vc6-stlport\link_test-vc6-stlport-mt-1_35\$(NULL)" mkdir vc6-stlport\link_test-vc6-stlport-mt-1_35
+
+link_test-vc6-stlport-mt-1_35_clean :
+ del vc6-stlport\link_test-vc6-stlport-mt-1_35\*.obj
+ del vc6-stlport\link_test-vc6-stlport-mt-1_35\*.idb
+ del vc6-stlport\link_test-vc6-stlport-mt-1_35\*.exp
+ del vc6-stlport\link_test-vc6-stlport-mt-1_35\*.pch
+
+./vc6-stlport/link_test-vc6-stlport-mt-1_35.lib : vc6-stlport/link_test-vc6-stlport-mt-1_35/link_test.obj
+ link kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /pdb:"vc6-stlport/link_test-vc6-stlport-mt-1_35.pdb" /debug /machine:I386 /out:"vc6-stlport/link_test-vc6-stlport-mt-1_35.dll" /implib:"vc6-stlport/link_test-vc6-stlport-mt-1_35.lib" /LIBPATH:$(STLPORT_PATH)\lib $(XLFLAGS) vc6-stlport/link_test-vc6-stlport-mt-1_35/link_test.obj
+
+./vc6-stlport/link_test-vc6-stlport-mt-1_35.exe : main.cpp ./vc6-stlport/link_test-vc6-stlport-mt-1_35.lib
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /I$(STLPORT_PATH)\stlport /Gy /I..\..\..\..\ /DBOOST_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc6-stlport/link_test-vc6-stlport-mt-1_35.exe main.cpp /link /LIBPATH:./vc6-stlport
+ vc6-stlport\link_test-vc6-stlport-mt-1_35.exe
+
+########################################################
+#
+# section for liblink_test-vc6-stlport-mt-1_35.lib
+#
+########################################################
+vc6-stlport/liblink_test-vc6-stlport-mt-1_35/link_test.obj: link_test.cpp $(ALL_HEADER)
+ cl /c $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL $(CXXFLAGS) -Y- -Fo./vc6-stlport/liblink_test-vc6-stlport-mt-1_35/ -Fdvc6-stlport/liblink_test-vc6-stlport-mt-1_35.pdb link_test.cpp
+
+liblink_test-vc6-stlport-mt-1_35_dir :
+ @if not exist "vc6-stlport\liblink_test-vc6-stlport-mt-1_35\$(NULL)" mkdir vc6-stlport\liblink_test-vc6-stlport-mt-1_35
+
+liblink_test-vc6-stlport-mt-1_35_clean :
+ del vc6-stlport\liblink_test-vc6-stlport-mt-1_35\*.obj
+ del vc6-stlport\liblink_test-vc6-stlport-mt-1_35\*.idb
+ del vc6-stlport\liblink_test-vc6-stlport-mt-1_35\*.exp
+ del vc6-stlport\liblink_test-vc6-stlport-mt-1_35\*.pch
+
+./vc6-stlport/liblink_test-vc6-stlport-mt-1_35.lib : vc6-stlport/liblink_test-vc6-stlport-mt-1_35/link_test.obj
+ link -lib /nologo /out:vc6-stlport/liblink_test-vc6-stlport-mt-1_35.lib $(XSFLAGS) vc6-stlport/liblink_test-vc6-stlport-mt-1_35/link_test.obj
+
+./vc6-stlport/liblink_test-vc6-stlport-mt-1_35.exe : main.cpp ./vc6-stlport/liblink_test-vc6-stlport-mt-1_35.lib
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc6-stlport/liblink_test-vc6-stlport-mt-1_35.exe main.cpp /link /LIBPATH:./vc6-stlport
+ vc6-stlport\liblink_test-vc6-stlport-mt-1_35.exe
+
+########################################################
+#
+# section for liblink_test-vc6-stlport-mt-gd-1_35.lib
+#
+########################################################
+vc6-stlport/liblink_test-vc6-stlport-mt-gd-1_35/link_test.obj: link_test.cpp $(ALL_HEADER)
+ cl /c $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX $(CXXFLAGS) -Y- -Fo./vc6-stlport/liblink_test-vc6-stlport-mt-gd-1_35/ -Fdvc6-stlport/liblink_test-vc6-stlport-mt-gd-1_35.pdb link_test.cpp
+
+liblink_test-vc6-stlport-mt-gd-1_35_dir :
+ @if not exist "vc6-stlport\liblink_test-vc6-stlport-mt-gd-1_35\$(NULL)" mkdir vc6-stlport\liblink_test-vc6-stlport-mt-gd-1_35
+
+liblink_test-vc6-stlport-mt-gd-1_35_clean :
+ del vc6-stlport\liblink_test-vc6-stlport-mt-gd-1_35\*.obj
+ del vc6-stlport\liblink_test-vc6-stlport-mt-gd-1_35\*.idb
+ del vc6-stlport\liblink_test-vc6-stlport-mt-gd-1_35\*.exp
+ del vc6-stlport\liblink_test-vc6-stlport-mt-gd-1_35\*.pch
+
+./vc6-stlport/liblink_test-vc6-stlport-mt-gd-1_35.lib : vc6-stlport/liblink_test-vc6-stlport-mt-gd-1_35/link_test.obj
+ link -lib /nologo /out:vc6-stlport/liblink_test-vc6-stlport-mt-gd-1_35.lib $(XSFLAGS) vc6-stlport/liblink_test-vc6-stlport-mt-gd-1_35/link_test.obj
+
+./vc6-stlport/liblink_test-vc6-stlport-mt-gd-1_35.exe : main.cpp ./vc6-stlport/liblink_test-vc6-stlport-mt-gd-1_35.lib
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc6-stlport/liblink_test-vc6-stlport-mt-gd-1_35.exe main.cpp /link /LIBPATH:./vc6-stlport
+ vc6-stlport\liblink_test-vc6-stlport-mt-gd-1_35.exe
+
+########################################################
+#
+# section for link_test-vc6-stlport-mt-pgd-1_35.lib
+#
+########################################################
+vc6-stlport/link_test-vc6-stlport-mt-pgd-1_35/link_test.obj: link_test.cpp $(ALL_HEADER)
+ cl /c $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX $(CXXFLAGS) -Y- -Fo./vc6-stlport/link_test-vc6-stlport-mt-pgd-1_35/ -Fdvc6-stlport/link_test-vc6-stlport-mt-pgd-1_35.pdb link_test.cpp
+
+link_test-vc6-stlport-mt-pgd-1_35_dir :
+ @if not exist "vc6-stlport\link_test-vc6-stlport-mt-pgd-1_35\$(NULL)" mkdir vc6-stlport\link_test-vc6-stlport-mt-pgd-1_35
+
+link_test-vc6-stlport-mt-pgd-1_35_clean :
+ del vc6-stlport\link_test-vc6-stlport-mt-pgd-1_35\*.obj
+ del vc6-stlport\link_test-vc6-stlport-mt-pgd-1_35\*.idb
+ del vc6-stlport\link_test-vc6-stlport-mt-pgd-1_35\*.exp
+ del vc6-stlport\link_test-vc6-stlport-mt-pgd-1_35\*.pch
+
+./vc6-stlport/link_test-vc6-stlport-mt-pgd-1_35.lib : vc6-stlport/link_test-vc6-stlport-mt-pgd-1_35/link_test.obj
+ link kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /pdb:"vc6-stlport/link_test-vc6-stlport-mt-pgd-1_35.pdb" /debug /machine:I386 /out:"vc6-stlport/link_test-vc6-stlport-mt-pgd-1_35.dll" /implib:"vc6-stlport/link_test-vc6-stlport-mt-pgd-1_35.lib" /LIBPATH:$(STLPORT_PATH)\lib $(XLFLAGS) vc6-stlport/link_test-vc6-stlport-mt-pgd-1_35/link_test.obj
+
+./vc6-stlport/link_test-vc6-stlport-mt-pgd-1_35.exe : main.cpp ./vc6-stlport/link_test-vc6-stlport-mt-pgd-1_35.lib
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc6-stlport/link_test-vc6-stlport-mt-pgd-1_35.exe main.cpp /link /LIBPATH:./vc6-stlport
+ vc6-stlport\link_test-vc6-stlport-mt-pgd-1_35.exe
+
+########################################################
+#
+# section for liblink_test-vc6-stlport-mt-spgd-1_35.lib
+#
+########################################################
+vc6-stlport/liblink_test-vc6-stlport-mt-spgd-1_35/link_test.obj: link_test.cpp $(ALL_HEADER)
+ cl /c $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX $(CXXFLAGS) -Y- -Fo./vc6-stlport/liblink_test-vc6-stlport-mt-spgd-1_35/ -Fdvc6-stlport/liblink_test-vc6-stlport-mt-spgd-1_35.pdb link_test.cpp
+
+liblink_test-vc6-stlport-mt-spgd-1_35_dir :
+ @if not exist "vc6-stlport\liblink_test-vc6-stlport-mt-spgd-1_35\$(NULL)" mkdir vc6-stlport\liblink_test-vc6-stlport-mt-spgd-1_35
+
+liblink_test-vc6-stlport-mt-spgd-1_35_clean :
+ del vc6-stlport\liblink_test-vc6-stlport-mt-spgd-1_35\*.obj
+ del vc6-stlport\liblink_test-vc6-stlport-mt-spgd-1_35\*.idb
+ del vc6-stlport\liblink_test-vc6-stlport-mt-spgd-1_35\*.exp
+ del vc6-stlport\liblink_test-vc6-stlport-mt-spgd-1_35\*.pch
+
+./vc6-stlport/liblink_test-vc6-stlport-mt-spgd-1_35.lib : vc6-stlport/liblink_test-vc6-stlport-mt-spgd-1_35/link_test.obj
+ link -lib /nologo /out:vc6-stlport/liblink_test-vc6-stlport-mt-spgd-1_35.lib $(XSFLAGS) vc6-stlport/liblink_test-vc6-stlport-mt-spgd-1_35/link_test.obj
+
+./vc6-stlport/liblink_test-vc6-stlport-mt-spgd-1_35.exe : main.cpp ./vc6-stlport/liblink_test-vc6-stlport-mt-spgd-1_35.lib
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc6-stlport/liblink_test-vc6-stlport-mt-spgd-1_35.exe main.cpp /link /LIBPATH:./vc6-stlport
+ vc6-stlport\liblink_test-vc6-stlport-mt-spgd-1_35.exe
+
+########################################################
+#
+# section for liblink_test-vc6-stlport-mt-pgd-1_35.lib
+#
+########################################################
+vc6-stlport/liblink_test-vc6-stlport-mt-pgd-1_35/link_test.obj: link_test.cpp $(ALL_HEADER)
+ cl /c $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX $(CXXFLAGS) -Y- -Fo./vc6-stlport/liblink_test-vc6-stlport-mt-pgd-1_35/ -Fdvc6-stlport/liblink_test-vc6-stlport-mt-pgd-1_35.pdb link_test.cpp
+
+liblink_test-vc6-stlport-mt-pgd-1_35_dir :
+ @if not exist "vc6-stlport\liblink_test-vc6-stlport-mt-pgd-1_35\$(NULL)" mkdir vc6-stlport\liblink_test-vc6-stlport-mt-pgd-1_35
+
+liblink_test-vc6-stlport-mt-pgd-1_35_clean :
+ del vc6-stlport\liblink_test-vc6-stlport-mt-pgd-1_35\*.obj
+ del vc6-stlport\liblink_test-vc6-stlport-mt-pgd-1_35\*.idb
+ del vc6-stlport\liblink_test-vc6-stlport-mt-pgd-1_35\*.exp
+ del vc6-stlport\liblink_test-vc6-stlport-mt-pgd-1_35\*.pch
+
+./vc6-stlport/liblink_test-vc6-stlport-mt-pgd-1_35.lib : vc6-stlport/liblink_test-vc6-stlport-mt-pgd-1_35/link_test.obj
+ link -lib /nologo /out:vc6-stlport/liblink_test-vc6-stlport-mt-pgd-1_35.lib $(XSFLAGS) vc6-stlport/liblink_test-vc6-stlport-mt-pgd-1_35/link_test.obj
+
+./vc6-stlport/liblink_test-vc6-stlport-mt-pgd-1_35.exe : main.cpp ./vc6-stlport/liblink_test-vc6-stlport-mt-pgd-1_35.lib
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc6-stlport/liblink_test-vc6-stlport-mt-pgd-1_35.exe main.cpp /link /LIBPATH:./vc6-stlport
+ vc6-stlport\liblink_test-vc6-stlport-mt-pgd-1_35.exe
+
diff --git a/test/link/vc6.mak b/test/link/vc6.mak
new file mode 100644
index 0000000..b5a7798
--- /dev/null
+++ b/test/link/vc6.mak
@@ -0,0 +1,260 @@
+# copyright John Maddock 2005
+# 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)
+#
+# auto generated makefile for VC6 compiler
+#
+# usage:
+# make
+# brings libraries up to date
+# make install
+# brings libraries up to date and copies binaries to your VC6 /lib and /bin directories (recomended)
+#
+
+#
+# Add additional compiler options here:
+#
+CXXFLAGS=
+#
+# Add additional include directories here:
+#
+INCLUDES=
+#
+# add additional linker flags here:
+#
+XLFLAGS=
+#
+# add additional static-library creation flags here:
+#
+XSFLAGS=
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE
+NULL=nul
+!ENDIF
+
+!IF "$(MSVCDIR)" == ""
+!ERROR Variable MSVCDIR not set.
+!ENDIF
+
+
+ALL_HEADER=
+
+all : main_dir liblink_test-vc6-s-1_35_dir ./vc6/liblink_test-vc6-s-1_35.lib ./vc6/liblink_test-vc6-s-1_35.exe liblink_test-vc6-mt-s-1_35_dir ./vc6/liblink_test-vc6-mt-s-1_35.lib ./vc6/liblink_test-vc6-mt-s-1_35.exe liblink_test-vc6-sgd-1_35_dir ./vc6/liblink_test-vc6-sgd-1_35.lib ./vc6/liblink_test-vc6-sgd-1_35.exe liblink_test-vc6-mt-sgd-1_35_dir ./vc6/liblink_test-vc6-mt-sgd-1_35.lib ./vc6/liblink_test-vc6-mt-sgd-1_35.exe link_test-vc6-mt-gd-1_35_dir ./vc6/link_test-vc6-mt-gd-1_35.lib ./vc6/link_test-vc6-mt-gd-1_35.exe link_test-vc6-mt-1_35_dir ./vc6/link_test-vc6-mt-1_35.lib ./vc6/link_test-vc6-mt-1_35.exe liblink_test-vc6-mt-1_35_dir ./vc6/liblink_test-vc6-mt-1_35.lib ./vc6/liblink_test-vc6-mt-1_35.exe liblink_test-vc6-mt-gd-1_35_dir ./vc6/liblink_test-vc6-mt-gd-1_35.lib ./vc6/liblink_test-vc6-mt-gd-1_35.exe
+
+clean : liblink_test-vc6-s-1_35_clean liblink_test-vc6-mt-s-1_35_clean liblink_test-vc6-sgd-1_35_clean liblink_test-vc6-mt-sgd-1_35_clean link_test-vc6-mt-gd-1_35_clean link_test-vc6-mt-1_35_clean liblink_test-vc6-mt-1_35_clean liblink_test-vc6-mt-gd-1_35_clean
+
+install : all
+ copy vc6\liblink_test-vc6-s-1_35.lib "$(MSVCDIR)\lib"
+ copy vc6\liblink_test-vc6-mt-s-1_35.lib "$(MSVCDIR)\lib"
+ copy vc6\liblink_test-vc6-sgd-1_35.lib "$(MSVCDIR)\lib"
+ copy vc6\liblink_test-vc6-sgd-1_35.pdb "$(MSVCDIR)\lib"
+ copy vc6\liblink_test-vc6-mt-sgd-1_35.lib "$(MSVCDIR)\lib"
+ copy vc6\liblink_test-vc6-mt-sgd-1_35.pdb "$(MSVCDIR)\lib"
+ copy vc6\link_test-vc6-mt-gd-1_35.lib "$(MSVCDIR)\lib"
+ copy vc6\link_test-vc6-mt-gd-1_35.dll "$(MSVCDIR)\bin"
+ copy vc6\link_test-vc6-mt-gd-1_35.pdb "$(MSVCDIR)\lib"
+ copy vc6\link_test-vc6-mt-1_35.lib "$(MSVCDIR)\lib"
+ copy vc6\link_test-vc6-mt-1_35.dll "$(MSVCDIR)\bin"
+ copy vc6\liblink_test-vc6-mt-1_35.lib "$(MSVCDIR)\lib"
+ copy vc6\liblink_test-vc6-mt-gd-1_35.lib "$(MSVCDIR)\lib"
+ copy vc6\liblink_test-vc6-mt-gd-1_35.pdb "$(MSVCDIR)\lib"
+
+main_dir :
+ @if not exist "vc6\$(NULL)" mkdir vc6
+
+
+########################################################
+#
+# section for liblink_test-vc6-s-1_35.lib
+#
+########################################################
+vc6/liblink_test-vc6-s-1_35/link_test.obj: link_test.cpp $(ALL_HEADER)
+ cl /c $(INCLUDES) /nologo /ML /W3 /GX /O2 /GB /GF /Gy /I..\..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD $(CXXFLAGS) -Y- -Fo./vc6/liblink_test-vc6-s-1_35/ -Fdvc6/liblink_test-vc6-s-1_35.pdb link_test.cpp
+
+liblink_test-vc6-s-1_35_dir :
+ @if not exist "vc6\liblink_test-vc6-s-1_35\$(NULL)" mkdir vc6\liblink_test-vc6-s-1_35
+
+liblink_test-vc6-s-1_35_clean :
+ del vc6\liblink_test-vc6-s-1_35\*.obj
+ del vc6\liblink_test-vc6-s-1_35\*.idb
+ del vc6\liblink_test-vc6-s-1_35\*.exp
+ del vc6\liblink_test-vc6-s-1_35\*.pch
+
+./vc6/liblink_test-vc6-s-1_35.lib : vc6/liblink_test-vc6-s-1_35/link_test.obj
+ link -lib /nologo /out:vc6/liblink_test-vc6-s-1_35.lib $(XSFLAGS) vc6/liblink_test-vc6-s-1_35/link_test.obj
+
+./vc6/liblink_test-vc6-s-1_35.exe : main.cpp ./vc6/liblink_test-vc6-s-1_35.lib
+ cl $(INCLUDES) /nologo /ML /W3 /GX /O2 /GB /GF /Gy /I..\..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc6/liblink_test-vc6-s-1_35.exe main.cpp /link /LIBPATH:./vc6
+ vc6\liblink_test-vc6-s-1_35.exe
+
+########################################################
+#
+# section for liblink_test-vc6-mt-s-1_35.lib
+#
+########################################################
+vc6/liblink_test-vc6-mt-s-1_35/link_test.obj: link_test.cpp $(ALL_HEADER)
+ cl /c $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I..\..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD $(CXXFLAGS) -Y- -Fo./vc6/liblink_test-vc6-mt-s-1_35/ -Fdvc6/liblink_test-vc6-mt-s-1_35.pdb link_test.cpp
+
+liblink_test-vc6-mt-s-1_35_dir :
+ @if not exist "vc6\liblink_test-vc6-mt-s-1_35\$(NULL)" mkdir vc6\liblink_test-vc6-mt-s-1_35
+
+liblink_test-vc6-mt-s-1_35_clean :
+ del vc6\liblink_test-vc6-mt-s-1_35\*.obj
+ del vc6\liblink_test-vc6-mt-s-1_35\*.idb
+ del vc6\liblink_test-vc6-mt-s-1_35\*.exp
+ del vc6\liblink_test-vc6-mt-s-1_35\*.pch
+
+./vc6/liblink_test-vc6-mt-s-1_35.lib : vc6/liblink_test-vc6-mt-s-1_35/link_test.obj
+ link -lib /nologo /out:vc6/liblink_test-vc6-mt-s-1_35.lib $(XSFLAGS) vc6/liblink_test-vc6-mt-s-1_35/link_test.obj
+
+./vc6/liblink_test-vc6-mt-s-1_35.exe : main.cpp ./vc6/liblink_test-vc6-mt-s-1_35.lib
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I..\..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc6/liblink_test-vc6-mt-s-1_35.exe main.cpp /link /LIBPATH:./vc6
+ vc6\liblink_test-vc6-mt-s-1_35.exe
+
+########################################################
+#
+# section for liblink_test-vc6-sgd-1_35.lib
+#
+########################################################
+vc6/liblink_test-vc6-sgd-1_35/link_test.obj: link_test.cpp $(ALL_HEADER)
+ cl /c $(INCLUDES) /nologo /MLd /W3 /Gm /GX /Zi /Od /I..\..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD /GX $(CXXFLAGS) -Y- -Fo./vc6/liblink_test-vc6-sgd-1_35/ -Fdvc6/liblink_test-vc6-sgd-1_35.pdb link_test.cpp
+
+liblink_test-vc6-sgd-1_35_dir :
+ @if not exist "vc6\liblink_test-vc6-sgd-1_35\$(NULL)" mkdir vc6\liblink_test-vc6-sgd-1_35
+
+liblink_test-vc6-sgd-1_35_clean :
+ del vc6\liblink_test-vc6-sgd-1_35\*.obj
+ del vc6\liblink_test-vc6-sgd-1_35\*.idb
+ del vc6\liblink_test-vc6-sgd-1_35\*.exp
+ del vc6\liblink_test-vc6-sgd-1_35\*.pch
+
+./vc6/liblink_test-vc6-sgd-1_35.lib : vc6/liblink_test-vc6-sgd-1_35/link_test.obj
+ link -lib /nologo /out:vc6/liblink_test-vc6-sgd-1_35.lib $(XSFLAGS) vc6/liblink_test-vc6-sgd-1_35/link_test.obj
+
+./vc6/liblink_test-vc6-sgd-1_35.exe : main.cpp ./vc6/liblink_test-vc6-sgd-1_35.lib
+ cl $(INCLUDES) /nologo /MLd /W3 /Gm /GX /Zi /Od /I..\..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD /GX /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc6/liblink_test-vc6-sgd-1_35.exe main.cpp /link /LIBPATH:./vc6
+ vc6\liblink_test-vc6-sgd-1_35.exe
+
+########################################################
+#
+# section for liblink_test-vc6-mt-sgd-1_35.lib
+#
+########################################################
+vc6/liblink_test-vc6-mt-sgd-1_35/link_test.obj: link_test.cpp $(ALL_HEADER)
+ cl /c $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I..\..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /GX $(CXXFLAGS) -Y- -Fo./vc6/liblink_test-vc6-mt-sgd-1_35/ -Fdvc6/liblink_test-vc6-mt-sgd-1_35.pdb link_test.cpp
+
+liblink_test-vc6-mt-sgd-1_35_dir :
+ @if not exist "vc6\liblink_test-vc6-mt-sgd-1_35\$(NULL)" mkdir vc6\liblink_test-vc6-mt-sgd-1_35
+
+liblink_test-vc6-mt-sgd-1_35_clean :
+ del vc6\liblink_test-vc6-mt-sgd-1_35\*.obj
+ del vc6\liblink_test-vc6-mt-sgd-1_35\*.idb
+ del vc6\liblink_test-vc6-mt-sgd-1_35\*.exp
+ del vc6\liblink_test-vc6-mt-sgd-1_35\*.pch
+
+./vc6/liblink_test-vc6-mt-sgd-1_35.lib : vc6/liblink_test-vc6-mt-sgd-1_35/link_test.obj
+ link -lib /nologo /out:vc6/liblink_test-vc6-mt-sgd-1_35.lib $(XSFLAGS) vc6/liblink_test-vc6-mt-sgd-1_35/link_test.obj
+
+./vc6/liblink_test-vc6-mt-sgd-1_35.exe : main.cpp ./vc6/liblink_test-vc6-mt-sgd-1_35.lib
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I..\..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /GX /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc6/liblink_test-vc6-mt-sgd-1_35.exe main.cpp /link /LIBPATH:./vc6
+ vc6\liblink_test-vc6-mt-sgd-1_35.exe
+
+########################################################
+#
+# section for link_test-vc6-mt-gd-1_35.lib
+#
+########################################################
+vc6/link_test-vc6-mt-gd-1_35/link_test.obj: link_test.cpp $(ALL_HEADER)
+ cl /c $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I..\..\..\..\ /D_DEBUG /DBOOST_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX $(CXXFLAGS) -Y- -Fo./vc6/link_test-vc6-mt-gd-1_35/ -Fdvc6/link_test-vc6-mt-gd-1_35.pdb link_test.cpp
+
+link_test-vc6-mt-gd-1_35_dir :
+ @if not exist "vc6\link_test-vc6-mt-gd-1_35\$(NULL)" mkdir vc6\link_test-vc6-mt-gd-1_35
+
+link_test-vc6-mt-gd-1_35_clean :
+ del vc6\link_test-vc6-mt-gd-1_35\*.obj
+ del vc6\link_test-vc6-mt-gd-1_35\*.idb
+ del vc6\link_test-vc6-mt-gd-1_35\*.exp
+ del vc6\link_test-vc6-mt-gd-1_35\*.pch
+
+./vc6/link_test-vc6-mt-gd-1_35.lib : vc6/link_test-vc6-mt-gd-1_35/link_test.obj
+ link kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /pdb:"vc6/link_test-vc6-mt-gd-1_35.pdb" /debug /machine:I386 /out:"vc6/link_test-vc6-mt-gd-1_35.dll" /implib:"vc6/link_test-vc6-mt-gd-1_35.lib" /LIBPATH:$(STLPORT_PATH)\lib $(XLFLAGS) vc6/link_test-vc6-mt-gd-1_35/link_test.obj
+
+./vc6/link_test-vc6-mt-gd-1_35.exe : main.cpp ./vc6/link_test-vc6-mt-gd-1_35.lib
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I..\..\..\..\ /D_DEBUG /DBOOST_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc6/link_test-vc6-mt-gd-1_35.exe main.cpp /link /LIBPATH:./vc6
+ vc6\link_test-vc6-mt-gd-1_35.exe
+
+########################################################
+#
+# section for link_test-vc6-mt-1_35.lib
+#
+########################################################
+vc6/link_test-vc6-mt-1_35/link_test.obj: link_test.cpp $(ALL_HEADER)
+ cl /c $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I..\..\..\..\ /DBOOST_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD $(CXXFLAGS) -Y- -Fo./vc6/link_test-vc6-mt-1_35/ -Fdvc6/link_test-vc6-mt-1_35.pdb link_test.cpp
+
+link_test-vc6-mt-1_35_dir :
+ @if not exist "vc6\link_test-vc6-mt-1_35\$(NULL)" mkdir vc6\link_test-vc6-mt-1_35
+
+link_test-vc6-mt-1_35_clean :
+ del vc6\link_test-vc6-mt-1_35\*.obj
+ del vc6\link_test-vc6-mt-1_35\*.idb
+ del vc6\link_test-vc6-mt-1_35\*.exp
+ del vc6\link_test-vc6-mt-1_35\*.pch
+
+./vc6/link_test-vc6-mt-1_35.lib : vc6/link_test-vc6-mt-1_35/link_test.obj
+ link kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /pdb:"vc6/link_test-vc6-mt-1_35.pdb" /debug /machine:I386 /out:"vc6/link_test-vc6-mt-1_35.dll" /implib:"vc6/link_test-vc6-mt-1_35.lib" /LIBPATH:$(STLPORT_PATH)\lib $(XLFLAGS) vc6/link_test-vc6-mt-1_35/link_test.obj
+
+./vc6/link_test-vc6-mt-1_35.exe : main.cpp ./vc6/link_test-vc6-mt-1_35.lib
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I..\..\..\..\ /DBOOST_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc6/link_test-vc6-mt-1_35.exe main.cpp /link /LIBPATH:./vc6
+ vc6\link_test-vc6-mt-1_35.exe
+
+########################################################
+#
+# section for liblink_test-vc6-mt-1_35.lib
+#
+########################################################
+vc6/liblink_test-vc6-mt-1_35/link_test.obj: link_test.cpp $(ALL_HEADER)
+ cl /c $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD $(CXXFLAGS) -Y- -Fo./vc6/liblink_test-vc6-mt-1_35/ -Fdvc6/liblink_test-vc6-mt-1_35.pdb link_test.cpp
+
+liblink_test-vc6-mt-1_35_dir :
+ @if not exist "vc6\liblink_test-vc6-mt-1_35\$(NULL)" mkdir vc6\liblink_test-vc6-mt-1_35
+
+liblink_test-vc6-mt-1_35_clean :
+ del vc6\liblink_test-vc6-mt-1_35\*.obj
+ del vc6\liblink_test-vc6-mt-1_35\*.idb
+ del vc6\liblink_test-vc6-mt-1_35\*.exp
+ del vc6\liblink_test-vc6-mt-1_35\*.pch
+
+./vc6/liblink_test-vc6-mt-1_35.lib : vc6/liblink_test-vc6-mt-1_35/link_test.obj
+ link -lib /nologo /out:vc6/liblink_test-vc6-mt-1_35.lib $(XSFLAGS) vc6/liblink_test-vc6-mt-1_35/link_test.obj
+
+./vc6/liblink_test-vc6-mt-1_35.exe : main.cpp ./vc6/liblink_test-vc6-mt-1_35.lib
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc6/liblink_test-vc6-mt-1_35.exe main.cpp /link /LIBPATH:./vc6
+ vc6\liblink_test-vc6-mt-1_35.exe
+
+########################################################
+#
+# section for liblink_test-vc6-mt-gd-1_35.lib
+#
+########################################################
+vc6/liblink_test-vc6-mt-gd-1_35/link_test.obj: link_test.cpp $(ALL_HEADER)
+ cl /c $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX $(CXXFLAGS) -Y- -Fo./vc6/liblink_test-vc6-mt-gd-1_35/ -Fdvc6/liblink_test-vc6-mt-gd-1_35.pdb link_test.cpp
+
+liblink_test-vc6-mt-gd-1_35_dir :
+ @if not exist "vc6\liblink_test-vc6-mt-gd-1_35\$(NULL)" mkdir vc6\liblink_test-vc6-mt-gd-1_35
+
+liblink_test-vc6-mt-gd-1_35_clean :
+ del vc6\liblink_test-vc6-mt-gd-1_35\*.obj
+ del vc6\liblink_test-vc6-mt-gd-1_35\*.idb
+ del vc6\liblink_test-vc6-mt-gd-1_35\*.exp
+ del vc6\liblink_test-vc6-mt-gd-1_35\*.pch
+
+./vc6/liblink_test-vc6-mt-gd-1_35.lib : vc6/liblink_test-vc6-mt-gd-1_35/link_test.obj
+ link -lib /nologo /out:vc6/liblink_test-vc6-mt-gd-1_35.lib $(XSFLAGS) vc6/liblink_test-vc6-mt-gd-1_35/link_test.obj
+
+./vc6/liblink_test-vc6-mt-gd-1_35.exe : main.cpp ./vc6/liblink_test-vc6-mt-gd-1_35.lib
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc6/liblink_test-vc6-mt-gd-1_35.exe main.cpp /link /LIBPATH:./vc6
+ vc6\liblink_test-vc6-mt-gd-1_35.exe
+
diff --git a/test/link/vc7-stlport.mak b/test/link/vc7-stlport.mak
new file mode 100644
index 0000000..5e500f1
--- /dev/null
+++ b/test/link/vc7-stlport.mak
@@ -0,0 +1,292 @@
+# copyright John Maddock 2005
+# 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)
+#
+# auto generated makefile for VC6+STLPort
+#
+# usage:
+# make
+# brings libraries up to date
+# make install
+# brings libraries up to date and copies binaries to your VC6 /lib and /bin directories (recomended)
+#
+
+#
+# Add additional compiler options here:
+#
+CXXFLAGS=
+#
+# Add additional include directories here:
+#
+INCLUDES=
+#
+# add additional linker flags here:
+#
+XLFLAGS=
+#
+# add additional static-library creation flags here:
+#
+XSFLAGS=
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE
+NULL=nul
+!ENDIF
+
+!IF "$(MSVCDIR)" == ""
+!ERROR Variable MSVCDIR not set.
+!ENDIF
+
+!IF "$(STLPORT_PATH)" == ""
+!ERROR Variable STLPORT_PATH not set.
+!ENDIF
+
+
+ALL_HEADER=
+
+all : main_dir liblink_test-vc7-stlport-mt-s-1_35_dir ./vc7-stlport/liblink_test-vc7-stlport-mt-s-1_35.lib ./vc7-stlport/liblink_test-vc7-stlport-mt-s-1_35.exe liblink_test-vc7-stlport-mt-sgd-1_35_dir ./vc7-stlport/liblink_test-vc7-stlport-mt-sgd-1_35.lib ./vc7-stlport/liblink_test-vc7-stlport-mt-sgd-1_35.exe link_test-vc7-stlport-mt-gd-1_35_dir ./vc7-stlport/link_test-vc7-stlport-mt-gd-1_35.lib ./vc7-stlport/link_test-vc7-stlport-mt-gd-1_35.exe link_test-vc7-stlport-mt-1_35_dir ./vc7-stlport/link_test-vc7-stlport-mt-1_35.lib ./vc7-stlport/link_test-vc7-stlport-mt-1_35.exe liblink_test-vc7-stlport-mt-1_35_dir ./vc7-stlport/liblink_test-vc7-stlport-mt-1_35.lib ./vc7-stlport/liblink_test-vc7-stlport-mt-1_35.exe liblink_test-vc7-stlport-mt-gd-1_35_dir ./vc7-stlport/liblink_test-vc7-stlport-mt-gd-1_35.lib ./vc7-stlport/liblink_test-vc7-stlport-mt-gd-1_35.exe link_test-vc7-stlport-mt-pgd-1_35_dir ./vc7-stlport/link_test-vc7-stlport-mt-pgd-1_35.lib ./vc7-stlport/link_test-vc7-stlport-mt-pgd-1_35.exe liblink_test-vc7-stlport-mt-spgd-1_35_dir ./vc7-stlport/liblink_test-vc7-stlport-mt-spgd-1_35.lib ./vc7-stlport/liblink_test-vc7-stlport-mt-spgd-1_35.exe liblink_test-vc7-stlport-mt-pgd-1_35_dir ./vc7-stlport/liblink_test-vc7-stlport-mt-pgd-1_35.lib ./vc7-stlport/liblink_test-vc7-stlport-mt-pgd-1_35.exe
+
+clean : liblink_test-vc7-stlport-mt-s-1_35_clean liblink_test-vc7-stlport-mt-sgd-1_35_clean link_test-vc7-stlport-mt-gd-1_35_clean link_test-vc7-stlport-mt-1_35_clean liblink_test-vc7-stlport-mt-1_35_clean liblink_test-vc7-stlport-mt-gd-1_35_clean link_test-vc7-stlport-mt-pgd-1_35_clean liblink_test-vc7-stlport-mt-spgd-1_35_clean liblink_test-vc7-stlport-mt-pgd-1_35_clean
+
+install : stlport_check all
+ copy vc7-stlport\liblink_test-vc7-stlport-mt-s-1_35.lib "$(MSVCDIR)\lib"
+ copy vc7-stlport\liblink_test-vc7-stlport-mt-sgd-1_35.lib "$(MSVCDIR)\lib"
+ copy vc7-stlport\link_test-vc7-stlport-mt-gd-1_35.lib "$(MSVCDIR)\lib"
+ copy vc7-stlport\link_test-vc7-stlport-mt-gd-1_35.dll "$(MSVCDIR)\bin"
+ copy vc7-stlport\link_test-vc7-stlport-mt-1_35.lib "$(MSVCDIR)\lib"
+ copy vc7-stlport\link_test-vc7-stlport-mt-1_35.dll "$(MSVCDIR)\bin"
+ copy vc7-stlport\liblink_test-vc7-stlport-mt-1_35.lib "$(MSVCDIR)\lib"
+ copy vc7-stlport\liblink_test-vc7-stlport-mt-gd-1_35.lib "$(MSVCDIR)\lib"
+ copy vc7-stlport\link_test-vc7-stlport-mt-pgd-1_35.lib "$(MSVCDIR)\lib"
+ copy vc7-stlport\link_test-vc7-stlport-mt-pgd-1_35.dll "$(MSVCDIR)\bin"
+ copy vc7-stlport\link_test-vc7-stlport-mt-pgd-1_35.pdb "$(MSVCDIR)\lib"
+ copy vc7-stlport\liblink_test-vc7-stlport-mt-spgd-1_35.lib "$(MSVCDIR)\lib"
+ copy vc7-stlport\liblink_test-vc7-stlport-mt-spgd-1_35.pdb "$(MSVCDIR)\lib"
+ copy vc7-stlport\liblink_test-vc7-stlport-mt-pgd-1_35.lib "$(MSVCDIR)\lib"
+ copy vc7-stlport\liblink_test-vc7-stlport-mt-pgd-1_35.pdb "$(MSVCDIR)\lib"
+
+main_dir :
+ @if not exist "vc7-stlport\$(NULL)" mkdir vc7-stlport
+
+stlport_check : $(STLPORT_PATH)\stlport\string
+ echo
+
+
+########################################################
+#
+# section for liblink_test-vc7-stlport-mt-s-1_35.lib
+#
+########################################################
+vc7-stlport/liblink_test-vc7-stlport-mt-s-1_35/link_test.obj: link_test.cpp $(ALL_HEADER)
+ cl /c $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB $(CXXFLAGS) -Y- -Fo./vc7-stlport/liblink_test-vc7-stlport-mt-s-1_35/ -Fdvc7-stlport/liblink_test-vc7-stlport-mt-s-1_35.pdb link_test.cpp
+
+liblink_test-vc7-stlport-mt-s-1_35_dir :
+ @if not exist "vc7-stlport\liblink_test-vc7-stlport-mt-s-1_35\$(NULL)" mkdir vc7-stlport\liblink_test-vc7-stlport-mt-s-1_35
+
+liblink_test-vc7-stlport-mt-s-1_35_clean :
+ del vc7-stlport\liblink_test-vc7-stlport-mt-s-1_35\*.obj
+ del vc7-stlport\liblink_test-vc7-stlport-mt-s-1_35\*.idb
+ del vc7-stlport\liblink_test-vc7-stlport-mt-s-1_35\*.exp
+ del vc7-stlport\liblink_test-vc7-stlport-mt-s-1_35\*.pch
+
+./vc7-stlport/liblink_test-vc7-stlport-mt-s-1_35.lib : vc7-stlport/liblink_test-vc7-stlport-mt-s-1_35/link_test.obj
+ link -lib /nologo /out:vc7-stlport/liblink_test-vc7-stlport-mt-s-1_35.lib $(XSFLAGS) vc7-stlport/liblink_test-vc7-stlport-mt-s-1_35/link_test.obj
+
+./vc7-stlport/liblink_test-vc7-stlport-mt-s-1_35.exe : main.cpp ./vc7-stlport/liblink_test-vc7-stlport-mt-s-1_35.lib
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc7-stlport/liblink_test-vc7-stlport-mt-s-1_35.exe main.cpp /link /LIBPATH:./vc7-stlport
+ vc7-stlport\liblink_test-vc7-stlport-mt-s-1_35.exe
+
+########################################################
+#
+# section for liblink_test-vc7-stlport-mt-sgd-1_35.lib
+#
+########################################################
+vc7-stlport/liblink_test-vc7-stlport-mt-sgd-1_35/link_test.obj: link_test.cpp $(ALL_HEADER)
+ cl /c $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /RTC1 $(CXXFLAGS) -Y- -Fo./vc7-stlport/liblink_test-vc7-stlport-mt-sgd-1_35/ -Fdvc7-stlport/liblink_test-vc7-stlport-mt-sgd-1_35.pdb link_test.cpp
+
+liblink_test-vc7-stlport-mt-sgd-1_35_dir :
+ @if not exist "vc7-stlport\liblink_test-vc7-stlport-mt-sgd-1_35\$(NULL)" mkdir vc7-stlport\liblink_test-vc7-stlport-mt-sgd-1_35
+
+liblink_test-vc7-stlport-mt-sgd-1_35_clean :
+ del vc7-stlport\liblink_test-vc7-stlport-mt-sgd-1_35\*.obj
+ del vc7-stlport\liblink_test-vc7-stlport-mt-sgd-1_35\*.idb
+ del vc7-stlport\liblink_test-vc7-stlport-mt-sgd-1_35\*.exp
+ del vc7-stlport\liblink_test-vc7-stlport-mt-sgd-1_35\*.pch
+
+./vc7-stlport/liblink_test-vc7-stlport-mt-sgd-1_35.lib : vc7-stlport/liblink_test-vc7-stlport-mt-sgd-1_35/link_test.obj
+ link -lib /nologo /out:vc7-stlport/liblink_test-vc7-stlport-mt-sgd-1_35.lib $(XSFLAGS) vc7-stlport/liblink_test-vc7-stlport-mt-sgd-1_35/link_test.obj
+
+./vc7-stlport/liblink_test-vc7-stlport-mt-sgd-1_35.exe : main.cpp ./vc7-stlport/liblink_test-vc7-stlport-mt-sgd-1_35.lib
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /RTC1 /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc7-stlport/liblink_test-vc7-stlport-mt-sgd-1_35.exe main.cpp /link /LIBPATH:./vc7-stlport
+ vc7-stlport\liblink_test-vc7-stlport-mt-sgd-1_35.exe
+
+########################################################
+#
+# section for link_test-vc7-stlport-mt-gd-1_35.lib
+#
+########################################################
+vc7-stlport/link_test-vc7-stlport-mt-gd-1_35/link_test.obj: link_test.cpp $(ALL_HEADER)
+ cl /c $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_DYN_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 $(CXXFLAGS) -Y- -Fo./vc7-stlport/link_test-vc7-stlport-mt-gd-1_35/ -Fdvc7-stlport/link_test-vc7-stlport-mt-gd-1_35.pdb link_test.cpp
+
+link_test-vc7-stlport-mt-gd-1_35_dir :
+ @if not exist "vc7-stlport\link_test-vc7-stlport-mt-gd-1_35\$(NULL)" mkdir vc7-stlport\link_test-vc7-stlport-mt-gd-1_35
+
+link_test-vc7-stlport-mt-gd-1_35_clean :
+ del vc7-stlport\link_test-vc7-stlport-mt-gd-1_35\*.obj
+ del vc7-stlport\link_test-vc7-stlport-mt-gd-1_35\*.idb
+ del vc7-stlport\link_test-vc7-stlport-mt-gd-1_35\*.exp
+ del vc7-stlport\link_test-vc7-stlport-mt-gd-1_35\*.pch
+
+./vc7-stlport/link_test-vc7-stlport-mt-gd-1_35.lib : vc7-stlport/link_test-vc7-stlport-mt-gd-1_35/link_test.obj
+ link kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /pdb:"vc7-stlport/link_test-vc7-stlport-mt-gd-1_35.pdb" /debug /machine:I386 /out:"vc7-stlport/link_test-vc7-stlport-mt-gd-1_35.dll" /implib:"vc7-stlport/link_test-vc7-stlport-mt-gd-1_35.lib" /LIBPATH:$(STLPORT_PATH)\lib $(XLFLAGS) vc7-stlport/link_test-vc7-stlport-mt-gd-1_35/link_test.obj
+
+./vc7-stlport/link_test-vc7-stlport-mt-gd-1_35.exe : main.cpp ./vc7-stlport/link_test-vc7-stlport-mt-gd-1_35.lib
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_DYN_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc7-stlport/link_test-vc7-stlport-mt-gd-1_35.exe main.cpp /link /LIBPATH:./vc7-stlport
+ vc7-stlport\link_test-vc7-stlport-mt-gd-1_35.exe
+
+########################################################
+#
+# section for link_test-vc7-stlport-mt-1_35.lib
+#
+########################################################
+vc7-stlport/link_test-vc7-stlport-mt-1_35/link_test.obj: link_test.cpp $(ALL_HEADER)
+ cl /c $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /I$(STLPORT_PATH)\stlport /Gy /I..\..\..\..\ /DBOOST_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL $(CXXFLAGS) -Y- -Fo./vc7-stlport/link_test-vc7-stlport-mt-1_35/ -Fdvc7-stlport/link_test-vc7-stlport-mt-1_35.pdb link_test.cpp
+
+link_test-vc7-stlport-mt-1_35_dir :
+ @if not exist "vc7-stlport\link_test-vc7-stlport-mt-1_35\$(NULL)" mkdir vc7-stlport\link_test-vc7-stlport-mt-1_35
+
+link_test-vc7-stlport-mt-1_35_clean :
+ del vc7-stlport\link_test-vc7-stlport-mt-1_35\*.obj
+ del vc7-stlport\link_test-vc7-stlport-mt-1_35\*.idb
+ del vc7-stlport\link_test-vc7-stlport-mt-1_35\*.exp
+ del vc7-stlport\link_test-vc7-stlport-mt-1_35\*.pch
+
+./vc7-stlport/link_test-vc7-stlport-mt-1_35.lib : vc7-stlport/link_test-vc7-stlport-mt-1_35/link_test.obj
+ link kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /pdb:"vc7-stlport/link_test-vc7-stlport-mt-1_35.pdb" /debug /machine:I386 /out:"vc7-stlport/link_test-vc7-stlport-mt-1_35.dll" /implib:"vc7-stlport/link_test-vc7-stlport-mt-1_35.lib" /LIBPATH:$(STLPORT_PATH)\lib $(XLFLAGS) vc7-stlport/link_test-vc7-stlport-mt-1_35/link_test.obj
+
+./vc7-stlport/link_test-vc7-stlport-mt-1_35.exe : main.cpp ./vc7-stlport/link_test-vc7-stlport-mt-1_35.lib
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /I$(STLPORT_PATH)\stlport /Gy /I..\..\..\..\ /DBOOST_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc7-stlport/link_test-vc7-stlport-mt-1_35.exe main.cpp /link /LIBPATH:./vc7-stlport
+ vc7-stlport\link_test-vc7-stlport-mt-1_35.exe
+
+########################################################
+#
+# section for liblink_test-vc7-stlport-mt-1_35.lib
+#
+########################################################
+vc7-stlport/liblink_test-vc7-stlport-mt-1_35/link_test.obj: link_test.cpp $(ALL_HEADER)
+ cl /c $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL $(CXXFLAGS) -Y- -Fo./vc7-stlport/liblink_test-vc7-stlport-mt-1_35/ -Fdvc7-stlport/liblink_test-vc7-stlport-mt-1_35.pdb link_test.cpp
+
+liblink_test-vc7-stlport-mt-1_35_dir :
+ @if not exist "vc7-stlport\liblink_test-vc7-stlport-mt-1_35\$(NULL)" mkdir vc7-stlport\liblink_test-vc7-stlport-mt-1_35
+
+liblink_test-vc7-stlport-mt-1_35_clean :
+ del vc7-stlport\liblink_test-vc7-stlport-mt-1_35\*.obj
+ del vc7-stlport\liblink_test-vc7-stlport-mt-1_35\*.idb
+ del vc7-stlport\liblink_test-vc7-stlport-mt-1_35\*.exp
+ del vc7-stlport\liblink_test-vc7-stlport-mt-1_35\*.pch
+
+./vc7-stlport/liblink_test-vc7-stlport-mt-1_35.lib : vc7-stlport/liblink_test-vc7-stlport-mt-1_35/link_test.obj
+ link -lib /nologo /out:vc7-stlport/liblink_test-vc7-stlport-mt-1_35.lib $(XSFLAGS) vc7-stlport/liblink_test-vc7-stlport-mt-1_35/link_test.obj
+
+./vc7-stlport/liblink_test-vc7-stlport-mt-1_35.exe : main.cpp ./vc7-stlport/liblink_test-vc7-stlport-mt-1_35.lib
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc7-stlport/liblink_test-vc7-stlport-mt-1_35.exe main.cpp /link /LIBPATH:./vc7-stlport
+ vc7-stlport\liblink_test-vc7-stlport-mt-1_35.exe
+
+########################################################
+#
+# section for liblink_test-vc7-stlport-mt-gd-1_35.lib
+#
+########################################################
+vc7-stlport/liblink_test-vc7-stlport-mt-gd-1_35/link_test.obj: link_test.cpp $(ALL_HEADER)
+ cl /c $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 $(CXXFLAGS) -Y- -Fo./vc7-stlport/liblink_test-vc7-stlport-mt-gd-1_35/ -Fdvc7-stlport/liblink_test-vc7-stlport-mt-gd-1_35.pdb link_test.cpp
+
+liblink_test-vc7-stlport-mt-gd-1_35_dir :
+ @if not exist "vc7-stlport\liblink_test-vc7-stlport-mt-gd-1_35\$(NULL)" mkdir vc7-stlport\liblink_test-vc7-stlport-mt-gd-1_35
+
+liblink_test-vc7-stlport-mt-gd-1_35_clean :
+ del vc7-stlport\liblink_test-vc7-stlport-mt-gd-1_35\*.obj
+ del vc7-stlport\liblink_test-vc7-stlport-mt-gd-1_35\*.idb
+ del vc7-stlport\liblink_test-vc7-stlport-mt-gd-1_35\*.exp
+ del vc7-stlport\liblink_test-vc7-stlport-mt-gd-1_35\*.pch
+
+./vc7-stlport/liblink_test-vc7-stlport-mt-gd-1_35.lib : vc7-stlport/liblink_test-vc7-stlport-mt-gd-1_35/link_test.obj
+ link -lib /nologo /out:vc7-stlport/liblink_test-vc7-stlport-mt-gd-1_35.lib $(XSFLAGS) vc7-stlport/liblink_test-vc7-stlport-mt-gd-1_35/link_test.obj
+
+./vc7-stlport/liblink_test-vc7-stlport-mt-gd-1_35.exe : main.cpp ./vc7-stlport/liblink_test-vc7-stlport-mt-gd-1_35.lib
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc7-stlport/liblink_test-vc7-stlport-mt-gd-1_35.exe main.cpp /link /LIBPATH:./vc7-stlport
+ vc7-stlport\liblink_test-vc7-stlport-mt-gd-1_35.exe
+
+########################################################
+#
+# section for link_test-vc7-stlport-mt-pgd-1_35.lib
+#
+########################################################
+vc7-stlport/link_test-vc7-stlport-mt-pgd-1_35/link_test.obj: link_test.cpp $(ALL_HEADER)
+ cl /c $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 $(CXXFLAGS) -Y- -Fo./vc7-stlport/link_test-vc7-stlport-mt-pgd-1_35/ -Fdvc7-stlport/link_test-vc7-stlport-mt-pgd-1_35.pdb link_test.cpp
+
+link_test-vc7-stlport-mt-pgd-1_35_dir :
+ @if not exist "vc7-stlport\link_test-vc7-stlport-mt-pgd-1_35\$(NULL)" mkdir vc7-stlport\link_test-vc7-stlport-mt-pgd-1_35
+
+link_test-vc7-stlport-mt-pgd-1_35_clean :
+ del vc7-stlport\link_test-vc7-stlport-mt-pgd-1_35\*.obj
+ del vc7-stlport\link_test-vc7-stlport-mt-pgd-1_35\*.idb
+ del vc7-stlport\link_test-vc7-stlport-mt-pgd-1_35\*.exp
+ del vc7-stlport\link_test-vc7-stlport-mt-pgd-1_35\*.pch
+
+./vc7-stlport/link_test-vc7-stlport-mt-pgd-1_35.lib : vc7-stlport/link_test-vc7-stlport-mt-pgd-1_35/link_test.obj
+ link kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /pdb:"vc7-stlport/link_test-vc7-stlport-mt-pgd-1_35.pdb" /debug /machine:I386 /out:"vc7-stlport/link_test-vc7-stlport-mt-pgd-1_35.dll" /implib:"vc7-stlport/link_test-vc7-stlport-mt-pgd-1_35.lib" /LIBPATH:$(STLPORT_PATH)\lib $(XLFLAGS) vc7-stlport/link_test-vc7-stlport-mt-pgd-1_35/link_test.obj
+
+./vc7-stlport/link_test-vc7-stlport-mt-pgd-1_35.exe : main.cpp ./vc7-stlport/link_test-vc7-stlport-mt-pgd-1_35.lib
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc7-stlport/link_test-vc7-stlport-mt-pgd-1_35.exe main.cpp /link /LIBPATH:./vc7-stlport
+ vc7-stlport\link_test-vc7-stlport-mt-pgd-1_35.exe
+
+########################################################
+#
+# section for liblink_test-vc7-stlport-mt-spgd-1_35.lib
+#
+########################################################
+vc7-stlport/liblink_test-vc7-stlport-mt-spgd-1_35/link_test.obj: link_test.cpp $(ALL_HEADER)
+ cl /c $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /RTC1 $(CXXFLAGS) -Y- -Fo./vc7-stlport/liblink_test-vc7-stlport-mt-spgd-1_35/ -Fdvc7-stlport/liblink_test-vc7-stlport-mt-spgd-1_35.pdb link_test.cpp
+
+liblink_test-vc7-stlport-mt-spgd-1_35_dir :
+ @if not exist "vc7-stlport\liblink_test-vc7-stlport-mt-spgd-1_35\$(NULL)" mkdir vc7-stlport\liblink_test-vc7-stlport-mt-spgd-1_35
+
+liblink_test-vc7-stlport-mt-spgd-1_35_clean :
+ del vc7-stlport\liblink_test-vc7-stlport-mt-spgd-1_35\*.obj
+ del vc7-stlport\liblink_test-vc7-stlport-mt-spgd-1_35\*.idb
+ del vc7-stlport\liblink_test-vc7-stlport-mt-spgd-1_35\*.exp
+ del vc7-stlport\liblink_test-vc7-stlport-mt-spgd-1_35\*.pch
+
+./vc7-stlport/liblink_test-vc7-stlport-mt-spgd-1_35.lib : vc7-stlport/liblink_test-vc7-stlport-mt-spgd-1_35/link_test.obj
+ link -lib /nologo /out:vc7-stlport/liblink_test-vc7-stlport-mt-spgd-1_35.lib $(XSFLAGS) vc7-stlport/liblink_test-vc7-stlport-mt-spgd-1_35/link_test.obj
+
+./vc7-stlport/liblink_test-vc7-stlport-mt-spgd-1_35.exe : main.cpp ./vc7-stlport/liblink_test-vc7-stlport-mt-spgd-1_35.lib
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /RTC1 /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc7-stlport/liblink_test-vc7-stlport-mt-spgd-1_35.exe main.cpp /link /LIBPATH:./vc7-stlport
+ vc7-stlport\liblink_test-vc7-stlport-mt-spgd-1_35.exe
+
+########################################################
+#
+# section for liblink_test-vc7-stlport-mt-pgd-1_35.lib
+#
+########################################################
+vc7-stlport/liblink_test-vc7-stlport-mt-pgd-1_35/link_test.obj: link_test.cpp $(ALL_HEADER)
+ cl /c $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 $(CXXFLAGS) -Y- -Fo./vc7-stlport/liblink_test-vc7-stlport-mt-pgd-1_35/ -Fdvc7-stlport/liblink_test-vc7-stlport-mt-pgd-1_35.pdb link_test.cpp
+
+liblink_test-vc7-stlport-mt-pgd-1_35_dir :
+ @if not exist "vc7-stlport\liblink_test-vc7-stlport-mt-pgd-1_35\$(NULL)" mkdir vc7-stlport\liblink_test-vc7-stlport-mt-pgd-1_35
+
+liblink_test-vc7-stlport-mt-pgd-1_35_clean :
+ del vc7-stlport\liblink_test-vc7-stlport-mt-pgd-1_35\*.obj
+ del vc7-stlport\liblink_test-vc7-stlport-mt-pgd-1_35\*.idb
+ del vc7-stlport\liblink_test-vc7-stlport-mt-pgd-1_35\*.exp
+ del vc7-stlport\liblink_test-vc7-stlport-mt-pgd-1_35\*.pch
+
+./vc7-stlport/liblink_test-vc7-stlport-mt-pgd-1_35.lib : vc7-stlport/liblink_test-vc7-stlport-mt-pgd-1_35/link_test.obj
+ link -lib /nologo /out:vc7-stlport/liblink_test-vc7-stlport-mt-pgd-1_35.lib $(XSFLAGS) vc7-stlport/liblink_test-vc7-stlport-mt-pgd-1_35/link_test.obj
+
+./vc7-stlport/liblink_test-vc7-stlport-mt-pgd-1_35.exe : main.cpp ./vc7-stlport/liblink_test-vc7-stlport-mt-pgd-1_35.lib
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc7-stlport/liblink_test-vc7-stlport-mt-pgd-1_35.exe main.cpp /link /LIBPATH:./vc7-stlport
+ vc7-stlport\liblink_test-vc7-stlport-mt-pgd-1_35.exe
+
diff --git a/test/link/vc7.mak b/test/link/vc7.mak
new file mode 100644
index 0000000..afae0c5
--- /dev/null
+++ b/test/link/vc7.mak
@@ -0,0 +1,260 @@
+# copyright John Maddock 2005
+# 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)
+#
+# auto generated makefile for VC6 compiler
+#
+# usage:
+# make
+# brings libraries up to date
+# make install
+# brings libraries up to date and copies binaries to your VC6 /lib and /bin directories (recomended)
+#
+
+#
+# Add additional compiler options here:
+#
+CXXFLAGS=
+#
+# Add additional include directories here:
+#
+INCLUDES=
+#
+# add additional linker flags here:
+#
+XLFLAGS=
+#
+# add additional static-library creation flags here:
+#
+XSFLAGS=
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE
+NULL=nul
+!ENDIF
+
+!IF "$(MSVCDIR)" == ""
+!ERROR Variable MSVCDIR not set.
+!ENDIF
+
+
+ALL_HEADER=
+
+all : main_dir liblink_test-vc7-s-1_35_dir ./vc7/liblink_test-vc7-s-1_35.lib ./vc7/liblink_test-vc7-s-1_35.exe liblink_test-vc7-mt-s-1_35_dir ./vc7/liblink_test-vc7-mt-s-1_35.lib ./vc7/liblink_test-vc7-mt-s-1_35.exe liblink_test-vc7-sgd-1_35_dir ./vc7/liblink_test-vc7-sgd-1_35.lib ./vc7/liblink_test-vc7-sgd-1_35.exe liblink_test-vc7-mt-sgd-1_35_dir ./vc7/liblink_test-vc7-mt-sgd-1_35.lib ./vc7/liblink_test-vc7-mt-sgd-1_35.exe link_test-vc7-mt-gd-1_35_dir ./vc7/link_test-vc7-mt-gd-1_35.lib ./vc7/link_test-vc7-mt-gd-1_35.exe link_test-vc7-mt-1_35_dir ./vc7/link_test-vc7-mt-1_35.lib ./vc7/link_test-vc7-mt-1_35.exe liblink_test-vc7-mt-1_35_dir ./vc7/liblink_test-vc7-mt-1_35.lib ./vc7/liblink_test-vc7-mt-1_35.exe liblink_test-vc7-mt-gd-1_35_dir ./vc7/liblink_test-vc7-mt-gd-1_35.lib ./vc7/liblink_test-vc7-mt-gd-1_35.exe
+
+clean : liblink_test-vc7-s-1_35_clean liblink_test-vc7-mt-s-1_35_clean liblink_test-vc7-sgd-1_35_clean liblink_test-vc7-mt-sgd-1_35_clean link_test-vc7-mt-gd-1_35_clean link_test-vc7-mt-1_35_clean liblink_test-vc7-mt-1_35_clean liblink_test-vc7-mt-gd-1_35_clean
+
+install : all
+ copy vc7\liblink_test-vc7-s-1_35.lib "$(MSVCDIR)\lib"
+ copy vc7\liblink_test-vc7-mt-s-1_35.lib "$(MSVCDIR)\lib"
+ copy vc7\liblink_test-vc7-sgd-1_35.lib "$(MSVCDIR)\lib"
+ copy vc7\liblink_test-vc7-sgd-1_35.pdb "$(MSVCDIR)\lib"
+ copy vc7\liblink_test-vc7-mt-sgd-1_35.lib "$(MSVCDIR)\lib"
+ copy vc7\liblink_test-vc7-mt-sgd-1_35.pdb "$(MSVCDIR)\lib"
+ copy vc7\link_test-vc7-mt-gd-1_35.lib "$(MSVCDIR)\lib"
+ copy vc7\link_test-vc7-mt-gd-1_35.dll "$(MSVCDIR)\bin"
+ copy vc7\link_test-vc7-mt-gd-1_35.pdb "$(MSVCDIR)\lib"
+ copy vc7\link_test-vc7-mt-1_35.lib "$(MSVCDIR)\lib"
+ copy vc7\link_test-vc7-mt-1_35.dll "$(MSVCDIR)\bin"
+ copy vc7\liblink_test-vc7-mt-1_35.lib "$(MSVCDIR)\lib"
+ copy vc7\liblink_test-vc7-mt-gd-1_35.lib "$(MSVCDIR)\lib"
+ copy vc7\liblink_test-vc7-mt-gd-1_35.pdb "$(MSVCDIR)\lib"
+
+main_dir :
+ @if not exist "vc7\$(NULL)" mkdir vc7
+
+
+########################################################
+#
+# section for liblink_test-vc7-s-1_35.lib
+#
+########################################################
+vc7/liblink_test-vc7-s-1_35/link_test.obj: link_test.cpp $(ALL_HEADER)
+ cl /c $(INCLUDES) /nologo /ML /W3 /GX /O2 /GB /GF /Gy /I..\..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD $(CXXFLAGS) -Y- -Fo./vc7/liblink_test-vc7-s-1_35/ -Fdvc7/liblink_test-vc7-s-1_35.pdb link_test.cpp
+
+liblink_test-vc7-s-1_35_dir :
+ @if not exist "vc7\liblink_test-vc7-s-1_35\$(NULL)" mkdir vc7\liblink_test-vc7-s-1_35
+
+liblink_test-vc7-s-1_35_clean :
+ del vc7\liblink_test-vc7-s-1_35\*.obj
+ del vc7\liblink_test-vc7-s-1_35\*.idb
+ del vc7\liblink_test-vc7-s-1_35\*.exp
+ del vc7\liblink_test-vc7-s-1_35\*.pch
+
+./vc7/liblink_test-vc7-s-1_35.lib : vc7/liblink_test-vc7-s-1_35/link_test.obj
+ link -lib /nologo /out:vc7/liblink_test-vc7-s-1_35.lib $(XSFLAGS) vc7/liblink_test-vc7-s-1_35/link_test.obj
+
+./vc7/liblink_test-vc7-s-1_35.exe : main.cpp ./vc7/liblink_test-vc7-s-1_35.lib
+ cl $(INCLUDES) /nologo /ML /W3 /GX /O2 /GB /GF /Gy /I..\..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc7/liblink_test-vc7-s-1_35.exe main.cpp /link /LIBPATH:./vc7
+ vc7\liblink_test-vc7-s-1_35.exe
+
+########################################################
+#
+# section for liblink_test-vc7-mt-s-1_35.lib
+#
+########################################################
+vc7/liblink_test-vc7-mt-s-1_35/link_test.obj: link_test.cpp $(ALL_HEADER)
+ cl /c $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I..\..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD $(CXXFLAGS) -Y- -Fo./vc7/liblink_test-vc7-mt-s-1_35/ -Fdvc7/liblink_test-vc7-mt-s-1_35.pdb link_test.cpp
+
+liblink_test-vc7-mt-s-1_35_dir :
+ @if not exist "vc7\liblink_test-vc7-mt-s-1_35\$(NULL)" mkdir vc7\liblink_test-vc7-mt-s-1_35
+
+liblink_test-vc7-mt-s-1_35_clean :
+ del vc7\liblink_test-vc7-mt-s-1_35\*.obj
+ del vc7\liblink_test-vc7-mt-s-1_35\*.idb
+ del vc7\liblink_test-vc7-mt-s-1_35\*.exp
+ del vc7\liblink_test-vc7-mt-s-1_35\*.pch
+
+./vc7/liblink_test-vc7-mt-s-1_35.lib : vc7/liblink_test-vc7-mt-s-1_35/link_test.obj
+ link -lib /nologo /out:vc7/liblink_test-vc7-mt-s-1_35.lib $(XSFLAGS) vc7/liblink_test-vc7-mt-s-1_35/link_test.obj
+
+./vc7/liblink_test-vc7-mt-s-1_35.exe : main.cpp ./vc7/liblink_test-vc7-mt-s-1_35.lib
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I..\..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc7/liblink_test-vc7-mt-s-1_35.exe main.cpp /link /LIBPATH:./vc7
+ vc7\liblink_test-vc7-mt-s-1_35.exe
+
+########################################################
+#
+# section for liblink_test-vc7-sgd-1_35.lib
+#
+########################################################
+vc7/liblink_test-vc7-sgd-1_35/link_test.obj: link_test.cpp $(ALL_HEADER)
+ cl /c $(INCLUDES) /nologo /MLd /W3 /Gm /GX /Zi /Od /I..\..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 $(CXXFLAGS) -Y- -Fo./vc7/liblink_test-vc7-sgd-1_35/ -Fdvc7/liblink_test-vc7-sgd-1_35.pdb link_test.cpp
+
+liblink_test-vc7-sgd-1_35_dir :
+ @if not exist "vc7\liblink_test-vc7-sgd-1_35\$(NULL)" mkdir vc7\liblink_test-vc7-sgd-1_35
+
+liblink_test-vc7-sgd-1_35_clean :
+ del vc7\liblink_test-vc7-sgd-1_35\*.obj
+ del vc7\liblink_test-vc7-sgd-1_35\*.idb
+ del vc7\liblink_test-vc7-sgd-1_35\*.exp
+ del vc7\liblink_test-vc7-sgd-1_35\*.pch
+
+./vc7/liblink_test-vc7-sgd-1_35.lib : vc7/liblink_test-vc7-sgd-1_35/link_test.obj
+ link -lib /nologo /out:vc7/liblink_test-vc7-sgd-1_35.lib $(XSFLAGS) vc7/liblink_test-vc7-sgd-1_35/link_test.obj
+
+./vc7/liblink_test-vc7-sgd-1_35.exe : main.cpp ./vc7/liblink_test-vc7-sgd-1_35.lib
+ cl $(INCLUDES) /nologo /MLd /W3 /Gm /GX /Zi /Od /I..\..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc7/liblink_test-vc7-sgd-1_35.exe main.cpp /link /LIBPATH:./vc7
+ vc7\liblink_test-vc7-sgd-1_35.exe
+
+########################################################
+#
+# section for liblink_test-vc7-mt-sgd-1_35.lib
+#
+########################################################
+vc7/liblink_test-vc7-mt-sgd-1_35/link_test.obj: link_test.cpp $(ALL_HEADER)
+ cl /c $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I..\..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 $(CXXFLAGS) -Y- -Fo./vc7/liblink_test-vc7-mt-sgd-1_35/ -Fdvc7/liblink_test-vc7-mt-sgd-1_35.pdb link_test.cpp
+
+liblink_test-vc7-mt-sgd-1_35_dir :
+ @if not exist "vc7\liblink_test-vc7-mt-sgd-1_35\$(NULL)" mkdir vc7\liblink_test-vc7-mt-sgd-1_35
+
+liblink_test-vc7-mt-sgd-1_35_clean :
+ del vc7\liblink_test-vc7-mt-sgd-1_35\*.obj
+ del vc7\liblink_test-vc7-mt-sgd-1_35\*.idb
+ del vc7\liblink_test-vc7-mt-sgd-1_35\*.exp
+ del vc7\liblink_test-vc7-mt-sgd-1_35\*.pch
+
+./vc7/liblink_test-vc7-mt-sgd-1_35.lib : vc7/liblink_test-vc7-mt-sgd-1_35/link_test.obj
+ link -lib /nologo /out:vc7/liblink_test-vc7-mt-sgd-1_35.lib $(XSFLAGS) vc7/liblink_test-vc7-mt-sgd-1_35/link_test.obj
+
+./vc7/liblink_test-vc7-mt-sgd-1_35.exe : main.cpp ./vc7/liblink_test-vc7-mt-sgd-1_35.lib
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I..\..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc7/liblink_test-vc7-mt-sgd-1_35.exe main.cpp /link /LIBPATH:./vc7
+ vc7\liblink_test-vc7-mt-sgd-1_35.exe
+
+########################################################
+#
+# section for link_test-vc7-mt-gd-1_35.lib
+#
+########################################################
+vc7/link_test-vc7-mt-gd-1_35/link_test.obj: link_test.cpp $(ALL_HEADER)
+ cl /c $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I..\..\..\..\ /D_DEBUG /DBOOST_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 $(CXXFLAGS) -Y- -Fo./vc7/link_test-vc7-mt-gd-1_35/ -Fdvc7/link_test-vc7-mt-gd-1_35.pdb link_test.cpp
+
+link_test-vc7-mt-gd-1_35_dir :
+ @if not exist "vc7\link_test-vc7-mt-gd-1_35\$(NULL)" mkdir vc7\link_test-vc7-mt-gd-1_35
+
+link_test-vc7-mt-gd-1_35_clean :
+ del vc7\link_test-vc7-mt-gd-1_35\*.obj
+ del vc7\link_test-vc7-mt-gd-1_35\*.idb
+ del vc7\link_test-vc7-mt-gd-1_35\*.exp
+ del vc7\link_test-vc7-mt-gd-1_35\*.pch
+
+./vc7/link_test-vc7-mt-gd-1_35.lib : vc7/link_test-vc7-mt-gd-1_35/link_test.obj
+ link kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /pdb:"vc7/link_test-vc7-mt-gd-1_35.pdb" /debug /machine:I386 /out:"vc7/link_test-vc7-mt-gd-1_35.dll" /implib:"vc7/link_test-vc7-mt-gd-1_35.lib" /LIBPATH:$(STLPORT_PATH)\lib $(XLFLAGS) vc7/link_test-vc7-mt-gd-1_35/link_test.obj
+
+./vc7/link_test-vc7-mt-gd-1_35.exe : main.cpp ./vc7/link_test-vc7-mt-gd-1_35.lib
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I..\..\..\..\ /D_DEBUG /DBOOST_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc7/link_test-vc7-mt-gd-1_35.exe main.cpp /link /LIBPATH:./vc7
+ vc7\link_test-vc7-mt-gd-1_35.exe
+
+########################################################
+#
+# section for link_test-vc7-mt-1_35.lib
+#
+########################################################
+vc7/link_test-vc7-mt-1_35/link_test.obj: link_test.cpp $(ALL_HEADER)
+ cl /c $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I..\..\..\..\ /DBOOST_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD $(CXXFLAGS) -Y- -Fo./vc7/link_test-vc7-mt-1_35/ -Fdvc7/link_test-vc7-mt-1_35.pdb link_test.cpp
+
+link_test-vc7-mt-1_35_dir :
+ @if not exist "vc7\link_test-vc7-mt-1_35\$(NULL)" mkdir vc7\link_test-vc7-mt-1_35
+
+link_test-vc7-mt-1_35_clean :
+ del vc7\link_test-vc7-mt-1_35\*.obj
+ del vc7\link_test-vc7-mt-1_35\*.idb
+ del vc7\link_test-vc7-mt-1_35\*.exp
+ del vc7\link_test-vc7-mt-1_35\*.pch
+
+./vc7/link_test-vc7-mt-1_35.lib : vc7/link_test-vc7-mt-1_35/link_test.obj
+ link kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /pdb:"vc7/link_test-vc7-mt-1_35.pdb" /debug /machine:I386 /out:"vc7/link_test-vc7-mt-1_35.dll" /implib:"vc7/link_test-vc7-mt-1_35.lib" /LIBPATH:$(STLPORT_PATH)\lib $(XLFLAGS) vc7/link_test-vc7-mt-1_35/link_test.obj
+
+./vc7/link_test-vc7-mt-1_35.exe : main.cpp ./vc7/link_test-vc7-mt-1_35.lib
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I..\..\..\..\ /DBOOST_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc7/link_test-vc7-mt-1_35.exe main.cpp /link /LIBPATH:./vc7
+ vc7\link_test-vc7-mt-1_35.exe
+
+########################################################
+#
+# section for liblink_test-vc7-mt-1_35.lib
+#
+########################################################
+vc7/liblink_test-vc7-mt-1_35/link_test.obj: link_test.cpp $(ALL_HEADER)
+ cl /c $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD $(CXXFLAGS) -Y- -Fo./vc7/liblink_test-vc7-mt-1_35/ -Fdvc7/liblink_test-vc7-mt-1_35.pdb link_test.cpp
+
+liblink_test-vc7-mt-1_35_dir :
+ @if not exist "vc7\liblink_test-vc7-mt-1_35\$(NULL)" mkdir vc7\liblink_test-vc7-mt-1_35
+
+liblink_test-vc7-mt-1_35_clean :
+ del vc7\liblink_test-vc7-mt-1_35\*.obj
+ del vc7\liblink_test-vc7-mt-1_35\*.idb
+ del vc7\liblink_test-vc7-mt-1_35\*.exp
+ del vc7\liblink_test-vc7-mt-1_35\*.pch
+
+./vc7/liblink_test-vc7-mt-1_35.lib : vc7/liblink_test-vc7-mt-1_35/link_test.obj
+ link -lib /nologo /out:vc7/liblink_test-vc7-mt-1_35.lib $(XSFLAGS) vc7/liblink_test-vc7-mt-1_35/link_test.obj
+
+./vc7/liblink_test-vc7-mt-1_35.exe : main.cpp ./vc7/liblink_test-vc7-mt-1_35.lib
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc7/liblink_test-vc7-mt-1_35.exe main.cpp /link /LIBPATH:./vc7
+ vc7\liblink_test-vc7-mt-1_35.exe
+
+########################################################
+#
+# section for liblink_test-vc7-mt-gd-1_35.lib
+#
+########################################################
+vc7/liblink_test-vc7-mt-gd-1_35/link_test.obj: link_test.cpp $(ALL_HEADER)
+ cl /c $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 $(CXXFLAGS) -Y- -Fo./vc7/liblink_test-vc7-mt-gd-1_35/ -Fdvc7/liblink_test-vc7-mt-gd-1_35.pdb link_test.cpp
+
+liblink_test-vc7-mt-gd-1_35_dir :
+ @if not exist "vc7\liblink_test-vc7-mt-gd-1_35\$(NULL)" mkdir vc7\liblink_test-vc7-mt-gd-1_35
+
+liblink_test-vc7-mt-gd-1_35_clean :
+ del vc7\liblink_test-vc7-mt-gd-1_35\*.obj
+ del vc7\liblink_test-vc7-mt-gd-1_35\*.idb
+ del vc7\liblink_test-vc7-mt-gd-1_35\*.exp
+ del vc7\liblink_test-vc7-mt-gd-1_35\*.pch
+
+./vc7/liblink_test-vc7-mt-gd-1_35.lib : vc7/liblink_test-vc7-mt-gd-1_35/link_test.obj
+ link -lib /nologo /out:vc7/liblink_test-vc7-mt-gd-1_35.lib $(XSFLAGS) vc7/liblink_test-vc7-mt-gd-1_35/link_test.obj
+
+./vc7/liblink_test-vc7-mt-gd-1_35.exe : main.cpp ./vc7/liblink_test-vc7-mt-gd-1_35.lib
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc7/liblink_test-vc7-mt-gd-1_35.exe main.cpp /link /LIBPATH:./vc7
+ vc7\liblink_test-vc7-mt-gd-1_35.exe
+
diff --git a/test/link/vc71-stlport.mak b/test/link/vc71-stlport.mak
new file mode 100644
index 0000000..5725e4c
--- /dev/null
+++ b/test/link/vc71-stlport.mak
@@ -0,0 +1,292 @@
+# copyright John Maddock 2005
+# 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)
+#
+# auto generated makefile for VC6+STLPort
+#
+# usage:
+# make
+# brings libraries up to date
+# make install
+# brings libraries up to date and copies binaries to your VC6 /lib and /bin directories (recomended)
+#
+
+#
+# Add additional compiler options here:
+#
+CXXFLAGS=
+#
+# Add additional include directories here:
+#
+INCLUDES=
+#
+# add additional linker flags here:
+#
+XLFLAGS=
+#
+# add additional static-library creation flags here:
+#
+XSFLAGS=
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE
+NULL=nul
+!ENDIF
+
+!IF "$(MSVCDIR)" == ""
+!ERROR Variable MSVCDIR not set.
+!ENDIF
+
+!IF "$(STLPORT_PATH)" == ""
+!ERROR Variable STLPORT_PATH not set.
+!ENDIF
+
+
+ALL_HEADER=
+
+all : main_dir liblink_test-vc71-stlport-mt-s-1_35_dir ./vc71-stlport/liblink_test-vc71-stlport-mt-s-1_35.lib ./vc71-stlport/liblink_test-vc71-stlport-mt-s-1_35.exe liblink_test-vc71-stlport-mt-sgd-1_35_dir ./vc71-stlport/liblink_test-vc71-stlport-mt-sgd-1_35.lib ./vc71-stlport/liblink_test-vc71-stlport-mt-sgd-1_35.exe link_test-vc71-stlport-mt-gd-1_35_dir ./vc71-stlport/link_test-vc71-stlport-mt-gd-1_35.lib ./vc71-stlport/link_test-vc71-stlport-mt-gd-1_35.exe link_test-vc71-stlport-mt-1_35_dir ./vc71-stlport/link_test-vc71-stlport-mt-1_35.lib ./vc71-stlport/link_test-vc71-stlport-mt-1_35.exe liblink_test-vc71-stlport-mt-1_35_dir ./vc71-stlport/liblink_test-vc71-stlport-mt-1_35.lib ./vc71-stlport/liblink_test-vc71-stlport-mt-1_35.exe liblink_test-vc71-stlport-mt-gd-1_35_dir ./vc71-stlport/liblink_test-vc71-stlport-mt-gd-1_35.lib ./vc71-stlport/liblink_test-vc71-stlport-mt-gd-1_35.exe link_test-vc71-stlport-mt-pgd-1_35_dir ./vc71-stlport/link_test-vc71-stlport-mt-pgd-1_35.lib ./vc71-stlport/link_test-vc71-stlport-mt-pgd-1_35.exe liblink_test-vc71-stlport-mt-spgd-1_35_dir ./vc71-stlport/liblink_test-vc71-stlport-mt-spgd-1_35.lib ./vc71-stlport/liblink_test-vc71-stlport-mt-spgd-1_35.exe liblink_test-vc71-stlport-mt-pgd-1_35_dir ./vc71-stlport/liblink_test-vc71-stlport-mt-pgd-1_35.lib ./vc71-stlport/liblink_test-vc71-stlport-mt-pgd-1_35.exe
+
+clean : liblink_test-vc71-stlport-mt-s-1_35_clean liblink_test-vc71-stlport-mt-sgd-1_35_clean link_test-vc71-stlport-mt-gd-1_35_clean link_test-vc71-stlport-mt-1_35_clean liblink_test-vc71-stlport-mt-1_35_clean liblink_test-vc71-stlport-mt-gd-1_35_clean link_test-vc71-stlport-mt-pgd-1_35_clean liblink_test-vc71-stlport-mt-spgd-1_35_clean liblink_test-vc71-stlport-mt-pgd-1_35_clean
+
+install : stlport_check all
+ copy vc71-stlport\liblink_test-vc71-stlport-mt-s-1_35.lib "$(MSVCDIR)\lib"
+ copy vc71-stlport\liblink_test-vc71-stlport-mt-sgd-1_35.lib "$(MSVCDIR)\lib"
+ copy vc71-stlport\link_test-vc71-stlport-mt-gd-1_35.lib "$(MSVCDIR)\lib"
+ copy vc71-stlport\link_test-vc71-stlport-mt-gd-1_35.dll "$(MSVCDIR)\bin"
+ copy vc71-stlport\link_test-vc71-stlport-mt-1_35.lib "$(MSVCDIR)\lib"
+ copy vc71-stlport\link_test-vc71-stlport-mt-1_35.dll "$(MSVCDIR)\bin"
+ copy vc71-stlport\liblink_test-vc71-stlport-mt-1_35.lib "$(MSVCDIR)\lib"
+ copy vc71-stlport\liblink_test-vc71-stlport-mt-gd-1_35.lib "$(MSVCDIR)\lib"
+ copy vc71-stlport\link_test-vc71-stlport-mt-pgd-1_35.lib "$(MSVCDIR)\lib"
+ copy vc71-stlport\link_test-vc71-stlport-mt-pgd-1_35.dll "$(MSVCDIR)\bin"
+ copy vc71-stlport\link_test-vc71-stlport-mt-pgd-1_35.pdb "$(MSVCDIR)\lib"
+ copy vc71-stlport\liblink_test-vc71-stlport-mt-spgd-1_35.lib "$(MSVCDIR)\lib"
+ copy vc71-stlport\liblink_test-vc71-stlport-mt-spgd-1_35.pdb "$(MSVCDIR)\lib"
+ copy vc71-stlport\liblink_test-vc71-stlport-mt-pgd-1_35.lib "$(MSVCDIR)\lib"
+ copy vc71-stlport\liblink_test-vc71-stlport-mt-pgd-1_35.pdb "$(MSVCDIR)\lib"
+
+main_dir :
+ @if not exist "vc71-stlport\$(NULL)" mkdir vc71-stlport
+
+stlport_check : $(STLPORT_PATH)\stlport\string
+ echo
+
+
+########################################################
+#
+# section for liblink_test-vc71-stlport-mt-s-1_35.lib
+#
+########################################################
+vc71-stlport/liblink_test-vc71-stlport-mt-s-1_35/link_test.obj: link_test.cpp $(ALL_HEADER)
+ cl /c $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB $(CXXFLAGS) -Y- -Fo./vc71-stlport/liblink_test-vc71-stlport-mt-s-1_35/ -Fdvc71-stlport/liblink_test-vc71-stlport-mt-s-1_35.pdb link_test.cpp
+
+liblink_test-vc71-stlport-mt-s-1_35_dir :
+ @if not exist "vc71-stlport\liblink_test-vc71-stlport-mt-s-1_35\$(NULL)" mkdir vc71-stlport\liblink_test-vc71-stlport-mt-s-1_35
+
+liblink_test-vc71-stlport-mt-s-1_35_clean :
+ del vc71-stlport\liblink_test-vc71-stlport-mt-s-1_35\*.obj
+ del vc71-stlport\liblink_test-vc71-stlport-mt-s-1_35\*.idb
+ del vc71-stlport\liblink_test-vc71-stlport-mt-s-1_35\*.exp
+ del vc71-stlport\liblink_test-vc71-stlport-mt-s-1_35\*.pch
+
+./vc71-stlport/liblink_test-vc71-stlport-mt-s-1_35.lib : vc71-stlport/liblink_test-vc71-stlport-mt-s-1_35/link_test.obj
+ link -lib /nologo /out:vc71-stlport/liblink_test-vc71-stlport-mt-s-1_35.lib $(XSFLAGS) vc71-stlport/liblink_test-vc71-stlport-mt-s-1_35/link_test.obj
+
+./vc71-stlport/liblink_test-vc71-stlport-mt-s-1_35.exe : main.cpp ./vc71-stlport/liblink_test-vc71-stlport-mt-s-1_35.lib
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc71-stlport/liblink_test-vc71-stlport-mt-s-1_35.exe main.cpp /link /LIBPATH:./vc71-stlport
+ vc71-stlport\liblink_test-vc71-stlport-mt-s-1_35.exe
+
+########################################################
+#
+# section for liblink_test-vc71-stlport-mt-sgd-1_35.lib
+#
+########################################################
+vc71-stlport/liblink_test-vc71-stlport-mt-sgd-1_35/link_test.obj: link_test.cpp $(ALL_HEADER)
+ cl /c $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /RTC1 $(CXXFLAGS) -Y- -Fo./vc71-stlport/liblink_test-vc71-stlport-mt-sgd-1_35/ -Fdvc71-stlport/liblink_test-vc71-stlport-mt-sgd-1_35.pdb link_test.cpp
+
+liblink_test-vc71-stlport-mt-sgd-1_35_dir :
+ @if not exist "vc71-stlport\liblink_test-vc71-stlport-mt-sgd-1_35\$(NULL)" mkdir vc71-stlport\liblink_test-vc71-stlport-mt-sgd-1_35
+
+liblink_test-vc71-stlport-mt-sgd-1_35_clean :
+ del vc71-stlport\liblink_test-vc71-stlport-mt-sgd-1_35\*.obj
+ del vc71-stlport\liblink_test-vc71-stlport-mt-sgd-1_35\*.idb
+ del vc71-stlport\liblink_test-vc71-stlport-mt-sgd-1_35\*.exp
+ del vc71-stlport\liblink_test-vc71-stlport-mt-sgd-1_35\*.pch
+
+./vc71-stlport/liblink_test-vc71-stlport-mt-sgd-1_35.lib : vc71-stlport/liblink_test-vc71-stlport-mt-sgd-1_35/link_test.obj
+ link -lib /nologo /out:vc71-stlport/liblink_test-vc71-stlport-mt-sgd-1_35.lib $(XSFLAGS) vc71-stlport/liblink_test-vc71-stlport-mt-sgd-1_35/link_test.obj
+
+./vc71-stlport/liblink_test-vc71-stlport-mt-sgd-1_35.exe : main.cpp ./vc71-stlport/liblink_test-vc71-stlport-mt-sgd-1_35.lib
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /RTC1 /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc71-stlport/liblink_test-vc71-stlport-mt-sgd-1_35.exe main.cpp /link /LIBPATH:./vc71-stlport
+ vc71-stlport\liblink_test-vc71-stlport-mt-sgd-1_35.exe
+
+########################################################
+#
+# section for link_test-vc71-stlport-mt-gd-1_35.lib
+#
+########################################################
+vc71-stlport/link_test-vc71-stlport-mt-gd-1_35/link_test.obj: link_test.cpp $(ALL_HEADER)
+ cl /c $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_DYN_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 $(CXXFLAGS) -Y- -Fo./vc71-stlport/link_test-vc71-stlport-mt-gd-1_35/ -Fdvc71-stlport/link_test-vc71-stlport-mt-gd-1_35.pdb link_test.cpp
+
+link_test-vc71-stlport-mt-gd-1_35_dir :
+ @if not exist "vc71-stlport\link_test-vc71-stlport-mt-gd-1_35\$(NULL)" mkdir vc71-stlport\link_test-vc71-stlport-mt-gd-1_35
+
+link_test-vc71-stlport-mt-gd-1_35_clean :
+ del vc71-stlport\link_test-vc71-stlport-mt-gd-1_35\*.obj
+ del vc71-stlport\link_test-vc71-stlport-mt-gd-1_35\*.idb
+ del vc71-stlport\link_test-vc71-stlport-mt-gd-1_35\*.exp
+ del vc71-stlport\link_test-vc71-stlport-mt-gd-1_35\*.pch
+
+./vc71-stlport/link_test-vc71-stlport-mt-gd-1_35.lib : vc71-stlport/link_test-vc71-stlport-mt-gd-1_35/link_test.obj
+ link kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /pdb:"vc71-stlport/link_test-vc71-stlport-mt-gd-1_35.pdb" /debug /machine:I386 /out:"vc71-stlport/link_test-vc71-stlport-mt-gd-1_35.dll" /implib:"vc71-stlport/link_test-vc71-stlport-mt-gd-1_35.lib" /LIBPATH:$(STLPORT_PATH)\lib $(XLFLAGS) vc71-stlport/link_test-vc71-stlport-mt-gd-1_35/link_test.obj
+
+./vc71-stlport/link_test-vc71-stlport-mt-gd-1_35.exe : main.cpp ./vc71-stlport/link_test-vc71-stlport-mt-gd-1_35.lib
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_DYN_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc71-stlport/link_test-vc71-stlport-mt-gd-1_35.exe main.cpp /link /LIBPATH:./vc71-stlport
+ vc71-stlport\link_test-vc71-stlport-mt-gd-1_35.exe
+
+########################################################
+#
+# section for link_test-vc71-stlport-mt-1_35.lib
+#
+########################################################
+vc71-stlport/link_test-vc71-stlport-mt-1_35/link_test.obj: link_test.cpp $(ALL_HEADER)
+ cl /c $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /I$(STLPORT_PATH)\stlport /Gy /I..\..\..\..\ /DBOOST_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL $(CXXFLAGS) -Y- -Fo./vc71-stlport/link_test-vc71-stlport-mt-1_35/ -Fdvc71-stlport/link_test-vc71-stlport-mt-1_35.pdb link_test.cpp
+
+link_test-vc71-stlport-mt-1_35_dir :
+ @if not exist "vc71-stlport\link_test-vc71-stlport-mt-1_35\$(NULL)" mkdir vc71-stlport\link_test-vc71-stlport-mt-1_35
+
+link_test-vc71-stlport-mt-1_35_clean :
+ del vc71-stlport\link_test-vc71-stlport-mt-1_35\*.obj
+ del vc71-stlport\link_test-vc71-stlport-mt-1_35\*.idb
+ del vc71-stlport\link_test-vc71-stlport-mt-1_35\*.exp
+ del vc71-stlport\link_test-vc71-stlport-mt-1_35\*.pch
+
+./vc71-stlport/link_test-vc71-stlport-mt-1_35.lib : vc71-stlport/link_test-vc71-stlport-mt-1_35/link_test.obj
+ link kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /pdb:"vc71-stlport/link_test-vc71-stlport-mt-1_35.pdb" /debug /machine:I386 /out:"vc71-stlport/link_test-vc71-stlport-mt-1_35.dll" /implib:"vc71-stlport/link_test-vc71-stlport-mt-1_35.lib" /LIBPATH:$(STLPORT_PATH)\lib $(XLFLAGS) vc71-stlport/link_test-vc71-stlport-mt-1_35/link_test.obj
+
+./vc71-stlport/link_test-vc71-stlport-mt-1_35.exe : main.cpp ./vc71-stlport/link_test-vc71-stlport-mt-1_35.lib
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /I$(STLPORT_PATH)\stlport /Gy /I..\..\..\..\ /DBOOST_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc71-stlport/link_test-vc71-stlport-mt-1_35.exe main.cpp /link /LIBPATH:./vc71-stlport
+ vc71-stlport\link_test-vc71-stlport-mt-1_35.exe
+
+########################################################
+#
+# section for liblink_test-vc71-stlport-mt-1_35.lib
+#
+########################################################
+vc71-stlport/liblink_test-vc71-stlport-mt-1_35/link_test.obj: link_test.cpp $(ALL_HEADER)
+ cl /c $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL $(CXXFLAGS) -Y- -Fo./vc71-stlport/liblink_test-vc71-stlport-mt-1_35/ -Fdvc71-stlport/liblink_test-vc71-stlport-mt-1_35.pdb link_test.cpp
+
+liblink_test-vc71-stlport-mt-1_35_dir :
+ @if not exist "vc71-stlport\liblink_test-vc71-stlport-mt-1_35\$(NULL)" mkdir vc71-stlport\liblink_test-vc71-stlport-mt-1_35
+
+liblink_test-vc71-stlport-mt-1_35_clean :
+ del vc71-stlport\liblink_test-vc71-stlport-mt-1_35\*.obj
+ del vc71-stlport\liblink_test-vc71-stlport-mt-1_35\*.idb
+ del vc71-stlport\liblink_test-vc71-stlport-mt-1_35\*.exp
+ del vc71-stlport\liblink_test-vc71-stlport-mt-1_35\*.pch
+
+./vc71-stlport/liblink_test-vc71-stlport-mt-1_35.lib : vc71-stlport/liblink_test-vc71-stlport-mt-1_35/link_test.obj
+ link -lib /nologo /out:vc71-stlport/liblink_test-vc71-stlport-mt-1_35.lib $(XSFLAGS) vc71-stlport/liblink_test-vc71-stlport-mt-1_35/link_test.obj
+
+./vc71-stlport/liblink_test-vc71-stlport-mt-1_35.exe : main.cpp ./vc71-stlport/liblink_test-vc71-stlport-mt-1_35.lib
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc71-stlport/liblink_test-vc71-stlport-mt-1_35.exe main.cpp /link /LIBPATH:./vc71-stlport
+ vc71-stlport\liblink_test-vc71-stlport-mt-1_35.exe
+
+########################################################
+#
+# section for liblink_test-vc71-stlport-mt-gd-1_35.lib
+#
+########################################################
+vc71-stlport/liblink_test-vc71-stlport-mt-gd-1_35/link_test.obj: link_test.cpp $(ALL_HEADER)
+ cl /c $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 $(CXXFLAGS) -Y- -Fo./vc71-stlport/liblink_test-vc71-stlport-mt-gd-1_35/ -Fdvc71-stlport/liblink_test-vc71-stlport-mt-gd-1_35.pdb link_test.cpp
+
+liblink_test-vc71-stlport-mt-gd-1_35_dir :
+ @if not exist "vc71-stlport\liblink_test-vc71-stlport-mt-gd-1_35\$(NULL)" mkdir vc71-stlport\liblink_test-vc71-stlport-mt-gd-1_35
+
+liblink_test-vc71-stlport-mt-gd-1_35_clean :
+ del vc71-stlport\liblink_test-vc71-stlport-mt-gd-1_35\*.obj
+ del vc71-stlport\liblink_test-vc71-stlport-mt-gd-1_35\*.idb
+ del vc71-stlport\liblink_test-vc71-stlport-mt-gd-1_35\*.exp
+ del vc71-stlport\liblink_test-vc71-stlport-mt-gd-1_35\*.pch
+
+./vc71-stlport/liblink_test-vc71-stlport-mt-gd-1_35.lib : vc71-stlport/liblink_test-vc71-stlport-mt-gd-1_35/link_test.obj
+ link -lib /nologo /out:vc71-stlport/liblink_test-vc71-stlport-mt-gd-1_35.lib $(XSFLAGS) vc71-stlport/liblink_test-vc71-stlport-mt-gd-1_35/link_test.obj
+
+./vc71-stlport/liblink_test-vc71-stlport-mt-gd-1_35.exe : main.cpp ./vc71-stlport/liblink_test-vc71-stlport-mt-gd-1_35.lib
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc71-stlport/liblink_test-vc71-stlport-mt-gd-1_35.exe main.cpp /link /LIBPATH:./vc71-stlport
+ vc71-stlport\liblink_test-vc71-stlport-mt-gd-1_35.exe
+
+########################################################
+#
+# section for link_test-vc71-stlport-mt-pgd-1_35.lib
+#
+########################################################
+vc71-stlport/link_test-vc71-stlport-mt-pgd-1_35/link_test.obj: link_test.cpp $(ALL_HEADER)
+ cl /c $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 $(CXXFLAGS) -Y- -Fo./vc71-stlport/link_test-vc71-stlport-mt-pgd-1_35/ -Fdvc71-stlport/link_test-vc71-stlport-mt-pgd-1_35.pdb link_test.cpp
+
+link_test-vc71-stlport-mt-pgd-1_35_dir :
+ @if not exist "vc71-stlport\link_test-vc71-stlport-mt-pgd-1_35\$(NULL)" mkdir vc71-stlport\link_test-vc71-stlport-mt-pgd-1_35
+
+link_test-vc71-stlport-mt-pgd-1_35_clean :
+ del vc71-stlport\link_test-vc71-stlport-mt-pgd-1_35\*.obj
+ del vc71-stlport\link_test-vc71-stlport-mt-pgd-1_35\*.idb
+ del vc71-stlport\link_test-vc71-stlport-mt-pgd-1_35\*.exp
+ del vc71-stlport\link_test-vc71-stlport-mt-pgd-1_35\*.pch
+
+./vc71-stlport/link_test-vc71-stlport-mt-pgd-1_35.lib : vc71-stlport/link_test-vc71-stlport-mt-pgd-1_35/link_test.obj
+ link kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /pdb:"vc71-stlport/link_test-vc71-stlport-mt-pgd-1_35.pdb" /debug /machine:I386 /out:"vc71-stlport/link_test-vc71-stlport-mt-pgd-1_35.dll" /implib:"vc71-stlport/link_test-vc71-stlport-mt-pgd-1_35.lib" /LIBPATH:$(STLPORT_PATH)\lib $(XLFLAGS) vc71-stlport/link_test-vc71-stlport-mt-pgd-1_35/link_test.obj
+
+./vc71-stlport/link_test-vc71-stlport-mt-pgd-1_35.exe : main.cpp ./vc71-stlport/link_test-vc71-stlport-mt-pgd-1_35.lib
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc71-stlport/link_test-vc71-stlport-mt-pgd-1_35.exe main.cpp /link /LIBPATH:./vc71-stlport
+ vc71-stlport\link_test-vc71-stlport-mt-pgd-1_35.exe
+
+########################################################
+#
+# section for liblink_test-vc71-stlport-mt-spgd-1_35.lib
+#
+########################################################
+vc71-stlport/liblink_test-vc71-stlport-mt-spgd-1_35/link_test.obj: link_test.cpp $(ALL_HEADER)
+ cl /c $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /RTC1 $(CXXFLAGS) -Y- -Fo./vc71-stlport/liblink_test-vc71-stlport-mt-spgd-1_35/ -Fdvc71-stlport/liblink_test-vc71-stlport-mt-spgd-1_35.pdb link_test.cpp
+
+liblink_test-vc71-stlport-mt-spgd-1_35_dir :
+ @if not exist "vc71-stlport\liblink_test-vc71-stlport-mt-spgd-1_35\$(NULL)" mkdir vc71-stlport\liblink_test-vc71-stlport-mt-spgd-1_35
+
+liblink_test-vc71-stlport-mt-spgd-1_35_clean :
+ del vc71-stlport\liblink_test-vc71-stlport-mt-spgd-1_35\*.obj
+ del vc71-stlport\liblink_test-vc71-stlport-mt-spgd-1_35\*.idb
+ del vc71-stlport\liblink_test-vc71-stlport-mt-spgd-1_35\*.exp
+ del vc71-stlport\liblink_test-vc71-stlport-mt-spgd-1_35\*.pch
+
+./vc71-stlport/liblink_test-vc71-stlport-mt-spgd-1_35.lib : vc71-stlport/liblink_test-vc71-stlport-mt-spgd-1_35/link_test.obj
+ link -lib /nologo /out:vc71-stlport/liblink_test-vc71-stlport-mt-spgd-1_35.lib $(XSFLAGS) vc71-stlport/liblink_test-vc71-stlport-mt-spgd-1_35/link_test.obj
+
+./vc71-stlport/liblink_test-vc71-stlport-mt-spgd-1_35.exe : main.cpp ./vc71-stlport/liblink_test-vc71-stlport-mt-spgd-1_35.lib
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /GX /RTC1 /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc71-stlport/liblink_test-vc71-stlport-mt-spgd-1_35.exe main.cpp /link /LIBPATH:./vc71-stlport
+ vc71-stlport\liblink_test-vc71-stlport-mt-spgd-1_35.exe
+
+########################################################
+#
+# section for liblink_test-vc71-stlport-mt-pgd-1_35.lib
+#
+########################################################
+vc71-stlport/liblink_test-vc71-stlport-mt-pgd-1_35/link_test.obj: link_test.cpp $(ALL_HEADER)
+ cl /c $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 $(CXXFLAGS) -Y- -Fo./vc71-stlport/liblink_test-vc71-stlport-mt-pgd-1_35/ -Fdvc71-stlport/liblink_test-vc71-stlport-mt-pgd-1_35.pdb link_test.cpp
+
+liblink_test-vc71-stlport-mt-pgd-1_35_dir :
+ @if not exist "vc71-stlport\liblink_test-vc71-stlport-mt-pgd-1_35\$(NULL)" mkdir vc71-stlport\liblink_test-vc71-stlport-mt-pgd-1_35
+
+liblink_test-vc71-stlport-mt-pgd-1_35_clean :
+ del vc71-stlport\liblink_test-vc71-stlport-mt-pgd-1_35\*.obj
+ del vc71-stlport\liblink_test-vc71-stlport-mt-pgd-1_35\*.idb
+ del vc71-stlport\liblink_test-vc71-stlport-mt-pgd-1_35\*.exp
+ del vc71-stlport\liblink_test-vc71-stlport-mt-pgd-1_35\*.pch
+
+./vc71-stlport/liblink_test-vc71-stlport-mt-pgd-1_35.lib : vc71-stlport/liblink_test-vc71-stlport-mt-pgd-1_35/link_test.obj
+ link -lib /nologo /out:vc71-stlport/liblink_test-vc71-stlport-mt-pgd-1_35.lib $(XSFLAGS) vc71-stlport/liblink_test-vc71-stlport-mt-pgd-1_35/link_test.obj
+
+./vc71-stlport/liblink_test-vc71-stlport-mt-pgd-1_35.exe : main.cpp ./vc71-stlport/liblink_test-vc71-stlport-mt-pgd-1_35.lib
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /GX /RTC1 /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc71-stlport/liblink_test-vc71-stlport-mt-pgd-1_35.exe main.cpp /link /LIBPATH:./vc71-stlport
+ vc71-stlport\liblink_test-vc71-stlport-mt-pgd-1_35.exe
+
diff --git a/test/link/vc71.mak b/test/link/vc71.mak
new file mode 100644
index 0000000..8873946
--- /dev/null
+++ b/test/link/vc71.mak
@@ -0,0 +1,260 @@
+# copyright John Maddock 2005
+# 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)
+#
+# auto generated makefile for VC6 compiler
+#
+# usage:
+# make
+# brings libraries up to date
+# make install
+# brings libraries up to date and copies binaries to your VC6 /lib and /bin directories (recomended)
+#
+
+#
+# Add additional compiler options here:
+#
+CXXFLAGS=
+#
+# Add additional include directories here:
+#
+INCLUDES=
+#
+# add additional linker flags here:
+#
+XLFLAGS=
+#
+# add additional static-library creation flags here:
+#
+XSFLAGS=
+
+!IF "$(OS)" == "Windows_NT"
+NULL=
+!ELSE
+NULL=nul
+!ENDIF
+
+!IF "$(MSVCDIR)" == ""
+!ERROR Variable MSVCDIR not set.
+!ENDIF
+
+
+ALL_HEADER=
+
+all : main_dir liblink_test-vc71-s-1_35_dir ./vc71/liblink_test-vc71-s-1_35.lib ./vc71/liblink_test-vc71-s-1_35.exe liblink_test-vc71-mt-s-1_35_dir ./vc71/liblink_test-vc71-mt-s-1_35.lib ./vc71/liblink_test-vc71-mt-s-1_35.exe liblink_test-vc71-sgd-1_35_dir ./vc71/liblink_test-vc71-sgd-1_35.lib ./vc71/liblink_test-vc71-sgd-1_35.exe liblink_test-vc71-mt-sgd-1_35_dir ./vc71/liblink_test-vc71-mt-sgd-1_35.lib ./vc71/liblink_test-vc71-mt-sgd-1_35.exe link_test-vc71-mt-gd-1_35_dir ./vc71/link_test-vc71-mt-gd-1_35.lib ./vc71/link_test-vc71-mt-gd-1_35.exe link_test-vc71-mt-1_35_dir ./vc71/link_test-vc71-mt-1_35.lib ./vc71/link_test-vc71-mt-1_35.exe liblink_test-vc71-mt-1_35_dir ./vc71/liblink_test-vc71-mt-1_35.lib ./vc71/liblink_test-vc71-mt-1_35.exe liblink_test-vc71-mt-gd-1_35_dir ./vc71/liblink_test-vc71-mt-gd-1_35.lib ./vc71/liblink_test-vc71-mt-gd-1_35.exe
+
+clean : liblink_test-vc71-s-1_35_clean liblink_test-vc71-mt-s-1_35_clean liblink_test-vc71-sgd-1_35_clean liblink_test-vc71-mt-sgd-1_35_clean link_test-vc71-mt-gd-1_35_clean link_test-vc71-mt-1_35_clean liblink_test-vc71-mt-1_35_clean liblink_test-vc71-mt-gd-1_35_clean
+
+install : all
+ copy vc71\liblink_test-vc71-s-1_35.lib "$(MSVCDIR)\lib"
+ copy vc71\liblink_test-vc71-mt-s-1_35.lib "$(MSVCDIR)\lib"
+ copy vc71\liblink_test-vc71-sgd-1_35.lib "$(MSVCDIR)\lib"
+ copy vc71\liblink_test-vc71-sgd-1_35.pdb "$(MSVCDIR)\lib"
+ copy vc71\liblink_test-vc71-mt-sgd-1_35.lib "$(MSVCDIR)\lib"
+ copy vc71\liblink_test-vc71-mt-sgd-1_35.pdb "$(MSVCDIR)\lib"
+ copy vc71\link_test-vc71-mt-gd-1_35.lib "$(MSVCDIR)\lib"
+ copy vc71\link_test-vc71-mt-gd-1_35.dll "$(MSVCDIR)\bin"
+ copy vc71\link_test-vc71-mt-gd-1_35.pdb "$(MSVCDIR)\lib"
+ copy vc71\link_test-vc71-mt-1_35.lib "$(MSVCDIR)\lib"
+ copy vc71\link_test-vc71-mt-1_35.dll "$(MSVCDIR)\bin"
+ copy vc71\liblink_test-vc71-mt-1_35.lib "$(MSVCDIR)\lib"
+ copy vc71\liblink_test-vc71-mt-gd-1_35.lib "$(MSVCDIR)\lib"
+ copy vc71\liblink_test-vc71-mt-gd-1_35.pdb "$(MSVCDIR)\lib"
+
+main_dir :
+ @if not exist "vc71\$(NULL)" mkdir vc71
+
+
+########################################################
+#
+# section for liblink_test-vc71-s-1_35.lib
+#
+########################################################
+vc71/liblink_test-vc71-s-1_35/link_test.obj: link_test.cpp $(ALL_HEADER)
+ cl /c $(INCLUDES) /nologo /ML /W3 /GX /O2 /GB /GF /Gy /I..\..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD $(CXXFLAGS) -Y- -Fo./vc71/liblink_test-vc71-s-1_35/ -Fdvc71/liblink_test-vc71-s-1_35.pdb link_test.cpp
+
+liblink_test-vc71-s-1_35_dir :
+ @if not exist "vc71\liblink_test-vc71-s-1_35\$(NULL)" mkdir vc71\liblink_test-vc71-s-1_35
+
+liblink_test-vc71-s-1_35_clean :
+ del vc71\liblink_test-vc71-s-1_35\*.obj
+ del vc71\liblink_test-vc71-s-1_35\*.idb
+ del vc71\liblink_test-vc71-s-1_35\*.exp
+ del vc71\liblink_test-vc71-s-1_35\*.pch
+
+./vc71/liblink_test-vc71-s-1_35.lib : vc71/liblink_test-vc71-s-1_35/link_test.obj
+ link -lib /nologo /out:vc71/liblink_test-vc71-s-1_35.lib $(XSFLAGS) vc71/liblink_test-vc71-s-1_35/link_test.obj
+
+./vc71/liblink_test-vc71-s-1_35.exe : main.cpp ./vc71/liblink_test-vc71-s-1_35.lib
+ cl $(INCLUDES) /nologo /ML /W3 /GX /O2 /GB /GF /Gy /I..\..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc71/liblink_test-vc71-s-1_35.exe main.cpp /link /LIBPATH:./vc71
+ vc71\liblink_test-vc71-s-1_35.exe
+
+########################################################
+#
+# section for liblink_test-vc71-mt-s-1_35.lib
+#
+########################################################
+vc71/liblink_test-vc71-mt-s-1_35/link_test.obj: link_test.cpp $(ALL_HEADER)
+ cl /c $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I..\..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD $(CXXFLAGS) -Y- -Fo./vc71/liblink_test-vc71-mt-s-1_35/ -Fdvc71/liblink_test-vc71-mt-s-1_35.pdb link_test.cpp
+
+liblink_test-vc71-mt-s-1_35_dir :
+ @if not exist "vc71\liblink_test-vc71-mt-s-1_35\$(NULL)" mkdir vc71\liblink_test-vc71-mt-s-1_35
+
+liblink_test-vc71-mt-s-1_35_clean :
+ del vc71\liblink_test-vc71-mt-s-1_35\*.obj
+ del vc71\liblink_test-vc71-mt-s-1_35\*.idb
+ del vc71\liblink_test-vc71-mt-s-1_35\*.exp
+ del vc71\liblink_test-vc71-mt-s-1_35\*.pch
+
+./vc71/liblink_test-vc71-mt-s-1_35.lib : vc71/liblink_test-vc71-mt-s-1_35/link_test.obj
+ link -lib /nologo /out:vc71/liblink_test-vc71-mt-s-1_35.lib $(XSFLAGS) vc71/liblink_test-vc71-mt-s-1_35/link_test.obj
+
+./vc71/liblink_test-vc71-mt-s-1_35.exe : main.cpp ./vc71/liblink_test-vc71-mt-s-1_35.lib
+ cl $(INCLUDES) /nologo /MT /W3 /GX /O2 /GB /GF /Gy /I..\..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc71/liblink_test-vc71-mt-s-1_35.exe main.cpp /link /LIBPATH:./vc71
+ vc71\liblink_test-vc71-mt-s-1_35.exe
+
+########################################################
+#
+# section for liblink_test-vc71-sgd-1_35.lib
+#
+########################################################
+vc71/liblink_test-vc71-sgd-1_35/link_test.obj: link_test.cpp $(ALL_HEADER)
+ cl /c $(INCLUDES) /nologo /MLd /W3 /Gm /GX /Zi /Od /I..\..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 $(CXXFLAGS) -Y- -Fo./vc71/liblink_test-vc71-sgd-1_35/ -Fdvc71/liblink_test-vc71-sgd-1_35.pdb link_test.cpp
+
+liblink_test-vc71-sgd-1_35_dir :
+ @if not exist "vc71\liblink_test-vc71-sgd-1_35\$(NULL)" mkdir vc71\liblink_test-vc71-sgd-1_35
+
+liblink_test-vc71-sgd-1_35_clean :
+ del vc71\liblink_test-vc71-sgd-1_35\*.obj
+ del vc71\liblink_test-vc71-sgd-1_35\*.idb
+ del vc71\liblink_test-vc71-sgd-1_35\*.exp
+ del vc71\liblink_test-vc71-sgd-1_35\*.pch
+
+./vc71/liblink_test-vc71-sgd-1_35.lib : vc71/liblink_test-vc71-sgd-1_35/link_test.obj
+ link -lib /nologo /out:vc71/liblink_test-vc71-sgd-1_35.lib $(XSFLAGS) vc71/liblink_test-vc71-sgd-1_35/link_test.obj
+
+./vc71/liblink_test-vc71-sgd-1_35.exe : main.cpp ./vc71/liblink_test-vc71-sgd-1_35.lib
+ cl $(INCLUDES) /nologo /MLd /W3 /Gm /GX /Zi /Od /I..\..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc71/liblink_test-vc71-sgd-1_35.exe main.cpp /link /LIBPATH:./vc71
+ vc71\liblink_test-vc71-sgd-1_35.exe
+
+########################################################
+#
+# section for liblink_test-vc71-mt-sgd-1_35.lib
+#
+########################################################
+vc71/liblink_test-vc71-mt-sgd-1_35/link_test.obj: link_test.cpp $(ALL_HEADER)
+ cl /c $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I..\..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 $(CXXFLAGS) -Y- -Fo./vc71/liblink_test-vc71-mt-sgd-1_35/ -Fdvc71/liblink_test-vc71-mt-sgd-1_35.pdb link_test.cpp
+
+liblink_test-vc71-mt-sgd-1_35_dir :
+ @if not exist "vc71\liblink_test-vc71-mt-sgd-1_35\$(NULL)" mkdir vc71\liblink_test-vc71-mt-sgd-1_35
+
+liblink_test-vc71-mt-sgd-1_35_clean :
+ del vc71\liblink_test-vc71-mt-sgd-1_35\*.obj
+ del vc71\liblink_test-vc71-mt-sgd-1_35\*.idb
+ del vc71\liblink_test-vc71-mt-sgd-1_35\*.exp
+ del vc71\liblink_test-vc71-mt-sgd-1_35\*.pch
+
+./vc71/liblink_test-vc71-mt-sgd-1_35.lib : vc71/liblink_test-vc71-mt-sgd-1_35/link_test.obj
+ link -lib /nologo /out:vc71/liblink_test-vc71-mt-sgd-1_35.lib $(XSFLAGS) vc71/liblink_test-vc71-mt-sgd-1_35/link_test.obj
+
+./vc71/liblink_test-vc71-mt-sgd-1_35.exe : main.cpp ./vc71/liblink_test-vc71-mt-sgd-1_35.lib
+ cl $(INCLUDES) /nologo /MTd /W3 /Gm /GX /Zi /Od /I..\..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD /GX /RTC1 /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc71/liblink_test-vc71-mt-sgd-1_35.exe main.cpp /link /LIBPATH:./vc71
+ vc71\liblink_test-vc71-mt-sgd-1_35.exe
+
+########################################################
+#
+# section for link_test-vc71-mt-gd-1_35.lib
+#
+########################################################
+vc71/link_test-vc71-mt-gd-1_35/link_test.obj: link_test.cpp $(ALL_HEADER)
+ cl /c $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I..\..\..\..\ /D_DEBUG /DBOOST_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 $(CXXFLAGS) -Y- -Fo./vc71/link_test-vc71-mt-gd-1_35/ -Fdvc71/link_test-vc71-mt-gd-1_35.pdb link_test.cpp
+
+link_test-vc71-mt-gd-1_35_dir :
+ @if not exist "vc71\link_test-vc71-mt-gd-1_35\$(NULL)" mkdir vc71\link_test-vc71-mt-gd-1_35
+
+link_test-vc71-mt-gd-1_35_clean :
+ del vc71\link_test-vc71-mt-gd-1_35\*.obj
+ del vc71\link_test-vc71-mt-gd-1_35\*.idb
+ del vc71\link_test-vc71-mt-gd-1_35\*.exp
+ del vc71\link_test-vc71-mt-gd-1_35\*.pch
+
+./vc71/link_test-vc71-mt-gd-1_35.lib : vc71/link_test-vc71-mt-gd-1_35/link_test.obj
+ link kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /pdb:"vc71/link_test-vc71-mt-gd-1_35.pdb" /debug /machine:I386 /out:"vc71/link_test-vc71-mt-gd-1_35.dll" /implib:"vc71/link_test-vc71-mt-gd-1_35.lib" /LIBPATH:$(STLPORT_PATH)\lib $(XLFLAGS) vc71/link_test-vc71-mt-gd-1_35/link_test.obj
+
+./vc71/link_test-vc71-mt-gd-1_35.exe : main.cpp ./vc71/link_test-vc71-mt-gd-1_35.lib
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I..\..\..\..\ /D_DEBUG /DBOOST_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc71/link_test-vc71-mt-gd-1_35.exe main.cpp /link /LIBPATH:./vc71
+ vc71\link_test-vc71-mt-gd-1_35.exe
+
+########################################################
+#
+# section for link_test-vc71-mt-1_35.lib
+#
+########################################################
+vc71/link_test-vc71-mt-1_35/link_test.obj: link_test.cpp $(ALL_HEADER)
+ cl /c $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I..\..\..\..\ /DBOOST_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD $(CXXFLAGS) -Y- -Fo./vc71/link_test-vc71-mt-1_35/ -Fdvc71/link_test-vc71-mt-1_35.pdb link_test.cpp
+
+link_test-vc71-mt-1_35_dir :
+ @if not exist "vc71\link_test-vc71-mt-1_35\$(NULL)" mkdir vc71\link_test-vc71-mt-1_35
+
+link_test-vc71-mt-1_35_clean :
+ del vc71\link_test-vc71-mt-1_35\*.obj
+ del vc71\link_test-vc71-mt-1_35\*.idb
+ del vc71\link_test-vc71-mt-1_35\*.exp
+ del vc71\link_test-vc71-mt-1_35\*.pch
+
+./vc71/link_test-vc71-mt-1_35.lib : vc71/link_test-vc71-mt-1_35/link_test.obj
+ link kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /pdb:"vc71/link_test-vc71-mt-1_35.pdb" /debug /machine:I386 /out:"vc71/link_test-vc71-mt-1_35.dll" /implib:"vc71/link_test-vc71-mt-1_35.lib" /LIBPATH:$(STLPORT_PATH)\lib $(XLFLAGS) vc71/link_test-vc71-mt-1_35/link_test.obj
+
+./vc71/link_test-vc71-mt-1_35.exe : main.cpp ./vc71/link_test-vc71-mt-1_35.lib
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I..\..\..\..\ /DBOOST_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc71/link_test-vc71-mt-1_35.exe main.cpp /link /LIBPATH:./vc71
+ vc71\link_test-vc71-mt-1_35.exe
+
+########################################################
+#
+# section for liblink_test-vc71-mt-1_35.lib
+#
+########################################################
+vc71/liblink_test-vc71-mt-1_35/link_test.obj: link_test.cpp $(ALL_HEADER)
+ cl /c $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD $(CXXFLAGS) -Y- -Fo./vc71/liblink_test-vc71-mt-1_35/ -Fdvc71/liblink_test-vc71-mt-1_35.pdb link_test.cpp
+
+liblink_test-vc71-mt-1_35_dir :
+ @if not exist "vc71\liblink_test-vc71-mt-1_35\$(NULL)" mkdir vc71\liblink_test-vc71-mt-1_35
+
+liblink_test-vc71-mt-1_35_clean :
+ del vc71\liblink_test-vc71-mt-1_35\*.obj
+ del vc71\liblink_test-vc71-mt-1_35\*.idb
+ del vc71\liblink_test-vc71-mt-1_35\*.exp
+ del vc71\liblink_test-vc71-mt-1_35\*.pch
+
+./vc71/liblink_test-vc71-mt-1_35.lib : vc71/liblink_test-vc71-mt-1_35/link_test.obj
+ link -lib /nologo /out:vc71/liblink_test-vc71-mt-1_35.lib $(XSFLAGS) vc71/liblink_test-vc71-mt-1_35/link_test.obj
+
+./vc71/liblink_test-vc71-mt-1_35.exe : main.cpp ./vc71/liblink_test-vc71-mt-1_35.lib
+ cl $(INCLUDES) /nologo /MD /W3 /GX /O2 /GB /GF /Gy /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc71/liblink_test-vc71-mt-1_35.exe main.cpp /link /LIBPATH:./vc71
+ vc71\liblink_test-vc71-mt-1_35.exe
+
+########################################################
+#
+# section for liblink_test-vc71-mt-gd-1_35.lib
+#
+########################################################
+vc71/liblink_test-vc71-mt-gd-1_35/link_test.obj: link_test.cpp $(ALL_HEADER)
+ cl /c $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 $(CXXFLAGS) -Y- -Fo./vc71/liblink_test-vc71-mt-gd-1_35/ -Fdvc71/liblink_test-vc71-mt-gd-1_35.pdb link_test.cpp
+
+liblink_test-vc71-mt-gd-1_35_dir :
+ @if not exist "vc71\liblink_test-vc71-mt-gd-1_35\$(NULL)" mkdir vc71\liblink_test-vc71-mt-gd-1_35
+
+liblink_test-vc71-mt-gd-1_35_clean :
+ del vc71\liblink_test-vc71-mt-gd-1_35\*.obj
+ del vc71\liblink_test-vc71-mt-gd-1_35\*.idb
+ del vc71\liblink_test-vc71-mt-gd-1_35\*.exp
+ del vc71\liblink_test-vc71-mt-gd-1_35\*.pch
+
+./vc71/liblink_test-vc71-mt-gd-1_35.lib : vc71/liblink_test-vc71-mt-gd-1_35/link_test.obj
+ link -lib /nologo /out:vc71/liblink_test-vc71-mt-gd-1_35.lib $(XSFLAGS) vc71/liblink_test-vc71-mt-gd-1_35/link_test.obj
+
+./vc71/liblink_test-vc71-mt-gd-1_35.exe : main.cpp ./vc71/liblink_test-vc71-mt-gd-1_35.lib
+ cl $(INCLUDES) /nologo /MDd /W3 /Gm /GX /Zi /Od /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD /GX /RTC1 /DBOOST_LIB_DIAGNOSTIC=1 $(CXXFLAGS) -o ./vc71/liblink_test-vc71-mt-gd-1_35.exe main.cpp /link /LIBPATH:./vc71
+ vc71\liblink_test-vc71-mt-gd-1_35.exe
+
diff --git a/test/link/vc_gen.sh b/test/link/vc_gen.sh
new file mode 100644
index 0000000..a4f5dcc
--- /dev/null
+++ b/test/link/vc_gen.sh
@@ -0,0 +1,424 @@
+#! /usr/bin/env bash
+# copyright John Maddock 2005
+# 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)
+
+libname=""
+src=""
+header=""
+all_dep=""
+
+# current makefile:
+out=""
+# temporary file:
+tout=""
+# install target temp file:
+iout=""
+# debug flag:
+debug="no"
+# compile options:
+opts=""
+# main output sub-directory:
+subdir=""
+# extra debug /RTc options:
+debug_extra=""
+
+function vc6_gen_lib()
+{
+ all_dep="$all_dep $libname""_dir ./$subdir/$libname.lib ./$subdir/$libname.exe"
+ echo " copy $subdir\\$libname.lib "'"$'"(MSVCDIR)\\lib"'"' >> $iout
+ if test $debug == "yes"; then
+ echo " copy $subdir\\$libname.pdb "'"$'"(MSVCDIR)\\lib"'"' >> $iout
+ fi
+#
+# set up section comments:
+ cat >> $tout << EOF
+########################################################
+#
+# section for $libname.lib
+#
+########################################################
+EOF
+#
+# process source files:
+ all_obj=""
+ for file in $src
+ do
+ obj=`echo "$file" | sed 's/\(.*\)cpp/\1obj/g'`
+ obj="$subdir/$libname/$obj"
+ all_obj="$all_obj $obj"
+ echo "$obj: $file \$(ALL_HEADER)" >> $tout
+ echo " cl /c \$(INCLUDES) $opts \$(CXXFLAGS) -Y- -Fo./$subdir/$libname/ -Fd$subdir/$libname.pdb $file" >> $tout
+ echo "" >> $tout
+ done
+#
+# now for the directories for this library:
+ echo "$libname"_dir : >> $tout
+ echo " @if not exist \"$subdir\\$libname\\\$(NULL)\" mkdir $subdir\\$libname" >> $tout
+ echo "" >> $tout
+#
+# now for the clean options for this library:
+ all_clean="$all_clean $libname""_clean"
+ echo "$libname"_clean : >> $tout
+ echo " del $subdir\\$libname\\"'*.obj' >> $tout
+ echo " del $subdir\\$libname\\"'*.idb' >> $tout
+ echo " del $subdir\\$libname\\"'*.exp' >> $tout
+ echo " del $subdir\\$libname\\"'*.pch' >> $tout
+ echo "" >> $tout
+#
+# now for the main target for this library:
+ echo ./$subdir/$libname.lib : $all_obj >> $tout
+ echo " link -lib /nologo /out:$subdir/$libname.lib \$(XSFLAGS) $all_obj" >> $tout
+ echo "" >> $tout
+# now the test program:
+ echo ./$subdir/$libname.exe : main.cpp ./$subdir/$libname.lib >> $tout
+ echo " cl \$(INCLUDES) $opts /DBOOST_LIB_DIAGNOSTIC=1 \$(CXXFLAGS) -o ./$subdir/$libname.exe main.cpp /link /LIBPATH:./$subdir" >> $tout
+ echo " $subdir"'\'"$libname.exe" >> $tout
+ echo "" >> $tout
+}
+
+function vc6_gen_dll()
+{
+ all_dep="$all_dep $libname""_dir ./$subdir/$libname.lib ./$subdir/$libname.exe"
+ echo " copy $subdir\\$libname.lib "'"$'"(MSVCDIR)\\lib"'"' >> $iout
+ echo " copy $subdir\\$libname.dll "'"$'"(MSVCDIR)\\bin"'"' >> $iout
+ if test $debug == "yes"; then
+ echo " copy $subdir\\$libname.pdb "'"$'"(MSVCDIR)\\lib"'"' >> $iout
+ fi
+#
+# set up section comments:
+ cat >> $tout << EOF
+########################################################
+#
+# section for $libname.lib
+#
+########################################################
+EOF
+#
+# process source files:
+ all_obj=""
+ for file in $src
+ do
+ obj=`echo "$file" | sed 's/\(.*\)cpp/\1obj/g'`
+ obj="$subdir/$libname/$obj"
+ all_obj="$all_obj $obj"
+ echo "$obj: $file \$(ALL_HEADER)" >> $tout
+ echo " cl /c \$(INCLUDES) $opts \$(CXXFLAGS) -Y- -Fo./$subdir/$libname/ -Fd$subdir/$libname.pdb $file" >> $tout
+ echo "" >> $tout
+ done
+#
+# now for the directories for this library:
+ echo "$libname"_dir : >> $tout
+ echo " @if not exist \"$subdir\\$libname\\\$(NULL)\" mkdir $subdir\\$libname" >> $tout
+ echo "" >> $tout
+#
+# now for the clean options for this library:
+ all_clean="$all_clean $libname""_clean"
+ echo "$libname"_clean : >> $tout
+ echo " del $subdir\\$libname\\"'*.obj' >> $tout
+ echo " del $subdir\\$libname\\"'*.idb' >> $tout
+ echo " del $subdir\\$libname\\"'*.exp' >> $tout
+ echo " del $subdir\\$libname\\"'*.pch' >> $tout
+ echo "" >> $tout
+#
+# now for the main target for this library:
+ echo ./$subdir/$libname.lib : $all_obj >> $tout
+ echo " link kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /dll /incremental:yes /pdb:\"$subdir/$libname.pdb\" /debug /machine:I386 /out:\"$subdir/$libname.dll\" /implib:\"$subdir/$libname.lib\" /LIBPATH:\$(STLPORT_PATH)\\lib \$(XLFLAGS) $all_obj" >> $tout
+ echo "" >> $tout
+# now the test program:
+ echo ./$subdir/$libname.exe : main.cpp ./$subdir/$libname.lib >> $tout
+ echo " cl \$(INCLUDES) $opts /DBOOST_LIB_DIAGNOSTIC=1 \$(CXXFLAGS) -o ./$subdir/$libname.exe main.cpp /link /LIBPATH:./$subdir" >> $tout
+ echo " $subdir"'\'"$libname.exe" >> $tout
+ echo "" >> $tout
+}
+
+is_stlport="no"
+
+function vc6_gen()
+{
+ debug="no"
+ tout="temp"
+ iout="temp_install"
+ all_dep="main_dir"
+ all_clean=""
+ echo > $out
+ echo > $tout
+ rm -f $iout
+
+ libname="liblink_test-${subdir}-s-${boost_version}"
+ opts='/nologo /ML /W3 /GX /O2 /GB /GF /Gy /I..\..\..\..\ /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD'
+ vc6_gen_lib
+
+ libname="liblink_test-${subdir}-mt-s-${boost_version}"
+ opts='/nologo /MT /W3 /GX /O2 /GB /GF /Gy /I..\..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB /FD '
+ vc6_gen_lib
+
+ debug="yes"
+ libname="liblink_test-${subdir}-sgd-${boost_version}"
+ opts='/nologo /MLd /W3 /Gm /GX /Zi /Od /I..\..\..\..\ /DWIN32 /D_DEBUG /D_MBCS /D_LIB /FD '"$debug_extra"' '
+ vc6_gen_lib
+
+ libname="liblink_test-${subdir}-mt-sgd-${boost_version}"
+ opts='/nologo /MTd /W3 /Gm /GX /Zi /Od /I..\..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB /FD '"$debug_extra"' '
+ vc6_gen_lib
+
+ libname="link_test-${subdir}-mt-gd-${boost_version}"
+ opts='/nologo /MDd /W3 /Gm /GX /Zi /Od /I..\..\..\..\ /D_DEBUG /DBOOST_DYN_LINK /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD '"$debug_extra"' '
+ vc6_gen_dll
+
+ debug="no"
+ opts='/nologo /MD /W3 /GX /O2 /GB /GF /Gy /I..\..\..\..\ /DBOOST_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD '
+ libname="link_test-${subdir}-mt-${boost_version}"
+ vc6_gen_dll
+
+ debug="no"
+ opts='/nologo /MD /W3 /GX /O2 /GB /GF /Gy /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL /FD '
+ libname="liblink_test-${subdir}-mt-${boost_version}"
+ vc6_gen_lib
+
+ debug="yes"
+ libname="liblink_test-${subdir}-mt-gd-${boost_version}"
+ opts='/nologo /MDd /W3 /Gm /GX /Zi /Od /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL /FD '"$debug_extra"' '
+ vc6_gen_lib
+
+ cat > $out << EOF
+# copyright John Maddock 2005
+# 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)
+#
+# auto generated makefile for VC6 compiler
+#
+# usage:
+# make
+# brings libraries up to date
+# make install
+# brings libraries up to date and copies binaries to your VC6 /lib and /bin directories (recomended)
+#
+
+#
+# Add additional compiler options here:
+#
+CXXFLAGS=
+#
+# Add additional include directories here:
+#
+INCLUDES=
+#
+# add additional linker flags here:
+#
+XLFLAGS=
+#
+# add additional static-library creation flags here:
+#
+XSFLAGS=
+
+!IF "\$(OS)" == "Windows_NT"
+NULL=
+!ELSE
+NULL=nul
+!ENDIF
+
+!IF "\$(MSVCDIR)" == ""
+!ERROR Variable MSVCDIR not set.
+!ENDIF
+
+EOF
+ echo "" >> $out
+ echo "ALL_HEADER=$header" >> $out
+ echo "" >> $out
+ echo "all : $all_dep" >> $out
+ echo >> $out
+ echo "clean : $all_clean" >> $out
+ echo >> $out
+ echo "install : all" >> $out
+ cat $iout >> $out
+ echo >> $out
+ echo main_dir : >> $out
+ echo " @if not exist \"$subdir\\\$(NULL)\" mkdir $subdir" >> $out
+ echo "" >> $out
+
+ cat $tout >> $out
+}
+
+function vc6_stlp_gen()
+{
+ debug="no"
+ tout="temp"
+ iout="temp_install"
+ all_dep="main_dir"
+ all_clean=""
+ echo > $out
+ echo > $tout
+ rm -f $iout
+
+ libname="liblink_test-${subdir}-mt-s-${boost_version}"
+ opts='/nologo /MT /W3 /GX /O2 /GB /GF /Gy /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /D_MT /DWIN32 /DNDEBUG /D_MBCS /D_LIB '
+ vc6_gen_lib
+
+ debug="true"
+ libname="liblink_test-${subdir}-mt-sgd-${boost_version}"
+ opts='/nologo /MTd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB '"$debug_extra"' '
+ vc6_gen_lib
+
+ libname="link_test-${subdir}-mt-gd-${boost_version}"
+ opts='/nologo /MDd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_DYN_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL '"$debug_extra"' '
+ vc6_gen_dll
+
+ debug="no"
+ opts='/nologo /MD /W3 /GX /O2 /GB /GF /I$(STLPORT_PATH)\stlport /Gy /I..\..\..\..\ /DBOOST_DYN_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL '
+ libname="link_test-${subdir}-mt-${boost_version}"
+ vc6_gen_dll
+
+ debug="no"
+ opts='/nologo /MD /W3 /GX /O2 /GB /GF /Gy /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /DNDEBUG /DWIN32 /D_WINDOWS /D_MBCS /D_USRDLL '
+ libname="liblink_test-${subdir}-mt-${boost_version}"
+ vc6_gen_lib
+
+ debug="true"
+ libname="liblink_test-${subdir}-mt-gd-${boost_version}"
+ opts='/nologo /MDd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL '"$debug_extra"' '
+ vc6_gen_lib
+
+# debug STLPort mode:
+# not yet supported by bjam?
+ debug="yes"
+ opts='/nologo /MDd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_DYN_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL '"$debug_extra"' '
+ libname="link_test-${subdir}-mt-pgd-${boost_version}"
+ vc6_gen_dll
+ libname="liblink_test-${subdir}-mt-spgd-${boost_version}"
+ opts='/nologo /MTd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /D__STL_DEBUG /D_STLP_DEBUG /DWIN32 /D_MT /D_DEBUG /D_MBCS /D_LIB '"$debug_extra"' '
+ vc6_gen_lib
+ opts='/nologo /MDd /W3 /Gm /GX /Zi /Od /I$(STLPORT_PATH)\stlport /I..\..\..\..\ /DBOOST_REGEX_STATIC_LINK /D__STL_DEBUG /D_STLP_DEBUG /D_DEBUG /DWIN32 /D_WINDOWS /D_MBCS /DUSRDLL '"$debug_extra"' '
+ libname="liblink_test-${subdir}-mt-pgd-${boost_version}"
+ vc6_gen_lib
+
+ cat > $out << EOF
+# copyright John Maddock 2005
+# 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)
+#
+# auto generated makefile for VC6+STLPort
+#
+# usage:
+# make
+# brings libraries up to date
+# make install
+# brings libraries up to date and copies binaries to your VC6 /lib and /bin directories (recomended)
+#
+
+#
+# Add additional compiler options here:
+#
+CXXFLAGS=
+#
+# Add additional include directories here:
+#
+INCLUDES=
+#
+# add additional linker flags here:
+#
+XLFLAGS=
+#
+# add additional static-library creation flags here:
+#
+XSFLAGS=
+
+!IF "\$(OS)" == "Windows_NT"
+NULL=
+!ELSE
+NULL=nul
+!ENDIF
+
+!IF "\$(MSVCDIR)" == ""
+!ERROR Variable MSVCDIR not set.
+!ENDIF
+
+!IF "\$(STLPORT_PATH)" == ""
+!ERROR Variable STLPORT_PATH not set.
+!ENDIF
+
+EOF
+ echo "" >> $out
+ echo "ALL_HEADER=$header" >> $out
+ echo "" >> $out
+ echo "all : $all_dep" >> $out
+ echo >> $out
+ echo "clean : $all_clean" >> $out
+ echo >> $out
+ echo "install : stlport_check all" >> $out
+ cat $iout >> $out
+ echo >> $out
+ echo main_dir : >> $out
+ echo " @if not exist \"$subdir\\\$(NULL)\" mkdir $subdir" >> $out
+ echo "" >> $out
+ echo 'stlport_check : $(STLPORT_PATH)\stlport\string' >> $out
+ echo " echo" >> $out
+ echo "" >> $out
+
+ cat $tout >> $out
+}
+
+
+. common.sh
+
+#
+# generate vc6 makefile:
+debug_extra="/GX"
+out="vc6.mak"
+subdir="vc6"
+vc6_gen
+#
+# generate vc6-stlport makefile:
+is_stlport="yes"
+out="vc6-stlport.mak"
+no_single="yes"
+subdir="vc6-stlport"
+vc6_stlp_gen
+#
+# generate vc7 makefile:
+debug_extra="/GX /RTC1"
+is_stlport="no"
+out="vc7.mak"
+no_single="no"
+subdir="vc7"
+vc6_gen
+#
+# generate vc7-stlport makefile:
+is_stlport="yes"
+out="vc7-stlport.mak"
+no_single="yes"
+subdir="vc7-stlport"
+vc6_stlp_gen
+#
+# generate vc71 makefile:
+is_stlport="no"
+out="vc71.mak"
+no_single="no"
+subdir="vc71"
+vc6_gen
+#
+# generate vc71-stlport makefile:
+is_stlport="yes"
+out="vc71-stlport.mak"
+no_single="yes"
+subdir="vc71-stlport"
+vc6_stlp_gen
+
+
+#
+# remove tmep files;
+rm -f $tout $iout
+
+
+
+
+
+
+
+
+
+
+
diff --git a/test/math_info.cpp b/test/math_info.cpp
new file mode 100644
index 0000000..47fe9ff
--- /dev/null
+++ b/test/math_info.cpp
@@ -0,0 +1,365 @@
+// (C) Copyright John Maddock 2005.
+// 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/test for most recent version.
+
+//
+// This test prints out informative information about <math.h>, <float.h>
+// and <limits>. Note that this file does require a correctly configured
+// Boost setup, and so can't be folded into config_info which is designed
+// to function without Boost.Confg support. Each test is documented in
+// more detail below.
+//
+
+#include <boost/limits.hpp>
+#include <limits.h>
+#include <math.h>
+#include <cmath>
+#include <float.h>
+#include <iostream>
+#include <iomanip>
+#include <cstring>
+#include <boost/type_traits/alignment_of.hpp>
+
+#ifdef BOOST_NO_STDC_NAMESPACE
+namespace std{ using ::strcmp; using ::pow; using ::fabs; using ::sqrt; using ::sin; using ::atan2; }
+#endif
+
+static unsigned int indent = 4;
+static unsigned int width = 40;
+
+void print_macro(const char* name, const char* value)
+{
+ // if name == value+1 then then macro is not defined,
+ // in which case we don't print anything:
+ if(0 != std::strcmp(name, value+1))
+ {
+ for(unsigned i = 0; i < indent; ++i) std::cout.put(' ');
+ std::cout << std::setw(width);
+ std::cout.setf(std::istream::left, std::istream::adjustfield);
+ std::cout << name;
+ if(value[1])
+ {
+ // macro has a value:
+ std::cout << value << "\n";
+ }
+ else
+ {
+ // macro is defined but has no value:
+ std::cout << " [no value]\n";
+ }
+ }
+}
+
+#define PRINT_MACRO(X) print_macro(#X, BOOST_STRINGIZE(=X))
+
+template <class T>
+void print_expression(const char* expression, T val)
+{
+ for(unsigned i = 0; i < indent; ++i) std::cout.put(' ');
+ std::cout << std::setw(width);
+ std::cout.setf(std::istream::left, std::istream::adjustfield);
+ std::cout << std::setprecision(std::numeric_limits<T>::digits10+2);
+ std::cout << expression << "=" << val << std::endl;
+}
+
+#define PRINT_EXPRESSION(E) print_expression(#E, E);
+
+
+template <class T>
+void print_limits(T, const char* name)
+{
+ //
+ // Output general information on numeric_limits, as well as
+ // probing known and supected problems.
+ //
+ std::cout <<
+ "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"
+ "std::numeric_limits information for type " << name << std::endl;
+ std::cout <<
+ " is_specialized = " << std::numeric_limits<T>::is_specialized << std::endl;
+ std::cout <<
+ " min" "() = " << std::setprecision(std::numeric_limits<T>::digits10 + 2) << (std::numeric_limits<T>::min)() << std::endl;
+ std::cout <<
+ " max" "() = " << std::setprecision(std::numeric_limits<T>::digits10 + 2) << (std::numeric_limits<T>::max)() << std::endl;
+ std::cout <<
+ " digits = " << std::numeric_limits<T>::digits << std::endl;
+ std::cout <<
+ " digits10 = " << std::numeric_limits<T>::digits10 << std::endl;
+ std::cout <<
+ " is_signed = " << std::numeric_limits<T>::is_signed << std::endl;
+ std::cout <<
+ " is_integer = " << std::numeric_limits<T>::is_integer << std::endl;
+ std::cout <<
+ " is_exact = " << std::numeric_limits<T>::is_exact << std::endl;
+ std::cout <<
+ " radix = " << std::numeric_limits<T>::radix << std::endl;
+
+ std::cout <<
+ " epsilon() = " << std::setprecision(std::numeric_limits<T>::digits10 + 2) << (std::numeric_limits<T>::epsilon)() << std::endl;
+ std::cout <<
+ " round_error() = " << std::setprecision(std::numeric_limits<T>::digits10 + 2) << (std::numeric_limits<T>::round_error)() << std::endl;
+
+ std::cout <<
+ " min_exponent = " << std::numeric_limits<T>::min_exponent << std::endl;
+ std::cout <<
+ " min_exponent10 = " << std::numeric_limits<T>::min_exponent10 << std::endl;
+ std::cout <<
+ " max_exponent = " << std::numeric_limits<T>::max_exponent << std::endl;
+ std::cout <<
+ " max_exponent10 = " << std::numeric_limits<T>::max_exponent10 << std::endl;
+ std::cout <<
+ " has_infinity = " << std::numeric_limits<T>::has_infinity << std::endl;
+ std::cout <<
+ " has_quiet_NaN = " << std::numeric_limits<T>::has_quiet_NaN << std::endl;
+ std::cout <<
+ " has_signaling_NaN = " << std::numeric_limits<T>::has_signaling_NaN << std::endl;
+ std::cout <<
+ " has_denorm = " << std::numeric_limits<T>::has_denorm << std::endl;
+ std::cout <<
+ " has_denorm_loss = " << std::numeric_limits<T>::has_denorm_loss << std::endl;
+
+ std::cout <<
+ " infinity() = " << std::setprecision(std::numeric_limits<T>::digits10 + 2) << (std::numeric_limits<T>::infinity)() << std::endl;
+ std::cout <<
+ " quiet_NaN() = " << std::setprecision(std::numeric_limits<T>::digits10 + 2) << (std::numeric_limits<T>::quiet_NaN)() << std::endl;
+ std::cout <<
+ " signaling_NaN() = " << std::setprecision(std::numeric_limits<T>::digits10 + 2) << (std::numeric_limits<T>::signaling_NaN)() << std::endl;
+ std::cout <<
+ " denorm_min() = " << std::setprecision(std::numeric_limits<T>::digits10 + 2) << (std::numeric_limits<T>::denorm_min)() << std::endl;
+
+
+ std::cout <<
+ " is_iec559 = " << std::numeric_limits<T>::is_iec559 << std::endl;
+ std::cout <<
+ " is_bounded = " << std::numeric_limits<T>::is_bounded << std::endl;
+ std::cout <<
+ " is_modulo = " << std::numeric_limits<T>::is_modulo << std::endl;
+ std::cout <<
+ " traps = " << std::numeric_limits<T>::traps << std::endl;
+ std::cout <<
+ " tinyness_before = " << std::numeric_limits<T>::tinyness_before << std::endl;
+ std::cout <<
+ " round_style = " << std::numeric_limits<T>::round_style << std::endl << std::endl;
+
+ if(std::numeric_limits<T>::is_exact == 0)
+ {
+ bool r = std::numeric_limits<T>::epsilon() == std::pow(static_cast<T>(std::numeric_limits<T>::radix), 1-std::numeric_limits<T>::digits);
+ if(r)
+ std::cout << "Epsilon has sane value of std::pow(std::numeric_limits<T>::radix, 1-std::numeric_limits<T>::digits)." << std::endl;
+ else
+ std::cout << "CAUTION: epsilon does not have a sane value." << std::endl;
+ std::cout << std::endl;
+ }
+ std::cout <<
+ " sizeof(" << name << ") = " << sizeof(T) << std::endl;
+ std::cout <<
+ " alignment_of<" << name << "> = " << boost::alignment_of<T>::value << std::endl << std::endl;
+}
+/*
+template <class T>
+bool is_same_type(T, T)
+{
+ return true;
+}*/
+bool is_same_type(float, float)
+{ return true; }
+bool is_same_type(double, double)
+{ return true; }
+bool is_same_type(long double, long double)
+{ return true; }
+template <class T, class U>
+bool is_same_type(T, U)
+{
+ return false;
+}
+
+//
+// We need this to test whether abs has been overloaded for
+// the floating point types or not:
+//
+namespace std{
+#if !BOOST_WORKAROUND(BOOST_MSVC, == 1300) && \
+ !defined(_LIBCPP_VERSION)
+template <class T>
+char abs(T)
+{
+ return ' ';
+}
+#endif
+}
+
+
+template <class T>
+void test_overloads(T, const char* name)
+{
+ //
+ // Probe known and suspected problems with the std lib Math functions.
+ //
+ std::cout <<
+ "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"
+ "Math function overload information for type " << name << std::endl;
+
+ //
+ // Are the math functions overloaded for type T,
+ // or do we just get double versions?
+ //
+ bool r = is_same_type(std::fabs(T(0)), T(0));
+ r &= is_same_type(std::sqrt(T(0)), T(0));
+ r &= is_same_type(std::sin(T(0)), T(0));
+ if(r)
+ std::cout << "The Math functions are overloaded for type " << name << std::endl;
+ else
+ std::cout << "CAUTION: The Math functions are NOT overloaded for type " << name << std::endl;
+
+ //
+ // Check that a few of the functions work OK, we do this because if these
+ // are implemented as double precision internally then we can get
+ // overflow or underflow when passing arguments of other types.
+ //
+ r = (std::fabs((std::numeric_limits<T>::max)()) == (std::numeric_limits<T>::max)());
+ r &= (std::fabs(-(std::numeric_limits<T>::max)()) == (std::numeric_limits<T>::max)());
+ r &= (std::fabs((std::numeric_limits<T>::min)()) == (std::numeric_limits<T>::min)());
+ r &= (std::fabs(-(std::numeric_limits<T>::min)()) == (std::numeric_limits<T>::min)());
+ if(r)
+ std::cout << "std::fabs looks OK for type " << name << std::endl;
+ else
+ std::cout << "CAUTION: std::fabs is broken for type " << name << std::endl;
+
+ //
+ // abs not overloaded for real arguments with VC6 (and others?)
+ //
+ r = (std::abs((std::numeric_limits<T>::max)()) == (std::numeric_limits<T>::max)());
+ r &= (std::abs(-(std::numeric_limits<T>::max)()) == (std::numeric_limits<T>::max)());
+ r &= (std::abs((std::numeric_limits<T>::min)()) == (std::numeric_limits<T>::min)());
+ r &= (std::abs(-(std::numeric_limits<T>::min)()) == (std::numeric_limits<T>::min)());
+ if(r)
+ std::cout << "std::abs looks OK for type " << name << std::endl;
+ else
+ std::cout << "CAUTION: std::abs is broken for type " << name << std::endl;
+
+ //
+ // std::sqrt on FreeBSD converts long double arguments to double leading to
+ // overflow/underflow:
+ //
+ r = (std::sqrt((std::numeric_limits<T>::max)()) < (std::numeric_limits<T>::max)());
+ if(r)
+ std::cout << "std::sqrt looks OK for type " << name << std::endl;
+ else
+ std::cout << "CAUTION: std::sqrt is broken for type " << name << std::endl;
+
+ //
+ // Sanity check for atan2: verify that it returns arguments in the correct
+ // range and not just atan(x/y).
+ //
+ static const T half_pi = static_cast<T>(1.57079632679489661923132169163975144L);
+
+ T val = std::atan2(T(-1), T(-1));
+ r = -half_pi > val;
+ val = std::atan2(T(1), T(-1));
+ r &= half_pi < val;
+ val = std::atan2(T(1), T(1));
+ r &= (val > 0) && (val < half_pi);
+ val = std::atan2(T(-1), T(1));
+ r &= (val < 0) && (val > -half_pi);
+ if(r)
+ std::cout << "std::atan2 looks OK for type " << name << std::endl;
+ else
+ std::cout << "CAUTION: std::atan2 is broken for type " << name << std::endl;
+}
+
+
+
+int main()
+{
+ //
+ // Start by printing the values of the macros from float.h
+ //
+ std::cout <<
+ "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n"
+ "Macros from <math.h>" << std::endl;
+
+#ifdef __BORLANDC__
+ // Turn off hardware exceptions so we don't just abort
+ // when calling numeric_limits members.
+ _control87(MCW_EM,MCW_EM);
+#endif
+
+ PRINT_EXPRESSION(HUGE_VAL);
+#ifdef HUGE_VALF
+ PRINT_EXPRESSION(HUGE_VALF);
+#endif
+#ifdef HUGE_VALL
+ PRINT_EXPRESSION(HUGE_VALL);
+#endif
+#ifdef INFINITY
+ PRINT_EXPRESSION(INFINITY);
+#endif
+
+ PRINT_MACRO(NAN);
+ PRINT_MACRO(FP_INFINITE);
+ PRINT_MACRO(FP_NAN);
+ PRINT_MACRO(FP_NORMAL);
+ PRINT_MACRO(FP_SUBNORMAL);
+ PRINT_MACRO(FP_ZERO);
+ PRINT_MACRO(FP_FAST_FMA);
+ PRINT_MACRO(FP_FAST_FMAF);
+ PRINT_MACRO(FP_FAST_FMAL);
+ PRINT_MACRO(FP_ILOGB0);
+ PRINT_MACRO(FP_ILOGBNAN);
+ PRINT_MACRO(MATH_ERRNO);
+ PRINT_MACRO(MATH_ERREXCEPT);
+
+ PRINT_EXPRESSION(FLT_MIN_10_EXP);
+ PRINT_EXPRESSION(FLT_DIG);
+ PRINT_EXPRESSION(FLT_MIN_EXP);
+ PRINT_EXPRESSION(FLT_EPSILON);
+ PRINT_EXPRESSION(FLT_RADIX);
+ PRINT_EXPRESSION(FLT_MANT_DIG);
+ PRINT_EXPRESSION(FLT_ROUNDS);
+ PRINT_EXPRESSION(FLT_MAX);
+ PRINT_EXPRESSION(FLT_MAX_10_EXP);
+ PRINT_EXPRESSION(FLT_MAX_EXP);
+ PRINT_EXPRESSION(FLT_MIN);
+ PRINT_EXPRESSION(DBL_DIG);
+ PRINT_EXPRESSION(DBL_MIN_EXP);
+ PRINT_EXPRESSION(DBL_EPSILON);
+ PRINT_EXPRESSION(DBL_MANT_DIG);
+ PRINT_EXPRESSION(DBL_MAX);
+ PRINT_EXPRESSION(DBL_MIN);
+ PRINT_EXPRESSION(DBL_MAX_10_EXP);
+ PRINT_EXPRESSION(DBL_MAX_EXP);
+ PRINT_EXPRESSION(DBL_MIN_10_EXP);
+ PRINT_EXPRESSION(LDBL_MAX_10_EXP);
+ PRINT_EXPRESSION(LDBL_MAX_EXP);
+ PRINT_EXPRESSION(LDBL_MIN);
+ PRINT_EXPRESSION(LDBL_MIN_10_EXP);
+ PRINT_EXPRESSION(LDBL_DIG);
+ PRINT_EXPRESSION(LDBL_MIN_EXP);
+ PRINT_EXPRESSION(LDBL_EPSILON);
+ PRINT_EXPRESSION(LDBL_MANT_DIG);
+ PRINT_EXPRESSION(LDBL_MAX);
+
+ std::cout << std::endl;
+
+ //
+ // print out numeric_limits info:
+ //
+ print_limits(float(0), "float");
+ print_limits(double(0), "double");
+ print_limits((long double)(0), "long double");
+
+ //
+ // print out function overload information:
+ //
+ test_overloads(float(0), "float");
+ test_overloads(double(0), "double");
+ test_overloads((long double)(0), "long double");
+ return 0;
+}
+
+
+
+
diff --git a/test/no_adl_barrier_fail.cpp b/test/no_adl_barrier_fail.cpp
new file mode 100644
index 0000000..a21e0b3
--- /dev/null
+++ b/test/no_adl_barrier_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Fri Mar 28 16:52:13 2008
+// by libs/config/tools/generate.cpp
+// Copyright John Maddock 2002-4.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id: generate.cpp 40184 2007-10-19 12:46:54Z johnmaddock $
+//
+
+
+// Test file for macro BOOST_NO_ADL_BARRIER
+// This file should not compile, if it does then
+// BOOST_NO_ADL_BARRIER should not be defined.
+// See file boost_no_adl_barrier.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_ADL_BARRIER
+#include "boost_no_adl_barrier.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_adl_barrier::test();
+}
+
diff --git a/test/no_adl_barrier_pass.cpp b/test/no_adl_barrier_pass.cpp
new file mode 100644
index 0000000..39bef3f
--- /dev/null
+++ b/test/no_adl_barrier_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Fri Mar 28 16:52:13 2008
+// by libs/config/tools/generate.cpp
+// Copyright John Maddock 2002-4.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id: generate.cpp 40184 2007-10-19 12:46:54Z johnmaddock $
+//
+
+
+// Test file for macro BOOST_NO_ADL_BARRIER
+// This file should compile, if it does not then
+// BOOST_NO_ADL_BARRIER should be defined.
+// See file boost_no_adl_barrier.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_ADL_BARRIER
+#include "boost_no_adl_barrier.ipp"
+#else
+namespace boost_no_adl_barrier = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_adl_barrier::test();
+}
+
diff --git a/test/no_arg_dep_lookup_fail.cpp b/test/no_arg_dep_lookup_fail.cpp
new file mode 100644
index 0000000..7733f87
--- /dev/null
+++ b/test/no_arg_dep_lookup_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:00 2004
+// 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.
+
+// Test file for macro BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
+// This file should not compile, if it does then
+// BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP should not be defined.
+// See file boost_no_arg_dep_lookup.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_ARGUMENT_DEPENDENT_LOOKUP
+#include "boost_no_arg_dep_lookup.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_argument_dependent_lookup::test();
+}
+
diff --git a/test/no_arg_dep_lookup_pass.cpp b/test/no_arg_dep_lookup_pass.cpp
new file mode 100644
index 0000000..1a8d7a7
--- /dev/null
+++ b/test/no_arg_dep_lookup_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:00 2004
+// 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.
+
+// Test file for macro BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP
+// This file should compile, if it does not then
+// BOOST_NO_ARGUMENT_DEPENDENT_LOOKUP should be defined.
+// See file boost_no_arg_dep_lookup.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_ARGUMENT_DEPENDENT_LOOKUP
+#include "boost_no_arg_dep_lookup.ipp"
+#else
+namespace boost_no_argument_dependent_lookup = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_argument_dependent_lookup::test();
+}
+
diff --git a/test/no_array_type_spec_fail.cpp b/test/no_array_type_spec_fail.cpp
new file mode 100644
index 0000000..9299736
--- /dev/null
+++ b/test/no_array_type_spec_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:00 2004
+// 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.
+
+// Test file for macro BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS
+// This file should not compile, if it does then
+// BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS should not be defined.
+// See file boost_no_array_type_spec.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_ARRAY_TYPE_SPECIALIZATIONS
+#include "boost_no_array_type_spec.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_array_type_specializations::test();
+}
+
diff --git a/test/no_array_type_spec_pass.cpp b/test/no_array_type_spec_pass.cpp
new file mode 100644
index 0000000..75ab434
--- /dev/null
+++ b/test/no_array_type_spec_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:00 2004
+// 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.
+
+// Test file for macro BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS
+// This file should compile, if it does not then
+// BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS should be defined.
+// See file boost_no_array_type_spec.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_ARRAY_TYPE_SPECIALIZATIONS
+#include "boost_no_array_type_spec.ipp"
+#else
+namespace boost_no_array_type_specializations = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_array_type_specializations::test();
+}
+
diff --git a/test/no_auto_declarations_fail.cpp b/test/no_auto_declarations_fail.cpp
new file mode 100644
index 0000000..8f770df
--- /dev/null
+++ b/test/no_auto_declarations_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Thu Mar 12 17:32:04 2009
+// 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_AUTO_DECLARATIONS
+// This file should not compile, if it does then
+// BOOST_NO_CXX11_AUTO_DECLARATIONS should not be defined.
+// See file boost_no_auto_declarations.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_AUTO_DECLARATIONS
+#include "boost_no_auto_declarations.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_auto_declarations::test();
+}
+
diff --git a/test/no_auto_declarations_pass.cpp b/test/no_auto_declarations_pass.cpp
new file mode 100644
index 0000000..b901aaf
--- /dev/null
+++ b/test/no_auto_declarations_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Thu Mar 12 17:32:04 2009
+// 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_AUTO_DECLARATIONS
+// This file should compile, if it does not then
+// BOOST_NO_CXX11_AUTO_DECLARATIONS should be defined.
+// See file boost_no_auto_declarations.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_AUTO_DECLARATIONS
+#include "boost_no_auto_declarations.ipp"
+#else
+namespace boost_no_cxx11_auto_declarations = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_auto_declarations::test();
+}
+
diff --git a/test/no_auto_multidecl_fail.cpp b/test/no_auto_multidecl_fail.cpp
new file mode 100644
index 0000000..6646447
--- /dev/null
+++ b/test/no_auto_multidecl_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Thu Mar 12 17:32:04 2009
+// 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_AUTO_MULTIDECLARATIONS
+// This file should not compile, if it does then
+// BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS should not be defined.
+// See file boost_no_auto_multidecl.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_AUTO_MULTIDECLARATIONS
+#include "boost_no_auto_multidecl.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_auto_multideclarations::test();
+}
+
diff --git a/test/no_auto_multidecl_pass.cpp b/test/no_auto_multidecl_pass.cpp
new file mode 100644
index 0000000..b2071ea
--- /dev/null
+++ b/test/no_auto_multidecl_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Thu Mar 12 17:32:04 2009
+// 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_AUTO_MULTIDECLARATIONS
+// This file should compile, if it does not then
+// BOOST_NO_CXX11_AUTO_MULTIDECLARATIONS should be defined.
+// See file boost_no_auto_multidecl.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_AUTO_MULTIDECLARATIONS
+#include "boost_no_auto_multidecl.ipp"
+#else
+namespace boost_no_cxx11_auto_multideclarations = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_auto_multideclarations::test();
+}
+
diff --git a/test/no_auto_ptr_fail.cpp b/test/no_auto_ptr_fail.cpp
new file mode 100644
index 0000000..da64bb9
--- /dev/null
+++ b/test/no_auto_ptr_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:00 2004
+// 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.
+
+// Test file for macro BOOST_NO_AUTO_PTR
+// This file should not compile, if it does then
+// BOOST_NO_AUTO_PTR should not be defined.
+// See file boost_no_auto_ptr.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_AUTO_PTR
+#include "boost_no_auto_ptr.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_auto_ptr::test();
+}
+
diff --git a/test/no_auto_ptr_pass.cpp b/test/no_auto_ptr_pass.cpp
new file mode 100644
index 0000000..3a978a7
--- /dev/null
+++ b/test/no_auto_ptr_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:00 2004
+// 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.
+
+// Test file for macro BOOST_NO_AUTO_PTR
+// This file should compile, if it does not then
+// BOOST_NO_AUTO_PTR should be defined.
+// See file boost_no_auto_ptr.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_AUTO_PTR
+#include "boost_no_auto_ptr.ipp"
+#else
+namespace boost_no_auto_ptr = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_auto_ptr::test();
+}
+
diff --git a/test/no_bcb_partial_spec_fail.cpp b/test/no_bcb_partial_spec_fail.cpp
new file mode 100644
index 0000000..c19747b
--- /dev/null
+++ b/test/no_bcb_partial_spec_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:01 2004
+// 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.
+
+// Test file for macro BOOST_BCB_PARTIAL_SPECIALIZATION_BUG
+// This file should not compile, if it does then
+// BOOST_BCB_PARTIAL_SPECIALIZATION_BUG should not be defined.
+// See file boost_no_bcb_partial_spec.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_BCB_PARTIAL_SPECIALIZATION_BUG
+#include "boost_no_bcb_partial_spec.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_bcb_partial_specialization_bug::test();
+}
+
diff --git a/test/no_bcb_partial_spec_pass.cpp b/test/no_bcb_partial_spec_pass.cpp
new file mode 100644
index 0000000..a6605bc
--- /dev/null
+++ b/test/no_bcb_partial_spec_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:01 2004
+// 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.
+
+// Test file for macro BOOST_BCB_PARTIAL_SPECIALIZATION_BUG
+// This file should compile, if it does not then
+// BOOST_BCB_PARTIAL_SPECIALIZATION_BUG should be defined.
+// See file boost_no_bcb_partial_spec.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_BCB_PARTIAL_SPECIALIZATION_BUG
+#include "boost_no_bcb_partial_spec.ipp"
+#else
+namespace boost_bcb_partial_specialization_bug = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_bcb_partial_specialization_bug::test();
+}
+
diff --git a/test/no_char16_t_fail.cpp b/test/no_char16_t_fail.cpp
new file mode 100644
index 0000000..63ddf7a
--- /dev/null
+++ b/test/no_char16_t_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Thu May 29 09:24:04 2008
+// 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_CHAR16_T
+// This file should not compile, if it does then
+// BOOST_NO_CXX11_CHAR16_T should not be defined.
+// See file boost_no_char16_t.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_CHAR16_T
+#include "boost_no_char16_t.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_char16_t::test();
+}
+
diff --git a/test/no_char16_t_pass.cpp b/test/no_char16_t_pass.cpp
new file mode 100644
index 0000000..b714f09
--- /dev/null
+++ b/test/no_char16_t_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Thu May 29 09:24:04 2008
+// 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_CHAR16_T
+// This file should compile, if it does not then
+// BOOST_NO_CXX11_CHAR16_T should be defined.
+// See file boost_no_char16_t.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_CHAR16_T
+#include "boost_no_char16_t.ipp"
+#else
+namespace boost_no_cxx11_char16_t = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_char16_t::test();
+}
+
diff --git a/test/no_char32_t_fail.cpp b/test/no_char32_t_fail.cpp
new file mode 100644
index 0000000..868050e
--- /dev/null
+++ b/test/no_char32_t_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Thu May 29 09:24:04 2008
+// 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_CHAR32_T
+// This file should not compile, if it does then
+// BOOST_NO_CXX11_CHAR32_T should not be defined.
+// See file boost_no_char32_t.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_CHAR32_T
+#include "boost_no_char32_t.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_char32_t::test();
+}
+
diff --git a/test/no_char32_t_pass.cpp b/test/no_char32_t_pass.cpp
new file mode 100644
index 0000000..4bb7d5f
--- /dev/null
+++ b/test/no_char32_t_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Thu May 29 09:24:04 2008
+// 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_CHAR32_T
+// This file should compile, if it does not then
+// BOOST_NO_CXX11_CHAR32_T should be defined.
+// See file boost_no_char32_t.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_CHAR32_T
+#include "boost_no_char32_t.ipp"
+#else
+namespace boost_no_cxx11_char32_t = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_char32_t::test();
+}
+
diff --git a/test/no_com_value_init_fail.cpp b/test/no_com_value_init_fail.cpp
new file mode 100644
index 0000000..ec89a85
--- /dev/null
+++ b/test/no_com_value_init_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Fri Apr 09 12:24:53 2010
+// by libs/config/tools/generate.cpp
+// Copyright John Maddock 2002-4.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id: generate.cpp 49281 2008-10-11 15:40:44Z johnmaddock $
+//
+
+
+// Test file for macro BOOST_NO_COMPLETE_VALUE_INITIALIZATION
+// This file should not compile, if it does then
+// BOOST_NO_COMPLETE_VALUE_INITIALIZATION should not be defined.
+// See file boost_no_com_value_init.ipp for details
+
+// Must not have BOOST_ASSERT_CONFIG set; it defeats
+// the objective of this file:
+#ifdef BOOST_ASSERT_CONFIG
+# undef BOOST_ASSERT_CONFIG
+#endif
+
+#include <boost/config.hpp>
+#include "test.hpp"
+
+#ifdef BOOST_NO_COMPLETE_VALUE_INITIALIZATION
+#include "boost_no_com_value_init.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_complete_value_initialization::test();
+}
+
diff --git a/test/no_com_value_init_pass.cpp b/test/no_com_value_init_pass.cpp
new file mode 100644
index 0000000..cfe00a2
--- /dev/null
+++ b/test/no_com_value_init_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Fri Apr 09 12:24:53 2010
+// by libs/config/tools/generate.cpp
+// Copyright John Maddock 2002-4.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id: generate.cpp 49281 2008-10-11 15:40:44Z johnmaddock $
+//
+
+
+// Test file for macro BOOST_NO_COMPLETE_VALUE_INITIALIZATION
+// This file should compile, if it does not then
+// BOOST_NO_COMPLETE_VALUE_INITIALIZATION should be defined.
+// See file boost_no_com_value_init.ipp for details
+
+// Must not have BOOST_ASSERT_CONFIG set; it defeats
+// the objective of this file:
+#ifdef BOOST_ASSERT_CONFIG
+# undef BOOST_ASSERT_CONFIG
+#endif
+
+#include <boost/config.hpp>
+#include "test.hpp"
+
+#ifndef BOOST_NO_COMPLETE_VALUE_INITIALIZATION
+#include "boost_no_com_value_init.ipp"
+#else
+namespace boost_no_complete_value_initialization = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_complete_value_initialization::test();
+}
+
diff --git a/test/no_constexpr_fail.cpp b/test/no_constexpr_fail.cpp
new file mode 100644
index 0000000..0f1163c
--- /dev/null
+++ b/test/no_constexpr_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Thu Jun 19 16:26:16 2008
+// 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_CONSTEXPR
+// This file should not compile, if it does then
+// BOOST_NO_CXX11_CONSTEXPR should not be defined.
+// See file boost_no_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_CXX11_CONSTEXPR
+#include "boost_no_constexpr.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_constexpr::test();
+}
+
diff --git a/test/no_constexpr_pass.cpp b/test/no_constexpr_pass.cpp
new file mode 100644
index 0000000..fbacd36
--- /dev/null
+++ b/test/no_constexpr_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Thu Jun 19 16:26:16 2008
+// 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_CONSTEXPR
+// This file should compile, if it does not then
+// BOOST_NO_CXX11_CONSTEXPR should be defined.
+// See file boost_no_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_CXX11_CONSTEXPR
+#include "boost_no_constexpr.ipp"
+#else
+namespace boost_no_cxx11_constexpr = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_constexpr::test();
+}
+
diff --git a/test/no_ctype_functions_fail.cpp b/test/no_ctype_functions_fail.cpp
new file mode 100644
index 0000000..5379c7d
--- /dev/null
+++ b/test/no_ctype_functions_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:01 2004
+// 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.
+
+// Test file for macro BOOST_NO_CTYPE_FUNCTIONS
+// This file should not compile, if it does then
+// BOOST_NO_CTYPE_FUNCTIONS should not be defined.
+// See file boost_no_ctype_functions.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_CTYPE_FUNCTIONS
+#include "boost_no_ctype_functions.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_ctype_functions::test();
+}
+
diff --git a/test/no_ctype_functions_pass.cpp b/test/no_ctype_functions_pass.cpp
new file mode 100644
index 0000000..64e285f
--- /dev/null
+++ b/test/no_ctype_functions_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:01 2004
+// 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.
+
+// Test file for macro BOOST_NO_CTYPE_FUNCTIONS
+// This file should compile, if it does not then
+// BOOST_NO_CTYPE_FUNCTIONS should be defined.
+// See file boost_no_ctype_functions.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_CTYPE_FUNCTIONS
+#include "boost_no_ctype_functions.ipp"
+#else
+namespace boost_no_ctype_functions = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_ctype_functions::test();
+}
+
diff --git a/test/no_cv_spec_fail.cpp b/test/no_cv_spec_fail.cpp
new file mode 100644
index 0000000..8b2658f
--- /dev/null
+++ b/test/no_cv_spec_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:01 2004
+// 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.
+
+// Test file for macro BOOST_NO_CV_SPECIALIZATIONS
+// This file should not compile, if it does then
+// BOOST_NO_CV_SPECIALIZATIONS should not be defined.
+// See file boost_no_cv_spec.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_CV_SPECIALIZATIONS
+#include "boost_no_cv_spec.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cv_specializations::test();
+}
+
diff --git a/test/no_cv_spec_pass.cpp b/test/no_cv_spec_pass.cpp
new file mode 100644
index 0000000..310c4ef
--- /dev/null
+++ b/test/no_cv_spec_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:01 2004
+// 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.
+
+// Test file for macro BOOST_NO_CV_SPECIALIZATIONS
+// This file should compile, if it does not then
+// BOOST_NO_CV_SPECIALIZATIONS should be defined.
+// See file boost_no_cv_spec.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_CV_SPECIALIZATIONS
+#include "boost_no_cv_spec.ipp"
+#else
+namespace boost_no_cv_specializations = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cv_specializations::test();
+}
+
diff --git a/test/no_cv_void_spec_fail.cpp b/test/no_cv_void_spec_fail.cpp
new file mode 100644
index 0000000..0608d56
--- /dev/null
+++ b/test/no_cv_void_spec_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:01 2004
+// 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.
+
+// Test file for macro BOOST_NO_CV_VOID_SPECIALIZATIONS
+// This file should not compile, if it does then
+// BOOST_NO_CV_VOID_SPECIALIZATIONS should not be defined.
+// See file boost_no_cv_void_spec.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_CV_VOID_SPECIALIZATIONS
+#include "boost_no_cv_void_spec.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cv_void_specializations::test();
+}
+
diff --git a/test/no_cv_void_spec_pass.cpp b/test/no_cv_void_spec_pass.cpp
new file mode 100644
index 0000000..7eac295
--- /dev/null
+++ b/test/no_cv_void_spec_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:01 2004
+// 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.
+
+// Test file for macro BOOST_NO_CV_VOID_SPECIALIZATIONS
+// This file should compile, if it does not then
+// BOOST_NO_CV_VOID_SPECIALIZATIONS should be defined.
+// See file boost_no_cv_void_spec.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_CV_VOID_SPECIALIZATIONS
+#include "boost_no_cv_void_spec.ipp"
+#else
+namespace boost_no_cv_void_specializations = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cv_void_specializations::test();
+}
+
diff --git a/test/no_cwchar_fail.cpp b/test/no_cwchar_fail.cpp
new file mode 100644
index 0000000..e49e983
--- /dev/null
+++ b/test/no_cwchar_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:01 2004
+// 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.
+
+// Test file for macro BOOST_NO_CWCHAR
+// This file should not compile, if it does then
+// BOOST_NO_CWCHAR should not be defined.
+// See file boost_no_cwchar.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_CWCHAR
+#include "boost_no_cwchar.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cwchar::test();
+}
+
diff --git a/test/no_cwchar_pass.cpp b/test/no_cwchar_pass.cpp
new file mode 100644
index 0000000..ae82820
--- /dev/null
+++ b/test/no_cwchar_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:01 2004
+// 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.
+
+// Test file for macro BOOST_NO_CWCHAR
+// This file should compile, if it does not then
+// BOOST_NO_CWCHAR should be defined.
+// See file boost_no_cwchar.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_CWCHAR
+#include "boost_no_cwchar.ipp"
+#else
+namespace boost_no_cwchar = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cwchar::test();
+}
+
diff --git a/test/no_cwctype_fail.cpp b/test/no_cwctype_fail.cpp
new file mode 100644
index 0000000..85bdcbc
--- /dev/null
+++ b/test/no_cwctype_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:01 2004
+// 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.
+
+// Test file for macro BOOST_NO_CWCTYPE
+// This file should not compile, if it does then
+// BOOST_NO_CWCTYPE should not be defined.
+// See file boost_no_cwctype.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_CWCTYPE
+#include "boost_no_cwctype.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cwctype::test();
+}
+
diff --git a/test/no_cwctype_pass.cpp b/test/no_cwctype_pass.cpp
new file mode 100644
index 0000000..1cb1c4b
--- /dev/null
+++ b/test/no_cwctype_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:01 2004
+// 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.
+
+// Test file for macro BOOST_NO_CWCTYPE
+// This file should compile, if it does not then
+// BOOST_NO_CWCTYPE should be defined.
+// See file boost_no_cwctype.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_CWCTYPE
+#include "boost_no_cwctype.ipp"
+#else
+namespace boost_no_cwctype = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cwctype::test();
+}
+
diff --git a/test/no_cxx11_addressof_fail.cpp b/test/no_cxx11_addressof_fail.cpp
new file mode 100644
index 0000000..9216b5e
--- /dev/null
+++ b/test/no_cxx11_addressof_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Tue Feb 11 17:12:27 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_CXX11_ADDRESSOF
+// This file should not compile, if it does then
+// BOOST_NO_CXX11_ADDRESSOF should not be defined.
+// See file boost_no_cxx11_addressof.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_ADDRESSOF
+#include "boost_no_cxx11_addressof.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_addressof::test();
+}
+
diff --git a/test/no_cxx11_addressof_pass.cpp b/test/no_cxx11_addressof_pass.cpp
new file mode 100644
index 0000000..e4e84ab
--- /dev/null
+++ b/test/no_cxx11_addressof_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Tue Feb 11 17:12:27 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_CXX11_ADDRESSOF
+// This file should compile, if it does not then
+// BOOST_NO_CXX11_ADDRESSOF should be defined.
+// See file boost_no_cxx11_addressof.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_ADDRESSOF
+#include "boost_no_cxx11_addressof.ipp"
+#else
+namespace boost_no_cxx11_addressof = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_addressof::test();
+}
+
diff --git a/test/no_cxx11_alignas_fail.cpp b/test/no_cxx11_alignas_fail.cpp
new file mode 100644
index 0000000..767aaa3
--- /dev/null
+++ b/test/no_cxx11_alignas_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Sun Apr 28 18:36:48 2013
+// 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_ALIGNAS
+// This file should not compile, if it does then
+// BOOST_NO_CXX11_ALIGNAS should not be defined.
+// See file boost_no_cxx11_alignas.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_ALIGNAS
+#include "boost_no_cxx11_alignas.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_alignas::test();
+}
+
diff --git a/test/no_cxx11_alignas_pass.cpp b/test/no_cxx11_alignas_pass.cpp
new file mode 100644
index 0000000..b8b84b9
--- /dev/null
+++ b/test/no_cxx11_alignas_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Sun Apr 28 18:36:48 2013
+// 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_ALIGNAS
+// This file should compile, if it does not then
+// BOOST_NO_CXX11_ALIGNAS should be defined.
+// See file boost_no_cxx11_alignas.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_ALIGNAS
+#include "boost_no_cxx11_alignas.ipp"
+#else
+namespace boost_no_cxx11_alignas = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_alignas::test();
+}
+
diff --git a/test/no_cxx11_allocator_fail.cpp b/test/no_cxx11_allocator_fail.cpp
new file mode 100644
index 0000000..0fdb14b
--- /dev/null
+++ b/test/no_cxx11_allocator_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Sun Apr 22 11:15:42 2012
+// by libs/config/tools/generate.cpp
+// Copyright John Maddock 2002-4.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id: generate.cpp 72327 2011-06-01 14:51:03Z eric_niebler $
+//
+
+
+// Test file for macro BOOST_NO_CXX11_ALLOCATOR
+// This file should not compile, if it does then
+// BOOST_NO_CXX11_ALLOCATOR should not be defined.
+// See file boost_no_cxx11_allocator.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_ALLOCATOR
+#include "boost_no_cxx11_allocator.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_allocator::test();
+}
+
diff --git a/test/no_cxx11_allocator_pass.cpp b/test/no_cxx11_allocator_pass.cpp
new file mode 100644
index 0000000..20a4d63
--- /dev/null
+++ b/test/no_cxx11_allocator_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Sun Apr 22 11:15:42 2012
+// by libs/config/tools/generate.cpp
+// Copyright John Maddock 2002-4.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id: generate.cpp 72327 2011-06-01 14:51:03Z eric_niebler $
+//
+
+
+// Test file for macro BOOST_NO_CXX11_ALLOCATOR
+// This file should compile, if it does not then
+// BOOST_NO_CXX11_ALLOCATOR should be defined.
+// See file boost_no_cxx11_allocator.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_ALLOCATOR
+#include "boost_no_cxx11_allocator.ipp"
+#else
+namespace boost_no_cxx11_allocator = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_allocator::test();
+}
+
diff --git a/test/no_cxx11_atomic_sp_fail.cpp b/test/no_cxx11_atomic_sp_fail.cpp
new file mode 100644
index 0000000..9c8a620
--- /dev/null
+++ b/test/no_cxx11_atomic_sp_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Sun Apr 22 11:15:42 2012
+// by libs/config/tools/generate.cpp
+// Copyright John Maddock 2002-4.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id: generate.cpp 72327 2011-06-01 14:51:03Z eric_niebler $
+//
+
+
+// Test file for macro BOOST_NO_CXX11_ATOMIC_SMART_PTR
+// This file should not compile, if it does then
+// BOOST_NO_CXX11_ATOMIC_SMART_PTR should not be defined.
+// See file boost_no_cxx11_atomic_sp.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_ATOMIC_SMART_PTR
+#include "boost_no_cxx11_atomic_sp.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_atomic_smart_ptr::test();
+}
+
diff --git a/test/no_cxx11_atomic_sp_pass.cpp b/test/no_cxx11_atomic_sp_pass.cpp
new file mode 100644
index 0000000..5b7b171
--- /dev/null
+++ b/test/no_cxx11_atomic_sp_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Sun Apr 22 11:15:42 2012
+// by libs/config/tools/generate.cpp
+// Copyright John Maddock 2002-4.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id: generate.cpp 72327 2011-06-01 14:51:03Z eric_niebler $
+//
+
+
+// Test file for macro BOOST_NO_CXX11_ATOMIC_SMART_PTR
+// This file should compile, if it does not then
+// BOOST_NO_CXX11_ATOMIC_SMART_PTR should be defined.
+// See file boost_no_cxx11_atomic_sp.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_ATOMIC_SMART_PTR
+#include "boost_no_cxx11_atomic_sp.ipp"
+#else
+namespace boost_no_cxx11_atomic_smart_ptr = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_atomic_smart_ptr::test();
+}
+
diff --git a/test/no_cxx11_defaulted_moves_fail.cpp b/test/no_cxx11_defaulted_moves_fail.cpp
new file mode 100644
index 0000000..7829012
--- /dev/null
+++ b/test/no_cxx11_defaulted_moves_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Wed Jan 03 23:31:30 2018
+// 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_DEFAULTED_MOVES
+// This file should not compile, if it does then
+// BOOST_NO_CXX11_DEFAULTED_MOVES should not be defined.
+// See file boost_no_cxx11_defaulted_moves.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_DEFAULTED_MOVES
+#include "boost_no_cxx11_defaulted_moves.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_defaulted_moves::test();
+}
+
diff --git a/test/no_cxx11_defaulted_moves_pass.cpp b/test/no_cxx11_defaulted_moves_pass.cpp
new file mode 100644
index 0000000..bf26c14
--- /dev/null
+++ b/test/no_cxx11_defaulted_moves_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Wed Jan 03 23:31:30 2018
+// 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_DEFAULTED_MOVES
+// This file should compile, if it does not then
+// BOOST_NO_CXX11_DEFAULTED_MOVES should be defined.
+// See file boost_no_cxx11_defaulted_moves.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_DEFAULTED_MOVES
+#include "boost_no_cxx11_defaulted_moves.ipp"
+#else
+namespace boost_no_cxx11_defaulted_moves = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_defaulted_moves::test();
+}
+
diff --git a/test/no_cxx11_final_fail.cpp b/test/no_cxx11_final_fail.cpp
new file mode 100644
index 0000000..50c35a2
--- /dev/null
+++ b/test/no_cxx11_final_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Fri Aug 15 15:51:00 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_CXX11_FINAL
+// This file should not compile, if it does then
+// BOOST_NO_CXX11_FINAL should not be defined.
+// See file boost_no_cxx11_final.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_FINAL
+#include "boost_no_cxx11_final.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_final::test();
+}
+
diff --git a/test/no_cxx11_final_pass.cpp b/test/no_cxx11_final_pass.cpp
new file mode 100644
index 0000000..e18530b
--- /dev/null
+++ b/test/no_cxx11_final_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Fri Aug 15 15:51:00 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_CXX11_FINAL
+// This file should compile, if it does not then
+// BOOST_NO_CXX11_FINAL should be defined.
+// See file boost_no_cxx11_final.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_FINAL
+#include "boost_no_cxx11_final.ipp"
+#else
+namespace boost_no_cxx11_final = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_final::test();
+}
+
diff --git a/test/no_cxx11_hdr_array_fail.cpp b/test/no_cxx11_hdr_array_fail.cpp
new file mode 100644
index 0000000..766c0f5
--- /dev/null
+++ b/test/no_cxx11_hdr_array_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Fri May 15 12:10:32 2009
+// 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_HDR_ARRAY
+// This file should not compile, if it does then
+// BOOST_NO_CXX11_HDR_ARRAY should not be defined.
+// See file boost_no_cxx11_hdr_array.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_HDR_ARRAY
+#include "boost_no_cxx11_hdr_array.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_hdr_array::test();
+}
+
diff --git a/test/no_cxx11_hdr_array_pass.cpp b/test/no_cxx11_hdr_array_pass.cpp
new file mode 100644
index 0000000..4938405
--- /dev/null
+++ b/test/no_cxx11_hdr_array_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Fri May 15 12:10:32 2009
+// 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_HDR_ARRAY
+// This file should compile, if it does not then
+// BOOST_NO_CXX11_HDR_ARRAY should be defined.
+// See file boost_no_cxx11_hdr_array.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_HDR_ARRAY
+#include "boost_no_cxx11_hdr_array.ipp"
+#else
+namespace boost_no_cxx11_hdr_array = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_hdr_array::test();
+}
+
diff --git a/test/no_cxx11_hdr_atomic_fail.cpp b/test/no_cxx11_hdr_atomic_fail.cpp
new file mode 100644
index 0000000..cb6bd12
--- /dev/null
+++ b/test/no_cxx11_hdr_atomic_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Thu Dec 12 19:07:12 2013
+// 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_HDR_ATOMIC
+// This file should not compile, if it does then
+// BOOST_NO_CXX11_HDR_ATOMIC should not be defined.
+// See file boost_no_cxx11_hdr_atomic.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_HDR_ATOMIC
+#include "boost_no_cxx11_hdr_atomic.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_hdr_atomic::test();
+}
+
diff --git a/test/no_cxx11_hdr_atomic_pass.cpp b/test/no_cxx11_hdr_atomic_pass.cpp
new file mode 100644
index 0000000..7258f64
--- /dev/null
+++ b/test/no_cxx11_hdr_atomic_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Thu Dec 12 19:07:12 2013
+// 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_HDR_ATOMIC
+// This file should compile, if it does not then
+// BOOST_NO_CXX11_HDR_ATOMIC should be defined.
+// See file boost_no_cxx11_hdr_atomic.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_HDR_ATOMIC
+#include "boost_no_cxx11_hdr_atomic.ipp"
+#else
+namespace boost_no_cxx11_hdr_atomic = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_hdr_atomic::test();
+}
+
diff --git a/test/no_cxx11_hdr_chrono_fail.cpp b/test/no_cxx11_hdr_chrono_fail.cpp
new file mode 100644
index 0000000..d1ac76e
--- /dev/null
+++ b/test/no_cxx11_hdr_chrono_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Fri May 15 11:57:42 2009
+// 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_HDR_CHRONO
+// This file should not compile, if it does then
+// BOOST_NO_CXX11_HDR_CHRONO should not be defined.
+// See file boost_no_cxx11_hdr_chrono.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_HDR_CHRONO
+#include "boost_no_cxx11_hdr_chrono.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_hdr_chrono::test();
+}
+
diff --git a/test/no_cxx11_hdr_chrono_pass.cpp b/test/no_cxx11_hdr_chrono_pass.cpp
new file mode 100644
index 0000000..3bc1af8
--- /dev/null
+++ b/test/no_cxx11_hdr_chrono_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Fri May 15 11:57:42 2009
+// 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_HDR_CHRONO
+// This file should compile, if it does not then
+// BOOST_NO_CXX11_HDR_CHRONO should be defined.
+// See file boost_no_cxx11_hdr_chrono.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_HDR_CHRONO
+#include "boost_no_cxx11_hdr_chrono.ipp"
+#else
+namespace boost_no_cxx11_hdr_chrono = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_hdr_chrono::test();
+}
+
diff --git a/test/no_cxx11_hdr_codecvt_fail.cpp b/test/no_cxx11_hdr_codecvt_fail.cpp
new file mode 100644
index 0000000..041fd0a
--- /dev/null
+++ b/test/no_cxx11_hdr_codecvt_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Fri May 15 11:57:42 2009
+// 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_HDR_CODECVT
+// This file should not compile, if it does then
+// BOOST_NO_CXX11_HDR_CODECVT should not be defined.
+// See file boost_no_cxx11_hdr_codecvt.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_HDR_CODECVT
+#include "boost_no_cxx11_hdr_codecvt.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_hdr_codecvt::test();
+}
+
diff --git a/test/no_cxx11_hdr_codecvt_pass.cpp b/test/no_cxx11_hdr_codecvt_pass.cpp
new file mode 100644
index 0000000..241a38d
--- /dev/null
+++ b/test/no_cxx11_hdr_codecvt_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Fri May 15 11:57:42 2009
+// 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_HDR_CODECVT
+// This file should compile, if it does not then
+// BOOST_NO_CXX11_HDR_CODECVT should be defined.
+// See file boost_no_cxx11_hdr_codecvt.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_HDR_CODECVT
+#include "boost_no_cxx11_hdr_codecvt.ipp"
+#else
+namespace boost_no_cxx11_hdr_codecvt = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_hdr_codecvt::test();
+}
+
diff --git a/test/no_cxx11_hdr_condition_variable_fail.cpp b/test/no_cxx11_hdr_condition_variable_fail.cpp
new file mode 100644
index 0000000..f34cd37
--- /dev/null
+++ b/test/no_cxx11_hdr_condition_variable_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Fri May 15 11:57:42 2009
+// 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_HDR_CONDITION_VARIABLE
+// This file should not compile, if it does then
+// BOOST_NO_CXX11_HDR_CONDITION_VARIABLE should not be defined.
+// See file boost_no_cxx11_hdr_condition_variable.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_HDR_CONDITION_VARIABLE
+#include "boost_no_cxx11_hdr_condition_variable.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_hdr_condition_variable::test();
+}
+
diff --git a/test/no_cxx11_hdr_condition_variable_pass.cpp b/test/no_cxx11_hdr_condition_variable_pass.cpp
new file mode 100644
index 0000000..017084b
--- /dev/null
+++ b/test/no_cxx11_hdr_condition_variable_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Fri May 15 11:57:42 2009
+// 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_HDR_CONDITION_VARIABLE
+// This file should compile, if it does not then
+// BOOST_NO_CXX11_HDR_CONDITION_VARIABLE should be defined.
+// See file boost_no_cxx11_hdr_condition_variable.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_HDR_CONDITION_VARIABLE
+#include "boost_no_cxx11_hdr_condition_variable.ipp"
+#else
+namespace boost_no_cxx11_hdr_condition_variable = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_hdr_condition_variable::test();
+}
+
diff --git a/test/no_cxx11_hdr_forward_list_fail.cpp b/test/no_cxx11_hdr_forward_list_fail.cpp
new file mode 100644
index 0000000..9a1205d
--- /dev/null
+++ b/test/no_cxx11_hdr_forward_list_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Fri May 15 11:57:42 2009
+// 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_HDR_FORWARD_LIST
+// This file should not compile, if it does then
+// BOOST_NO_CXX11_HDR_FORWARD_LIST should not be defined.
+// See file boost_no_cxx11_hdr_forward_list.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_HDR_FORWARD_LIST
+#include "boost_no_cxx11_hdr_forward_list.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_hdr_forward_list::test();
+}
+
diff --git a/test/no_cxx11_hdr_forward_list_pass.cpp b/test/no_cxx11_hdr_forward_list_pass.cpp
new file mode 100644
index 0000000..3e8b55b
--- /dev/null
+++ b/test/no_cxx11_hdr_forward_list_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Fri May 15 11:57:42 2009
+// 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_HDR_FORWARD_LIST
+// This file should compile, if it does not then
+// BOOST_NO_CXX11_HDR_FORWARD_LIST should be defined.
+// See file boost_no_cxx11_hdr_forward_list.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_HDR_FORWARD_LIST
+#include "boost_no_cxx11_hdr_forward_list.ipp"
+#else
+namespace boost_no_cxx11_hdr_forward_list = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_hdr_forward_list::test();
+}
+
diff --git a/test/no_cxx11_hdr_future_fail.cpp b/test/no_cxx11_hdr_future_fail.cpp
new file mode 100644
index 0000000..7640f9d
--- /dev/null
+++ b/test/no_cxx11_hdr_future_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Fri May 15 11:57:42 2009
+// 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_HDR_FUTURE
+// This file should not compile, if it does then
+// BOOST_NO_CXX11_HDR_FUTURE should not be defined.
+// See file boost_no_cxx11_hdr_future.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_HDR_FUTURE
+#include "boost_no_cxx11_hdr_future.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_hdr_future::test();
+}
+
diff --git a/test/no_cxx11_hdr_future_pass.cpp b/test/no_cxx11_hdr_future_pass.cpp
new file mode 100644
index 0000000..ec16952
--- /dev/null
+++ b/test/no_cxx11_hdr_future_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Fri May 15 11:57:42 2009
+// 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_HDR_FUTURE
+// This file should compile, if it does not then
+// BOOST_NO_CXX11_HDR_FUTURE should be defined.
+// See file boost_no_cxx11_hdr_future.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_HDR_FUTURE
+#include "boost_no_cxx11_hdr_future.ipp"
+#else
+namespace boost_no_cxx11_hdr_future = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_hdr_future::test();
+}
+
diff --git a/test/no_cxx11_hdr_initializer_list_fail.cpp b/test/no_cxx11_hdr_initializer_list_fail.cpp
new file mode 100644
index 0000000..6dfe099
--- /dev/null
+++ b/test/no_cxx11_hdr_initializer_list_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Fri May 15 11:57:42 2009
+// 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_HDR_INITIALIZER_LIST
+// This file should not compile, if it does then
+// BOOST_NO_CXX11_HDR_INITIALIZER_LIST should not be defined.
+// See file boost_no_cxx11_hdr_initializer_list.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_HDR_INITIALIZER_LIST
+#include "boost_no_cxx11_hdr_initializer_list.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_hdr_initializer_list::test();
+}
+
diff --git a/test/no_cxx11_hdr_initializer_list_pass.cpp b/test/no_cxx11_hdr_initializer_list_pass.cpp
new file mode 100644
index 0000000..2a71539
--- /dev/null
+++ b/test/no_cxx11_hdr_initializer_list_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Fri May 15 11:57:42 2009
+// 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_HDR_INITIALIZER_LIST
+// This file should compile, if it does not then
+// BOOST_NO_CXX11_HDR_INITIALIZER_LIST should be defined.
+// See file boost_no_cxx11_hdr_initializer_list.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_HDR_INITIALIZER_LIST
+#include "boost_no_cxx11_hdr_initializer_list.ipp"
+#else
+namespace boost_no_cxx11_hdr_initializer_list = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_hdr_initializer_list::test();
+}
+
diff --git a/test/no_cxx11_hdr_mutex_fail.cpp b/test/no_cxx11_hdr_mutex_fail.cpp
new file mode 100644
index 0000000..87432ec
--- /dev/null
+++ b/test/no_cxx11_hdr_mutex_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Fri May 15 11:57:42 2009
+// 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_HDR_MUTEX
+// This file should not compile, if it does then
+// BOOST_NO_CXX11_HDR_MUTEX should not be defined.
+// See file boost_no_cxx11_hdr_mutex.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_HDR_MUTEX
+#include "boost_no_cxx11_hdr_mutex.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_hdr_mutex::test();
+}
+
diff --git a/test/no_cxx11_hdr_mutex_pass.cpp b/test/no_cxx11_hdr_mutex_pass.cpp
new file mode 100644
index 0000000..a912b2c
--- /dev/null
+++ b/test/no_cxx11_hdr_mutex_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Fri May 15 11:57:42 2009
+// 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_HDR_MUTEX
+// This file should compile, if it does not then
+// BOOST_NO_CXX11_HDR_MUTEX should be defined.
+// See file boost_no_cxx11_hdr_mutex.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_HDR_MUTEX
+#include "boost_no_cxx11_hdr_mutex.ipp"
+#else
+namespace boost_no_cxx11_hdr_mutex = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_hdr_mutex::test();
+}
+
diff --git a/test/no_cxx11_hdr_random_fail.cpp b/test/no_cxx11_hdr_random_fail.cpp
new file mode 100644
index 0000000..e4ed0f8
--- /dev/null
+++ b/test/no_cxx11_hdr_random_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Fri May 15 11:57:42 2009
+// 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_HDR_RANDOM
+// This file should not compile, if it does then
+// BOOST_NO_CXX11_HDR_RANDOM should not be defined.
+// See file boost_no_cxx11_hdr_random.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_HDR_RANDOM
+#include "boost_no_cxx11_hdr_random.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_hdr_random::test();
+}
+
diff --git a/test/no_cxx11_hdr_random_pass.cpp b/test/no_cxx11_hdr_random_pass.cpp
new file mode 100644
index 0000000..7995481
--- /dev/null
+++ b/test/no_cxx11_hdr_random_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Fri May 15 11:57:42 2009
+// 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_HDR_RANDOM
+// This file should compile, if it does not then
+// BOOST_NO_CXX11_HDR_RANDOM should be defined.
+// See file boost_no_cxx11_hdr_random.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_HDR_RANDOM
+#include "boost_no_cxx11_hdr_random.ipp"
+#else
+namespace boost_no_cxx11_hdr_random = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_hdr_random::test();
+}
+
diff --git a/test/no_cxx11_hdr_ratio_fail.cpp b/test/no_cxx11_hdr_ratio_fail.cpp
new file mode 100644
index 0000000..8e15efb
--- /dev/null
+++ b/test/no_cxx11_hdr_ratio_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Fri May 15 11:57:42 2009
+// 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_HDR_RATIO
+// This file should not compile, if it does then
+// BOOST_NO_CXX11_HDR_RATIO should not be defined.
+// See file boost_no_cxx11_hdr_ratio.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_HDR_RATIO
+#include "boost_no_cxx11_hdr_ratio.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_hdr_ratio::test();
+}
+
diff --git a/test/no_cxx11_hdr_ratio_pass.cpp b/test/no_cxx11_hdr_ratio_pass.cpp
new file mode 100644
index 0000000..8c1b2d4
--- /dev/null
+++ b/test/no_cxx11_hdr_ratio_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Fri May 15 11:57:42 2009
+// 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_HDR_RATIO
+// This file should compile, if it does not then
+// BOOST_NO_CXX11_HDR_RATIO should be defined.
+// See file boost_no_cxx11_hdr_ratio.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_HDR_RATIO
+#include "boost_no_cxx11_hdr_ratio.ipp"
+#else
+namespace boost_no_cxx11_hdr_ratio = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_hdr_ratio::test();
+}
+
diff --git a/test/no_cxx11_hdr_regex_fail.cpp b/test/no_cxx11_hdr_regex_fail.cpp
new file mode 100644
index 0000000..178d5b5
--- /dev/null
+++ b/test/no_cxx11_hdr_regex_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Fri May 15 11:57:42 2009
+// 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_HDR_REGEX
+// This file should not compile, if it does then
+// BOOST_NO_CXX11_HDR_REGEX should not be defined.
+// See file boost_no_cxx11_hdr_regex.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_HDR_REGEX
+#include "boost_no_cxx11_hdr_regex.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_hdr_regex::test();
+}
+
diff --git a/test/no_cxx11_hdr_regex_pass.cpp b/test/no_cxx11_hdr_regex_pass.cpp
new file mode 100644
index 0000000..6acd2e8
--- /dev/null
+++ b/test/no_cxx11_hdr_regex_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Fri May 15 11:57:42 2009
+// 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_HDR_REGEX
+// This file should compile, if it does not then
+// BOOST_NO_CXX11_HDR_REGEX should be defined.
+// See file boost_no_cxx11_hdr_regex.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_HDR_REGEX
+#include "boost_no_cxx11_hdr_regex.ipp"
+#else
+namespace boost_no_cxx11_hdr_regex = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_hdr_regex::test();
+}
+
diff --git a/test/no_cxx11_hdr_system_error_fail.cpp b/test/no_cxx11_hdr_system_error_fail.cpp
new file mode 100644
index 0000000..85bb100
--- /dev/null
+++ b/test/no_cxx11_hdr_system_error_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Fri May 15 11:57:42 2009
+// 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_HDR_SYSTEM_ERROR
+// This file should not compile, if it does then
+// BOOST_NO_CXX11_HDR_SYSTEM_ERROR should not be defined.
+// See file boost_no_cxx11_hdr_system_error.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_HDR_SYSTEM_ERROR
+#include "boost_no_cxx11_hdr_system_error.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_hdr_system_error::test();
+}
+
diff --git a/test/no_cxx11_hdr_system_error_pass.cpp b/test/no_cxx11_hdr_system_error_pass.cpp
new file mode 100644
index 0000000..042b52f
--- /dev/null
+++ b/test/no_cxx11_hdr_system_error_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Fri May 15 11:57:42 2009
+// 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_HDR_SYSTEM_ERROR
+// This file should compile, if it does not then
+// BOOST_NO_CXX11_HDR_SYSTEM_ERROR should be defined.
+// See file boost_no_cxx11_hdr_system_error.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_HDR_SYSTEM_ERROR
+#include "boost_no_cxx11_hdr_system_error.ipp"
+#else
+namespace boost_no_cxx11_hdr_system_error = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_hdr_system_error::test();
+}
+
diff --git a/test/no_cxx11_hdr_thread_fail.cpp b/test/no_cxx11_hdr_thread_fail.cpp
new file mode 100644
index 0000000..0e54a01
--- /dev/null
+++ b/test/no_cxx11_hdr_thread_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Fri May 15 12:45:15 2009
+// 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_HDR_THREAD
+// This file should not compile, if it does then
+// BOOST_NO_CXX11_HDR_THREAD should not be defined.
+// See file boost_no_cxx11_hdr_thread.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_HDR_THREAD
+#include "boost_no_cxx11_hdr_thread.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_hdr_thread::test();
+}
+
diff --git a/test/no_cxx11_hdr_thread_pass.cpp b/test/no_cxx11_hdr_thread_pass.cpp
new file mode 100644
index 0000000..34313ab
--- /dev/null
+++ b/test/no_cxx11_hdr_thread_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Fri May 15 12:45:15 2009
+// 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_HDR_THREAD
+// This file should compile, if it does not then
+// BOOST_NO_CXX11_HDR_THREAD should be defined.
+// See file boost_no_cxx11_hdr_thread.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_HDR_THREAD
+#include "boost_no_cxx11_hdr_thread.ipp"
+#else
+namespace boost_no_cxx11_hdr_thread = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_hdr_thread::test();
+}
+
diff --git a/test/no_cxx11_hdr_tuple_fail.cpp b/test/no_cxx11_hdr_tuple_fail.cpp
new file mode 100644
index 0000000..655de0f
--- /dev/null
+++ b/test/no_cxx11_hdr_tuple_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Fri May 15 11:57:42 2009
+// 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_HDR_TUPLE
+// This file should not compile, if it does then
+// BOOST_NO_CXX11_HDR_TUPLE should not be defined.
+// See file boost_no_cxx11_hdr_tuple.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_HDR_TUPLE
+#include "boost_no_cxx11_hdr_tuple.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_hdr_tuple::test();
+}
+
diff --git a/test/no_cxx11_hdr_tuple_pass.cpp b/test/no_cxx11_hdr_tuple_pass.cpp
new file mode 100644
index 0000000..505a779
--- /dev/null
+++ b/test/no_cxx11_hdr_tuple_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Fri May 15 11:57:42 2009
+// 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_HDR_TUPLE
+// This file should compile, if it does not then
+// BOOST_NO_CXX11_HDR_TUPLE should be defined.
+// See file boost_no_cxx11_hdr_tuple.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_HDR_TUPLE
+#include "boost_no_cxx11_hdr_tuple.ipp"
+#else
+namespace boost_no_cxx11_hdr_tuple = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_hdr_tuple::test();
+}
+
diff --git a/test/no_cxx11_hdr_type_traits_fail.cpp b/test/no_cxx11_hdr_type_traits_fail.cpp
new file mode 100644
index 0000000..603e57e
--- /dev/null
+++ b/test/no_cxx11_hdr_type_traits_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Fri May 15 11:57:42 2009
+// 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_HDR_TYPE_TRAITS
+// This file should not compile, if it does then
+// BOOST_NO_CXX11_HDR_TYPE_TRAITS should not be defined.
+// See file boost_no_cxx11_hdr_type_traits.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_HDR_TYPE_TRAITS
+#include "boost_no_cxx11_hdr_type_traits.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_hdr_type_traits::test();
+}
+
diff --git a/test/no_cxx11_hdr_type_traits_pass.cpp b/test/no_cxx11_hdr_type_traits_pass.cpp
new file mode 100644
index 0000000..1f57ef6
--- /dev/null
+++ b/test/no_cxx11_hdr_type_traits_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Fri May 15 11:57:42 2009
+// 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_HDR_TYPE_TRAITS
+// This file should compile, if it does not then
+// BOOST_NO_CXX11_HDR_TYPE_TRAITS should be defined.
+// See file boost_no_cxx11_hdr_type_traits.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_HDR_TYPE_TRAITS
+#include "boost_no_cxx11_hdr_type_traits.ipp"
+#else
+namespace boost_no_cxx11_hdr_type_traits = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_hdr_type_traits::test();
+}
+
diff --git a/test/no_cxx11_hdr_typeindex_fail.cpp b/test/no_cxx11_hdr_typeindex_fail.cpp
new file mode 100644
index 0000000..3c43b7b
--- /dev/null
+++ b/test/no_cxx11_hdr_typeindex_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Fri Jun 04 12:51:34 2010
+// by libs/config/tools/generate.cpp
+// Copyright John Maddock 2002-4.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id: generate.cpp 49281 2008-10-11 15:40:44Z johnmaddock $
+//
+
+
+// Test file for macro BOOST_NO_CXX11_HDR_TYPEINDEX
+// This file should not compile, if it does then
+// BOOST_NO_CXX11_HDR_TYPEINDEX should not be defined.
+// See file boost_no_cxx11_hdr_typeindex.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_HDR_TYPEINDEX
+#include "boost_no_cxx11_hdr_typeindex.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_hdr_typeindex::test();
+}
+
diff --git a/test/no_cxx11_hdr_typeindex_pass.cpp b/test/no_cxx11_hdr_typeindex_pass.cpp
new file mode 100644
index 0000000..c0d999e
--- /dev/null
+++ b/test/no_cxx11_hdr_typeindex_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Fri Jun 04 12:51:34 2010
+// by libs/config/tools/generate.cpp
+// Copyright John Maddock 2002-4.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id: generate.cpp 49281 2008-10-11 15:40:44Z johnmaddock $
+//
+
+
+// Test file for macro BOOST_NO_CXX11_HDR_TYPEINDEX
+// This file should compile, if it does not then
+// BOOST_NO_CXX11_HDR_TYPEINDEX should be defined.
+// See file boost_no_cxx11_hdr_typeindex.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_HDR_TYPEINDEX
+#include "boost_no_cxx11_hdr_typeindex.ipp"
+#else
+namespace boost_no_cxx11_hdr_typeindex = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_hdr_typeindex::test();
+}
+
diff --git a/test/no_cxx11_hdr_unordered_map_fail.cpp b/test/no_cxx11_hdr_unordered_map_fail.cpp
new file mode 100644
index 0000000..dad493b
--- /dev/null
+++ b/test/no_cxx11_hdr_unordered_map_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Fri May 15 11:57:42 2009
+// 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_HDR_UNORDERED_MAP
+// This file should not compile, if it does then
+// BOOST_NO_CXX11_HDR_UNORDERED_MAP should not be defined.
+// See file boost_no_cxx11_hdr_unordered_map.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_HDR_UNORDERED_MAP
+#include "boost_no_cxx11_hdr_unordered_map.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_hdr_unordered_map::test();
+}
+
diff --git a/test/no_cxx11_hdr_unordered_map_pass.cpp b/test/no_cxx11_hdr_unordered_map_pass.cpp
new file mode 100644
index 0000000..cc30df4
--- /dev/null
+++ b/test/no_cxx11_hdr_unordered_map_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Fri May 15 11:57:42 2009
+// 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_HDR_UNORDERED_MAP
+// This file should compile, if it does not then
+// BOOST_NO_CXX11_HDR_UNORDERED_MAP should be defined.
+// See file boost_no_cxx11_hdr_unordered_map.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_HDR_UNORDERED_MAP
+#include "boost_no_cxx11_hdr_unordered_map.ipp"
+#else
+namespace boost_no_cxx11_hdr_unordered_map = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_hdr_unordered_map::test();
+}
+
diff --git a/test/no_cxx11_hdr_unordered_set_fail.cpp b/test/no_cxx11_hdr_unordered_set_fail.cpp
new file mode 100644
index 0000000..df9e75d
--- /dev/null
+++ b/test/no_cxx11_hdr_unordered_set_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Fri May 15 11:57:42 2009
+// 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_HDR_UNORDERED_SET
+// This file should not compile, if it does then
+// BOOST_NO_CXX11_HDR_UNORDERED_SET should not be defined.
+// See file boost_no_cxx11_hdr_unordered_set.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_HDR_UNORDERED_SET
+#include "boost_no_cxx11_hdr_unordered_set.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_hdr_unordered_set::test();
+}
+
diff --git a/test/no_cxx11_hdr_unordered_set_pass.cpp b/test/no_cxx11_hdr_unordered_set_pass.cpp
new file mode 100644
index 0000000..97c5632
--- /dev/null
+++ b/test/no_cxx11_hdr_unordered_set_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Fri May 15 11:57:42 2009
+// 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_HDR_UNORDERED_SET
+// This file should compile, if it does not then
+// BOOST_NO_CXX11_HDR_UNORDERED_SET should be defined.
+// See file boost_no_cxx11_hdr_unordered_set.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_HDR_UNORDERED_SET
+#include "boost_no_cxx11_hdr_unordered_set.ipp"
+#else
+namespace boost_no_cxx11_hdr_unordered_set = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_hdr_unordered_set::test();
+}
+
diff --git a/test/no_cxx11_inline_namespaces_fail.cpp b/test/no_cxx11_inline_namespaces_fail.cpp
new file mode 100644
index 0000000..09ca60c
--- /dev/null
+++ b/test/no_cxx11_inline_namespaces_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Sun Apr 28 18:36:48 2013
+// 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_INLINE_NAMESPACES
+// This file should not compile, if it does then
+// BOOST_NO_CXX11_INLINE_NAMESPACES should not be defined.
+// See file boost_no_cxx11_inline_namespaces.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_INLINE_NAMESPACES
+#include "boost_no_cxx11_inline_namespaces.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_inline_namespaces::test();
+}
+
diff --git a/test/no_cxx11_inline_namespaces_pass.cpp b/test/no_cxx11_inline_namespaces_pass.cpp
new file mode 100644
index 0000000..4988af9
--- /dev/null
+++ b/test/no_cxx11_inline_namespaces_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Sun Apr 28 18:36:48 2013
+// 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_INLINE_NAMESPACES
+// This file should compile, if it does not then
+// BOOST_NO_CXX11_INLINE_NAMESPACES should be defined.
+// See file boost_no_cxx11_inline_namespaces.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_INLINE_NAMESPACES
+#include "boost_no_cxx11_inline_namespaces.ipp"
+#else
+namespace boost_no_cxx11_inline_namespaces = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_inline_namespaces::test();
+}
+
diff --git a/test/no_cxx11_non_pub_def_fun_fail.cpp b/test/no_cxx11_non_pub_def_fun_fail.cpp
new file mode 100644
index 0000000..59f32b6
--- /dev/null
+++ b/test/no_cxx11_non_pub_def_fun_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Fri Aug 22 18:33:20 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_CXX11_NON_PUBLIC_DEFAULTED_FUNCTIONS
+// This file should not compile, if it does then
+// BOOST_NO_CXX11_NON_PUBLIC_DEFAULTED_FUNCTIONS should not be defined.
+// See file boost_no_cxx11_non_pub_def_fun.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_NON_PUBLIC_DEFAULTED_FUNCTIONS
+#include "boost_no_cxx11_non_pub_def_fun.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_non_public_defaulted_functions::test();
+}
+
diff --git a/test/no_cxx11_non_pub_def_fun_pass.cpp b/test/no_cxx11_non_pub_def_fun_pass.cpp
new file mode 100644
index 0000000..2e00a6a
--- /dev/null
+++ b/test/no_cxx11_non_pub_def_fun_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Fri Aug 22 18:33:20 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_CXX11_NON_PUBLIC_DEFAULTED_FUNCTIONS
+// This file should compile, if it does not then
+// BOOST_NO_CXX11_NON_PUBLIC_DEFAULTED_FUNCTIONS should be defined.
+// See file boost_no_cxx11_non_pub_def_fun.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_NON_PUBLIC_DEFAULTED_FUNCTIONS
+#include "boost_no_cxx11_non_pub_def_fun.ipp"
+#else
+namespace boost_no_cxx11_non_public_defaulted_functions = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_non_public_defaulted_functions::test();
+}
+
diff --git a/test/no_cxx11_numeric_limits_fail.cpp b/test/no_cxx11_numeric_limits_fail.cpp
new file mode 100644
index 0000000..6071719
--- /dev/null
+++ b/test/no_cxx11_numeric_limits_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Sat Sep 25 16:53:41 2010
+// by libs/config/tools/generate.cpp
+// Copyright John Maddock 2002-4.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id: generate.cpp 49281 2008-10-11 15:40:44Z johnmaddock $
+//
+
+
+// Test file for macro BOOST_NO_CXX11_NUMERIC_LIMITS
+// This file should not compile, if it does then
+// BOOST_NO_CXX11_NUMERIC_LIMITS should not be defined.
+// See file boost_no_limits_lowest.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_NUMERIC_LIMITS
+#include "boost_no_cxx11_numeric_limits.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_numeric_limits::test();
+}
+
diff --git a/test/no_cxx11_numeric_limits_pass.cpp b/test/no_cxx11_numeric_limits_pass.cpp
new file mode 100644
index 0000000..eb2c6cd
--- /dev/null
+++ b/test/no_cxx11_numeric_limits_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Sat Sep 25 16:53:41 2010
+// by libs/config/tools/generate.cpp
+// Copyright John Maddock 2002-4.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id: generate.cpp 49281 2008-10-11 15:40:44Z johnmaddock $
+//
+
+
+// Test file for macro BOOST_NO_CXX11_NUMERIC_LIMITS
+// This file should compile, if it does not then
+// BOOST_NO_CXX11_NUMERIC_LIMITS should be defined.
+// See file boost_no_limits_lowest.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_NUMERIC_LIMITS
+#include "boost_no_cxx11_numeric_limits.ipp"
+#else
+namespace boost_no_cxx11_numeric_limits = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_numeric_limits::test();
+}
+
diff --git a/test/no_cxx11_pointer_traits_fail.cpp b/test/no_cxx11_pointer_traits_fail.cpp
new file mode 100644
index 0000000..59b881b
--- /dev/null
+++ b/test/no_cxx11_pointer_traits_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Wed May 17 01:29:39 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_POINTER_TRAITS
+// This file should not compile, if it does then
+// BOOST_NO_CXX11_POINTER_TRAITS should not be defined.
+// See file boost_no_cxx11_pointer_traits.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_POINTER_TRAITS
+#include "boost_no_cxx11_pointer_traits.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_pointer_traits::test();
+}
+
diff --git a/test/no_cxx11_pointer_traits_pass.cpp b/test/no_cxx11_pointer_traits_pass.cpp
new file mode 100644
index 0000000..071041b
--- /dev/null
+++ b/test/no_cxx11_pointer_traits_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Wed May 17 01:29:39 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_POINTER_TRAITS
+// This file should compile, if it does not then
+// BOOST_NO_CXX11_POINTER_TRAITS should be defined.
+// See file boost_no_cxx11_pointer_traits.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_POINTER_TRAITS
+#include "boost_no_cxx11_pointer_traits.ipp"
+#else
+namespace boost_no_cxx11_pointer_traits = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_pointer_traits::test();
+}
+
diff --git a/test/no_cxx11_ref_qualifiers_fail.cpp b/test/no_cxx11_ref_qualifiers_fail.cpp
new file mode 100644
index 0000000..413ca8e
--- /dev/null
+++ b/test/no_cxx11_ref_qualifiers_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Wed May 28 17:13:04 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_CXX11_REF_QUALIFIERS
+// This file should not compile, if it does then
+// BOOST_NO_CXX11_REF_QUALIFIERS should not be defined.
+// See file boost_no_cxx11_ref_qualifiers.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_REF_QUALIFIERS
+#include "boost_no_cxx11_ref_qualifiers.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_ref_qualifiers::test();
+}
+
diff --git a/test/no_cxx11_ref_qualifiers_pass.cpp b/test/no_cxx11_ref_qualifiers_pass.cpp
new file mode 100644
index 0000000..99216f6
--- /dev/null
+++ b/test/no_cxx11_ref_qualifiers_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Wed May 28 17:13:04 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_CXX11_REF_QUALIFIERS
+// This file should compile, if it does not then
+// BOOST_NO_CXX11_REF_QUALIFIERS should be defined.
+// See file boost_no_cxx11_ref_qualifiers.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_REF_QUALIFIERS
+#include "boost_no_cxx11_ref_qualifiers.ipp"
+#else
+namespace boost_no_cxx11_ref_qualifiers = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_ref_qualifiers::test();
+}
+
diff --git a/test/no_cxx11_sfinae_expr_fail.cpp b/test/no_cxx11_sfinae_expr_fail.cpp
new file mode 100644
index 0000000..1613f16
--- /dev/null
+++ b/test/no_cxx11_sfinae_expr_fail.cpp
@@ -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();
+}
+
diff --git a/test/no_cxx11_sfinae_expr_pass.cpp b/test/no_cxx11_sfinae_expr_pass.cpp
new file mode 100644
index 0000000..15d988b
--- /dev/null
+++ b/test/no_cxx11_sfinae_expr_pass.cpp
@@ -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();
+}
+
diff --git a/test/no_cxx11_smart_ptr_fail.cpp b/test/no_cxx11_smart_ptr_fail.cpp
new file mode 100644
index 0000000..4190894
--- /dev/null
+++ b/test/no_cxx11_smart_ptr_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Sun Apr 22 11:15:43 2012
+// by libs/config/tools/generate.cpp
+// Copyright John Maddock 2002-4.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id: generate.cpp 72327 2011-06-01 14:51:03Z eric_niebler $
+//
+
+
+// Test file for macro BOOST_NO_CXX11_SMART_PTR
+// This file should not compile, if it does then
+// BOOST_NO_CXX11_SMART_PTR should not be defined.
+// See file boost_no_cxx11_smart_ptr.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_SMART_PTR
+#include "boost_no_cxx11_smart_ptr.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_smart_ptr::test();
+}
+
diff --git a/test/no_cxx11_smart_ptr_pass.cpp b/test/no_cxx11_smart_ptr_pass.cpp
new file mode 100644
index 0000000..334cae6
--- /dev/null
+++ b/test/no_cxx11_smart_ptr_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Sun Apr 22 11:15:43 2012
+// by libs/config/tools/generate.cpp
+// Copyright John Maddock 2002-4.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id: generate.cpp 72327 2011-06-01 14:51:03Z eric_niebler $
+//
+
+
+// Test file for macro BOOST_NO_CXX11_SMART_PTR
+// This file should compile, if it does not then
+// BOOST_NO_CXX11_SMART_PTR should be defined.
+// See file boost_no_cxx11_smart_ptr.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_SMART_PTR
+#include "boost_no_cxx11_smart_ptr.ipp"
+#else
+namespace boost_no_cxx11_smart_ptr = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_smart_ptr::test();
+}
+
diff --git a/test/no_cxx11_std_align_fail.cpp b/test/no_cxx11_std_align_fail.cpp
new file mode 100644
index 0000000..7a87dea
--- /dev/null
+++ b/test/no_cxx11_std_align_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Tue Feb 11 16:14:42 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_CXX11_STD_ALIGN
+// This file should not compile, if it does then
+// BOOST_NO_CXX11_STD_ALIGN should not be defined.
+// See file boost_no_cxx11_std_align.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_STD_ALIGN
+#include "boost_no_cxx11_std_align.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_std_align::test();
+}
+
diff --git a/test/no_cxx11_std_align_pass.cpp b/test/no_cxx11_std_align_pass.cpp
new file mode 100644
index 0000000..4ee4ba6
--- /dev/null
+++ b/test/no_cxx11_std_align_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Tue Feb 11 16:14:42 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_CXX11_STD_ALIGN
+// This file should compile, if it does not then
+// BOOST_NO_CXX11_STD_ALIGN should be defined.
+// See file boost_no_cxx11_std_align.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_STD_ALIGN
+#include "boost_no_cxx11_std_align.ipp"
+#else
+namespace boost_no_cxx11_std_align = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_std_align::test();
+}
+
diff --git a/test/no_cxx11_thread_local_fail.cpp b/test/no_cxx11_thread_local_fail.cpp
new file mode 100644
index 0000000..957c622
--- /dev/null
+++ b/test/no_cxx11_thread_local_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Fri Jul 1 18:47:25 2016
+// 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_THREAD_LOCAL
+// This file should not compile, if it does then
+// BOOST_NO_CXX11_THREAD_LOCAL should not be defined.
+// See file boost_no_cxx11_thread_local.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_THREAD_LOCAL
+#include "boost_no_cxx11_thread_local.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_thread_local::test();
+}
+
diff --git a/test/no_cxx11_thread_local_pass.cpp b/test/no_cxx11_thread_local_pass.cpp
new file mode 100644
index 0000000..3e54ca2
--- /dev/null
+++ b/test/no_cxx11_thread_local_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Fri Jul 1 18:47:25 2016
+// 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_THREAD_LOCAL
+// This file should compile, if it does not then
+// BOOST_NO_CXX11_THREAD_LOCAL should be defined.
+// See file boost_no_cxx11_thread_local.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_THREAD_LOCAL
+#include "boost_no_cxx11_thread_local.ipp"
+#else
+namespace boost_no_cxx11_thread_local = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_thread_local::test();
+}
+
diff --git a/test/no_cxx11_trailing_result_types_fail.cpp b/test/no_cxx11_trailing_result_types_fail.cpp
new file mode 100644
index 0000000..edabc2d
--- /dev/null
+++ b/test/no_cxx11_trailing_result_types_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Sun Apr 28 18:36:48 2013
+// 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_TRAILING_RESULT_TYPES
+// This file should not compile, if it does then
+// BOOST_NO_CXX11_TRAILING_RESULT_TYPES should not be defined.
+// See file boost_no_cxx11_trailing_result_types.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_TRAILING_RESULT_TYPES
+#include "boost_no_cxx11_trailing_result_types.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_trailing_result_types::test();
+}
+
diff --git a/test/no_cxx11_trailing_result_types_pass.cpp b/test/no_cxx11_trailing_result_types_pass.cpp
new file mode 100644
index 0000000..6cc54cf
--- /dev/null
+++ b/test/no_cxx11_trailing_result_types_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Sun Apr 28 18:36:48 2013
+// 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_TRAILING_RESULT_TYPES
+// This file should compile, if it does not then
+// BOOST_NO_CXX11_TRAILING_RESULT_TYPES should be defined.
+// See file boost_no_cxx11_trailing_result_types.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_TRAILING_RESULT_TYPES
+#include "boost_no_cxx11_trailing_result_types.ipp"
+#else
+namespace boost_no_cxx11_trailing_result_types = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_trailing_result_types::test();
+}
+
diff --git a/test/no_cxx11_user_lit_fail.cpp b/test/no_cxx11_user_lit_fail.cpp
new file mode 100644
index 0000000..2666455
--- /dev/null
+++ b/test/no_cxx11_user_lit_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Sun Apr 28 18:36:48 2013
+// by libs/config/tools/generate.cpp
+// Copyright John Maddock 2002-4.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id: generate.cpp 72327 2011-06-01 14:51:03Z eric_niebler $
+//
+
+
+// Test file for macro BOOST_NO_CXX11_USER_DEFINED_LITERALS
+// This file should not compile, if it does then
+// BOOST_NO_CXX11_USER_DEFINED_LITERALS should not be defined.
+// See file boost_no_cxx11_user_lit.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_USER_DEFINED_LITERALS
+#include "boost_no_cxx11_user_lit.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_user_defined_literals::test();
+}
+
diff --git a/test/no_cxx11_user_lit_pass.cpp b/test/no_cxx11_user_lit_pass.cpp
new file mode 100644
index 0000000..d1408f5
--- /dev/null
+++ b/test/no_cxx11_user_lit_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Sun Apr 28 18:36:48 2013
+// by libs/config/tools/generate.cpp
+// Copyright John Maddock 2002-4.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id: generate.cpp 72327 2011-06-01 14:51:03Z eric_niebler $
+//
+
+
+// Test file for macro BOOST_NO_CXX11_USER_DEFINED_LITERALS
+// This file should compile, if it does not then
+// BOOST_NO_CXX11_USER_DEFINED_LITERALS should be defined.
+// See file boost_no_cxx11_user_lit.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_USER_DEFINED_LITERALS
+#include "boost_no_cxx11_user_lit.ipp"
+#else
+namespace boost_no_cxx11_user_defined_literals = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_user_defined_literals::test();
+}
+
diff --git a/test/no_cxx14_binary_literals_fail.cpp b/test/no_cxx14_binary_literals_fail.cpp
new file mode 100644
index 0000000..759e871
--- /dev/null
+++ b/test/no_cxx14_binary_literals_fail.cpp
@@ -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();
+}
+
diff --git a/test/no_cxx14_binary_literals_pass.cpp b/test/no_cxx14_binary_literals_pass.cpp
new file mode 100644
index 0000000..94debc2
--- /dev/null
+++ b/test/no_cxx14_binary_literals_pass.cpp
@@ -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();
+}
+
diff --git a/test/no_cxx14_constexpr_fail.cpp b/test/no_cxx14_constexpr_fail.cpp
new file mode 100644
index 0000000..0028023
--- /dev/null
+++ b/test/no_cxx14_constexpr_fail.cpp
@@ -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();
+}
+
diff --git a/test/no_cxx14_constexpr_pass.cpp b/test/no_cxx14_constexpr_pass.cpp
new file mode 100644
index 0000000..8272f91
--- /dev/null
+++ b/test/no_cxx14_constexpr_pass.cpp
@@ -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();
+}
+
diff --git a/test/no_cxx14_decltype_auto_fail.cpp b/test/no_cxx14_decltype_auto_fail.cpp
new file mode 100644
index 0000000..78639cf
--- /dev/null
+++ b/test/no_cxx14_decltype_auto_fail.cpp
@@ -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();
+}
+
diff --git a/test/no_cxx14_decltype_auto_pass.cpp b/test/no_cxx14_decltype_auto_pass.cpp
new file mode 100644
index 0000000..e36cb64
--- /dev/null
+++ b/test/no_cxx14_decltype_auto_pass.cpp
@@ -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();
+}
+
diff --git a/test/no_cxx14_digit_separator_fail.cpp b/test/no_cxx14_digit_separator_fail.cpp
new file mode 100644
index 0000000..59a3001
--- /dev/null
+++ b/test/no_cxx14_digit_separator_fail.cpp
@@ -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_SEPARATORS
+// This file should not compile, if it does then
+// BOOST_NO_CXX14_DIGIT_SEPARATORS 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_SEPARATORS
+#include "boost_no_cxx14_digit_separator.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx14_digit_separators::test();
+}
+
diff --git a/test/no_cxx14_digit_separator_pass.cpp b/test/no_cxx14_digit_separator_pass.cpp
new file mode 100644
index 0000000..a8814fe
--- /dev/null
+++ b/test/no_cxx14_digit_separator_pass.cpp
@@ -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_SEPARATORS
+// This file should compile, if it does not then
+// BOOST_NO_CXX14_DIGIT_SEPARATORS 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_SEPARATORS
+#include "boost_no_cxx14_digit_separator.ipp"
+#else
+namespace boost_no_cxx14_digit_separators = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx14_digit_separators::test();
+}
+
diff --git a/test/no_cxx14_generic_lambda_fail.cpp b/test/no_cxx14_generic_lambda_fail.cpp
new file mode 100644
index 0000000..928f765
--- /dev/null
+++ b/test/no_cxx14_generic_lambda_fail.cpp
@@ -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();
+}
+
diff --git a/test/no_cxx14_generic_lambda_pass.cpp b/test/no_cxx14_generic_lambda_pass.cpp
new file mode 100644
index 0000000..bef36ac
--- /dev/null
+++ b/test/no_cxx14_generic_lambda_pass.cpp
@@ -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();
+}
+
diff --git a/test/no_cxx14_hdr_shared_mutex_fail.cpp b/test/no_cxx14_hdr_shared_mutex_fail.cpp
new file mode 100644
index 0000000..11c93bb
--- /dev/null
+++ b/test/no_cxx14_hdr_shared_mutex_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Fri Jun 26 21:47:59 2015
+// 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_HDR_SHARED_MUTEX
+// This file should not compile, if it does then
+// BOOST_NO_CXX14_HDR_SHARED_MUTEX should not be defined.
+// See file boost_no_cxx14_hdr_shared_mutex.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_HDR_SHARED_MUTEX
+#include "boost_no_cxx14_hdr_shared_mutex.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx14_hdr_shared_mutex::test();
+}
+
diff --git a/test/no_cxx14_hdr_shared_mutex_pass.cpp b/test/no_cxx14_hdr_shared_mutex_pass.cpp
new file mode 100644
index 0000000..20c5f7b
--- /dev/null
+++ b/test/no_cxx14_hdr_shared_mutex_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Fri Jun 26 21:47:59 2015
+// 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_HDR_SHARED_MUTEX
+// This file should compile, if it does not then
+// BOOST_NO_CXX14_HDR_SHARED_MUTEX should be defined.
+// See file boost_no_cxx14_hdr_shared_mutex.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_HDR_SHARED_MUTEX
+#include "boost_no_cxx14_hdr_shared_mutex.ipp"
+#else
+namespace boost_no_cxx14_hdr_shared_mutex = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx14_hdr_shared_mutex::test();
+}
+
diff --git a/test/no_cxx14_lambda_capture_fail.cpp b/test/no_cxx14_lambda_capture_fail.cpp
new file mode 100644
index 0000000..515cc08
--- /dev/null
+++ b/test/no_cxx14_lambda_capture_fail.cpp
@@ -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();
+}
+
diff --git a/test/no_cxx14_lambda_capture_pass.cpp b/test/no_cxx14_lambda_capture_pass.cpp
new file mode 100644
index 0000000..d5c09c5
--- /dev/null
+++ b/test/no_cxx14_lambda_capture_pass.cpp
@@ -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();
+}
+
diff --git a/test/no_cxx14_member_init_fail.cpp b/test/no_cxx14_member_init_fail.cpp
new file mode 100644
index 0000000..ba3ae4e
--- /dev/null
+++ b/test/no_cxx14_member_init_fail.cpp
@@ -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();
+}
+
diff --git a/test/no_cxx14_member_init_pass.cpp b/test/no_cxx14_member_init_pass.cpp
new file mode 100644
index 0000000..9dd8e89
--- /dev/null
+++ b/test/no_cxx14_member_init_pass.cpp
@@ -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();
+}
+
diff --git a/test/no_cxx14_return_type_ded_fail.cpp b/test/no_cxx14_return_type_ded_fail.cpp
new file mode 100644
index 0000000..a969c84
--- /dev/null
+++ b/test/no_cxx14_return_type_ded_fail.cpp
@@ -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();
+}
+
diff --git a/test/no_cxx14_return_type_ded_pass.cpp b/test/no_cxx14_return_type_ded_pass.cpp
new file mode 100644
index 0000000..f3e35f3
--- /dev/null
+++ b/test/no_cxx14_return_type_ded_pass.cpp
@@ -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();
+}
+
diff --git a/test/no_cxx14_std_exchange_fail.cpp b/test/no_cxx14_std_exchange_fail.cpp
new file mode 100644
index 0000000..c710037
--- /dev/null
+++ b/test/no_cxx14_std_exchange_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Fri Oct 14 12:13:46 2016
+// 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_CXX17_STD_APPLY
+// This file should not compile, if it does then
+// BOOST_NO_CXX17_STD_APPLY should not be defined.
+// See file boost_no_cxx17_std_apply.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_STD_EXCHANGE
+#include "boost_no_cxx14_std_exchange.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx14_std_exchange::test();
+}
+
diff --git a/test/no_cxx14_std_exchange_pass.cpp b/test/no_cxx14_std_exchange_pass.cpp
new file mode 100644
index 0000000..edac2fb
--- /dev/null
+++ b/test/no_cxx14_std_exchange_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Fri Oct 14 12:13:46 2016
+// 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_CXX17_STD_APPLY
+// This file should compile, if it does not then
+// BOOST_NO_CXX!/_STD_APPLY should be defined.
+// See file boost_no_cxx17_std_apply.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_STD_EXCHANGE
+#include "boost_no_cxx14_std_exchange.ipp"
+#else
+namespace boost_no_cxx14_std_exchange = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx14_std_exchange::test();
+}
+
diff --git a/test/no_cxx14_var_templ_fail.cpp b/test/no_cxx14_var_templ_fail.cpp
new file mode 100644
index 0000000..438ccd7
--- /dev/null
+++ b/test/no_cxx14_var_templ_fail.cpp
@@ -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();
+}
+
diff --git a/test/no_cxx14_var_templ_pass.cpp b/test/no_cxx14_var_templ_pass.cpp
new file mode 100644
index 0000000..90c7b4c
--- /dev/null
+++ b/test/no_cxx14_var_templ_pass.cpp
@@ -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();
+}
+
diff --git a/test/no_cxx17_fold_expressions_fail.cpp b/test/no_cxx17_fold_expressions_fail.cpp
new file mode 100644
index 0000000..db22b15
--- /dev/null
+++ b/test/no_cxx17_fold_expressions_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Mon May 29 10:27:35 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_CXX17_FOLD_EXPRESSIONS
+// This file should not compile, if it does then
+// BOOST_NO_CXX17_FOLD_EXPRESSIONS should not be defined.
+// See file boost_no_cxx17_fold_expressions.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_CXX17_FOLD_EXPRESSIONS
+#include "boost_no_cxx17_fold_expressions.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx17_fold_expressions::test();
+}
+
diff --git a/test/no_cxx17_fold_expressions_pass.cpp b/test/no_cxx17_fold_expressions_pass.cpp
new file mode 100644
index 0000000..bc2feea
--- /dev/null
+++ b/test/no_cxx17_fold_expressions_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Mon May 29 10:27:35 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_CXX17_FOLD_EXPRESSIONS
+// This file should compile, if it does not then
+// BOOST_NO_CXX17_FOLD_EXPRESSIONS should be defined.
+// See file boost_no_cxx17_fold_expressions.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_CXX17_FOLD_EXPRESSIONS
+#include "boost_no_cxx17_fold_expressions.ipp"
+#else
+namespace boost_no_cxx17_fold_expressions = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx17_fold_expressions::test();
+}
+
diff --git a/test/no_cxx17_if_constexpr_fail.cpp b/test/no_cxx17_if_constexpr_fail.cpp
new file mode 100644
index 0000000..63137ff
--- /dev/null
+++ b/test/no_cxx17_if_constexpr_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Tue Mar 6 00:52:32 2018
+// 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_CXX17_IF_CONSTEXPR
+// This file should not compile, if it does then
+// BOOST_NO_CXX17_IF_CONSTEXPR should not be defined.
+// See file boost_no_cxx17_if_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_CXX17_IF_CONSTEXPR
+#include "boost_no_cxx17_if_constexpr.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx17_if_constexpr::test();
+}
+
diff --git a/test/no_cxx17_if_constexpr_pass.cpp b/test/no_cxx17_if_constexpr_pass.cpp
new file mode 100644
index 0000000..bcbd808
--- /dev/null
+++ b/test/no_cxx17_if_constexpr_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Tue Mar 6 00:52:32 2018
+// 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_CXX17_IF_CONSTEXPR
+// This file should compile, if it does not then
+// BOOST_NO_CXX17_IF_CONSTEXPR should be defined.
+// See file boost_no_cxx17_if_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_CXX17_IF_CONSTEXPR
+#include "boost_no_cxx17_if_constexpr.ipp"
+#else
+namespace boost_no_cxx17_if_constexpr = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx17_if_constexpr::test();
+}
+
diff --git a/test/no_cxx17_inline_variables_fail.cpp b/test/no_cxx17_inline_variables_fail.cpp
new file mode 100644
index 0000000..58e688b
--- /dev/null
+++ b/test/no_cxx17_inline_variables_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Mon May 29 10:00:26 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_CXX17_INLINE_VARIABLES
+// This file should not compile, if it does then
+// BOOST_NO_CXX17_INLINE_VARIABLES should not be defined.
+// See file boost_no_cxx17_inline_variables.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_CXX17_INLINE_VARIABLES
+#include "boost_no_cxx17_inline_variables.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx17_inline_variables::test();
+}
+
diff --git a/test/no_cxx17_inline_variables_pass.cpp b/test/no_cxx17_inline_variables_pass.cpp
new file mode 100644
index 0000000..ec5f69e
--- /dev/null
+++ b/test/no_cxx17_inline_variables_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Mon May 29 10:00:26 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_CXX17_INLINE_VARIABLES
+// This file should compile, if it does not then
+// BOOST_NO_CXX17_INLINE_VARIABLES should be defined.
+// See file boost_no_cxx17_inline_variables.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_CXX17_INLINE_VARIABLES
+#include "boost_no_cxx17_inline_variables.ipp"
+#else
+namespace boost_no_cxx17_inline_variables = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx17_inline_variables::test();
+}
+
diff --git a/test/no_cxx17_iterator_traits_fail.cpp b/test/no_cxx17_iterator_traits_fail.cpp
new file mode 100644
index 0000000..4b241c9
--- /dev/null
+++ b/test/no_cxx17_iterator_traits_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Sun Jul 9 15:26:23 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_CXX17_ITERATOR_TRAITS
+// This file should not compile, if it does then
+// BOOST_NO_CXX17_ITERATOR_TRAITS should not be defined.
+// See file boost_no_cxx17_iterator_traits.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_CXX17_ITERATOR_TRAITS
+#include "boost_no_cxx17_iterator_traits.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx17_iterator_traits::test();
+}
+
diff --git a/test/no_cxx17_iterator_traits_pass.cpp b/test/no_cxx17_iterator_traits_pass.cpp
new file mode 100644
index 0000000..a2a29bb
--- /dev/null
+++ b/test/no_cxx17_iterator_traits_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Sun Jul 9 15:26:23 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_CXX17_ITERATOR_TRAITS
+// This file should compile, if it does not then
+// BOOST_NO_CXX17_ITERATOR_TRAITS should be defined.
+// See file boost_no_cxx17_iterator_traits.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_CXX17_ITERATOR_TRAITS
+#include "boost_no_cxx17_iterator_traits.ipp"
+#else
+namespace boost_no_cxx17_iterator_traits = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx17_iterator_traits::test();
+}
+
diff --git a/test/no_cxx17_std_apply_fail.cpp b/test/no_cxx17_std_apply_fail.cpp
new file mode 100644
index 0000000..e1c3d36
--- /dev/null
+++ b/test/no_cxx17_std_apply_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Fri Oct 14 12:13:46 2016
+// 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_CXX17_STD_APPLY
+// This file should not compile, if it does then
+// BOOST_NO_CXX17_STD_APPLY should not be defined.
+// See file boost_no_cxx17_std_apply.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_CXX17_STD_APPLY
+#include "boost_no_cxx17_std_apply.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx17_std_apply::test();
+}
+
diff --git a/test/no_cxx17_std_apply_pass.cpp b/test/no_cxx17_std_apply_pass.cpp
new file mode 100644
index 0000000..b3aa874
--- /dev/null
+++ b/test/no_cxx17_std_apply_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Fri Oct 14 12:13:46 2016
+// 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_CXX17_STD_APPLY
+// This file should compile, if it does not then
+// BOOST_NO_CXX!/_STD_APPLY should be defined.
+// See file boost_no_cxx17_std_apply.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_CXX17_STD_APPLY
+#include "boost_no_cxx17_std_apply.ipp"
+#else
+namespace boost_no_cxx17_std_apply = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx17_std_apply::test();
+}
+
diff --git a/test/no_cxx17_std_invoke_fail.cpp b/test/no_cxx17_std_invoke_fail.cpp
new file mode 100644
index 0000000..a34fc7a
--- /dev/null
+++ b/test/no_cxx17_std_invoke_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Fri Oct 14 12:13:46 2016
+// 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_CXX17_STD_INVOKE
+// This file should not compile, if it does then
+// BOOST_NO_STD_INVOKE should not be defined.
+// See file boost_no_cxx17_std_invoke.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_CXX17_STD_INVOKE
+#include "boost_no_cxx17_std_invoke.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx17_std_invoke::test();
+}
+
diff --git a/test/no_cxx17_std_invoke_pass.cpp b/test/no_cxx17_std_invoke_pass.cpp
new file mode 100644
index 0000000..76e28e1
--- /dev/null
+++ b/test/no_cxx17_std_invoke_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Fri Oct 14 12:13:46 2016
+// 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_CXX17_STD_INVOKE
+// This file should compile, if it does not then
+// BOOST_NO_STD_INVOKE should be defined.
+// See file boost_no_cxx17_std_invoke.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_CXX17_STD_INVOKE
+#include "boost_no_cxx17_std_invoke.ipp"
+#else
+namespace boost_no_cxx17_std_invoke = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx17_std_invoke::test();
+}
+
diff --git a/test/no_cxx17_structured_bindings_fail.cpp b/test/no_cxx17_structured_bindings_fail.cpp
new file mode 100644
index 0000000..9b7b1fb
--- /dev/null
+++ b/test/no_cxx17_structured_bindings_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Mon May 29 09:56:04 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_CXX17_STRUCTURED_BINDINGS
+// This file should not compile, if it does then
+// BOOST_NO_CXX17_STRUCTURED_BINDINGS should not be defined.
+// See file boost_no_cxx17_structured_bindings.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_CXX17_STRUCTURED_BINDINGS
+#include "boost_no_cxx17_structured_bindings.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx17_structured_bindings::test();
+}
+
diff --git a/test/no_cxx17_structured_bindings_pass.cpp b/test/no_cxx17_structured_bindings_pass.cpp
new file mode 100644
index 0000000..312e0c0
--- /dev/null
+++ b/test/no_cxx17_structured_bindings_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Mon May 29 09:56:04 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_CXX17_STRUCTURED_BINDINGS
+// This file should compile, if it does not then
+// BOOST_NO_CXX17_STRUCTURED_BINDINGS should be defined.
+// See file boost_no_cxx17_structured_bindings.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_CXX17_STRUCTURED_BINDINGS
+#include "boost_no_cxx17_structured_bindings.ipp"
+#else
+namespace boost_no_cxx17_structured_bindings = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx17_structured_bindings::test();
+}
+
diff --git a/test/no_cxx98_binders_fail.cpp b/test/no_cxx98_binders_fail.cpp
new file mode 100644
index 0000000..d17f149
--- /dev/null
+++ b/test/no_cxx98_binders_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Mon Apr 17 18:06:53 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_CXX98_BINDERS
+// This file should not compile, if it does then
+// BOOST_NO_CXX98_BINDERS should not be defined.
+// See file boost_no_cxx98_binders.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_CXX98_BINDERS
+#include "boost_no_cxx98_binders.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx98_binders::test();
+}
+
diff --git a/test/no_cxx98_binders_pass.cpp b/test/no_cxx98_binders_pass.cpp
new file mode 100644
index 0000000..5587879
--- /dev/null
+++ b/test/no_cxx98_binders_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Mon Apr 17 18:06:53 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_CXX98_BINDERS
+// This file should compile, if it does not then
+// BOOST_NO_CXX98_BINDERS should be defined.
+// See file boost_no_cxx98_binders.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_CXX98_BINDERS
+#include "boost_no_cxx98_binders.ipp"
+#else
+namespace boost_no_cxx98_binders = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx98_binders::test();
+}
+
diff --git a/test/no_cxx98_function_base_fail.cpp b/test/no_cxx98_function_base_fail.cpp
new file mode 100644
index 0000000..132edce
--- /dev/null
+++ b/test/no_cxx98_function_base_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Mon Apr 17 18:35:53 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_CXX98_FUNCTION_BASE
+// This file should not compile, if it does then
+// BOOST_NO_CXX98_FUNCTION_BASE should not be defined.
+// See file boost_no_cxx98_function_base.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_CXX98_FUNCTION_BASE
+#include "boost_no_cxx98_function_base.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx98_function_base::test();
+}
+
diff --git a/test/no_cxx98_function_base_pass.cpp b/test/no_cxx98_function_base_pass.cpp
new file mode 100644
index 0000000..a608e75
--- /dev/null
+++ b/test/no_cxx98_function_base_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Mon Apr 17 18:35:53 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_CXX98_FUNCTION_BASE
+// This file should compile, if it does not then
+// BOOST_NO_CXX98_FUNCTION_BASE should be defined.
+// See file boost_no_cxx98_function_base.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_CXX98_FUNCTION_BASE
+#include "boost_no_cxx98_function_base.ipp"
+#else
+namespace boost_no_cxx98_function_base = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx98_function_base::test();
+}
+
diff --git a/test/no_cxx98_random_shuffle_fail.cpp b/test/no_cxx98_random_shuffle_fail.cpp
new file mode 100644
index 0000000..419e22e
--- /dev/null
+++ b/test/no_cxx98_random_shuffle_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Mon Apr 17 17:54:47 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_CXX98_RANDOM_SHUFFLE
+// This file should not compile, if it does then
+// BOOST_NO_CXX98_RANDOM_SHUFFLE should not be defined.
+// See file boost_no_cxx98_random_shuffle.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_CXX98_RANDOM_SHUFFLE
+#include "boost_no_cxx98_random_shuffle.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx98_random_shuffle::test();
+}
+
diff --git a/test/no_cxx98_random_shuffle_pass.cpp b/test/no_cxx98_random_shuffle_pass.cpp
new file mode 100644
index 0000000..1d3355e
--- /dev/null
+++ b/test/no_cxx98_random_shuffle_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Mon Apr 17 17:54:47 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_CXX98_RANDOM_SHUFFLE
+// This file should compile, if it does not then
+// BOOST_NO_CXX98_RANDOM_SHUFFLE should be defined.
+// See file boost_no_cxx98_random_shuffle.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_CXX98_RANDOM_SHUFFLE
+#include "boost_no_cxx98_random_shuffle.ipp"
+#else
+namespace boost_no_cxx98_random_shuffle = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx98_random_shuffle::test();
+}
+
diff --git a/test/no_cxx_hdr_functional_fail.cpp b/test/no_cxx_hdr_functional_fail.cpp
new file mode 100644
index 0000000..15f885a
--- /dev/null
+++ b/test/no_cxx_hdr_functional_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Sun Apr 22 11:15:43 2012
+// by libs/config/tools/generate.cpp
+// Copyright John Maddock 2002-4.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id: generate.cpp 72327 2011-06-01 14:51:03Z eric_niebler $
+//
+
+
+// Test file for macro BOOST_NO_CXX11_HDR_FUNCTIONAL
+// This file should not compile, if it does then
+// BOOST_NO_CXX11_HDR_FUNCTIONAL should not be defined.
+// See file boost_no_cxx_hdr_functional.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_HDR_FUNCTIONAL
+#include "boost_no_cxx_hdr_functional.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_hdr_functional::test();
+}
+
diff --git a/test/no_cxx_hdr_functional_pass.cpp b/test/no_cxx_hdr_functional_pass.cpp
new file mode 100644
index 0000000..a5fe5c5
--- /dev/null
+++ b/test/no_cxx_hdr_functional_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Sun Apr 22 11:15:43 2012
+// by libs/config/tools/generate.cpp
+// Copyright John Maddock 2002-4.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id: generate.cpp 72327 2011-06-01 14:51:03Z eric_niebler $
+//
+
+
+// Test file for macro BOOST_NO_CXX11_HDR_FUNCTIONAL
+// This file should compile, if it does not then
+// BOOST_NO_CXX11_HDR_FUNCTIONAL should be defined.
+// See file boost_no_cxx_hdr_functional.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_HDR_FUNCTIONAL
+#include "boost_no_cxx_hdr_functional.ipp"
+#else
+namespace boost_no_cxx11_hdr_functional = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_hdr_functional::test();
+}
+
diff --git a/test/no_decltype_fail.cpp b/test/no_decltype_fail.cpp
new file mode 100644
index 0000000..59be586
--- /dev/null
+++ b/test/no_decltype_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Thu May 29 07:24:54 2008
+// 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_DECLTYPE
+// This file should not compile, if it does then
+// BOOST_NO_CXX11_DECLTYPE should not be defined.
+// See file boost_no_decltype.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_DECLTYPE
+#include "boost_no_decltype.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_decltype::test();
+}
+
diff --git a/test/no_decltype_n3276_fail.cpp b/test/no_decltype_n3276_fail.cpp
new file mode 100644
index 0000000..1e86fb6
--- /dev/null
+++ b/test/no_decltype_n3276_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Wed Jun 1 21:44:56 2011
+// 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_DECLTYPE_N3276
+// This file should not compile, if it does then
+// BOOST_NO_CXX11_DECLTYPE_N3276 should not be defined.
+// See file boost_no_decltype_n3276.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_DECLTYPE_N3276
+#include "boost_no_decltype_n3276.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_decltype_n3276::test();
+}
+
diff --git a/test/no_decltype_n3276_pass.cpp b/test/no_decltype_n3276_pass.cpp
new file mode 100644
index 0000000..0eb3a21
--- /dev/null
+++ b/test/no_decltype_n3276_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Wed Jun 1 21:44:56 2011
+// 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_DECLTYPE_N3276
+// This file should compile, if it does not then
+// BOOST_NO_CXX11_DECLTYPE_N3276 should be defined.
+// See file boost_no_decltype_n3276.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_DECLTYPE_N3276
+#include "boost_no_decltype_n3276.ipp"
+#else
+namespace boost_no_cxx11_decltype_n3276 = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_decltype_n3276::test();
+}
+
diff --git a/test/no_decltype_pass.cpp b/test/no_decltype_pass.cpp
new file mode 100644
index 0000000..91dfe25
--- /dev/null
+++ b/test/no_decltype_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Thu May 29 07:24:54 2008
+// 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_DECLTYPE
+// This file should compile, if it does not then
+// BOOST_NO_CXX11_DECLTYPE should be defined.
+// See file boost_no_decltype.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_DECLTYPE
+#include "boost_no_decltype.ipp"
+#else
+namespace boost_no_cxx11_decltype = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_decltype::test();
+}
+
diff --git a/test/no_ded_typename_fail.cpp b/test/no_ded_typename_fail.cpp
new file mode 100644
index 0000000..d82937f
--- /dev/null
+++ b/test/no_ded_typename_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:01 2004
+// 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.
+
+// Test file for macro BOOST_DEDUCED_TYPENAME
+// This file should not compile, if it does then
+// BOOST_DEDUCED_TYPENAME should not be defined.
+// See file boost_no_ded_typename.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_DEDUCED_TYPENAME
+#include "boost_no_ded_typename.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_deduced_typename::test();
+}
+
diff --git a/test/no_ded_typename_pass.cpp b/test/no_ded_typename_pass.cpp
new file mode 100644
index 0000000..fe59f36
--- /dev/null
+++ b/test/no_ded_typename_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:01 2004
+// 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.
+
+// Test file for macro BOOST_DEDUCED_TYPENAME
+// This file should compile, if it does not then
+// BOOST_DEDUCED_TYPENAME should be defined.
+// See file boost_no_ded_typename.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_DEDUCED_TYPENAME
+#include "boost_no_ded_typename.ipp"
+#else
+namespace boost_deduced_typename = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_deduced_typename::test();
+}
+
diff --git a/test/no_defaulted_functions_fail.cpp b/test/no_defaulted_functions_fail.cpp
new file mode 100644
index 0000000..5856957
--- /dev/null
+++ b/test/no_defaulted_functions_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Fri Jun 20 11:01:41 2008
+// 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_DEFAULTED_FUNCTIONS
+// This file should not compile, if it does then
+// BOOST_NO_CXX11_DEFAULTED_FUNCTIONS should not be defined.
+// See file boost_no_defaulted_functions.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_DEFAULTED_FUNCTIONS
+#include "boost_no_defaulted_functions.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_defaulted_functions::test();
+}
+
diff --git a/test/no_defaulted_functions_pass.cpp b/test/no_defaulted_functions_pass.cpp
new file mode 100644
index 0000000..d35f89e
--- /dev/null
+++ b/test/no_defaulted_functions_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Fri Jun 20 11:01:41 2008
+// 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_DEFAULTED_FUNCTIONS
+// This file should compile, if it does not then
+// BOOST_NO_CXX11_DEFAULTED_FUNCTIONS should be defined.
+// See file boost_no_defaulted_functions.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_DEFAULTED_FUNCTIONS
+#include "boost_no_defaulted_functions.ipp"
+#else
+namespace boost_no_cxx11_defaulted_functions = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_defaulted_functions::test();
+}
+
diff --git a/test/no_deleted_functions_fail.cpp b/test/no_deleted_functions_fail.cpp
new file mode 100644
index 0000000..e08abe8
--- /dev/null
+++ b/test/no_deleted_functions_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Thu Jun 19 16:26:16 2008
+// 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_DELETED_FUNCTIONS
+// This file should not compile, if it does then
+// BOOST_NO_CXX11_DELETED_FUNCTIONS should not be defined.
+// See file boost_no_deleted_functions.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_DELETED_FUNCTIONS
+#include "boost_no_deleted_functions.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_deleted_functions::test();
+}
+
diff --git a/test/no_deleted_functions_pass.cpp b/test/no_deleted_functions_pass.cpp
new file mode 100644
index 0000000..d157332
--- /dev/null
+++ b/test/no_deleted_functions_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Thu Jun 19 16:26:16 2008
+// 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_DELETED_FUNCTIONS
+// This file should compile, if it does not then
+// BOOST_NO_CXX11_DELETED_FUNCTIONS should be defined.
+// See file boost_no_deleted_functions.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_DELETED_FUNCTIONS
+#include "boost_no_deleted_functions.ipp"
+#else
+namespace boost_no_cxx11_deleted_functions = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_deleted_functions::test();
+}
+
diff --git a/test/no_dep_nested_class_fail.cpp b/test/no_dep_nested_class_fail.cpp
new file mode 100644
index 0000000..ca98977
--- /dev/null
+++ b/test/no_dep_nested_class_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:01 2004
+// 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.
+
+// Test file for macro BOOST_NO_DEPENDENT_NESTED_DERIVATIONS
+// This file should not compile, if it does then
+// BOOST_NO_DEPENDENT_NESTED_DERIVATIONS should not be defined.
+// See file boost_no_dep_nested_class.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_DEPENDENT_NESTED_DERIVATIONS
+#include "boost_no_dep_nested_class.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_dependent_nested_derivations::test();
+}
+
diff --git a/test/no_dep_nested_class_pass.cpp b/test/no_dep_nested_class_pass.cpp
new file mode 100644
index 0000000..1eaa6e6
--- /dev/null
+++ b/test/no_dep_nested_class_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:01 2004
+// 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.
+
+// Test file for macro BOOST_NO_DEPENDENT_NESTED_DERIVATIONS
+// This file should compile, if it does not then
+// BOOST_NO_DEPENDENT_NESTED_DERIVATIONS should be defined.
+// See file boost_no_dep_nested_class.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_DEPENDENT_NESTED_DERIVATIONS
+#include "boost_no_dep_nested_class.ipp"
+#else
+namespace boost_no_dependent_nested_derivations = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_dependent_nested_derivations::test();
+}
+
diff --git a/test/no_dep_val_param_fail.cpp b/test/no_dep_val_param_fail.cpp
new file mode 100644
index 0000000..1c0a96f
--- /dev/null
+++ b/test/no_dep_val_param_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:01 2004
+// 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.
+
+// Test file for macro BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS
+// This file should not compile, if it does then
+// BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS should not be defined.
+// See file boost_no_dep_val_param.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_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS
+#include "boost_no_dep_val_param.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_dependent_types_in_template_value_parameters::test();
+}
+
diff --git a/test/no_dep_val_param_pass.cpp b/test/no_dep_val_param_pass.cpp
new file mode 100644
index 0000000..57f6bdf
--- /dev/null
+++ b/test/no_dep_val_param_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:01 2004
+// 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.
+
+// Test file for macro BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS
+// This file should compile, if it does not then
+// BOOST_NO_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS should be defined.
+// See file boost_no_dep_val_param.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_DEPENDENT_TYPES_IN_TEMPLATE_VALUE_PARAMETERS
+#include "boost_no_dep_val_param.ipp"
+#else
+namespace boost_no_dependent_types_in_template_value_parameters = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_dependent_types_in_template_value_parameters::test();
+}
+
diff --git a/test/no_excep_std_fail.cpp b/test/no_excep_std_fail.cpp
new file mode 100644
index 0000000..0c557ac
--- /dev/null
+++ b/test/no_excep_std_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:01 2004
+// 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.
+
+// Test file for macro BOOST_NO_EXCEPTION_STD_NAMESPACE
+// This file should not compile, if it does then
+// BOOST_NO_EXCEPTION_STD_NAMESPACE should not be defined.
+// See file boost_no_excep_std.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_EXCEPTION_STD_NAMESPACE
+#include "boost_no_excep_std.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_exception_std_namespace::test();
+}
+
diff --git a/test/no_excep_std_pass.cpp b/test/no_excep_std_pass.cpp
new file mode 100644
index 0000000..9b5f9ca
--- /dev/null
+++ b/test/no_excep_std_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:01 2004
+// 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.
+
+// Test file for macro BOOST_NO_EXCEPTION_STD_NAMESPACE
+// This file should compile, if it does not then
+// BOOST_NO_EXCEPTION_STD_NAMESPACE should be defined.
+// See file boost_no_excep_std.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_EXCEPTION_STD_NAMESPACE
+#include "boost_no_excep_std.ipp"
+#else
+namespace boost_no_exception_std_namespace = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_exception_std_namespace::test();
+}
+
diff --git a/test/no_exceptions_fail.cpp b/test/no_exceptions_fail.cpp
new file mode 100644
index 0000000..e1f3f49
--- /dev/null
+++ b/test/no_exceptions_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:01 2004
+// 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.
+
+// Test file for macro BOOST_NO_EXCEPTIONS
+// This file should not compile, if it does then
+// BOOST_NO_EXCEPTIONS should not be defined.
+// See file boost_no_exceptions.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_EXCEPTIONS
+#include "boost_no_exceptions.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_exceptions::test();
+}
+
diff --git a/test/no_exceptions_pass.cpp b/test/no_exceptions_pass.cpp
new file mode 100644
index 0000000..f2bf582
--- /dev/null
+++ b/test/no_exceptions_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:01 2004
+// 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.
+
+// Test file for macro BOOST_NO_EXCEPTIONS
+// This file should compile, if it does not then
+// BOOST_NO_EXCEPTIONS should be defined.
+// See file boost_no_exceptions.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_EXCEPTIONS
+#include "boost_no_exceptions.ipp"
+#else
+namespace boost_no_exceptions = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_exceptions::test();
+}
+
diff --git a/test/no_exp_func_tem_arg_fail.cpp b/test/no_exp_func_tem_arg_fail.cpp
new file mode 100644
index 0000000..e491c4d
--- /dev/null
+++ b/test/no_exp_func_tem_arg_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:01 2004
+// 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.
+
+// Test file for macro BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS
+// This file should not compile, if it does then
+// BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS should not be defined.
+// See file boost_no_exp_func_tem_arg.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_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS
+#include "boost_no_exp_func_tem_arg.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_explicit_function_template_arguments::test();
+}
+
diff --git a/test/no_exp_func_tem_arg_pass.cpp b/test/no_exp_func_tem_arg_pass.cpp
new file mode 100644
index 0000000..6e23777
--- /dev/null
+++ b/test/no_exp_func_tem_arg_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:01 2004
+// 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.
+
+// Test file for macro BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS
+// This file should compile, if it does not then
+// BOOST_NO_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS should be defined.
+// See file boost_no_exp_func_tem_arg.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_EXPLICIT_FUNCTION_TEMPLATE_ARGUMENTS
+#include "boost_no_exp_func_tem_arg.ipp"
+#else
+namespace boost_no_explicit_function_template_arguments = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_explicit_function_template_arguments::test();
+}
+
diff --git a/test/no_explicit_cvt_ops_fail.cpp b/test/no_explicit_cvt_ops_fail.cpp
new file mode 100644
index 0000000..ba15087
--- /dev/null
+++ b/test/no_explicit_cvt_ops_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Fri Jun 20 11:51:15 2008
+// 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_EXPLICIT_CONVERSION_OPERATORS
+// This file should not compile, if it does then
+// BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS should not be defined.
+// See file boost_no_explicit_cvt_ops.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_EXPLICIT_CONVERSION_OPERATORS
+#include "boost_no_explicit_cvt_ops.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_explicit_conversion_operators::test();
+}
+
diff --git a/test/no_explicit_cvt_ops_pass.cpp b/test/no_explicit_cvt_ops_pass.cpp
new file mode 100644
index 0000000..2e3c420
--- /dev/null
+++ b/test/no_explicit_cvt_ops_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Fri Jun 20 11:51:15 2008
+// 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_EXPLICIT_CONVERSION_OPERATORS
+// This file should compile, if it does not then
+// BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS should be defined.
+// See file boost_no_explicit_cvt_ops.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_EXPLICIT_CONVERSION_OPERATORS
+#include "boost_no_explicit_cvt_ops.ipp"
+#else
+namespace boost_no_cxx11_explicit_conversion_operators = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_explicit_conversion_operators::test();
+}
+
diff --git a/test/no_extern_template_fail.cpp b/test/no_extern_template_fail.cpp
new file mode 100644
index 0000000..80c8774
--- /dev/null
+++ b/test/no_extern_template_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Thu May 29 09:24:04 2008
+// 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_EXTERN_TEMPLATE
+// This file should not compile, if it does then
+// BOOST_NO_CXX11_EXTERN_TEMPLATE should not be defined.
+// See file boost_no_extern_template.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_EXTERN_TEMPLATE
+#include "boost_no_extern_template.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_extern_template::test();
+}
+
diff --git a/test/no_extern_template_pass.cpp b/test/no_extern_template_pass.cpp
new file mode 100644
index 0000000..acbd037
--- /dev/null
+++ b/test/no_extern_template_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Thu May 29 09:24:04 2008
+// 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_EXTERN_TEMPLATE
+// This file should compile, if it does not then
+// BOOST_NO_CXX11_EXTERN_TEMPLATE should be defined.
+// See file boost_no_extern_template.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_EXTERN_TEMPLATE
+#include "boost_no_extern_template.ipp"
+#else
+namespace boost_no_cxx11_extern_template = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_extern_template::test();
+}
+
diff --git a/test/no_fenv_h_fail.cpp b/test/no_fenv_h_fail.cpp
new file mode 100644
index 0000000..9b2f410
--- /dev/null
+++ b/test/no_fenv_h_fail.cpp
@@ -0,0 +1,33 @@
+// Copyright Bryce Lelbach 2010.
+// 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.
+
+// Test file for macro BOOST_NO_FENV_H
+// This file should not compile, if it does then
+// BOOST_NO_FENV_H should not be defined.
+// See file boost_no_fenv_h.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_FENV_H
+#include "boost_no_fenv_h.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_fenv_h::test();
+}
+
diff --git a/test/no_fenv_h_pass.cpp b/test/no_fenv_h_pass.cpp
new file mode 100644
index 0000000..573d624
--- /dev/null
+++ b/test/no_fenv_h_pass.cpp
@@ -0,0 +1,33 @@
+// Copyright Bryce Lelbach 2010.
+// 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.
+
+// Test file for macro BOOST_NO_FENV_H
+// This file should compile, if it does not then
+// BOOST_NO_FENV_H should be defined.
+// See file boost_no_fenv_h.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_FENV_H
+#include "boost_no_fenv_h.ipp"
+#else
+namespace boost_no_fenv_h = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_fenv_h::test();
+}
+
diff --git a/test/no_fixed_len_variadic_templates_fail.cpp b/test/no_fixed_len_variadic_templates_fail.cpp
new file mode 100644
index 0000000..7098829
--- /dev/null
+++ b/test/no_fixed_len_variadic_templates_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Mon Aug 25 18:12:27 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_CXX11_FIXED_LENGTH_VARIADIC_TEMPLATE_EXPANSION_PACKS
+// This file should not compile, if it does then
+// BOOST_NO_CXX11_FIXED_LENGTH_VARIADIC_TEMPLATE_EXPANSION_PACKS should not be defined.
+// See file boost_no_fixed_len_variadic_templates.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_FIXED_LENGTH_VARIADIC_TEMPLATE_EXPANSION_PACKS
+#include "boost_no_fixed_len_variadic_templates.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_fixed_length_variadic_template_expansion_packs::test();
+}
+
diff --git a/test/no_fixed_len_variadic_templates_pass.cpp b/test/no_fixed_len_variadic_templates_pass.cpp
new file mode 100644
index 0000000..2c52f53
--- /dev/null
+++ b/test/no_fixed_len_variadic_templates_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Mon Aug 25 18:12:27 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_CXX11_FIXED_LENGTH_VARIADIC_TEMPLATE_EXPANSION_PACKS
+// This file should compile, if it does not then
+// BOOST_NO_CXX11_FIXED_LENGTH_VARIADIC_TEMPLATE_EXPANSION_PACKS should be defined.
+// See file boost_no_fixed_len_variadic_templates.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_FIXED_LENGTH_VARIADIC_TEMPLATE_EXPANSION_PACKS
+#include "boost_no_fixed_len_variadic_templates.ipp"
+#else
+namespace boost_no_cxx11_fixed_length_variadic_template_expansion_packs = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_fixed_length_variadic_template_expansion_packs::test();
+}
+
diff --git a/test/no_func_tmp_order_fail.cpp b/test/no_func_tmp_order_fail.cpp
new file mode 100644
index 0000000..7736e90
--- /dev/null
+++ b/test/no_func_tmp_order_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:01 2004
+// 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.
+
+// Test file for macro BOOST_NO_FUNCTION_TEMPLATE_ORDERING
+// This file should not compile, if it does then
+// BOOST_NO_FUNCTION_TEMPLATE_ORDERING should not be defined.
+// See file boost_no_func_tmp_order.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_FUNCTION_TEMPLATE_ORDERING
+#include "boost_no_func_tmp_order.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_function_template_ordering::test();
+}
+
diff --git a/test/no_func_tmp_order_pass.cpp b/test/no_func_tmp_order_pass.cpp
new file mode 100644
index 0000000..003829f
--- /dev/null
+++ b/test/no_func_tmp_order_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:01 2004
+// 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.
+
+// Test file for macro BOOST_NO_FUNCTION_TEMPLATE_ORDERING
+// This file should compile, if it does not then
+// BOOST_NO_FUNCTION_TEMPLATE_ORDERING should be defined.
+// See file boost_no_func_tmp_order.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_FUNCTION_TEMPLATE_ORDERING
+#include "boost_no_func_tmp_order.ipp"
+#else
+namespace boost_no_function_template_ordering = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_function_template_ordering::test();
+}
+
diff --git a/test/no_function_template_default_args_fail.cpp b/test/no_function_template_default_args_fail.cpp
new file mode 100644
index 0000000..e10568e
--- /dev/null
+++ b/test/no_function_template_default_args_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Sun Aug 02 08:25:59 2009
+// 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_FUNCTION_TEMPLATE_DEFAULT_ARGS
+// This file should not compile, if it does then
+// BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS should not be defined.
+// See file boost_no_function_template_default_args.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_FUNCTION_TEMPLATE_DEFAULT_ARGS
+#include "boost_no_function_template_default_args.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_function_template_default_args::test();
+}
+
diff --git a/test/no_function_template_default_args_pass.cpp b/test/no_function_template_default_args_pass.cpp
new file mode 100644
index 0000000..478c986
--- /dev/null
+++ b/test/no_function_template_default_args_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Sun Aug 02 08:25:59 2009
+// 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_FUNCTION_TEMPLATE_DEFAULT_ARGS
+// This file should compile, if it does not then
+// BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS should be defined.
+// See file boost_no_function_template_default_args.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_FUNCTION_TEMPLATE_DEFAULT_ARGS
+#include "boost_no_function_template_default_args.ipp"
+#else
+namespace boost_no_cxx11_function_template_default_args = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_function_template_default_args::test();
+}
+
diff --git a/test/no_function_type_spec_fail.cpp b/test/no_function_type_spec_fail.cpp
new file mode 100644
index 0000000..6ae1dba
--- /dev/null
+++ b/test/no_function_type_spec_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Sun Dec 31 16:23:48 2006
+// 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.
+
+// Test file for macro BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS
+// This file should not compile, if it does then
+// BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS should not be defined.
+// See file boost_no_function_type_spec.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_FUNCTION_TYPE_SPECIALIZATIONS
+#include "boost_no_function_type_spec.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_function_type_specializations::test();
+}
+
diff --git a/test/no_function_type_spec_pass.cpp b/test/no_function_type_spec_pass.cpp
new file mode 100644
index 0000000..e70de0c
--- /dev/null
+++ b/test/no_function_type_spec_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Sun Dec 31 16:23:48 2006
+// 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.
+
+// Test file for macro BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS
+// This file should compile, if it does not then
+// BOOST_NO_FUNCTION_TYPE_SPECIALIZATIONS should be defined.
+// See file boost_no_function_type_spec.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_FUNCTION_TYPE_SPECIALIZATIONS
+#include "boost_no_function_type_spec.ipp"
+#else
+namespace boost_no_function_type_specializations = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_function_type_specializations::test();
+}
+
diff --git a/test/no_i64_limits_fail.cpp b/test/no_i64_limits_fail.cpp
new file mode 100644
index 0000000..63f01b3
--- /dev/null
+++ b/test/no_i64_limits_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:01 2004
+// 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.
+
+// Test file for macro BOOST_NO_MS_INT64_NUMERIC_LIMITS
+// This file should not compile, if it does then
+// BOOST_NO_MS_INT64_NUMERIC_LIMITS should not be defined.
+// See file boost_no_i64_limits.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_MS_INT64_NUMERIC_LIMITS
+#include "boost_no_i64_limits.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_ms_int64_numeric_limits::test();
+}
+
diff --git a/test/no_i64_limits_pass.cpp b/test/no_i64_limits_pass.cpp
new file mode 100644
index 0000000..58e63e7
--- /dev/null
+++ b/test/no_i64_limits_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:01 2004
+// 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.
+
+// Test file for macro BOOST_NO_MS_INT64_NUMERIC_LIMITS
+// This file should compile, if it does not then
+// BOOST_NO_MS_INT64_NUMERIC_LIMITS should be defined.
+// See file boost_no_i64_limits.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_MS_INT64_NUMERIC_LIMITS
+#include "boost_no_i64_limits.ipp"
+#else
+namespace boost_no_ms_int64_numeric_limits = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_ms_int64_numeric_limits::test();
+}
+
diff --git a/test/no_inline_memb_init_fail.cpp b/test/no_inline_memb_init_fail.cpp
new file mode 100644
index 0000000..e4b9a6f
--- /dev/null
+++ b/test/no_inline_memb_init_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:01 2004
+// 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.
+
+// Test file for macro BOOST_NO_INCLASS_MEMBER_INITIALIZATION
+// This file should not compile, if it does then
+// BOOST_NO_INCLASS_MEMBER_INITIALIZATION should not be defined.
+// See file boost_no_inline_memb_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_INCLASS_MEMBER_INITIALIZATION
+#include "boost_no_inline_memb_init.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_inclass_member_initialization::test();
+}
+
diff --git a/test/no_inline_memb_init_pass.cpp b/test/no_inline_memb_init_pass.cpp
new file mode 100644
index 0000000..1b51313
--- /dev/null
+++ b/test/no_inline_memb_init_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:01 2004
+// 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.
+
+// Test file for macro BOOST_NO_INCLASS_MEMBER_INITIALIZATION
+// This file should compile, if it does not then
+// BOOST_NO_INCLASS_MEMBER_INITIALIZATION should be defined.
+// See file boost_no_inline_memb_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_INCLASS_MEMBER_INITIALIZATION
+#include "boost_no_inline_memb_init.ipp"
+#else
+namespace boost_no_inclass_member_initialization = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_inclass_member_initialization::test();
+}
+
diff --git a/test/no_integral_int64_t_fail.cpp b/test/no_integral_int64_t_fail.cpp
new file mode 100644
index 0000000..92280df
--- /dev/null
+++ b/test/no_integral_int64_t_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:01 2004
+// 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.
+
+// Test file for macro BOOST_NO_INTEGRAL_INT64_T
+// This file should not compile, if it does then
+// BOOST_NO_INTEGRAL_INT64_T should not be defined.
+// See file boost_no_integral_int64_t.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_INTEGRAL_INT64_T
+#include "boost_no_integral_int64_t.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_integral_int64_t::test();
+}
+
diff --git a/test/no_integral_int64_t_pass.cpp b/test/no_integral_int64_t_pass.cpp
new file mode 100644
index 0000000..012a562
--- /dev/null
+++ b/test/no_integral_int64_t_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:01 2004
+// 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.
+
+// Test file for macro BOOST_NO_INTEGRAL_INT64_T
+// This file should compile, if it does not then
+// BOOST_NO_INTEGRAL_INT64_T should be defined.
+// See file boost_no_integral_int64_t.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_INTEGRAL_INT64_T
+#include "boost_no_integral_int64_t.ipp"
+#else
+namespace boost_no_integral_int64_t = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_integral_int64_t::test();
+}
+
diff --git a/test/no_iosfwd_fail.cpp b/test/no_iosfwd_fail.cpp
new file mode 100644
index 0000000..a1c6d91
--- /dev/null
+++ b/test/no_iosfwd_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Sat Aug 25 12:32:21 2007
+// 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.
+
+// Test file for macro BOOST_NO_IOSFWD
+// This file should not compile, if it does then
+// BOOST_NO_IOSFWD should not be defined.
+// See file boost_no_iosfwd.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_IOSFWD
+#include "boost_no_iosfwd.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_iosfwd::test();
+}
+
diff --git a/test/no_iosfwd_pass.cpp b/test/no_iosfwd_pass.cpp
new file mode 100644
index 0000000..6e631d9
--- /dev/null
+++ b/test/no_iosfwd_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Sat Aug 25 12:32:21 2007
+// 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.
+
+// Test file for macro BOOST_NO_IOSFWD
+// This file should compile, if it does not then
+// BOOST_NO_IOSFWD should be defined.
+// See file boost_no_iosfwd.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_IOSFWD
+#include "boost_no_iosfwd.ipp"
+#else
+namespace boost_no_iosfwd = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_iosfwd::test();
+}
+
diff --git a/test/no_iostream_fail.cpp b/test/no_iostream_fail.cpp
new file mode 100644
index 0000000..67a8459
--- /dev/null
+++ b/test/no_iostream_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Sat Aug 25 12:32:21 2007
+// 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.
+
+// Test file for macro BOOST_NO_IOSTREAM
+// This file should not compile, if it does then
+// BOOST_NO_IOSTREAM should not be defined.
+// See file boost_no_iostream.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_IOSTREAM
+#include "boost_no_iostream.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_iostream::test();
+}
+
diff --git a/test/no_iostream_pass.cpp b/test/no_iostream_pass.cpp
new file mode 100644
index 0000000..ba1d0ac
--- /dev/null
+++ b/test/no_iostream_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Sat Aug 25 12:32:21 2007
+// 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.
+
+// Test file for macro BOOST_NO_IOSTREAM
+// This file should compile, if it does not then
+// BOOST_NO_IOSTREAM should be defined.
+// See file boost_no_iostream.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_IOSTREAM
+#include "boost_no_iostream.ipp"
+#else
+namespace boost_no_iostream = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_iostream::test();
+}
+
diff --git a/test/no_is_abstract_fail.cpp b/test/no_is_abstract_fail.cpp
new file mode 100644
index 0000000..1a5c57b
--- /dev/null
+++ b/test/no_is_abstract_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:01 2004
+// 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.
+
+// Test file for macro BOOST_NO_IS_ABSTRACT
+// This file should not compile, if it does then
+// BOOST_NO_IS_ABSTRACT should not be defined.
+// See file boost_no_is_abstract.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_IS_ABSTRACT
+#include "boost_no_is_abstract.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_is_abstract::test();
+}
+
diff --git a/test/no_is_abstract_pass.cpp b/test/no_is_abstract_pass.cpp
new file mode 100644
index 0000000..a9caf68
--- /dev/null
+++ b/test/no_is_abstract_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:01 2004
+// 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.
+
+// Test file for macro BOOST_NO_IS_ABSTRACT
+// This file should compile, if it does not then
+// BOOST_NO_IS_ABSTRACT should be defined.
+// See file boost_no_is_abstract.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_IS_ABSTRACT
+#include "boost_no_is_abstract.ipp"
+#else
+namespace boost_no_is_abstract = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_is_abstract::test();
+}
+
diff --git a/test/no_iter_construct_fail.cpp b/test/no_iter_construct_fail.cpp
new file mode 100644
index 0000000..bc61864
--- /dev/null
+++ b/test/no_iter_construct_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:01 2004
+// 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.
+
+// Test file for macro BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
+// This file should not compile, if it does then
+// BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS should not be defined.
+// See file boost_no_iter_construct.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_TEMPLATED_ITERATOR_CONSTRUCTORS
+#include "boost_no_iter_construct.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_templated_iterator_constructors::test();
+}
+
diff --git a/test/no_iter_construct_pass.cpp b/test/no_iter_construct_pass.cpp
new file mode 100644
index 0000000..6d063be
--- /dev/null
+++ b/test/no_iter_construct_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:01 2004
+// 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.
+
+// Test file for macro BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS
+// This file should compile, if it does not then
+// BOOST_NO_TEMPLATED_ITERATOR_CONSTRUCTORS should be defined.
+// See file boost_no_iter_construct.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_TEMPLATED_ITERATOR_CONSTRUCTORS
+#include "boost_no_iter_construct.ipp"
+#else
+namespace boost_no_templated_iterator_constructors = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_templated_iterator_constructors::test();
+}
+
diff --git a/test/no_lambdas_fail.cpp b/test/no_lambdas_fail.cpp
new file mode 100644
index 0000000..68680bc
--- /dev/null
+++ b/test/no_lambdas_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Thu May 14 16:01:35 2009
+// 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_LAMBDAS
+// This file should not compile, if it does then
+// BOOST_NO_CXX11_LAMBDAS should not be defined.
+// See file boost_no_lambdas.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_LAMBDAS
+#include "boost_no_lambdas.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_lambdas::test();
+}
+
diff --git a/test/no_lambdas_pass.cpp b/test/no_lambdas_pass.cpp
new file mode 100644
index 0000000..453a72a
--- /dev/null
+++ b/test/no_lambdas_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Thu May 14 16:01:35 2009
+// 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_LAMBDAS
+// This file should compile, if it does not then
+// BOOST_NO_CXX11_LAMBDAS should be defined.
+// See file boost_no_lambdas.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_LAMBDAS
+#include "boost_no_lambdas.ipp"
+#else
+namespace boost_no_cxx11_lambdas = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_lambdas::test();
+}
+
diff --git a/test/no_limits_const_exp_fail.cpp b/test/no_limits_const_exp_fail.cpp
new file mode 100644
index 0000000..9f916d9
--- /dev/null
+++ b/test/no_limits_const_exp_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:01 2004
+// 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.
+
+// Test file for macro BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
+// This file should not compile, if it does then
+// BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS should not be defined.
+// See file boost_no_limits_const_exp.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_LIMITS_COMPILE_TIME_CONSTANTS
+#include "boost_no_limits_const_exp.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_limits_compile_time_constants::test();
+}
+
diff --git a/test/no_limits_const_exp_pass.cpp b/test/no_limits_const_exp_pass.cpp
new file mode 100644
index 0000000..a280b76
--- /dev/null
+++ b/test/no_limits_const_exp_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:01 2004
+// 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.
+
+// Test file for macro BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS
+// This file should compile, if it does not then
+// BOOST_NO_LIMITS_COMPILE_TIME_CONSTANTS should be defined.
+// See file boost_no_limits_const_exp.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_LIMITS_COMPILE_TIME_CONSTANTS
+#include "boost_no_limits_const_exp.ipp"
+#else
+namespace boost_no_limits_compile_time_constants = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_limits_compile_time_constants::test();
+}
+
diff --git a/test/no_limits_fail.cpp b/test/no_limits_fail.cpp
new file mode 100644
index 0000000..d685397
--- /dev/null
+++ b/test/no_limits_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:01 2004
+// 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.
+
+// Test file for macro BOOST_NO_LIMITS
+// This file should not compile, if it does then
+// BOOST_NO_LIMITS should not be defined.
+// See file boost_no_limits.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_LIMITS
+#include "boost_no_limits.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_limits::test();
+}
+
diff --git a/test/no_limits_pass.cpp b/test/no_limits_pass.cpp
new file mode 100644
index 0000000..7d77cac
--- /dev/null
+++ b/test/no_limits_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:01 2004
+// 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.
+
+// Test file for macro BOOST_NO_LIMITS
+// This file should compile, if it does not then
+// BOOST_NO_LIMITS should be defined.
+// See file boost_no_limits.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_LIMITS
+#include "boost_no_limits.ipp"
+#else
+namespace boost_no_limits = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_limits::test();
+}
+
diff --git a/test/no_ll_limits_fail.cpp b/test/no_ll_limits_fail.cpp
new file mode 100644
index 0000000..477262c
--- /dev/null
+++ b/test/no_ll_limits_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:01 2004
+// 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.
+
+// Test file for macro BOOST_NO_LONG_LONG_NUMERIC_LIMITS
+// This file should not compile, if it does then
+// BOOST_NO_LONG_LONG_NUMERIC_LIMITS should not be defined.
+// See file boost_no_ll_limits.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_LONG_LONG_NUMERIC_LIMITS
+#include "boost_no_ll_limits.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_long_long_numeric_limits::test();
+}
+
diff --git a/test/no_ll_limits_pass.cpp b/test/no_ll_limits_pass.cpp
new file mode 100644
index 0000000..2c6a386
--- /dev/null
+++ b/test/no_ll_limits_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:01 2004
+// 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.
+
+// Test file for macro BOOST_NO_LONG_LONG_NUMERIC_LIMITS
+// This file should compile, if it does not then
+// BOOST_NO_LONG_LONG_NUMERIC_LIMITS should be defined.
+// See file boost_no_ll_limits.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_LONG_LONG_NUMERIC_LIMITS
+#include "boost_no_ll_limits.ipp"
+#else
+namespace boost_no_long_long_numeric_limits = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_long_long_numeric_limits::test();
+}
+
diff --git a/test/no_long_long_fail.cpp b/test/no_long_long_fail.cpp
new file mode 100644
index 0000000..2a2e724
--- /dev/null
+++ b/test/no_long_long_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Thu May 29 07:24:54 2008
+// 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_LONG_LONG
+// This file should not compile, if it does then
+// BOOST_NO_LONG_LONG should not be defined.
+// See file boost_no_long_long.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_LONG_LONG
+#include "boost_no_long_long.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_long_long::test();
+}
+
diff --git a/test/no_long_long_pass.cpp b/test/no_long_long_pass.cpp
new file mode 100644
index 0000000..3e00f1b
--- /dev/null
+++ b/test/no_long_long_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Thu May 29 07:24:54 2008
+// 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_LONG_LONG
+// This file should compile, if it does not then
+// BOOST_NO_LONG_LONG should be defined.
+// See file boost_no_long_long.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_LONG_LONG
+#include "boost_no_long_long.ipp"
+#else
+namespace boost_no_long_long = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_long_long::test();
+}
+
diff --git a/test/no_mem_func_spec_fail.cpp b/test/no_mem_func_spec_fail.cpp
new file mode 100644
index 0000000..4216ed4
--- /dev/null
+++ b/test/no_mem_func_spec_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:01 2004
+// 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.
+
+// Test file for macro BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS
+// This file should not compile, if it does then
+// BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS should not be defined.
+// See file boost_no_mem_func_spec.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_MEMBER_FUNCTION_SPECIALIZATIONS
+#include "boost_no_mem_func_spec.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_member_function_specializations::test();
+}
+
diff --git a/test/no_mem_func_spec_pass.cpp b/test/no_mem_func_spec_pass.cpp
new file mode 100644
index 0000000..a26ceb0
--- /dev/null
+++ b/test/no_mem_func_spec_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:01 2004
+// 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.
+
+// Test file for macro BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS
+// This file should compile, if it does not then
+// BOOST_NO_MEMBER_FUNCTION_SPECIALIZATIONS should be defined.
+// See file boost_no_mem_func_spec.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_MEMBER_FUNCTION_SPECIALIZATIONS
+#include "boost_no_mem_func_spec.ipp"
+#else
+namespace boost_no_member_function_specializations = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_member_function_specializations::test();
+}
+
diff --git a/test/no_mem_tem_keyword_fail.cpp b/test/no_mem_tem_keyword_fail.cpp
new file mode 100644
index 0000000..fe6b962
--- /dev/null
+++ b/test/no_mem_tem_keyword_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:02 2004
+// 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.
+
+// Test file for macro BOOST_NO_MEMBER_TEMPLATE_KEYWORD
+// This file should not compile, if it does then
+// BOOST_NO_MEMBER_TEMPLATE_KEYWORD should not be defined.
+// See file boost_no_mem_tem_keyword.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_MEMBER_TEMPLATE_KEYWORD
+#include "boost_no_mem_tem_keyword.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_member_template_keyword::test();
+}
+
diff --git a/test/no_mem_tem_keyword_pass.cpp b/test/no_mem_tem_keyword_pass.cpp
new file mode 100644
index 0000000..7beb159
--- /dev/null
+++ b/test/no_mem_tem_keyword_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:02 2004
+// 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.
+
+// Test file for macro BOOST_NO_MEMBER_TEMPLATE_KEYWORD
+// This file should compile, if it does not then
+// BOOST_NO_MEMBER_TEMPLATE_KEYWORD should be defined.
+// See file boost_no_mem_tem_keyword.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_MEMBER_TEMPLATE_KEYWORD
+#include "boost_no_mem_tem_keyword.ipp"
+#else
+namespace boost_no_member_template_keyword = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_member_template_keyword::test();
+}
+
diff --git a/test/no_mem_tem_pnts_fail.cpp b/test/no_mem_tem_pnts_fail.cpp
new file mode 100644
index 0000000..bca3ee0
--- /dev/null
+++ b/test/no_mem_tem_pnts_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:02 2004
+// 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.
+
+// Test file for macro BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS
+// This file should not compile, if it does then
+// BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS should not be defined.
+// See file boost_no_mem_tem_pnts.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_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS
+#include "boost_no_mem_tem_pnts.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_pointer_to_member_template_parameters::test();
+}
+
diff --git a/test/no_mem_tem_pnts_pass.cpp b/test/no_mem_tem_pnts_pass.cpp
new file mode 100644
index 0000000..bf273cc
--- /dev/null
+++ b/test/no_mem_tem_pnts_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:02 2004
+// 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.
+
+// Test file for macro BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS
+// This file should compile, if it does not then
+// BOOST_NO_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS should be defined.
+// See file boost_no_mem_tem_pnts.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_POINTER_TO_MEMBER_TEMPLATE_PARAMETERS
+#include "boost_no_mem_tem_pnts.ipp"
+#else
+namespace boost_no_pointer_to_member_template_parameters = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_pointer_to_member_template_parameters::test();
+}
+
diff --git a/test/no_mem_templ_frnds_fail.cpp b/test/no_mem_templ_frnds_fail.cpp
new file mode 100644
index 0000000..a8602c1
--- /dev/null
+++ b/test/no_mem_templ_frnds_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:02 2004
+// 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.
+
+// Test file for macro BOOST_NO_MEMBER_TEMPLATE_FRIENDS
+// This file should not compile, if it does then
+// BOOST_NO_MEMBER_TEMPLATE_FRIENDS should not be defined.
+// See file boost_no_mem_templ_frnds.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_MEMBER_TEMPLATE_FRIENDS
+#include "boost_no_mem_templ_frnds.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_member_template_friends::test();
+}
+
diff --git a/test/no_mem_templ_frnds_pass.cpp b/test/no_mem_templ_frnds_pass.cpp
new file mode 100644
index 0000000..a234eba
--- /dev/null
+++ b/test/no_mem_templ_frnds_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:01 2004
+// 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.
+
+// Test file for macro BOOST_NO_MEMBER_TEMPLATE_FRIENDS
+// This file should compile, if it does not then
+// BOOST_NO_MEMBER_TEMPLATE_FRIENDS should be defined.
+// See file boost_no_mem_templ_frnds.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_MEMBER_TEMPLATE_FRIENDS
+#include "boost_no_mem_templ_frnds.ipp"
+#else
+namespace boost_no_member_template_friends = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_member_template_friends::test();
+}
+
diff --git a/test/no_mem_templates_fail.cpp b/test/no_mem_templates_fail.cpp
new file mode 100644
index 0000000..3b6227d
--- /dev/null
+++ b/test/no_mem_templates_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:01 2004
+// 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.
+
+// Test file for macro BOOST_NO_MEMBER_TEMPLATES
+// This file should not compile, if it does then
+// BOOST_NO_MEMBER_TEMPLATES should not be defined.
+// See file boost_no_mem_templates.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_MEMBER_TEMPLATES
+#include "boost_no_mem_templates.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_member_templates::test();
+}
+
diff --git a/test/no_mem_templates_pass.cpp b/test/no_mem_templates_pass.cpp
new file mode 100644
index 0000000..7935f11
--- /dev/null
+++ b/test/no_mem_templates_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:01 2004
+// 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.
+
+// Test file for macro BOOST_NO_MEMBER_TEMPLATES
+// This file should compile, if it does not then
+// BOOST_NO_MEMBER_TEMPLATES should be defined.
+// See file boost_no_mem_templates.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_MEMBER_TEMPLATES
+#include "boost_no_mem_templates.ipp"
+#else
+namespace boost_no_member_templates = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_member_templates::test();
+}
+
diff --git a/test/no_nested_friendship_fail.cpp b/test/no_nested_friendship_fail.cpp
new file mode 100644
index 0000000..dd90e40
--- /dev/null
+++ b/test/no_nested_friendship_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Thu Sep 18 23:32:18 2008
+// 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_NESTED_FRIENDSHIP
+// This file should not compile, if it does then
+// BOOST_NO_NESTED_FRIENDSHIP should not be defined.
+// See file boost_no_nested_friendship.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_NESTED_FRIENDSHIP
+#include "boost_no_nested_friendship.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_nested_friendship::test();
+}
+
diff --git a/test/no_nested_friendship_pass.cpp b/test/no_nested_friendship_pass.cpp
new file mode 100644
index 0000000..3e114bc
--- /dev/null
+++ b/test/no_nested_friendship_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Thu Sep 18 23:32:18 2008
+// 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_NESTED_FRIENDSHIP
+// This file should compile, if it does not then
+// BOOST_NO_NESTED_FRIENDSHIP should be defined.
+// See file boost_no_nested_friendship.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_NESTED_FRIENDSHIP
+#include "boost_no_nested_friendship.ipp"
+#else
+namespace boost_no_nested_friendship = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_nested_friendship::test();
+}
+
diff --git a/test/no_noexcept_fail.cpp b/test/no_noexcept_fail.cpp
new file mode 100644
index 0000000..b49d9be
--- /dev/null
+++ b/test/no_noexcept_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Thu May 5 04:40:08 2011
+// 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_NOEXCEPT
+// This file should not compile, if it does then
+// BOOST_NO_CXX11_NOEXCEPT should not be defined.
+// See file boost_no_noexcept.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_NOEXCEPT
+#include "boost_no_noexcept.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_noexcept::test();
+}
+
diff --git a/test/no_noexcept_pass.cpp b/test/no_noexcept_pass.cpp
new file mode 100644
index 0000000..4f07f7d
--- /dev/null
+++ b/test/no_noexcept_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Thu May 5 04:40:08 2011
+// 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_NOEXCEPT
+// This file should compile, if it does not then
+// BOOST_NO_CXX11_NOEXCEPT should be defined.
+// See file boost_no_noexcept.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_NOEXCEPT
+#include "boost_no_noexcept.ipp"
+#else
+namespace boost_no_cxx11_noexcept = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_noexcept::test();
+}
+
diff --git a/test/no_nullptr_fail.cpp b/test/no_nullptr_fail.cpp
new file mode 100644
index 0000000..c870ef2
--- /dev/null
+++ b/test/no_nullptr_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Thu May 14 16:01:35 2009
+// 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_NULLPTR
+// This file should not compile, if it does then
+// BOOST_NO_CXX11_NULLPTR should not be defined.
+// See file boost_no_nullptr.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_NULLPTR
+#include "boost_no_nullptr.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_nullptr::test();
+}
+
diff --git a/test/no_nullptr_pass.cpp b/test/no_nullptr_pass.cpp
new file mode 100644
index 0000000..34450ad
--- /dev/null
+++ b/test/no_nullptr_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Thu May 14 16:01:35 2009
+// 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_NULLPTR
+// This file should compile, if it does not then
+// BOOST_NO_CXX11_NULLPTR should be defined.
+// See file boost_no_nullptr.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_NULLPTR
+#include "boost_no_nullptr.ipp"
+#else
+namespace boost_no_cxx11_nullptr = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_nullptr::test();
+}
+
diff --git a/test/no_ops_in_namespace_fail.cpp b/test/no_ops_in_namespace_fail.cpp
new file mode 100644
index 0000000..2e746ec
--- /dev/null
+++ b/test/no_ops_in_namespace_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:02 2004
+// 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.
+
+// Test file for macro BOOST_NO_OPERATORS_IN_NAMESPACE
+// This file should not compile, if it does then
+// BOOST_NO_OPERATORS_IN_NAMESPACE should not be defined.
+// See file boost_no_ops_in_namespace.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_OPERATORS_IN_NAMESPACE
+#include "boost_no_ops_in_namespace.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_operators_in_namespace::test();
+}
+
diff --git a/test/no_ops_in_namespace_pass.cpp b/test/no_ops_in_namespace_pass.cpp
new file mode 100644
index 0000000..5004411
--- /dev/null
+++ b/test/no_ops_in_namespace_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:02 2004
+// 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.
+
+// Test file for macro BOOST_NO_OPERATORS_IN_NAMESPACE
+// This file should compile, if it does not then
+// BOOST_NO_OPERATORS_IN_NAMESPACE should be defined.
+// See file boost_no_ops_in_namespace.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_OPERATORS_IN_NAMESPACE
+#include "boost_no_ops_in_namespace.ipp"
+#else
+namespace boost_no_operators_in_namespace = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_operators_in_namespace::test();
+}
+
diff --git a/test/no_part_spec_def_args_fail.cpp b/test/no_part_spec_def_args_fail.cpp
new file mode 100644
index 0000000..68f34d2
--- /dev/null
+++ b/test/no_part_spec_def_args_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Mon Apr 21 12:40:41 2008
+// by libs/config/tools/generate.cpp
+// Copyright John Maddock 2002-4.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id: generate.cpp 44422 2008-04-14 18:06:59Z johnmaddock $
+//
+
+
+// Test file for macro BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS
+// This file should not compile, if it does then
+// BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS should not be defined.
+// See file boost_no_part_spec_def_args.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_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS
+#include "boost_no_part_spec_def_args.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_partial_specialization_implicit_default_args::test();
+}
+
diff --git a/test/no_part_spec_def_args_pass.cpp b/test/no_part_spec_def_args_pass.cpp
new file mode 100644
index 0000000..0686422
--- /dev/null
+++ b/test/no_part_spec_def_args_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Mon Apr 21 12:40:41 2008
+// by libs/config/tools/generate.cpp
+// Copyright John Maddock 2002-4.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id: generate.cpp 44422 2008-04-14 18:06:59Z johnmaddock $
+//
+
+
+// Test file for macro BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS
+// This file should compile, if it does not then
+// BOOST_NO_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS should be defined.
+// See file boost_no_part_spec_def_args.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_PARTIAL_SPECIALIZATION_IMPLICIT_DEFAULT_ARGS
+#include "boost_no_part_spec_def_args.ipp"
+#else
+namespace boost_no_partial_specialization_implicit_default_args = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_partial_specialization_implicit_default_args::test();
+}
+
diff --git a/test/no_partial_spec_fail.cpp b/test/no_partial_spec_fail.cpp
new file mode 100644
index 0000000..0b24a97
--- /dev/null
+++ b/test/no_partial_spec_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:02 2004
+// 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.
+
+// Test file for macro BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+// This file should not compile, if it does then
+// BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION should not be defined.
+// See file boost_no_partial_spec.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_TEMPLATE_PARTIAL_SPECIALIZATION
+#include "boost_no_partial_spec.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_template_partial_specialization::test();
+}
+
diff --git a/test/no_partial_spec_pass.cpp b/test/no_partial_spec_pass.cpp
new file mode 100644
index 0000000..5767410
--- /dev/null
+++ b/test/no_partial_spec_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:02 2004
+// 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.
+
+// Test file for macro BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
+// This file should compile, if it does not then
+// BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION should be defined.
+// See file boost_no_partial_spec.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_TEMPLATE_PARTIAL_SPECIALIZATION
+#include "boost_no_partial_spec.ipp"
+#else
+namespace boost_no_template_partial_specialization = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_template_partial_specialization::test();
+}
+
diff --git a/test/no_priv_aggregate_fail.cpp b/test/no_priv_aggregate_fail.cpp
new file mode 100644
index 0000000..22ed88f
--- /dev/null
+++ b/test/no_priv_aggregate_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:02 2004
+// 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.
+
+// Test file for macro BOOST_NO_PRIVATE_IN_AGGREGATE
+// This file should not compile, if it does then
+// BOOST_NO_PRIVATE_IN_AGGREGATE should not be defined.
+// See file boost_no_priv_aggregate.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_PRIVATE_IN_AGGREGATE
+#include "boost_no_priv_aggregate.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_private_in_aggregate::test();
+}
+
diff --git a/test/no_priv_aggregate_pass.cpp b/test/no_priv_aggregate_pass.cpp
new file mode 100644
index 0000000..839be57
--- /dev/null
+++ b/test/no_priv_aggregate_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:02 2004
+// 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.
+
+// Test file for macro BOOST_NO_PRIVATE_IN_AGGREGATE
+// This file should compile, if it does not then
+// BOOST_NO_PRIVATE_IN_AGGREGATE should be defined.
+// See file boost_no_priv_aggregate.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_PRIVATE_IN_AGGREGATE
+#include "boost_no_priv_aggregate.ipp"
+#else
+namespace boost_no_private_in_aggregate = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_private_in_aggregate::test();
+}
+
diff --git a/test/no_ptr_mem_const_fail.cpp b/test/no_ptr_mem_const_fail.cpp
new file mode 100644
index 0000000..36eb9dc
--- /dev/null
+++ b/test/no_ptr_mem_const_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:02 2004
+// 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.
+
+// Test file for macro BOOST_NO_POINTER_TO_MEMBER_CONST
+// This file should not compile, if it does then
+// BOOST_NO_POINTER_TO_MEMBER_CONST should not be defined.
+// See file boost_no_ptr_mem_const.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_POINTER_TO_MEMBER_CONST
+#include "boost_no_ptr_mem_const.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_pointer_to_member_const::test();
+}
+
diff --git a/test/no_ptr_mem_const_pass.cpp b/test/no_ptr_mem_const_pass.cpp
new file mode 100644
index 0000000..c15d7ad
--- /dev/null
+++ b/test/no_ptr_mem_const_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:02 2004
+// 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.
+
+// Test file for macro BOOST_NO_POINTER_TO_MEMBER_CONST
+// This file should compile, if it does not then
+// BOOST_NO_POINTER_TO_MEMBER_CONST should be defined.
+// See file boost_no_ptr_mem_const.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_POINTER_TO_MEMBER_CONST
+#include "boost_no_ptr_mem_const.ipp"
+#else
+namespace boost_no_pointer_to_member_const = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_pointer_to_member_const::test();
+}
+
diff --git a/test/no_range_based_for_fail.cpp b/test/no_range_based_for_fail.cpp
new file mode 100644
index 0000000..6b0a0f5
--- /dev/null
+++ b/test/no_range_based_for_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Tue Jul 10 14:28:33 2012
+// 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_RANGE_BASED_FOR
+// This file should not compile, if it does then
+// BOOST_NO_CXX11_RANGE_BASED_FOR should not be defined.
+// See file boost_no_range_based_for.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_RANGE_BASED_FOR
+#include "boost_no_range_based_for.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_range_based_for::test();
+}
+
diff --git a/test/no_range_based_for_pass.cpp b/test/no_range_based_for_pass.cpp
new file mode 100644
index 0000000..b8207c5
--- /dev/null
+++ b/test/no_range_based_for_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Tue Jul 10 14:28:33 2012
+// 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_RANGE_BASED_FOR
+// This file should compile, if it does not then
+// BOOST_NO_CXX11_RANGE_BASED_FOR should be defined.
+// See file boost_no_range_based_for.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_RANGE_BASED_FOR
+#include "boost_no_range_based_for.ipp"
+#else
+namespace boost_no_cxx11_range_based_for = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_range_based_for::test();
+}
+
diff --git a/test/no_raw_literals_fail.cpp b/test/no_raw_literals_fail.cpp
new file mode 100644
index 0000000..3c535fa
--- /dev/null
+++ b/test/no_raw_literals_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Thu Jun 19 16:26:16 2008
+// 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_RAW_LITERALS
+// This file should not compile, if it does then
+// BOOST_NO_CXX11_RAW_LITERALS should not be defined.
+// See file boost_no_raw_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_CXX11_RAW_LITERALS
+#include "boost_no_raw_literals.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_raw_literals::test();
+}
+
diff --git a/test/no_raw_literals_pass.cpp b/test/no_raw_literals_pass.cpp
new file mode 100644
index 0000000..ddf99c2
--- /dev/null
+++ b/test/no_raw_literals_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Thu Jun 19 16:26:16 2008
+// 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_RAW_LITERALS
+// This file should compile, if it does not then
+// BOOST_NO_CXX11_RAW_LITERALS should be defined.
+// See file boost_no_raw_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_CXX11_RAW_LITERALS
+#include "boost_no_raw_literals.ipp"
+#else
+namespace boost_no_cxx11_raw_literals = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_raw_literals::test();
+}
+
diff --git a/test/no_restrict_references_fail.cpp b/test/no_restrict_references_fail.cpp
new file mode 100644
index 0000000..867aa0c
--- /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 <boost/config.hpp>
+#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 0000000..878c54e
--- /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 <boost/config.hpp>
+#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();
+}
+
diff --git a/test/no_ret_det_fail.cpp b/test/no_ret_det_fail.cpp
new file mode 100644
index 0000000..e48bfa4
--- /dev/null
+++ b/test/no_ret_det_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:02 2004
+// 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.
+
+// Test file for macro BOOST_NO_UNREACHABLE_RETURN_DETECTION
+// This file should not compile, if it does then
+// BOOST_NO_UNREACHABLE_RETURN_DETECTION should not be defined.
+// See file boost_no_ret_det.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_UNREACHABLE_RETURN_DETECTION
+#include "boost_no_ret_det.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_unreachable_return_detection::test();
+}
+
diff --git a/test/no_ret_det_pass.cpp b/test/no_ret_det_pass.cpp
new file mode 100644
index 0000000..7d45813
--- /dev/null
+++ b/test/no_ret_det_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:02 2004
+// 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.
+
+// Test file for macro BOOST_NO_UNREACHABLE_RETURN_DETECTION
+// This file should compile, if it does not then
+// BOOST_NO_UNREACHABLE_RETURN_DETECTION should be defined.
+// See file boost_no_ret_det.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_UNREACHABLE_RETURN_DETECTION
+#include "boost_no_ret_det.ipp"
+#else
+namespace boost_no_unreachable_return_detection = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_unreachable_return_detection::test();
+}
+
diff --git a/test/no_rtti_fail.cpp b/test/no_rtti_fail.cpp
new file mode 100644
index 0000000..f24f15d
--- /dev/null
+++ b/test/no_rtti_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Mon Aug 25 10:51:51 2008
+// by libs/config/tools/generate.cpp
+// Copyright John Maddock 2002-4.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id: generate.cpp 47351 2008-07-12 12:41:52Z johnmaddock $
+//
+
+
+// Test file for macro BOOST_NO_RTTI
+// This file should not compile, if it does then
+// BOOST_NO_RTTI should not be defined.
+// See file boost_no_rtti.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_RTTI
+#include "boost_no_rtti.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_rtti::test();
+}
+
diff --git a/test/no_rtti_pass.cpp b/test/no_rtti_pass.cpp
new file mode 100644
index 0000000..9809213
--- /dev/null
+++ b/test/no_rtti_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Mon Aug 25 10:51:51 2008
+// by libs/config/tools/generate.cpp
+// Copyright John Maddock 2002-4.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id: generate.cpp 47351 2008-07-12 12:41:52Z johnmaddock $
+//
+
+
+// Test file for macro BOOST_NO_RTTI
+// This file should compile, if it does not then
+// BOOST_NO_RTTI should be defined.
+// See file boost_no_rtti.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_RTTI
+#include "boost_no_rtti.ipp"
+#else
+namespace boost_no_rtti = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_rtti::test();
+}
+
diff --git a/test/no_rvalue_references_fail.cpp b/test/no_rvalue_references_fail.cpp
new file mode 100644
index 0000000..390b6c5
--- /dev/null
+++ b/test/no_rvalue_references_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Thu May 29 07:24:54 2008
+// 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_RVALUE_REFERENCES
+// This file should not compile, if it does then
+// BOOST_NO_CXX11_RVALUE_REFERENCES should not be defined.
+// See file boost_no_rvalue_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 <boost/config.hpp>
+#include "test.hpp"
+
+#ifdef BOOST_NO_CXX11_RVALUE_REFERENCES
+#include "boost_no_rvalue_references.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_rvalue_references::test();
+}
+
diff --git a/test/no_rvalue_references_pass.cpp b/test/no_rvalue_references_pass.cpp
new file mode 100644
index 0000000..c11494c
--- /dev/null
+++ b/test/no_rvalue_references_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Thu May 29 07:24:54 2008
+// 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_RVALUE_REFERENCES
+// This file should compile, if it does not then
+// BOOST_NO_CXX11_RVALUE_REFERENCES should be defined.
+// See file boost_no_rvalue_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 <boost/config.hpp>
+#include "test.hpp"
+
+#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
+#include "boost_no_rvalue_references.ipp"
+#else
+namespace boost_no_cxx11_rvalue_references = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_rvalue_references::test();
+}
+
diff --git a/test/no_scoped_enums_fail.cpp b/test/no_scoped_enums_fail.cpp
new file mode 100644
index 0000000..4c1c184
--- /dev/null
+++ b/test/no_scoped_enums_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Thu May 29 08:00:48 2008
+// 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_SCOPED_ENUMS
+// This file should not compile, if it does then
+// BOOST_NO_CXX11_SCOPED_ENUMS should not be defined.
+// See file boost_no_scoped_enums.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_SCOPED_ENUMS
+#include "boost_no_scoped_enums.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_scoped_enums::test();
+}
+
diff --git a/test/no_scoped_enums_pass.cpp b/test/no_scoped_enums_pass.cpp
new file mode 100644
index 0000000..501fea9
--- /dev/null
+++ b/test/no_scoped_enums_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Thu May 29 08:00:48 2008
+// 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_SCOPED_ENUMS
+// This file should compile, if it does not then
+// BOOST_NO_CXX11_SCOPED_ENUMS should be defined.
+// See file boost_no_scoped_enums.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_SCOPED_ENUMS
+#include "boost_no_scoped_enums.ipp"
+#else
+namespace boost_no_cxx11_scoped_enums = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_scoped_enums::test();
+}
+
diff --git a/test/no_sfinae_expr_fail.cpp b/test/no_sfinae_expr_fail.cpp
new file mode 100644
index 0000000..e7c8b03
--- /dev/null
+++ b/test/no_sfinae_expr_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Sun Aug 02 08:25:59 2009
+// 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_SFINAE_EXPR
+// This file should not compile, if it does then
+// BOOST_NO_SFINAE_EXPR should not be defined.
+// See file boost_no_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_SFINAE_EXPR
+#include "boost_no_sfinae_expr.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_sfinae_expr::test();
+}
+
diff --git a/test/no_sfinae_expr_pass.cpp b/test/no_sfinae_expr_pass.cpp
new file mode 100644
index 0000000..fc87d78
--- /dev/null
+++ b/test/no_sfinae_expr_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Sun Aug 02 08:25:59 2009
+// 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_SFINAE_EXPR
+// This file should compile, if it does not then
+// BOOST_NO_SFINAE_EXPR should be defined.
+// See file boost_no_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_SFINAE_EXPR
+#include "boost_no_sfinae_expr.ipp"
+#else
+namespace boost_no_sfinae_expr = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_sfinae_expr::test();
+}
+
diff --git a/test/no_sfinae_fail.cpp b/test/no_sfinae_fail.cpp
new file mode 100644
index 0000000..915f924
--- /dev/null
+++ b/test/no_sfinae_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:02 2004
+// 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.
+
+// Test file for macro BOOST_NO_SFINAE
+// This file should not compile, if it does then
+// BOOST_NO_SFINAE should not be defined.
+// See file boost_no_sfinae.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_SFINAE
+#include "boost_no_sfinae.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_sfinae::test();
+}
+
diff --git a/test/no_sfinae_pass.cpp b/test/no_sfinae_pass.cpp
new file mode 100644
index 0000000..8ebfc38
--- /dev/null
+++ b/test/no_sfinae_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:02 2004
+// 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.
+
+// Test file for macro BOOST_NO_SFINAE
+// This file should compile, if it does not then
+// BOOST_NO_SFINAE should be defined.
+// See file boost_no_sfinae.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_SFINAE
+#include "boost_no_sfinae.ipp"
+#else
+namespace boost_no_sfinae = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_sfinae::test();
+}
+
diff --git a/test/no_sstream_fail.cpp b/test/no_sstream_fail.cpp
new file mode 100644
index 0000000..3cb5d9a
--- /dev/null
+++ b/test/no_sstream_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:02 2004
+// 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.
+
+// Test file for macro BOOST_NO_STRINGSTREAM
+// This file should not compile, if it does then
+// BOOST_NO_STRINGSTREAM should not be defined.
+// See file boost_no_sstream.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_STRINGSTREAM
+#include "boost_no_sstream.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_stringstream::test();
+}
+
diff --git a/test/no_sstream_pass.cpp b/test/no_sstream_pass.cpp
new file mode 100644
index 0000000..de325a3
--- /dev/null
+++ b/test/no_sstream_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:02 2004
+// 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.
+
+// Test file for macro BOOST_NO_STRINGSTREAM
+// This file should compile, if it does not then
+// BOOST_NO_STRINGSTREAM should be defined.
+// See file boost_no_sstream.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_STRINGSTREAM
+#include "boost_no_sstream.ipp"
+#else
+namespace boost_no_stringstream = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_stringstream::test();
+}
+
diff --git a/test/no_static_assert_fail.cpp b/test/no_static_assert_fail.cpp
new file mode 100644
index 0000000..f958c68
--- /dev/null
+++ b/test/no_static_assert_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Thu May 29 07:24:54 2008
+// 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_STATIC_ASSERT
+// This file should not compile, if it does then
+// BOOST_NO_CXX11_STATIC_ASSERT should not be defined.
+// See file boost_no_static_assert.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_STATIC_ASSERT
+#include "boost_no_static_assert.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_static_assert::test();
+}
+
diff --git a/test/no_static_assert_pass.cpp b/test/no_static_assert_pass.cpp
new file mode 100644
index 0000000..8529887
--- /dev/null
+++ b/test/no_static_assert_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Thu May 29 07:24:54 2008
+// 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_STATIC_ASSERT
+// This file should compile, if it does not then
+// BOOST_NO_CXX11_STATIC_ASSERT should be defined.
+// See file boost_no_static_assert.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_STATIC_ASSERT
+#include "boost_no_static_assert.ipp"
+#else
+namespace boost_no_cxx11_static_assert = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_static_assert::test();
+}
+
diff --git a/test/no_std_allocator_fail.cpp b/test/no_std_allocator_fail.cpp
new file mode 100644
index 0000000..e5213dc
--- /dev/null
+++ b/test/no_std_allocator_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:02 2004
+// 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.
+
+// Test file for macro BOOST_NO_STD_ALLOCATOR
+// This file should not compile, if it does then
+// BOOST_NO_STD_ALLOCATOR should not be defined.
+// See file boost_no_std_allocator.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_STD_ALLOCATOR
+#include "boost_no_std_allocator.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_std_allocator::test();
+}
+
diff --git a/test/no_std_allocator_pass.cpp b/test/no_std_allocator_pass.cpp
new file mode 100644
index 0000000..63ab611
--- /dev/null
+++ b/test/no_std_allocator_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:02 2004
+// 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.
+
+// Test file for macro BOOST_NO_STD_ALLOCATOR
+// This file should compile, if it does not then
+// BOOST_NO_STD_ALLOCATOR should be defined.
+// See file boost_no_std_allocator.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_STD_ALLOCATOR
+#include "boost_no_std_allocator.ipp"
+#else
+namespace boost_no_std_allocator = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_std_allocator::test();
+}
+
diff --git a/test/no_std_distance_fail.cpp b/test/no_std_distance_fail.cpp
new file mode 100644
index 0000000..a8c21a4
--- /dev/null
+++ b/test/no_std_distance_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:02 2004
+// 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.
+
+// Test file for macro BOOST_NO_STD_DISTANCE
+// This file should not compile, if it does then
+// BOOST_NO_STD_DISTANCE should not be defined.
+// See file boost_no_std_distance.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_STD_DISTANCE
+#include "boost_no_std_distance.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_std_distance::test();
+}
+
diff --git a/test/no_std_distance_pass.cpp b/test/no_std_distance_pass.cpp
new file mode 100644
index 0000000..870d86d
--- /dev/null
+++ b/test/no_std_distance_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:02 2004
+// 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.
+
+// Test file for macro BOOST_NO_STD_DISTANCE
+// This file should compile, if it does not then
+// BOOST_NO_STD_DISTANCE should be defined.
+// See file boost_no_std_distance.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_STD_DISTANCE
+#include "boost_no_std_distance.ipp"
+#else
+namespace boost_no_std_distance = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_std_distance::test();
+}
+
diff --git a/test/no_std_iter_traits_fail.cpp b/test/no_std_iter_traits_fail.cpp
new file mode 100644
index 0000000..98ba389
--- /dev/null
+++ b/test/no_std_iter_traits_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:02 2004
+// 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.
+
+// Test file for macro BOOST_NO_STD_ITERATOR_TRAITS
+// This file should not compile, if it does then
+// BOOST_NO_STD_ITERATOR_TRAITS should not be defined.
+// See file boost_no_std_iter_traits.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_STD_ITERATOR_TRAITS
+#include "boost_no_std_iter_traits.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_std_iterator_traits::test();
+}
+
diff --git a/test/no_std_iter_traits_pass.cpp b/test/no_std_iter_traits_pass.cpp
new file mode 100644
index 0000000..30b7399
--- /dev/null
+++ b/test/no_std_iter_traits_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:02 2004
+// 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.
+
+// Test file for macro BOOST_NO_STD_ITERATOR_TRAITS
+// This file should compile, if it does not then
+// BOOST_NO_STD_ITERATOR_TRAITS should be defined.
+// See file boost_no_std_iter_traits.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_STD_ITERATOR_TRAITS
+#include "boost_no_std_iter_traits.ipp"
+#else
+namespace boost_no_std_iterator_traits = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_std_iterator_traits::test();
+}
+
diff --git a/test/no_std_iterator_fail.cpp b/test/no_std_iterator_fail.cpp
new file mode 100644
index 0000000..7da3216dcb
--- /dev/null
+++ b/test/no_std_iterator_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:02 2004
+// 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.
+
+// Test file for macro BOOST_NO_STD_ITERATOR
+// This file should not compile, if it does then
+// BOOST_NO_STD_ITERATOR should not be defined.
+// See file boost_no_std_iterator.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_STD_ITERATOR
+#include "boost_no_std_iterator.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_std_iterator::test();
+}
+
diff --git a/test/no_std_iterator_pass.cpp b/test/no_std_iterator_pass.cpp
new file mode 100644
index 0000000..7dbd9ce
--- /dev/null
+++ b/test/no_std_iterator_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:02 2004
+// 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.
+
+// Test file for macro BOOST_NO_STD_ITERATOR
+// This file should compile, if it does not then
+// BOOST_NO_STD_ITERATOR should be defined.
+// See file boost_no_std_iterator.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_STD_ITERATOR
+#include "boost_no_std_iterator.ipp"
+#else
+namespace boost_no_std_iterator = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_std_iterator::test();
+}
+
diff --git a/test/no_std_locale_fail.cpp b/test/no_std_locale_fail.cpp
new file mode 100644
index 0000000..46d2a46
--- /dev/null
+++ b/test/no_std_locale_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:02 2004
+// 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.
+
+// Test file for macro BOOST_NO_STD_LOCALE
+// This file should not compile, if it does then
+// BOOST_NO_STD_LOCALE should not be defined.
+// See file boost_no_std_locale.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_STD_LOCALE
+#include "boost_no_std_locale.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_std_locale::test();
+}
+
diff --git a/test/no_std_locale_pass.cpp b/test/no_std_locale_pass.cpp
new file mode 100644
index 0000000..95a1648
--- /dev/null
+++ b/test/no_std_locale_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:02 2004
+// 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.
+
+// Test file for macro BOOST_NO_STD_LOCALE
+// This file should compile, if it does not then
+// BOOST_NO_STD_LOCALE should be defined.
+// See file boost_no_std_locale.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_STD_LOCALE
+#include "boost_no_std_locale.ipp"
+#else
+namespace boost_no_std_locale = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_std_locale::test();
+}
+
diff --git a/test/no_std_messages_fail.cpp b/test/no_std_messages_fail.cpp
new file mode 100644
index 0000000..f5da5a2
--- /dev/null
+++ b/test/no_std_messages_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:02 2004
+// 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.
+
+// Test file for macro BOOST_NO_STD_MESSAGES
+// This file should not compile, if it does then
+// BOOST_NO_STD_MESSAGES should not be defined.
+// See file boost_no_std_messages.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_STD_MESSAGES
+#include "boost_no_std_messages.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_std_messages::test();
+}
+
diff --git a/test/no_std_messages_pass.cpp b/test/no_std_messages_pass.cpp
new file mode 100644
index 0000000..c3d1786
--- /dev/null
+++ b/test/no_std_messages_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:02 2004
+// 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.
+
+// Test file for macro BOOST_NO_STD_MESSAGES
+// This file should compile, if it does not then
+// BOOST_NO_STD_MESSAGES should be defined.
+// See file boost_no_std_messages.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_STD_MESSAGES
+#include "boost_no_std_messages.ipp"
+#else
+namespace boost_no_std_messages = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_std_messages::test();
+}
+
diff --git a/test/no_std_min_max_fail.cpp b/test/no_std_min_max_fail.cpp
new file mode 100644
index 0000000..438d55a
--- /dev/null
+++ b/test/no_std_min_max_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:02 2004
+// 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.
+
+// Test file for macro BOOST_NO_STD_MIN_MAX
+// This file should not compile, if it does then
+// BOOST_NO_STD_MIN_MAX should not be defined.
+// See file boost_no_std_min_max.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_STD_MIN_MAX
+#include "boost_no_std_min_max.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_std_min_max::test();
+}
+
diff --git a/test/no_std_min_max_pass.cpp b/test/no_std_min_max_pass.cpp
new file mode 100644
index 0000000..f5349aa
--- /dev/null
+++ b/test/no_std_min_max_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:02 2004
+// 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.
+
+// Test file for macro BOOST_NO_STD_MIN_MAX
+// This file should compile, if it does not then
+// BOOST_NO_STD_MIN_MAX should be defined.
+// See file boost_no_std_min_max.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_STD_MIN_MAX
+#include "boost_no_std_min_max.ipp"
+#else
+namespace boost_no_std_min_max = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_std_min_max::test();
+}
+
diff --git a/test/no_std_oi_assign_fail.cpp b/test/no_std_oi_assign_fail.cpp
new file mode 100644
index 0000000..353e3a1
--- /dev/null
+++ b/test/no_std_oi_assign_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:02 2004
+// 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.
+
+// Test file for macro BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN
+// This file should not compile, if it does then
+// BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN should not be defined.
+// See file boost_no_std_oi_assign.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_STD_OUTPUT_ITERATOR_ASSIGN
+#include "boost_no_std_oi_assign.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_std_output_iterator_assign::test();
+}
+
diff --git a/test/no_std_oi_assign_pass.cpp b/test/no_std_oi_assign_pass.cpp
new file mode 100644
index 0000000..7f16148
--- /dev/null
+++ b/test/no_std_oi_assign_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:02 2004
+// 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.
+
+// Test file for macro BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN
+// This file should compile, if it does not then
+// BOOST_NO_STD_OUTPUT_ITERATOR_ASSIGN should be defined.
+// See file boost_no_std_oi_assign.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_STD_OUTPUT_ITERATOR_ASSIGN
+#include "boost_no_std_oi_assign.ipp"
+#else
+namespace boost_no_std_output_iterator_assign = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_std_output_iterator_assign::test();
+}
+
diff --git a/test/no_std_typeinfo_fail.cpp b/test/no_std_typeinfo_fail.cpp
new file mode 100644
index 0000000..7bb145f
--- /dev/null
+++ b/test/no_std_typeinfo_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Sat Aug 25 12:32:22 2007
+// 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.
+
+// Test file for macro BOOST_NO_STD_TYPEINFO
+// This file should not compile, if it does then
+// BOOST_NO_STD_TYPEINFO should not be defined.
+// See file boost_no_std_typeinfo.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_STD_TYPEINFO
+#include "boost_no_std_typeinfo.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_std_typeinfo::test();
+}
+
diff --git a/test/no_std_typeinfo_pass.cpp b/test/no_std_typeinfo_pass.cpp
new file mode 100644
index 0000000..0bfd031
--- /dev/null
+++ b/test/no_std_typeinfo_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Sat Aug 25 12:32:22 2007
+// 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.
+
+// Test file for macro BOOST_NO_STD_TYPEINFO
+// This file should compile, if it does not then
+// BOOST_NO_STD_TYPEINFO should be defined.
+// See file boost_no_std_typeinfo.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_STD_TYPEINFO
+#include "boost_no_std_typeinfo.ipp"
+#else
+namespace boost_no_std_typeinfo = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_std_typeinfo::test();
+}
+
diff --git a/test/no_std_use_facet_fail.cpp b/test/no_std_use_facet_fail.cpp
new file mode 100644
index 0000000..e1c06b6
--- /dev/null
+++ b/test/no_std_use_facet_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:02 2004
+// 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.
+
+// Test file for macro BOOST_NO_STD_USE_FACET
+// This file should not compile, if it does then
+// BOOST_NO_STD_USE_FACET should not be defined.
+// See file boost_no_std_use_facet.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_STD_USE_FACET
+#include "boost_no_std_use_facet.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_std_use_facet::test();
+}
+
diff --git a/test/no_std_use_facet_pass.cpp b/test/no_std_use_facet_pass.cpp
new file mode 100644
index 0000000..111f382
--- /dev/null
+++ b/test/no_std_use_facet_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:02 2004
+// 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.
+
+// Test file for macro BOOST_NO_STD_USE_FACET
+// This file should compile, if it does not then
+// BOOST_NO_STD_USE_FACET should be defined.
+// See file boost_no_std_use_facet.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_STD_USE_FACET
+#include "boost_no_std_use_facet.ipp"
+#else
+namespace boost_no_std_use_facet = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_std_use_facet::test();
+}
+
diff --git a/test/no_std_wstreambuf_fail.cpp b/test/no_std_wstreambuf_fail.cpp
new file mode 100644
index 0000000..40e6ecb
--- /dev/null
+++ b/test/no_std_wstreambuf_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:02 2004
+// 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.
+
+// Test file for macro BOOST_NO_STD_WSTREAMBUF
+// This file should not compile, if it does then
+// BOOST_NO_STD_WSTREAMBUF should not be defined.
+// See file boost_no_std_wstreambuf.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_STD_WSTREAMBUF
+#include "boost_no_std_wstreambuf.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_std_wstreambuf::test();
+}
+
diff --git a/test/no_std_wstreambuf_pass.cpp b/test/no_std_wstreambuf_pass.cpp
new file mode 100644
index 0000000..f5aa6c6
--- /dev/null
+++ b/test/no_std_wstreambuf_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:02 2004
+// 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.
+
+// Test file for macro BOOST_NO_STD_WSTREAMBUF
+// This file should compile, if it does not then
+// BOOST_NO_STD_WSTREAMBUF should be defined.
+// See file boost_no_std_wstreambuf.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_STD_WSTREAMBUF
+#include "boost_no_std_wstreambuf.ipp"
+#else
+namespace boost_no_std_wstreambuf = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_std_wstreambuf::test();
+}
+
diff --git a/test/no_std_wstring_fail.cpp b/test/no_std_wstring_fail.cpp
new file mode 100644
index 0000000..39a5fa8
--- /dev/null
+++ b/test/no_std_wstring_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:02 2004
+// 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.
+
+// Test file for macro BOOST_NO_STD_WSTRING
+// This file should not compile, if it does then
+// BOOST_NO_STD_WSTRING should not be defined.
+// See file boost_no_std_wstring.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_STD_WSTRING
+#include "boost_no_std_wstring.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_std_wstring::test();
+}
+
diff --git a/test/no_std_wstring_pass.cpp b/test/no_std_wstring_pass.cpp
new file mode 100644
index 0000000..0fb8e03
--- /dev/null
+++ b/test/no_std_wstring_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:02 2004
+// 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.
+
+// Test file for macro BOOST_NO_STD_WSTRING
+// This file should compile, if it does not then
+// BOOST_NO_STD_WSTRING should be defined.
+// See file boost_no_std_wstring.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_STD_WSTRING
+#include "boost_no_std_wstring.ipp"
+#else
+namespace boost_no_std_wstring = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_std_wstring::test();
+}
+
diff --git a/test/no_stdc_namespace_fail.cpp b/test/no_stdc_namespace_fail.cpp
new file mode 100644
index 0000000..745a2b8
--- /dev/null
+++ b/test/no_stdc_namespace_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:02 2004
+// 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.
+
+// Test file for macro BOOST_NO_STDC_NAMESPACE
+// This file should not compile, if it does then
+// BOOST_NO_STDC_NAMESPACE should not be defined.
+// See file boost_no_stdc_namespace.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_STDC_NAMESPACE
+#include "boost_no_stdc_namespace.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_stdc_namespace::test();
+}
+
diff --git a/test/no_stdc_namespace_pass.cpp b/test/no_stdc_namespace_pass.cpp
new file mode 100644
index 0000000..8b8eeaf
--- /dev/null
+++ b/test/no_stdc_namespace_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:02 2004
+// 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.
+
+// Test file for macro BOOST_NO_STDC_NAMESPACE
+// This file should compile, if it does not then
+// BOOST_NO_STDC_NAMESPACE should be defined.
+// See file boost_no_stdc_namespace.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_STDC_NAMESPACE
+#include "boost_no_stdc_namespace.ipp"
+#else
+namespace boost_no_stdc_namespace = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_stdc_namespace::test();
+}
+
diff --git a/test/no_swprintf_fail.cpp b/test/no_swprintf_fail.cpp
new file mode 100644
index 0000000..3df0b13
--- /dev/null
+++ b/test/no_swprintf_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:02 2004
+// 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.
+
+// Test file for macro BOOST_NO_SWPRINTF
+// This file should not compile, if it does then
+// BOOST_NO_SWPRINTF should not be defined.
+// See file boost_no_swprintf.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_SWPRINTF
+#include "boost_no_swprintf.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_swprintf::test();
+}
+
diff --git a/test/no_swprintf_pass.cpp b/test/no_swprintf_pass.cpp
new file mode 100644
index 0000000..3d4ef70
--- /dev/null
+++ b/test/no_swprintf_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:02 2004
+// 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.
+
+// Test file for macro BOOST_NO_SWPRINTF
+// This file should compile, if it does not then
+// BOOST_NO_SWPRINTF should be defined.
+// See file boost_no_swprintf.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_SWPRINTF
+#include "boost_no_swprintf.ipp"
+#else
+namespace boost_no_swprintf = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_swprintf::test();
+}
+
diff --git a/test/no_tem_local_classes_fail.cpp b/test/no_tem_local_classes_fail.cpp
new file mode 100644
index 0000000..f6c2a31
--- /dev/null
+++ b/test/no_tem_local_classes_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Wed Mar 21 13:05:19 2012
+// 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_LOCAL_CLASS_TEMPLATE_PARAMETERS
+// This file should not compile, if it does then
+// BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS should not be defined.
+// See file boost_no_tem_local_classes.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_LOCAL_CLASS_TEMPLATE_PARAMETERS
+#include "boost_no_tem_local_classes.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_local_class_template_parameters::test();
+}
+
diff --git a/test/no_tem_local_classes_pass.cpp b/test/no_tem_local_classes_pass.cpp
new file mode 100644
index 0000000..036819c
--- /dev/null
+++ b/test/no_tem_local_classes_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Wed Mar 21 13:05:19 2012
+// 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_LOCAL_CLASS_TEMPLATE_PARAMETERS
+// This file should compile, if it does not then
+// BOOST_NO_CXX11_LOCAL_CLASS_TEMPLATE_PARAMETERS should be defined.
+// See file boost_no_tem_local_classes.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_LOCAL_CLASS_TEMPLATE_PARAMETERS
+#include "boost_no_tem_local_classes.ipp"
+#else
+namespace boost_no_cxx11_local_class_template_parameters = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_local_class_template_parameters::test();
+}
+
diff --git a/test/no_template_aliases_fail.cpp b/test/no_template_aliases_fail.cpp
new file mode 100644
index 0000000..fd4af49
--- /dev/null
+++ b/test/no_template_aliases_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Thu May 14 16:01:36 2009
+// 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_TEMPLATE_ALIASES
+// This file should not compile, if it does then
+// BOOST_NO_CXX11_TEMPLATE_ALIASES should not be defined.
+// See file boost_no_template_aliases.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_TEMPLATE_ALIASES
+#include "boost_no_template_aliases.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_template_aliases::test();
+}
+
diff --git a/test/no_template_aliases_pass.cpp b/test/no_template_aliases_pass.cpp
new file mode 100644
index 0000000..ed66a35
--- /dev/null
+++ b/test/no_template_aliases_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Thu May 14 16:01:36 2009
+// 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_TEMPLATE_ALIASES
+// This file should compile, if it does not then
+// BOOST_NO_CXX11_TEMPLATE_ALIASES should be defined.
+// See file boost_no_template_aliases.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_TEMPLATE_ALIASES
+#include "boost_no_template_aliases.ipp"
+#else
+namespace boost_no_cxx11_template_aliases = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_template_aliases::test();
+}
+
diff --git a/test/no_template_streams_fail.cpp b/test/no_template_streams_fail.cpp
new file mode 100644
index 0000000..16dfd5b
--- /dev/null
+++ b/test/no_template_streams_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Mon Apr 21 10:10:52 2008
+// by libs/config/tools/generate.cpp
+// Copyright John Maddock 2002-4.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id: generate.cpp 44422 2008-04-14 18:06:59Z johnmaddock $
+//
+
+
+// Test file for macro BOOST_NO_TEMPLATED_IOSTREAMS
+// This file should not compile, if it does then
+// BOOST_NO_TEMPLATED_IOSTREAMS should not be defined.
+// See file boost_no_template_streams.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_TEMPLATED_IOSTREAMS
+#include "boost_no_template_streams.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_templated_iostreams::test();
+}
+
diff --git a/test/no_template_streams_pass.cpp b/test/no_template_streams_pass.cpp
new file mode 100644
index 0000000..9ea7909
--- /dev/null
+++ b/test/no_template_streams_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Mon Apr 21 10:10:52 2008
+// by libs/config/tools/generate.cpp
+// Copyright John Maddock 2002-4.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id: generate.cpp 44422 2008-04-14 18:06:59Z johnmaddock $
+//
+
+
+// Test file for macro BOOST_NO_TEMPLATED_IOSTREAMS
+// This file should compile, if it does not then
+// BOOST_NO_TEMPLATED_IOSTREAMS should be defined.
+// See file boost_no_template_streams.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_TEMPLATED_IOSTREAMS
+#include "boost_no_template_streams.ipp"
+#else
+namespace boost_no_templated_iostreams = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_templated_iostreams::test();
+}
+
diff --git a/test/no_template_template_fail.cpp b/test/no_template_template_fail.cpp
new file mode 100644
index 0000000..44f8a2b
--- /dev/null
+++ b/test/no_template_template_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:02 2004
+// 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.
+
+// Test file for macro BOOST_NO_TEMPLATE_TEMPLATES
+// This file should not compile, if it does then
+// BOOST_NO_TEMPLATE_TEMPLATES should not be defined.
+// See file boost_no_template_template.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_TEMPLATE_TEMPLATES
+#include "boost_no_template_template.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_template_templates::test();
+}
+
diff --git a/test/no_template_template_pass.cpp b/test/no_template_template_pass.cpp
new file mode 100644
index 0000000..e70c33e
--- /dev/null
+++ b/test/no_template_template_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:02 2004
+// 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.
+
+// Test file for macro BOOST_NO_TEMPLATE_TEMPLATES
+// This file should compile, if it does not then
+// BOOST_NO_TEMPLATE_TEMPLATES should be defined.
+// See file boost_no_template_template.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_TEMPLATE_TEMPLATES
+#include "boost_no_template_template.ipp"
+#else
+namespace boost_no_template_templates = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_template_templates::test();
+}
+
diff --git a/test/no_two_phase_lookup_fail.cpp b/test/no_two_phase_lookup_fail.cpp
new file mode 100644
index 0000000..6be6072
--- /dev/null
+++ b/test/no_two_phase_lookup_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Mon Jan 01 12:05:16 2007
+// 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.
+
+// Test file for macro BOOST_NO_TWO_PHASE_NAME_LOOKUP
+// This file should not compile, if it does then
+// BOOST_NO_TWO_PHASE_NAME_LOOKUP should not be defined.
+// See file boost_no_two_phase_lookup.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_TWO_PHASE_NAME_LOOKUP
+#include "boost_no_two_phase_lookup.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_two_phase_name_lookup::test();
+}
+
diff --git a/test/no_two_phase_lookup_pass.cpp b/test/no_two_phase_lookup_pass.cpp
new file mode 100644
index 0000000..5449587
--- /dev/null
+++ b/test/no_two_phase_lookup_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Mon Jan 01 12:05:16 2007
+// 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.
+
+// Test file for macro BOOST_NO_TWO_PHASE_NAME_LOOKUP
+// This file should compile, if it does not then
+// BOOST_NO_TWO_PHASE_NAME_LOOKUP should be defined.
+// See file boost_no_two_phase_lookup.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_TWO_PHASE_NAME_LOOKUP
+#include "boost_no_two_phase_lookup.ipp"
+#else
+namespace boost_no_two_phase_name_lookup = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_two_phase_name_lookup::test();
+}
+
diff --git a/test/no_typeid_fail.cpp b/test/no_typeid_fail.cpp
new file mode 100644
index 0000000..7c3e4b2
--- /dev/null
+++ b/test/no_typeid_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Sat Aug 25 12:32:22 2007
+// 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.
+
+// Test file for macro BOOST_NO_TYPEID
+// This file should not compile, if it does then
+// BOOST_NO_TYPEID should not be defined.
+// See file boost_no_typeid.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_TYPEID
+#include "boost_no_typeid.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_typeid::test();
+}
+
diff --git a/test/no_typeid_pass.cpp b/test/no_typeid_pass.cpp
new file mode 100644
index 0000000..80582ef
--- /dev/null
+++ b/test/no_typeid_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Sat Aug 25 12:32:22 2007
+// 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.
+
+// Test file for macro BOOST_NO_TYPEID
+// This file should compile, if it does not then
+// BOOST_NO_TYPEID should be defined.
+// See file boost_no_typeid.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_TYPEID
+#include "boost_no_typeid.ipp"
+#else
+namespace boost_no_typeid = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_typeid::test();
+}
+
diff --git a/test/no_typename_with_ctor_fail.cpp b/test/no_typename_with_ctor_fail.cpp
new file mode 100644
index 0000000..74ee7b0
--- /dev/null
+++ b/test/no_typename_with_ctor_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Thu Sep 18 23:32:18 2008
+// 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_TYPENAME_WITH_CTOR
+// This file should not compile, if it does then
+// BOOST_NO_TYPENAME_WITH_CTOR should not be defined.
+// See file boost_no_typename_with_ctor.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_TYPENAME_WITH_CTOR
+#include "boost_no_typename_with_ctor.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_typename_with_ctor::test();
+}
+
diff --git a/test/no_typename_with_ctor_pass.cpp b/test/no_typename_with_ctor_pass.cpp
new file mode 100644
index 0000000..4a2d9bb
--- /dev/null
+++ b/test/no_typename_with_ctor_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Thu Sep 18 23:32:18 2008
+// 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_TYPENAME_WITH_CTOR
+// This file should compile, if it does not then
+// BOOST_NO_TYPENAME_WITH_CTOR should be defined.
+// See file boost_no_typename_with_ctor.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_TYPENAME_WITH_CTOR
+#include "boost_no_typename_with_ctor.ipp"
+#else
+namespace boost_no_typename_with_ctor = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_typename_with_ctor::test();
+}
+
diff --git a/test/no_unicode_literals_fail.cpp b/test/no_unicode_literals_fail.cpp
new file mode 100644
index 0000000..381f562
--- /dev/null
+++ b/test/no_unicode_literals_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Thu May 29 09:24:04 2008
+// 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_UNICODE_LITERALS
+// This file should not compile, if it does then
+// BOOST_NO_CXX11_UNICODE_LITERALS should not be defined.
+// See file boost_no_unicode_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_CXX11_UNICODE_LITERALS
+#include "boost_no_unicode_literals.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_unicode_literals::test();
+}
+
diff --git a/test/no_unicode_literals_pass.cpp b/test/no_unicode_literals_pass.cpp
new file mode 100644
index 0000000..3fd4547
--- /dev/null
+++ b/test/no_unicode_literals_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Thu May 29 09:24:04 2008
+// 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_UNICODE_LITERALS
+// This file should compile, if it does not then
+// BOOST_NO_CXX11_UNICODE_LITERALS should be defined.
+// See file boost_no_unicode_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_CXX11_UNICODE_LITERALS
+#include "boost_no_unicode_literals.ipp"
+#else
+namespace boost_no_cxx11_unicode_literals = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_unicode_literals::test();
+}
+
diff --git a/test/no_unified_init_fail.cpp b/test/no_unified_init_fail.cpp
new file mode 100644
index 0000000..5535fe7
--- /dev/null
+++ b/test/no_unified_init_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Mon May 09 12:11:17 2011
+// by libs/config/tools/generate.cpp
+// Copyright John Maddock 2002-4.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id: generate.cpp 70001 2011-03-15 13:17:46Z johnmaddock $
+//
+
+
+// Test file for macro BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
+// This file should not compile, if it does then
+// BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX should not be defined.
+// See file boost_no_unified_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_CXX11_UNIFIED_INITIALIZATION_SYNTAX
+#include "boost_no_unified_init.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_unified_initialization_syntax::test();
+}
+
diff --git a/test/no_unified_init_pass.cpp b/test/no_unified_init_pass.cpp
new file mode 100644
index 0000000..f4cf571
--- /dev/null
+++ b/test/no_unified_init_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Mon May 09 12:11:17 2011
+// by libs/config/tools/generate.cpp
+// Copyright John Maddock 2002-4.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id: generate.cpp 70001 2011-03-15 13:17:46Z johnmaddock $
+//
+
+
+// Test file for macro BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
+// This file should compile, if it does not then
+// BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX should be defined.
+// See file boost_no_unified_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_CXX11_UNIFIED_INITIALIZATION_SYNTAX
+#include "boost_no_unified_init.ipp"
+#else
+namespace boost_no_cxx11_unified_initialization_syntax = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_unified_initialization_syntax::test();
+}
+
diff --git a/test/no_using_breaks_adl_fail.cpp b/test/no_using_breaks_adl_fail.cpp
new file mode 100644
index 0000000..39a9b84
--- /dev/null
+++ b/test/no_using_breaks_adl_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:02 2004
+// 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.
+
+// Test file for macro BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
+// This file should not compile, if it does then
+// BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL should not be defined.
+// See file boost_no_using_breaks_adl.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_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
+#include "boost_no_using_breaks_adl.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_function_scope_using_declaration_breaks_adl::test();
+}
+
diff --git a/test/no_using_breaks_adl_pass.cpp b/test/no_using_breaks_adl_pass.cpp
new file mode 100644
index 0000000..5f4cb49
--- /dev/null
+++ b/test/no_using_breaks_adl_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:02 2004
+// 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.
+
+// Test file for macro BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
+// This file should compile, if it does not then
+// BOOST_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL should be defined.
+// See file boost_no_using_breaks_adl.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_FUNCTION_SCOPE_USING_DECLARATION_BREAKS_ADL
+#include "boost_no_using_breaks_adl.ipp"
+#else
+namespace boost_function_scope_using_declaration_breaks_adl = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_function_scope_using_declaration_breaks_adl::test();
+}
+
diff --git a/test/no_using_decl_overld_fail.cpp b/test/no_using_decl_overld_fail.cpp
new file mode 100644
index 0000000..35e1269
--- /dev/null
+++ b/test/no_using_decl_overld_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:02 2004
+// 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.
+
+// Test file for macro BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE
+// This file should not compile, if it does then
+// BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE should not be defined.
+// See file boost_no_using_decl_overld.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_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE
+#include "boost_no_using_decl_overld.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_using_declaration_overloads_from_typename_base::test();
+}
+
diff --git a/test/no_using_decl_overld_pass.cpp b/test/no_using_decl_overld_pass.cpp
new file mode 100644
index 0000000..c5290fc
--- /dev/null
+++ b/test/no_using_decl_overld_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:02 2004
+// 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.
+
+// Test file for macro BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE
+// This file should compile, if it does not then
+// BOOST_NO_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE should be defined.
+// See file boost_no_using_decl_overld.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_USING_DECLARATION_OVERLOADS_FROM_TYPENAME_BASE
+#include "boost_no_using_decl_overld.ipp"
+#else
+namespace boost_no_using_declaration_overloads_from_typename_base = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_using_declaration_overloads_from_typename_base::test();
+}
+
diff --git a/test/no_using_template_fail.cpp b/test/no_using_template_fail.cpp
new file mode 100644
index 0000000..febbbcd
--- /dev/null
+++ b/test/no_using_template_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:02 2004
+// 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.
+
+// Test file for macro BOOST_NO_USING_TEMPLATE
+// This file should not compile, if it does then
+// BOOST_NO_USING_TEMPLATE should not be defined.
+// See file boost_no_using_template.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_USING_TEMPLATE
+#include "boost_no_using_template.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_using_template::test();
+}
+
diff --git a/test/no_using_template_pass.cpp b/test/no_using_template_pass.cpp
new file mode 100644
index 0000000..b48a31e
--- /dev/null
+++ b/test/no_using_template_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:02 2004
+// 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.
+
+// Test file for macro BOOST_NO_USING_TEMPLATE
+// This file should compile, if it does not then
+// BOOST_NO_USING_TEMPLATE should be defined.
+// See file boost_no_using_template.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_USING_TEMPLATE
+#include "boost_no_using_template.ipp"
+#else
+namespace boost_no_using_template = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_using_template::test();
+}
+
diff --git a/test/no_variadic_macros_fail.cpp b/test/no_variadic_macros_fail.cpp
new file mode 100644
index 0000000..d76c4f3
--- /dev/null
+++ b/test/no_variadic_macros_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Tue Aug 17 09:59:01 2010
+// by libs/config/tools/generate.cpp
+// Copyright John Maddock 2002-4.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id: generate.cpp 49281 2008-10-11 15:40:44Z johnmaddock $
+//
+
+
+// Test file for macro BOOST_NO_CXX11_VARIADIC_MACROS
+// This file should not compile, if it does then
+// BOOST_NO_CXX11_VARIADIC_MACROS should not be defined.
+// See file boost_no_variadic_macros.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_VARIADIC_MACROS
+#include "boost_no_variadic_macros.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_variadic_macros::test();
+}
+
diff --git a/test/no_variadic_macros_pass.cpp b/test/no_variadic_macros_pass.cpp
new file mode 100644
index 0000000..291b6ea
--- /dev/null
+++ b/test/no_variadic_macros_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Tue Aug 17 09:59:01 2010
+// by libs/config/tools/generate.cpp
+// Copyright John Maddock 2002-4.
+// Use, modification and distribution are subject to the
+// Boost Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+
+// See http://www.boost.org/libs/config for the most recent version.//
+// Revision $Id: generate.cpp 49281 2008-10-11 15:40:44Z johnmaddock $
+//
+
+
+// Test file for macro BOOST_NO_CXX11_VARIADIC_MACROS
+// This file should compile, if it does not then
+// BOOST_NO_CXX11_VARIADIC_MACROS should be defined.
+// See file boost_no_variadic_macros.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_VARIADIC_MACROS
+#include "boost_no_variadic_macros.ipp"
+#else
+namespace boost_no_cxx11_variadic_macros = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_variadic_macros::test();
+}
+
diff --git a/test/no_variadic_templates_fail.cpp b/test/no_variadic_templates_fail.cpp
new file mode 100644
index 0000000..05fc2c7
--- /dev/null
+++ b/test/no_variadic_templates_fail.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Thu May 29 07:24:54 2008
+// 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_VARIADIC_TEMPLATES
+// This file should not compile, if it does then
+// BOOST_NO_CXX11_VARIADIC_TEMPLATES should not be defined.
+// See file boost_no_variadic_templates.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_VARIADIC_TEMPLATES
+#include "boost_no_variadic_templates.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_variadic_templates::test();
+}
+
diff --git a/test/no_variadic_templates_pass.cpp b/test/no_variadic_templates_pass.cpp
new file mode 100644
index 0000000..2b95540
--- /dev/null
+++ b/test/no_variadic_templates_pass.cpp
@@ -0,0 +1,37 @@
+// This file was automatically generated on Thu May 29 07:24:54 2008
+// 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_VARIADIC_TEMPLATES
+// This file should compile, if it does not then
+// BOOST_NO_CXX11_VARIADIC_TEMPLATES should be defined.
+// See file boost_no_variadic_templates.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_VARIADIC_TEMPLATES
+#include "boost_no_variadic_templates.ipp"
+#else
+namespace boost_no_cxx11_variadic_templates = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_cxx11_variadic_templates::test();
+}
+
diff --git a/test/no_void_returns_fail.cpp b/test/no_void_returns_fail.cpp
new file mode 100644
index 0000000..ff08562
--- /dev/null
+++ b/test/no_void_returns_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:02 2004
+// 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.
+
+// Test file for macro BOOST_NO_VOID_RETURNS
+// This file should not compile, if it does then
+// BOOST_NO_VOID_RETURNS should not be defined.
+// See file boost_no_void_returns.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_VOID_RETURNS
+#include "boost_no_void_returns.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_void_returns::test();
+}
+
diff --git a/test/no_void_returns_pass.cpp b/test/no_void_returns_pass.cpp
new file mode 100644
index 0000000..73a0882
--- /dev/null
+++ b/test/no_void_returns_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:02 2004
+// 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.
+
+// Test file for macro BOOST_NO_VOID_RETURNS
+// This file should compile, if it does not then
+// BOOST_NO_VOID_RETURNS should be defined.
+// See file boost_no_void_returns.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_VOID_RETURNS
+#include "boost_no_void_returns.ipp"
+#else
+namespace boost_no_void_returns = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_void_returns::test();
+}
+
diff --git a/test/no_wchar_t_fail.cpp b/test/no_wchar_t_fail.cpp
new file mode 100644
index 0000000..c1b0712
--- /dev/null
+++ b/test/no_wchar_t_fail.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:02 2004
+// 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.
+
+// Test file for macro BOOST_NO_INTRINSIC_WCHAR_T
+// This file should not compile, if it does then
+// BOOST_NO_INTRINSIC_WCHAR_T should not be defined.
+// See file boost_no_wchar_t.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_INTRINSIC_WCHAR_T
+#include "boost_no_wchar_t.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_intrinsic_wchar_t::test();
+}
+
diff --git a/test/no_wchar_t_pass.cpp b/test/no_wchar_t_pass.cpp
new file mode 100644
index 0000000..b31c07f
--- /dev/null
+++ b/test/no_wchar_t_pass.cpp
@@ -0,0 +1,34 @@
+// This file was automatically generated on Fri Dec 03 18:04:02 2004
+// 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.
+
+// Test file for macro BOOST_NO_INTRINSIC_WCHAR_T
+// This file should compile, if it does not then
+// BOOST_NO_INTRINSIC_WCHAR_T should be defined.
+// See file boost_no_wchar_t.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_INTRINSIC_WCHAR_T
+#include "boost_no_wchar_t.ipp"
+#else
+namespace boost_no_intrinsic_wchar_t = empty_boost;
+#endif
+
+int main( int, char *[] )
+{
+ return boost_no_intrinsic_wchar_t::test();
+}
+
diff --git a/test/pragma_message_test.cpp b/test/pragma_message_test.cpp
new file mode 100644
index 0000000..9464897
--- /dev/null
+++ b/test/pragma_message_test.cpp
@@ -0,0 +1,18 @@
+// Copyright 2017 Peter Dimov.
+//
+// Distributed under the Boost Software License, Version 1.0.
+//
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+
+#include <boost/config/pragma_message.hpp>
+
+BOOST_PRAGMA_MESSAGE("first message")
+
+#define MSG2 "second message"
+BOOST_PRAGMA_MESSAGE(MSG2)
+
+#include <boost/config.hpp> // BOOST_STRINGIZE
+
+#define MSG3 third message
+BOOST_PRAGMA_MESSAGE(BOOST_STRINGIZE(MSG3))
diff --git a/test/test.hpp b/test/test.hpp
new file mode 100644
index 0000000..af75780
--- /dev/null
+++ b/test/test.hpp
@@ -0,0 +1,21 @@
+// (C) Copyright John Maddock 2001.
+// 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.
+
+#ifndef BOOST_CONFIG_TEST_HPP
+#define BOOST_CONFIG_TEST_HPP
+
+namespace empty_boost{
+
+int test()
+{
+ return 0;
+}
+
+}
+
+#endif
+
diff --git a/test/threads/test_thread_fail1.cpp b/test/threads/test_thread_fail1.cpp
new file mode 100644
index 0000000..5e0406b
--- /dev/null
+++ b/test/threads/test_thread_fail1.cpp
@@ -0,0 +1,10 @@
+// (C) Copyright John Maddock 2003.
+// 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)
+
+// disable thread support:
+#define BOOST_DISABLE_THREADS
+// this should now be a compiler error:
+#include <boost/config/requires_threads.hpp>
+// we should never get here...
diff --git a/test/threads/test_thread_fail2.cpp b/test/threads/test_thread_fail2.cpp
new file mode 100644
index 0000000..56ba4a0
--- /dev/null
+++ b/test/threads/test_thread_fail2.cpp
@@ -0,0 +1,13 @@
+// (C) Copyright John Maddock 2003.
+// 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>
+// disable thread support:
+#ifdef BOOST_HAS_THREADS
+# undef BOOST_HAS_THREADS
+#endif
+// this should now be a compiler error:
+#include <boost/config/requires_threads.hpp>
+// we should never get here...
diff --git a/tools/Jamfile.v2 b/tools/Jamfile.v2
new file mode 100644
index 0000000..de66b8d
--- /dev/null
+++ b/tools/Jamfile.v2
@@ -0,0 +1,15 @@
+# Copyright John Maddock 2005.
+# 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)
+
+run generate.cpp
+ ../../regex/build//boost_regex
+ ../../filesystem/build//boost_filesystem ../../system/build//boost_system
+ : ../../..
+;
+
+
+
+
+
diff --git a/tools/configure.in b/tools/configure.in
new file mode 100644
index 0000000..3e1425c
--- /dev/null
+++ b/tools/configure.in
@@ -0,0 +1,463 @@
+# copyright John Maddock 2003
+# 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)
+#
+# the following variables contain our macro definitions:
+#
+required_defs=""
+required_undefs=""
+
+dnl Process this file with autoconf to produce a configure script.
+dnl disable cache processing, it has no effect here:
+define([AC_CACHE_LOAD], )dnl
+define([AC_CACHE_SAVE], )dnl
+AC_INIT(./tools/configure.in)
+
+
+AC_ARG_ENABLE(test, --enable-test tests current settings rather than defining new ones)
+
+if test "foo"$enable_test = "foo"; then
+ enable_test="no"
+fi
+
+cat << EOF
+*** $0: boost configuration utility ***
+
+Please stand by while exploring compiler capabilities...
+Be patient - this could take some time...
+
+Note that this test script only gives an approximate
+configuration - you will need to test the results carefully
+using the boost regression test suite before using the results.
+EOF
+
+if test $enable_test = 'yes'; then
+
+cat << EOF
+
+This script reports only the difference between the detected
+configuration, and the existing boost configuration. Its
+primary aim is to quickly report how well boost is configured
+for one compiler.
+
+***
+
+EOF
+
+else
+
+cat << EOF
+
+***
+
+EOF
+fi
+
+AC_ARG_ENABLE(extension,[--enable-extension=<ext>],
+[
+case "$enableval" in
+ no) AC_MSG_RESULT(Info :.cpp used as extension for tests)
+ ac_ext=cpp
+ ;;
+ *) AC_MSG_RESULT(Argument : .$enableval used as extension)
+ ac_ext=$enableval
+esac
+],
+[AC_MSG_RESULT(Info : .cpp used as extension for tests)
+ ac_ext=cpp
+]
+)
+
+dnl figure out which version of sed to use, on some platforms
+dnl the version in the path is not Unix conforming (MacOS X ? )
+
+if test -f /bin/sed ; then
+ SED=/bin/sed
+else
+ if test -f /usr/bin/sed ; then
+ SED=/usr/bin/sed
+ else
+ SED=sed
+ fi
+fi
+
+dnl Set the boost main directory.
+AC_MSG_CHECKING(for boost main tree)
+boost_base=
+AC_ARG_WITH(boost,
+ AC_HELP_STRING([--with-boost=DIR],[path to the boost main tree]),
+ [
+ #echo "--with boost is set"
+ if test "x$withval" != "x"; then
+ if test "x$withval" != no; then
+ boost_base=`echo "$withval" | $SED 's,//*,/,g' | $SED 's,/$,,'`
+ #echo boost_base=$boost_base
+ if test -f "$boost_base/boost/config.hpp"; then
+ if test -f "$boost_base/libs/config/configure"; then :; else
+ boost_base=
+ #echo "$boost_base/libs/config/configure" not found
+ fi
+ else
+ #echo "$boost_base/boost/config.hpp" not found
+ boost_base=
+ fi
+ fi
+ fi
+ ]
+)
+if test "x$boost_base" = "x"; then
+ #echo '$0 = ' $0
+ boost_base=`expr "x$0" : 'x\(.*\)/@<:@/@:>@*' \| '.'`
+ boost_base="$boost_base/../.."
+ #echo boost_base=$boost_base
+ if test -f "$boost_base/boost/config.hpp"; then
+ if test -f "$boost_base/libs/config/configure"; then :; else
+ boost_base=
+ fi
+ else
+ boost_base=
+ fi
+fi
+if test "x$boost_base" != "x"; then
+ AC_MSG_RESULT([$boost_base])
+else
+ AC_MSG_RESULT([not found])
+ AC_MSG_ERROR([The boost main tree was not found.
+ Specify its location by the --with-boost option.])
+fi
+
+
+
+# Save that, as it is being redefined several times
+use_ac_ext=$ac_ext
+
+AC_PROG_CXX
+ac_ext=$use_ac_ext
+
+AC_LANG_CPLUSPLUS
+
+OLD_CXXFLAGS="$CXXFLAGS"
+
+
+if test $enable_test = 'yes'; then
+ CXXFLAGS="-I$boost_base -I$boost_base/libs/config/test $CXXFLAGS"
+else
+ CXXFLAGS="-I$boost_base -I$boost_base/libs/config/test $CXXFLAGS -DBOOST_NO_CONFIG"
+fi
+
+# add the -AA conformance option to CXXFLAGS for HP aCC only
+if test $CXX = 'aCC'; then
+ CXXFLAGS="-AA $CXXFLAGS"
+fi
+
+dnl check for some standard libraries
+dnl without these some of the tests may fail:
+
+AC_CHECK_LIB(pthread, pthread_exit)
+AC_CHECK_LIB(m, cos)
+AC_CHECK_LIB(rt, clock)
+
+#
+# enumerate test files and test each one:
+#
+for file in $boost_base/libs/config/test/boost_no*.ipp; do
+
+ basename=`echo $file | $SED 's/.*boost_\(.*\)\.ipp/\1/'`
+ macroname=`cat $file | grep '^//[[ ]]*MACRO:' | $SED 's/.*MACRO:[[ ]]*\([[_A-Z0-9]]*\).*/\1/'`
+ title=`cat $file | grep '^//[[ ]]*TITLE:' | $SED 's/.*TITLE:[[ ]]*\([[^ ]].*\)/\1/'`
+ namespace=`echo $macroname | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
+
+#echo file = $file
+#echo basename = $basename
+#echo macroname = $macroname
+#echo title = $title
+#echo namespace = $namespace
+
+ ac_ext=$use_ac_ext
+ if test $enable_test = 'yes'; then
+ AC_MSG_CHECKING($title (pass expected) )
+ else
+ AC_MSG_CHECKING($title )
+ fi
+ AC_TRY_RUN(
+ [
+#include <boost/config.hpp>
+#include "test.hpp"
+
+#if !defined($macroname) || defined(BOOST_NO_CONFIG)
+#include "boost_$basename.ipp"
+#else
+namespace ${namespace} = empty_boost;
+#endif
+
+int main(){ return ${namespace}::test(); } ]
+ ,
+ [AC_MSG_RESULT(OK)]
+ ,
+ [AC_MSG_RESULT(Failed)
+ required_defs="$macroname $required_defs"]
+ )
+
+ if test $enable_test = 'yes'; then
+
+ ac_ext=$use_ac_ext
+ AC_MSG_CHECKING($title (fail expected) )
+ AC_TRY_RUN(
+ [
+#include <boost/config.hpp>
+#include "test.hpp"
+
+#ifdef $macroname
+#include "boost_$basename.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main() { return ${namespace}::test(); }]
+ ,
+ [AC_MSG_RESULT(failed)
+ required_undefs="$macroname $required_undefs"]
+ ,
+ [AC_MSG_RESULT(OK)]
+ )
+
+ fi
+
+done
+
+#
+# enumerate optional test files and test each one:
+#
+for file in $boost_base/libs/config/test/boost_has*.ipp; do
+
+ basename=`echo $file | $SED 's/.*boost_\(.*\)\.ipp/\1/'`
+ macroname=`cat $file | grep '^//[[ ]]*MACRO:' | $SED 's/.*MACRO:[[ ]]*\([[_A-Z0-9]]*\).*/\1/'`
+ title=`cat $file | grep '^//[[ ]]*TITLE:' | $SED 's/.*TITLE:[[ ]]*\([[^ ]].*\)/\1/'`
+ namespace=`echo $macroname | tr ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz`
+
+# echo $file
+# echo $basename
+# echo $macroname
+# echo $title
+
+ ac_ext=$use_ac_ext
+ if test $enable_test = 'yes'; then
+ AC_MSG_CHECKING($title (pass expected) )
+ AC_TRY_RUN(
+ [
+#include <boost/config.hpp>
+#include "test.hpp"
+
+#ifdef $macroname
+#include "boost_$basename.ipp"
+#else
+namespace ${namespace} = empty_boost;
+#endif
+
+int main(){ return ${namespace}::test(); }]
+ ,
+ [AC_MSG_RESULT(OK)]
+ ,
+ [AC_MSG_RESULT(Failed)
+ required_undefs="$macroname $required_undefs"]
+ )
+
+ AC_MSG_CHECKING($title (fail expected) )
+ AC_TRY_RUN(
+ [
+#include <boost/config.hpp>
+#include "test.hpp"
+
+#ifndef $macroname
+#include "boost_$basename.ipp"
+#else
+#error "this file should not compile"
+#endif
+
+int main(){ return ${namespace}::test(); }]
+ ,
+ [
+ AC_MSG_RESULT(failed)
+ required_defs="$macroname $required_defs"
+ ]
+ ,
+ [
+ AC_MSG_RESULT(OK)
+ ]
+ )
+
+ else
+
+ ac_ext=$use_ac_ext
+ AC_MSG_CHECKING($title)
+ AC_TRY_RUN(
+ [
+#include <boost/config.hpp>
+#include "test.hpp"
+
+#include "boost_$basename.ipp"
+
+int main(){ return ${namespace}::test(); }]
+ ,
+ [
+ AC_MSG_RESULT(Yes)
+ required_defs="$macroname $required_defs"
+ ]
+ ,
+ [
+ AC_MSG_RESULT(no)
+ ]
+ )
+
+ fi
+
+done
+
+
+#echo $required_defs
+#echo $required_undefs
+
+if test $enable_test = 'yes'; then
+
+if test "$required_defs" = ""; then
+echo no boost macros need to be defined
+echo no boost macros need to be defined >&5
+else
+echo the following macros need to be defined
+echo $required_defs
+echo the following macros need to be defined >&5
+echo $required_defs >&5
+fi
+if test "$required_undefs" = ""; then
+echo no boost macros need to be undefined
+echo no boost macros need to be undefined >&5
+else
+echo "the following macros need to be undef'ed"
+echo $required_undefs
+echo "the following macros need to be undef'ed" >&5
+echo $required_undefs >&5
+fi
+
+else
+
+date_string=`date`
+
+echo boost_base=$boost_base
+
+cat > user.hpp << EOF
+// (C) Copyright Boost.org 2001.
+// Do not check in modified versions of this file,
+// This file may be customised by the end user, but not by boost.
+
+//
+// Use this file to define a site and compiler specific
+// configuration policy, this version was auto-generated by
+// configure on ${date_string}
+// With the following options:
+// CXX = ${CXX}
+// CXXFLAGS = ${CXXFLAGS}
+// LDFLAGS = ${LDFLAGS}
+// LIBS = ${LIBS}
+//
+
+// define this to disable all config options,
+// excluding the user config. Use if your
+// setup is fully ISO complient, and has no
+// useful extentions, or for autoconf generated
+// setups:
+#ifndef BOOST_NO_CONFIG
+# define BOOST_NO_CONFIG
+#endif
+
+
+// define if you want to disable threading support, even
+// when available:
+// #define BOOST_DISABLE_THREADS
+
+// define if you want the regex library to use the C locale
+// even on Win32:
+// #define BOOST_REGEX_USE_C_LOCALE
+
+// define this is you want the regex library to use the C++
+// locale:
+// #define BOOST_REGEX_USE_CPP_LOCALE
+
+
+//
+// options added by configure:
+//
+EOF
+
+for name in $required_defs; do
+echo '#define '"$name" >> user.hpp
+done
+
+cat_conts=`cat user.hpp`
+
+#
+# post configuration step:
+#
+AC_MSG_CHECKING(original configuration )
+rm -f conftest$ac_exeext
+$CXX -I$boost_base $OLD_CXXFLAGS -DBOOST_NO_USER_CONFIG -o conftest$ac_exeext $LDFLAGS $boost_base/libs/config/test/config_info.cpp $LIBS >&5 2>&1
+./conftest >&5 2>&1
+AC_MSG_RESULT(done)
+AC_MSG_CHECKING(new configuration )
+rm -f conftest$ac_exeext
+$CXX -I$boost_base -I$boost_base/libs/config $OLD_CXXFLAGS -DBOOST_USER_CONFIG='"user.hpp"' -o conftest$ac_exeext $LDFLAGS $boost_base/libs/config/test/config_info.cpp $LIBS >&5 2>&1
+./conftest >&5 2>&1
+AC_MSG_RESULT(done)
+
+AC_OUTPUT(
+[],
+[
+cat > user.hpp << EEEOF
+${cat_conts}
+EEEOF
+cat << EEEOF
+
+Adjustments to boost configuration have been written to
+user.hpp. Copy this to boost/config/user.hpp to use "as is",
+or define BOOST_SITE_CONFIG to point to its location.
+
+TREAT THIS FILE WITH CARE.
+Autoconf generated options are not infallible!
+
+EEEOF
+],
+[
+cat_conts="$cat_conts"
+]
+)
+
+fi
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/tools/generate.cpp b/tools/generate.cpp
new file mode 100644
index 0000000..53c73be
--- /dev/null
+++ b/tools/generate.cpp
@@ -0,0 +1,345 @@
+// (C) Copyright John Maddock 2004.
+// 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)
+
+//
+// This progam scans for *.ipp files in the libs/config/test
+// directory and then generates the *.cpp test files from them
+// along with config_test.cpp and a Jamfile.
+//
+
+#include <boost/regex.hpp>
+#include <boost/filesystem/path.hpp>
+#include <boost/filesystem/operations.hpp>
+#include <boost/filesystem/fstream.hpp>
+#include <boost/detail/lightweight_main.hpp>
+#include <iostream>
+#include <sstream>
+#include <string>
+#include <set>
+#include <ctime>
+
+namespace fs = boost::filesystem;
+
+fs::path config_path;
+
+std::string copyright(
+"// Copyright John Maddock 2002-4.\n"
+"// Use, modification and distribution are subject to the \n"
+"// Boost Software License, Version 1.0. (See accompanying file \n"
+"// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)\n"
+"\n"
+"// See http://www.boost.org/libs/config for the most recent version."
+"//\n// Revision $Id$\n//\n");
+
+std::stringstream config_test1;
+std::stringstream config_test1a;
+std::stringstream config_test2;
+std::stringstream jamfile;
+std::stringstream jamfile_v2;
+std::stringstream build_config_test;
+std::stringstream build_config_jamfile;
+std::set<std::string> macro_list;
+std::set<std::string> feature_list;
+
+void write_config_info()
+{
+ // load the file into memory so we can scan it:
+ fs::ifstream ifs(config_path / "config_info.cpp");
+ std::string file_text;
+ std::copy(std::istreambuf_iterator<char>(ifs), std::istreambuf_iterator<char>(), std::back_inserter(file_text));
+ ifs.close();
+ // create macro list:
+ std::stringstream ss;
+ for(std::set<std::string>::const_iterator i(macro_list.begin()), j(macro_list.end());
+ i != j;
+ ++i)
+ {
+ ss << " PRINT_MACRO(" << *i << ");\n";
+ }
+ std::string macros = ss.str();
+ // scan for Boost macro block:
+ boost::regex re("BEGIN\\s+GENERATED\\s+BLOCK\\s+DO\\s+NOT\\s+EDIT\\s+THIS[^\\n]+\\n(.*?)\\n\\s+//\\s*END\\s+GENERATED\\s+BLOCK");
+ boost::smatch what;
+ if(boost::regex_search(file_text, what, re))
+ {
+ std::string new_text;
+ new_text.append(what.prefix().first, what[1].first);
+ new_text.append(macros);
+ new_text.append(what[1].second, what.suffix().second);
+ fs::ofstream ofs(config_path / "config_info.cpp");
+ ofs << new_text;
+ }
+}
+
+void write_config_test()
+{
+ fs::ofstream ofs(config_path / "config_test.cpp");
+ time_t t = std::time(0);
+ ofs << "// This file was automatically generated on " << std::ctime(&t);
+ ofs << "// by libs/config/tools/generate.cpp\n" << copyright << std::endl;
+ ofs << "// Test file for config setup\n"
+ "// This file should compile, if it does not then\n"
+ "// one or more macros need to be defined.\n"
+ "// see boost_*.ipp for more details\n\n"
+ "// Do not edit this file, it was generated automatically by\n\n"
+ "#include <boost/config.hpp>\n#include <iostream>\n#include \"test.hpp\"\n\n"
+ "int error_count = 0;\n\n";
+ ofs << config_test1.str() << std::endl;
+ ofs << config_test1a.str() << std::endl;
+ ofs << "int main( int, char *[] )\n{\n" << config_test2.str() << " return error_count;\n}\n\n";
+}
+
+void write_jamfile_v2()
+{
+ fs::ofstream ofs(config_path / "all" / "Jamfile.v2");
+ time_t t = std::time(0);
+ ofs << "#\n# Regression test Jamfile for boost configuration setup.\n# *** DO NOT EDIT THIS FILE BY HAND ***\n"
+ "# This file was automatically generated on " << std::ctime(&t);
+ ofs << "# by libs/config/tools/generate.cpp\n"
+ "# Copyright John Maddock.\n"
+ "# Use, modification and distribution are subject to the \n"
+ "# Boost Software License, Version 1.0. (See accompanying file \n"
+ "# LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)\n"
+ "#\n# If you need to alter build preferences then set them in\n"
+ "# the template defined in options_v2.jam.\n#\n"
+ "path-constant DOT : . ;\n"
+ "include $(DOT)/options_v2.jam ;\n\n"
+ "run ../config_info.cpp : : : <threading>single <toolset>msvc:<runtime-link>static <toolset>msvc:<link>static ;\n"
+ "run ../config_info.cpp : : : <threading>multi : config_info_threaded ;\n"
+ "run ../math_info.cpp : : : <toolset>borland:<runtime-link>static <toolset>borland:<link>static ;\n"
+ "run ../config_test.cpp : : : <threading>single <toolset>msvc:<runtime-link>static <toolset>msvc:<link>static ;\n"
+ "run ../config_test.cpp : : : <threading>multi : config_test_threaded ;\n"
+ "run ../limits_test.cpp ../../../test/build//boost_test_exec_monitor ;\n"
+ "run ../abi/abi_test.cpp ../abi/main.cpp ;\n\n";
+ ofs << jamfile_v2.str() << std::endl;
+
+}
+
+void write_test_file(const fs::path& file,
+ const std::string& macro_name,
+ const std::string& namespace_name,
+ const std::string& header_file,
+ bool positive_test,
+ bool expect_success)
+{
+ if(!fs::exists(file))
+ {
+ std::cout << "Writing test file " << file.string() << std::endl;
+
+ fs::ofstream ofs(file);
+ std::time_t t = std::time(0);
+ ofs << "// This file was automatically generated on " << std::ctime(&t);
+ ofs << "// by libs/config/tools/generate.cpp\n" << copyright << std::endl;
+ ofs << "\n// Test file for macro " << macro_name << std::endl;
+
+ if(expect_success)
+ {
+ ofs << "// This file should compile, if it does not then\n"
+ "// " << macro_name << " should ";
+ if(positive_test)
+ ofs << "not ";
+ ofs << "be defined.\n";
+ }
+ else
+ {
+ ofs << "// This file should not compile, if it does then\n"
+ "// " << macro_name << " should ";
+ if(!positive_test)
+ ofs << "not ";
+ ofs << "be defined.\n";
+ }
+ ofs << "// See file " << header_file << " for details\n\n";
+
+ ofs << "// Must not have BOOST_ASSERT_CONFIG set; it defeats\n"
+ "// the objective of this file:\n"
+ "#ifdef BOOST_ASSERT_CONFIG\n"
+ "# undef BOOST_ASSERT_CONFIG\n"
+ "#endif\n\n";
+
+ static const boost::regex tr1_exp("BOOST_HAS_TR1.*");
+
+ ofs << "#include <boost/config.hpp>\n";
+
+ ofs << "#include \"test.hpp\"\n\n"
+ "#if";
+ if(positive_test != expect_success)
+ ofs << "n";
+ ofs << "def " << macro_name <<
+ "\n#include \"" << header_file <<
+ "\"\n#else\n";
+ if(expect_success)
+ ofs << "namespace " << namespace_name << " = empty_boost;\n";
+ else
+ ofs << "#error \"this file should not compile\"\n";
+ ofs << "#endif\n\n";
+
+ ofs << "int main( int, char *[] )\n{\n return " << namespace_name << "::test();\n}\n\n";
+ }
+ else
+ {
+ std::cout << "Skipping existing test file " << file.string() << std::endl;
+ }
+}
+
+void write_build_tests()
+{
+ fs::ofstream ofs(config_path / ".." / "checks" / "test_case.cpp");
+ time_t t = std::time(0);
+ ofs << "// This file was automatically generated on " << std::ctime(&t);
+ ofs << "// by libs/config/tools/generate.cpp\n" << copyright << std::endl;
+ ofs << "#include <boost/config.hpp>\n\n";
+ ofs << build_config_test.str() << std::endl;
+ ofs << "int main( int, char *[] )\n{\n" << " return 0;\n}\n\n";
+}
+
+void write_build_check_jamfile()
+{
+ fs::ofstream ofs(config_path / ".." / "checks" / "Jamfile.v2");
+ time_t t = std::time(0);
+ ofs << "#\n# *** DO NOT EDIT THIS FILE BY HAND ***\n"
+ "# This file was automatically generated on " << std::ctime(&t);
+ ofs << "# by libs/config/tools/generate.cpp\n"
+ "# Copyright John Maddock.\n"
+ "# Use, modification and distribution are subject to the \n"
+ "# Boost Software License, Version 1.0. (See accompanying file \n"
+ "# LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)\n\n"
+ "import modules ;\nimport path ; \n\n"
+ "\n"
+ ;
+ ofs << build_config_jamfile.str() << std::endl;
+}
+
+void process_ipp_file(const fs::path& file, bool positive_test)
+{
+ std::cout << "Info: Scanning file: " << file.string() << std::endl;
+
+ // our variables:
+ std::string file_text;
+ std::string macro_name;
+ std::string namespace_name;
+ fs::path positive_file;
+ fs::path negative_file;
+
+ // load the file into memory so we can scan it:
+ fs::ifstream ifs(file);
+ std::copy(std::istreambuf_iterator<char>(ifs), std::istreambuf_iterator<char>(), std::back_inserter(file_text));
+ ifs.close();
+ // scan for the macro name:
+ boost::regex macro_regex("//\\s*MACRO\\s*:\\s*(\\w+)");
+ boost::smatch macro_match;
+ if(boost::regex_search(file_text, macro_match, macro_regex))
+ {
+ macro_name = macro_match[1];
+ macro_list.insert(macro_name);
+ namespace_name = boost::regex_replace(file_text, macro_regex, "\\L$1", boost::format_first_only | boost::format_no_copy);
+ }
+ if(macro_name.empty())
+ {
+ std::cout << "Error: no macro definition found in " << file.string();
+ }
+ else
+ {
+ std::cout << "Info: Macroname: " << macro_name << std::endl;
+ }
+
+ // get the output filesnames:
+ boost::regex file_regex("boost_([^.]+)\\.ipp");
+ positive_file = file.branch_path() / boost::regex_replace(file.leaf().string(), file_regex, "$1_pass.cpp");
+ negative_file = file.branch_path() / boost::regex_replace(file.leaf().string(), file_regex, "$1_fail.cpp");
+ write_test_file(positive_file, macro_name, namespace_name, file.leaf().string(), positive_test, true);
+ write_test_file(negative_file, macro_name, namespace_name, file.leaf().string(), positive_test, false);
+
+ // always create config_test data,
+ // positive and negative tests go to separate streams, because for some
+ // reason some compilers choke unless we put them in a particular order...
+ std::ostream* pout = positive_test ? &config_test1a : &config_test1;
+ *pout << "#if";
+ if(!positive_test)
+ *pout << "n";
+ *pout << "def " << macro_name
+ << "\n#include \"" << file.leaf().string() << "\"\n#else\nnamespace "
+ << namespace_name << " = empty_boost;\n#endif\n";
+
+ config_test2 << " if(0 != " << namespace_name << "::test())\n"
+ " {\n"
+ " std::cerr << \"Failed test for " << macro_name << " at: \" << __FILE__ << \":\" << __LINE__ << std::endl;\n"
+ " ++error_count;\n"
+ " }\n";
+
+ // always generate the jamfile data:
+ jamfile << "test-suite \"" << macro_name << "\" : \n"
+ "[ run " << positive_file.leaf().string() << " <template>config_options ]\n"
+ "[ compile-fail " << negative_file.leaf().string() << " <template>config_options ] ;\n";
+
+ jamfile_v2 << "test-suite \"" << macro_name << "\" : \n"
+ "[ run ../" << positive_file.leaf().string() << " ]\n"
+ "[ compile-fail ../" << negative_file.leaf().string() << " ] ;\n";
+
+ // Generate data for the Build-checks test file:
+ build_config_test << "#ifdef TEST_" << macro_name << std::endl;
+ if (positive_test)
+ {
+ build_config_test << "# ifndef " << macro_name << "\n# error \"Feature macro " << macro_name << " is not defined.\"\n# endif\n";
+ }
+ else
+ {
+ build_config_test << "# ifdef " << macro_name << "\n# error \"Defect macro " << macro_name << " is defined.\"\n# endif\n";
+ }
+ build_config_test << "#endif\n";
+
+ // Generate data for the build-checks Jamfile:
+ static const boost::regex feature_regex("boost_(?:no|has)_(.*)");
+ std::string feature_name = boost::regex_replace(namespace_name, feature_regex, "\\1");
+ if(feature_list.find(feature_name) == feature_list.end())
+ build_config_jamfile << "obj " << feature_name << " : test_case.cpp : <define>TEST_" << macro_name << " ;\n";
+ feature_list.insert(feature_name);
+}
+
+int cpp_main(int argc, char* argv[])
+{
+ //
+ // get the boost path to begin with:
+ //
+ if(argc > 1)
+ {
+ fs::path p(argv[1]);
+ config_path = p / "libs" / "config" / "test" ;
+ }
+ else
+ {
+ // try __FILE__:
+ fs::path p(__FILE__);
+ config_path = p.branch_path().branch_path() / "test";
+ }
+ std::cout << "Info: Boost.Config test path set as: " << config_path.string() << std::endl;
+
+ // enumerate *.ipp files and store them in a map for now:
+ boost::regex ipp_mask("boost_(?:(has)|no).*\\.ipp");
+ boost::smatch ipp_match;
+ fs::directory_iterator i(config_path), j;
+ std::map<fs::path, bool> files_to_process;
+ while(i != j)
+ {
+ if(boost::regex_match(i->path().leaf().string(), ipp_match, ipp_mask))
+ {
+ files_to_process[*i] = ipp_match[1].matched;
+ }
+ ++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_jamfile_v2();
+ write_config_info();
+ write_build_tests();
+ write_build_check_jamfile();
+ return 0;
+}
+