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&nbsp;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 &#169; 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">&lt;</span><span class="identifier">ctype</span><span class="special">.</span><span class="identifier">h</span><span class="special">&gt;</span></code> and <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">cctype</span><span class="special">&gt;</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">&lt;</span><span class="identifier">wchar</span><span class="special">.</span><span class="identifier">h</span><span class="special">&gt;</span></code>
+                  and <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">cwchar</span><span class="special">&gt;</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">&lt;</span><span class="identifier">wctype</span><span class="special">.</span><span class="identifier">h</span><span class="special">&gt;</span></code>
+                  and <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">cwctype</span><span class="special">&gt;</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">&lt;</span><span class="identifier">fenv</span><span class="special">.</span><span class="identifier">h</span><span class="special">&gt;</span></code>.
+                  <a href="../../../../../boost/detail/fenv.hpp" target="_top"><code class="computeroutput"><span class="special">&lt;</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">&gt;</span></code></a>
+                  should be included instead of <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">fenv</span><span class="special">.</span><span class="identifier">h</span><span class="special">&gt;</span></code>
+                  for maximum portability on platforms which do provide <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">fenv</span><span class="special">.</span><span class="identifier">h</span><span class="special">&gt;</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">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</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">&lt;</span><span class="keyword">typename</span> <span class="identifier">U</span><span class="special">&gt;</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">&lt;</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">&gt;</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">&lt;</span><span class="identifier">exception</span><span class="special">&gt;</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">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</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">&lt;</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">&gt;</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">(&amp;</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">&lt;</span><span class="identifier">iosfwd</span><span class="special">&gt;</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">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span></code>,
+                  <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">istream</span><span class="special">&gt;</span></code> or <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">ostream</span><span class="special">&gt;</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">&lt;</span><span class="identifier">limits</span><span class="special">&gt;</span></code>
+                  header. Never check for this symbol in library code; always include
+                  <code class="computeroutput"><span class="special">&lt;</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">&gt;</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">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</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">&lt;&gt;</span>
+                  <span class="keyword">class</span> <span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="keyword">char16_t</span><span class="special">&gt;;</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">&lt;&gt;</span>
+                  <span class="keyword">class</span> <span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="keyword">char32_t</span><span class="special">&gt;;</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">&lt;</span><span class="identifier">T</span><span class="special">&gt;::</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">&lt;</span><span class="keyword">long</span>
+                  <span class="keyword">long</span><span class="special">&gt;</span></code>
+                  and <code class="computeroutput"><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="keyword">unsigned</span>
+                  <span class="keyword">long</span> <span class="keyword">long</span><span class="special">&gt;</span></code>. <code class="computeroutput"><span class="special">&lt;</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">&gt;</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">&lt;</span><span class="keyword">class</span>
+                  <span class="identifier">P</span><span class="special">&gt;</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">&lt;</span><span class="identifier">__int64</span><span class="special">&gt;</span></code> and <code class="computeroutput"><span class="identifier">numeric_limits</span><span class="special">&lt;</span><span class="keyword">unsigned</span>
+                  <span class="identifier">__int64</span><span class="special">&gt;</span></code>.
+                  <code class="computeroutput"><span class="special">&lt;</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">&gt;</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">&lt;</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">&gt;</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">&lt;</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">&gt;</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">&lt;</span><span class="identifier">algorithm</span><span class="special">&gt;</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 &lt;typeinfo&gt; 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">&lt;</span><span class="keyword">wchar_t</span><span class="special">&gt;</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">&lt;</span><span class="identifier">c</span><span class="special">...&gt;</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">&lt;</span><span class="identifier">sstream</span><span class="special">&gt;</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">&lt;</span><span class="identifier">dirent</span><span class="special">.</span><span class="identifier">h</span><span class="special">&gt;</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">&lt;</span><span class="identifier">math</span><span class="special">.</span><span class="identifier">h</span><span class="special">&gt;</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">&lt;</span><span class="identifier">math</span><span class="special">.</span><span class="identifier">h</span><span class="special">&gt;</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">&lt;</span><span class="identifier">nl_types</span><span class="special">.</span><span class="identifier">h</span><span class="special">&gt;</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">&lt;</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">&gt;</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">&lt;</span><span class="identifier">stdint</span><span class="special">.</span><span class="identifier">h</span><span class="special">&gt;</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">&lt;</span><span class="identifier">array</span><span class="special">&gt;</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">&lt;</span><span class="identifier">complex</span><span class="special">&gt;</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">&lt;</span><span class="identifier">complex</span><span class="special">&gt;</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">&lt;</span><span class="identifier">functional</span><span class="special">&gt;</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">&lt;</span><span class="identifier">functional</span><span class="special">&gt;</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">&lt;</span><span class="identifier">functional</span><span class="special">&gt;</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">&lt;</span><span class="identifier">functional</span><span class="special">&gt;</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">&lt;</span><span class="identifier">functional</span><span class="special">&gt;</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">&lt;</span><span class="identifier">functional</span><span class="special">&gt;</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">&lt;</span><span class="identifier">memory</span><span class="special">&gt;</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">&lt;</span><span class="identifier">random</span><span class="special">&gt;</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">&lt;</span><span class="identifier">regex</span><span class="special">&gt;</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">&lt;</span><span class="identifier">tuple</span><span class="special">&gt;</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">&lt;</span><span class="identifier">type_traits</span><span class="special">&gt;</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">&lt;</span><span class="identifier">utility</span><span class="special">&gt;</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">&lt;</span><span class="identifier">unordered_map</span><span class="special">&gt;</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">&lt;</span><span class="identifier">unordered_set</span><span class="special">&gt;</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">&lt;</span><span class="identifier">unistd</span><span class="special">.</span><span class="identifier">h</span><span class="special">&gt;</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">&lt;</span><span class="identifier">stdint</span><span class="special">.</span><span class="identifier">h</span><span class="special">&gt;</span></code>
+                  or <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">cstdint</span><span class="special">&gt;</span></code>, although the 1999 C Standard
+                  does include <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">stdint</span><span class="special">.</span><span class="identifier">h</span><span class="special">&gt;</span></code>.
+                  If <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">stdint</span><span class="special">.</span><span class="identifier">h</span><span class="special">&gt;</span></code> is present, <code class="computeroutput"><span class="special">&lt;</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">&gt;</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 &lt;memory&gt; 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 &lt;memory&gt;.
+                </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 &lt;memory&gt; 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 &lt;atomic&gt;.
+                </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 &lt;array&gt;.
+                </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 &lt;chrono&gt;.
+                </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 &lt;codecvt&gt;.
+                </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 &lt;condition_variable&gt;.
+                </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 &lt;forward_list&gt;.
+                </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 &lt;functional&gt;.
+                </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 &lt;future&gt;.
+                </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 &lt;initializer_list&gt;.
+                </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 &lt;mutex&gt;.
+                </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 &lt;random&gt;.
+                </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 &lt;ratio&gt;.
+                </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 &lt;regex&gt;.
+                </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 &lt;system_error&gt;.
+                </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 &lt;thread&gt;.
+                </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 &lt;tuple&gt;.
+                </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 &lt;typeindex&gt;.
+                </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 &lt;type_traits&gt;.
+                </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 &lt;unordered_map&gt;.
+                </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 &lt;unordered_set&gt;.
+                </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">&lt;</span><span class="identifier">limits</span><span class="special">&gt;</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 &lt;memory&gt;.
+                </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 &lt;memory&gt; 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 &lt;memory&gt; 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 &lt;unordered_map&gt; and
+                  &lt;unordered_set&gt;.
+                </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">-&gt;</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">&amp;))</span>
+    <span class="identifier">BOOST_DELETED_FUNCTION</span><span class="special">(</span><span class="identifier">noncopyable</span><span class="special">&amp;</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">&amp;))</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">&amp;)</span> <span class="special">=</span> <span class="keyword">delete</span><span class="special">;</span>
+    <span class="identifier">noncopyable</span><span class="special">&amp;</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">&amp;)</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">&amp;);</span>
+    <span class="identifier">noncopyable</span><span class="special">&amp;</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">&amp;);</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 &lt;shared_mutex&gt;.
+                </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">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span> <span class="identifier">T</span>
+                  <span class="identifier">kibi</span> <span class="special">=</span>
+                  <span class="identifier">T</span><span class="special">(</span><span class="number">1024</span><span class="special">);</span></code>).
+                </p>
+              </td>
+</tr>
+</tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.boost_macro_reference.macros_that_allow_use_of_c__14_features_with_c__11_or_earlier_compilers"></a><a name="config_14_for_11"></a><a class="link" href="boost_macro_reference.html#boost_config.boost_macro_reference.macros_that_allow_use_of_c__14_features_with_c__11_or_earlier_compilers" title="Macros that allow use of C++14 features with C++11 or earlier compilers">Macros
+      that allow use of C++14 features with C++11 or earlier compilers</a>
+</h3></div></div></div>
+<p>
+        The following macros allow use of C++14 features even with compilers that
+        do not yet provide compliant C++14 support.
+      </p>
+<div class="informaltable"><table class="table">
+<colgroup>
+<col>
+<col>
+</colgroup>
+<thead><tr>
+<th>
+                <p>
+                  Macro
+                </p>
+              </th>
+<th>
+                <p>
+                  Description
+                </p>
+              </th>
+</tr></thead>
+<tbody><tr>
+<td>
+                <p>
+                  <code class="computeroutput"><span class="identifier">BOOST_CXX14_CONSTEXPR</span></code>
+                </p>
+              </td>
+<td>
+                <p>
+                  This macro works similar to BOOST_CONSTEXPR, but expands to <code class="computeroutput"><span class="keyword">constexpr</span></code> only if the C++14 "relaxed"
+                  <code class="computeroutput"><span class="keyword">constexpr</span></code> is available.
+                </p>
+              </td>
+</tr></tbody>
+</table></div>
+</div>
+<div class="section">
+<div class="titlepage"><div><div><h3 class="title">
+<a name="boost_config.boost_macro_reference.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">&lt;</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">&gt;</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">&lt;=</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">&lt;=</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">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</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">&lt;</span><span class="keyword">class</span>
+                  <span class="identifier">T</span><span class="special">&gt;</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 &gt;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">&lt;</span><span class="identifier">iostream</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">ostream</span><span class="special">&gt;</span>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">typeinfo</span><span class="special">&gt;</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">int</span> <span class="identifier">n</span><span class="special">&gt;</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">&lt;&lt;</span> <span class="identifier">n</span> <span class="special">&lt;&lt;</span> <span class="char">' '</span><span class="special">;</span> <span class="special">}</span>
+
+<span class="keyword">template</span> <span class="special">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</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">&lt;&lt;</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">&lt;&lt;</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">&lt;</span><span class="number">1</span><span class="special">&gt;();</span>
+  <span class="identifier">f</span><span class="special">&lt;</span><span class="number">2</span><span class="special">&gt;();</span>
+
+  <span class="identifier">g</span><span class="special">&lt;</span><span class="keyword">int</span><span class="special">&gt;();</span>
+  <span class="identifier">g</span><span class="special">&lt;</span><span class="keyword">double</span><span class="special">&gt;();</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">&lt;</span><span class="keyword">int</span> <span class="identifier">n</span><span class="special">&gt;</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">&lt;</span><span class="keyword">typename</span> <span class="identifier">T</span><span class="special">&gt;</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">&lt;</span><span class="identifier">Type</span><span class="special">&gt;(</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">&lt;</span><span class="identifier">Type</span><span class="special">&gt;(</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">&lt;</span><span class="identifier">U</span><span class="special">&gt;</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">&lt;</span><span class="identifier">U</span><span class="special">&gt;</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">&lt;</span><span class="identifier">U</span><span class="special">&gt;</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">&lt;</span><span class="keyword">class</span> <span class="identifier">T</span><span class="special">&gt;</span>
+<span class="identifier">BOOST_FORCEINLINE</span> <span class="identifier">T</span><span class="special">&amp;</span> <span class="identifier">f</span><span class="special">(</span><span class="identifier">T</span><span class="special">&amp;</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">&lt;</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">&gt;</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">&lt;</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">&gt;</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">"&lt;boost/config/workaround.hpp&gt;"</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">&lt;</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">&gt;</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">&lt;</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">&gt;</span></code> <code class="computeroutput"><span class="special">&lt;</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">&gt;</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">&lt;</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">&gt;</span></code> <code class="computeroutput"><span class="special">&lt;</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">&gt;</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">&lt;</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">&gt;</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">&lt;</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">&gt;</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">&lt;</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">&gt;</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">&lt;</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">&gt;</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">&lt;</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">&gt;</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">&lt;</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">&gt;</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">&lt;</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">&gt;</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">&lt;</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">&gt;</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">&lt;</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">&gt;</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">&lt;</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">&gt;</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">&lt;</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">&gt;</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">&lt;</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">&gt;</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">&lt;</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">&gt;</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">&lt;</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">&gt;</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 &lt;boost/config.hpp&gt;</strong></span></code>
+<span class="preprocessor">#include</span> <span class="special">&lt;</span><span class="identifier">whatever</span><span class="special">&gt;</span>
+
+<code class="literal"><span class="bold"><strong>#include &lt;boost/config/abi_prefix.hpp&gt;</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 &lt;boost/config/abi_suffix.hpp&gt;</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">&lt;</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">&gt;</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">&lt;</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">&gt;</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">&amp;&amp;</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">&amp;&amp;</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">&lt;</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">&gt;</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">&lt;</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">&gt;</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 &#169; 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 &#169; 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">&lt;boost/cstdint.hpp&gt;</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 &lt;stdint.h&gt;. 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 &lt;stdint.h&gt; types from the 1999 C standard without
+        causing undefined behavior in terms of the 1998 C++ standard. The header
+        &lt;boost/cstdint.hpp&gt; 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 &lt;stdint.h&gt;
+        and &lt;cstdint&gt;, then &lt;boost/cstdint.hpp&gt; 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 &lt;limits.h&gt; macro names may
+        possibly be visible to users of &lt;boost/cstdint.hpp&gt;. Don't use these
+        macros; they are not part of any Boost-specified interface. Use <code class="literal">boost::integer_traits&lt;&gt;</code>
+        or <code class="literal">std::numeric_limits&lt;&gt;</code> instead.
+      </p>
+<p>
+        As another implementation artifact, certain C &lt;stdint.h&gt; typedef names
+        may possibly be visible in the global namespace to users of &lt;boost/cstdint.hpp&gt;.
+        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 &lt;boost/cstdint.hpp&gt;
+        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 &lt;boost/cstdint.hpp&gt;,
+        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 &lt;boost/cstdint.hpp&gt;,
+        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">&lt;</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">&gt;</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 &#169; 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">&lt;boost/config.hpp&gt;</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">&lt;</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">&gt;</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">&lt;</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">&gt;</span></code>" is the preferred way to obtain
+          configuration information not available from the standard headers such
+          as <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">climits</span><span class="special">&gt;</span></code>, etc.
+        </li>
+<li class="listitem">
+          If configuration information can be deduced from standard headers such
+          as <code class="computeroutput"><span class="special">&lt;</span><span class="identifier">climits</span><span class="special">&gt;</span></code>, use those standard headers rather
+          than <code class="computeroutput"><span class="special">&lt;</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">&gt;</span></code>.
+        </li>
+<li class="listitem">
+          Boost files that use macros defined in <code class="computeroutput"><span class="special">&lt;</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">&gt;</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">&lt;</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">&gt;</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">&lt;</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">&gt;</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">&lt;boost/config/detail/suffix.hpp&gt;</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">&lt;</span><span class="identifier">unistd</span><span class="special">.</span><span class="identifier">h</span><span class="special">&gt;</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">&lt;boost/config.hpp&gt;</a>
+        should never change, don't alter this file.
+      </p>
+<p>
+        <a href="../../../../../boost/config/user.hpp" target="_top">&lt;boost/config/user.hpp&gt;</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">&lt;boost/config/detail/suffix.hpp&gt;</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">&lt;boost/config/detail/select_compiler_config.hpp&gt;</a>,
+        <a href="../../../../../boost/config/detail/select_platform_config.hpp" target="_top">&lt;boost/config/detail/select_platform_config.hpp&gt;</a>
+        and <a href="../../../../../boost/config/detail/select_stdlib_config.hpp" target="_top">&lt;boost/config/detail/select_stdlib_config.hpp&gt;</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 &#169; 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">&lt;</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">&gt;</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 &#169; 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 &#169; 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
+      &lt;boost/config.hpp&gt; 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
+      &lt;boost/config.hpp&gt; 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 &lt;boost/config.hpp&gt; header">The
+      &lt;boost/config.hpp&gt; 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">&lt;boost/config.hpp&gt;</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>&lt;boost-root&gt;</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>&lt;boost-root&gt;</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">&lt;boost/config/user.hpp&gt;</a>
+        (located under <span class="emphasis"><em>&lt;boost-root&gt;</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>&lt;boost-root&gt;</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">&lt;boost/config/user.hpp&gt;</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>&lt;boost-root&gt;</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">"&lt;boost/config/user/multithread-gcc-config.hpp&gt;"</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">&lt;</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">&gt;</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">&lt;</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">&gt;</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">&lt;</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">&gt;</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">&lt;</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">&gt;</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">&lt;</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">&gt;</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">&lt;</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">&gt;</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">&lt;boost/config/user.hpp&gt;</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">&lt;boost/config/user.hpp&gt;</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">&lt;boost/config/detail/suffix.hpp&gt;</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">&lt;</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">&gt;</span></code></a> for the compiler, <a href="../../../../boost/config/stdlib/stlport.hpp" target="_top"><code class="computeroutput"><span class="special">&lt;</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">&gt;</span></code></a> for the standard library, and
+          <a href="../../../../boost/config/platform/win32.hpp" target="_top"><code class="computeroutput"><span class="special">&lt;</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">&gt;</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">&lt;boost/config/user.hpp&gt;</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">&lt;boost/config/user.hpp&gt;</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>&lt;boost-root&gt;</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&nbsp;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;
+}
+