Revert "Add minimal boost install for boost::backtrace"

This reverts commit af29bcdcd889ed8508d52ce31a3d1019ea1c8ba2.

Change-Id: I9be9386258f353f4bf9a0245da4fd41f1109a78a
Reviewed-on: https://swiftshader-review.googlesource.com/c/SwiftShader/+/32028
Kokoro-Presubmit: kokoro <noreply+kokoro@google.com>
Tested-by: Antonio Maiorano <amaiorano@google.com>
Reviewed-by: Ben Clayton <bclayton@google.com>
Reviewed-by: Nicolas Capens <nicolascapens@google.com>
diff --git a/third_party/boost/LICENSE_1_0.txt b/third_party/boost/LICENSE_1_0.txt
deleted file mode 100644
index 36b7cd9..0000000
--- a/third_party/boost/LICENSE_1_0.txt
+++ /dev/null
@@ -1,23 +0,0 @@
-Boost Software License - Version 1.0 - August 17th, 2003
-
-Permission is hereby granted, free of charge, to any person or organization
-obtaining a copy of the software and accompanying documentation covered by
-this license (the "Software") to use, reproduce, display, distribute,
-execute, and transmit the Software, and to prepare derivative works of the
-Software, and to permit third-parties to whom the Software is furnished to
-do so, all subject to the following:
-
-The copyright notices in the Software and this entire statement, including
-the above license grant, this restriction and the following disclaimer,
-must be included in all copies of the Software, in whole or in part, and
-all derivative works of the Software, unless such copies or derivative
-works are solely in the form of machine-executable object code generated by
-a source language processor.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. IN NO EVENT
-SHALL THE COPYRIGHT HOLDERS OR ANYONE DISTRIBUTING THE SOFTWARE BE LIABLE
-FOR ANY DAMAGES OR OTHER LIABILITY, WHETHER IN CONTRACT, TORT OR OTHERWISE,
-ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
-DEALINGS IN THE SOFTWARE.
diff --git a/third_party/boost/README.md b/third_party/boost/README.md
deleted file mode 100644
index d467895..0000000
--- a/third_party/boost/README.md
+++ /dev/null
@@ -1,11 +0,0 @@
-# Boost C++ Libraries
-
-The Boost project provides free peer-reviewed portable C++ source libraries.
-
-We emphasize libraries that work well with the C++ Standard Library. Boost
-libraries are intended to be widely useful, and usable across a broad spectrum
-of applications. The Boost license encourages both commercial and non-commercial use
-and does not require attribution for binary use.
-
-The project website is www.boost.org, where you can obtain more information and
-[download](https://www.boost.org/users/download/) the current release.
diff --git a/third_party/boost/README_SwiftShader.md b/third_party/boost/README_SwiftShader.md
deleted file mode 100644
index 0a4b3a8..0000000
--- a/third_party/boost/README_SwiftShader.md
+++ /dev/null
@@ -1,10 +0,0 @@
-This minimal boost install was put together using bcp and copying over built libs.
-
-General steps:
-
-1. Download and extract boost
-2. Run bootstrap
-3. Build bcp: bjam tools/bcp
-4. Use bcp to copy only required files: dist/bin/bcp stacktrace.hpp C:\boost_minimal\boost
-5. Copy LICENSE_1_0.txt and README.md to C:\boost_minimal
-
diff --git a/third_party/boost/boost/array.hpp b/third_party/boost/boost/array.hpp
deleted file mode 100644
index 99dc2c6..0000000
--- a/third_party/boost/boost/array.hpp
+++ /dev/null
@@ -1,457 +0,0 @@
-/* The following code declares class array,
- * an STL container (as wrapper) for arrays of constant size.
- *
- * See
- *      http://www.boost.org/libs/array/
- * for documentation.
- *
- * The original author site is at: http://www.josuttis.com/
- *
- * (C) Copyright Nicolai M. Josuttis 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)
- *
- *  9 Jan 2013 - (mtc) Added constexpr
- * 14 Apr 2012 - (mtc) Added support for boost::hash
- * 28 Dec 2010 - (mtc) Added cbegin and cend (and crbegin and crend) for C++Ox compatibility.
- * 10 Mar 2010 - (mtc) fill method added, matching resolution of the standard library working group.
- *      See <http://www.open-std.org/jtc1/sc22/wg21/docs/lwg-defects.html#776> or Trac issue #3168
- *      Eventually, we should remove "assign" which is now a synonym for "fill" (Marshall Clow)
- * 10 Mar 2010 - added workaround for SUNCC and !STLPort [trac #3893] (Marshall Clow)
- * 29 Jan 2004 - c_array() added, BOOST_NO_PRIVATE_IN_AGGREGATE removed (Nico Josuttis)
- * 23 Aug 2002 - fix for Non-MSVC compilers combined with MSVC libraries.
- * 05 Aug 2001 - minor update (Nico Josuttis)
- * 20 Jan 2001 - STLport fix (Beman Dawes)
- * 29 Sep 2000 - Initial Revision (Nico Josuttis)
- *
- * Jan 29, 2004
- */
-#ifndef BOOST_ARRAY_HPP
-#define BOOST_ARRAY_HPP
-
-#include <boost/detail/workaround.hpp>
-
-#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400)  
-# pragma warning(push)  
-# pragma warning(disable:4996) // 'std::equal': Function call with parameters that may be unsafe
-# pragma warning(disable:4510) // boost::array<T,N>' : default constructor could not be generated 
-# pragma warning(disable:4610) // warning C4610: class 'boost::array<T,N>' can never be instantiated - user defined constructor required 
-#endif
-
-#include <cstddef>
-#include <stdexcept>
-#include <boost/assert.hpp>
-#include <boost/static_assert.hpp>
-#include <boost/swap.hpp>
-
-// Handles broken standard libraries better than <iterator>
-#include <boost/detail/iterator.hpp>
-#include <boost/throw_exception.hpp>
-#include <algorithm>
-
-// FIXES for broken compilers
-#include <boost/config.hpp>
-
-
-namespace boost {
-
-    template<class T, std::size_t N>
-    class array {
-      public:
-        T elems[N];    // fixed-size array of elements of type T
-
-      public:
-        // type definitions
-        typedef T              value_type;
-        typedef T*             iterator;
-        typedef const T*       const_iterator;
-        typedef T&             reference;
-        typedef const T&       const_reference;
-        typedef std::size_t    size_type;
-        typedef std::ptrdiff_t difference_type;
-
-        // iterator support
-        iterator        begin()       { return elems; }
-        const_iterator  begin() const { return elems; }
-        const_iterator cbegin() const { return elems; }
-        
-        iterator        end()       { return elems+N; }
-        const_iterator  end() const { return elems+N; }
-        const_iterator cend() const { return elems+N; }
-
-        // reverse iterator support
-#if !defined(BOOST_MSVC_STD_ITERATOR) && !defined(BOOST_NO_STD_ITERATOR_TRAITS)
-        typedef std::reverse_iterator<iterator> reverse_iterator;
-        typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
-#elif defined(_RWSTD_NO_CLASS_PARTIAL_SPEC) 
-        typedef std::reverse_iterator<iterator, std::random_access_iterator_tag, 
-              value_type, reference, iterator, difference_type> reverse_iterator; 
-        typedef std::reverse_iterator<const_iterator, std::random_access_iterator_tag,
-              value_type, const_reference, const_iterator, difference_type> const_reverse_iterator;
-#else
-        // workaround for broken reverse_iterator implementations
-        typedef std::reverse_iterator<iterator,T> reverse_iterator;
-        typedef std::reverse_iterator<const_iterator,T> const_reverse_iterator;
-#endif
-
-        reverse_iterator rbegin() { return reverse_iterator(end()); }
-        const_reverse_iterator rbegin() const {
-            return const_reverse_iterator(end());
-        }
-        const_reverse_iterator crbegin() const {
-            return const_reverse_iterator(end());
-        }
-
-        reverse_iterator rend() { return reverse_iterator(begin()); }
-        const_reverse_iterator rend() const {
-            return const_reverse_iterator(begin());
-        }
-        const_reverse_iterator crend() const {
-            return const_reverse_iterator(begin());
-        }
-
-        // operator[]
-        reference operator[](size_type i) 
-        { 
-            return BOOST_ASSERT_MSG( i < N, "out of range" ), elems[i]; 
-        }
-        
-        /*BOOST_CONSTEXPR*/ const_reference operator[](size_type i) const 
-        {     
-            return BOOST_ASSERT_MSG( i < N, "out of range" ), elems[i]; 
-        }
-
-        // at() with range check
-        reference                           at(size_type i)       { return rangecheck(i), elems[i]; }
-        /*BOOST_CONSTEXPR*/ const_reference at(size_type i) const { return rangecheck(i), elems[i]; }
-    
-        // front() and back()
-        reference front() 
-        { 
-            return elems[0]; 
-        }
-        
-        BOOST_CONSTEXPR const_reference front() const 
-        {
-            return elems[0];
-        }
-        
-        reference back() 
-        { 
-            return elems[N-1]; 
-        }
-        
-        BOOST_CONSTEXPR const_reference back() const 
-        { 
-            return elems[N-1]; 
-        }
-
-        // size is constant
-        static BOOST_CONSTEXPR size_type size() { return N; }
-        static BOOST_CONSTEXPR bool empty() { return false; }
-        static BOOST_CONSTEXPR size_type max_size() { return N; }
-        enum { static_size = N };
-
-        // swap (note: linear complexity)
-        void swap (array<T,N>& y) {
-            for (size_type i = 0; i < N; ++i)
-                boost::swap(elems[i],y.elems[i]);
-        }
-
-        // direct access to data (read-only)
-        const T* data() const { return elems; }
-        T* data() { return elems; }
-
-        // use array as C array (direct read/write access to data)
-        T* c_array() { return elems; }
-
-        // assignment with type conversion
-        template <typename T2>
-        array<T,N>& operator= (const array<T2,N>& rhs) {
-            std::copy(rhs.begin(),rhs.end(), begin());
-            return *this;
-        }
-
-        // assign one value to all elements
-        void assign (const T& value) { fill ( value ); }    // A synonym for fill
-        void fill   (const T& value)
-        {
-            std::fill_n(begin(),size(),value);
-        }
-
-        // check range (may be private because it is static)
-        static BOOST_CONSTEXPR bool rangecheck (size_type i) {
-            return i >= size() ? boost::throw_exception(std::out_of_range ("array<>: index out of range")), true : true;
-        }
-
-    };
-
-    template< class T >
-    class array< T, 0 > {
-
-      public:
-        // type definitions
-        typedef T              value_type;
-        typedef T*             iterator;
-        typedef const T*       const_iterator;
-        typedef T&             reference;
-        typedef const T&       const_reference;
-        typedef std::size_t    size_type;
-        typedef std::ptrdiff_t difference_type;
-
-        // iterator support
-        iterator        begin()       { return       iterator( reinterpret_cast<       T * >( this ) ); }
-        const_iterator  begin() const { return const_iterator( reinterpret_cast< const T * >( this ) ); }
-        const_iterator cbegin() const { return const_iterator( reinterpret_cast< const T * >( this ) ); }
-
-        iterator        end()       { return  begin(); }
-        const_iterator  end() const { return  begin(); }
-        const_iterator cend() const { return cbegin(); }
-
-        // reverse iterator support
-#if !defined(BOOST_MSVC_STD_ITERATOR) && !defined(BOOST_NO_STD_ITERATOR_TRAITS)
-        typedef std::reverse_iterator<iterator> reverse_iterator;
-        typedef std::reverse_iterator<const_iterator> const_reverse_iterator;
-#elif defined(_RWSTD_NO_CLASS_PARTIAL_SPEC) 
-        typedef std::reverse_iterator<iterator, std::random_access_iterator_tag, 
-              value_type, reference, iterator, difference_type> reverse_iterator; 
-        typedef std::reverse_iterator<const_iterator, std::random_access_iterator_tag,
-              value_type, const_reference, const_iterator, difference_type> const_reverse_iterator;
-#else
-        // workaround for broken reverse_iterator implementations
-        typedef std::reverse_iterator<iterator,T> reverse_iterator;
-        typedef std::reverse_iterator<const_iterator,T> const_reverse_iterator;
-#endif
-
-        reverse_iterator rbegin() { return reverse_iterator(end()); }
-        const_reverse_iterator rbegin() const {
-            return const_reverse_iterator(end());
-        }
-        const_reverse_iterator crbegin() const {
-            return const_reverse_iterator(end());
-        }
-
-        reverse_iterator rend() { return reverse_iterator(begin()); }
-        const_reverse_iterator rend() const {
-            return const_reverse_iterator(begin());
-        }
-        const_reverse_iterator crend() const {
-            return const_reverse_iterator(begin());
-        }
-
-        // operator[]
-        reference operator[](size_type /*i*/)
-        {
-            return failed_rangecheck();
-        }
-
-        /*BOOST_CONSTEXPR*/ const_reference operator[](size_type /*i*/) const
-        {
-            return failed_rangecheck();
-        }
-
-        // at() with range check
-        reference at(size_type /*i*/)               {   return failed_rangecheck(); }
-        /*BOOST_CONSTEXPR*/ const_reference at(size_type /*i*/) const   { return failed_rangecheck(); }
-
-        // front() and back()
-        reference front()
-        {
-            return failed_rangecheck();
-        }
-
-        BOOST_CONSTEXPR const_reference front() const
-        {
-            return failed_rangecheck();
-        }
-
-        reference back()
-        {
-            return failed_rangecheck();
-        }
-
-        BOOST_CONSTEXPR const_reference back() const
-        {
-            return failed_rangecheck();
-        }
-
-        // size is constant
-        static BOOST_CONSTEXPR size_type size() { return 0; }
-        static BOOST_CONSTEXPR bool empty() { return true; }
-        static BOOST_CONSTEXPR size_type max_size() { return 0; }
-        enum { static_size = 0 };
-
-        void swap (array<T,0>& /*y*/) {
-        }
-
-        // direct access to data (read-only)
-        const T* data() const { return 0; }
-        T* data() { return 0; }
-
-        // use array as C array (direct read/write access to data)
-        T* c_array() { return 0; }
-
-        // assignment with type conversion
-        template <typename T2>
-        array<T,0>& operator= (const array<T2,0>& ) {
-            return *this;
-        }
-
-        // assign one value to all elements
-        void assign (const T& value) { fill ( value ); }
-        void fill   (const T& ) {}
-        
-        // check range (may be private because it is static)
-        static reference failed_rangecheck () {
-                std::out_of_range e("attempt to access element of an empty array");
-                boost::throw_exception(e);
-#if defined(BOOST_NO_EXCEPTIONS) || (!defined(BOOST_MSVC) && !defined(__PATHSCALE__))
-                //
-                // We need to return something here to keep
-                // some compilers happy: however we will never
-                // actually get here....
-                //
-                static T placeholder;
-                return placeholder;
-#endif
-            }
-    };
-
-    // comparisons
-    template<class T, std::size_t N>
-    bool operator== (const array<T,N>& x, const array<T,N>& y) {
-        return std::equal(x.begin(), x.end(), y.begin());
-    }
-    template<class T, std::size_t N>
-    bool operator< (const array<T,N>& x, const array<T,N>& y) {
-        return std::lexicographical_compare(x.begin(),x.end(),y.begin(),y.end());
-    }
-    template<class T, std::size_t N>
-    bool operator!= (const array<T,N>& x, const array<T,N>& y) {
-        return !(x==y);
-    }
-    template<class T, std::size_t N>
-    bool operator> (const array<T,N>& x, const array<T,N>& y) {
-        return y<x;
-    }
-    template<class T, std::size_t N>
-    bool operator<= (const array<T,N>& x, const array<T,N>& y) {
-        return !(y<x);
-    }
-    template<class T, std::size_t N>
-    bool operator>= (const array<T,N>& x, const array<T,N>& y) {
-        return !(x<y);
-    }
-
-    // global swap()
-    template<class T, std::size_t N>
-    inline void swap (array<T,N>& x, array<T,N>& y) {
-        x.swap(y);
-    }
-
-#if defined(__SUNPRO_CC)
-//  Trac ticket #4757; the Sun Solaris compiler can't handle
-//  syntax like 'T(&get_c_array(boost::array<T,N>& arg))[N]'
-//  
-//  We can't just use this for all compilers, because the 
-//      borland compilers can't handle this form. 
-    namespace detail {
-       template <typename T, std::size_t N> struct c_array
-       {
-           typedef T type[N];
-       };
-    }
-    
-   // Specific for boost::array: simply returns its elems data member.
-   template <typename T, std::size_t N>
-   typename detail::c_array<T,N>::type& get_c_array(boost::array<T,N>& arg)
-   {
-       return arg.elems;
-   }
-
-   // Specific for boost::array: simply returns its elems data member.
-   template <typename T, std::size_t N>
-   typename detail::c_array<T,N>::type const& get_c_array(const boost::array<T,N>& arg)
-   {
-       return arg.elems;
-   }
-#else
-// Specific for boost::array: simply returns its elems data member.
-    template <typename T, std::size_t N>
-    T(&get_c_array(boost::array<T,N>& arg))[N]
-    {
-        return arg.elems;
-    }
-    
-    // Const version.
-    template <typename T, std::size_t N>
-    const T(&get_c_array(const boost::array<T,N>& arg))[N]
-    {
-        return arg.elems;
-    }
-#endif
-    
-#if 0
-    // Overload for std::array, assuming that std::array will have
-    // explicit conversion functions as discussed at the WG21 meeting
-    // in Summit, March 2009.
-    template <typename T, std::size_t N>
-    T(&get_c_array(std::array<T,N>& arg))[N]
-    {
-        return static_cast<T(&)[N]>(arg);
-    }
-    
-    // Const version.
-    template <typename T, std::size_t N>
-    const T(&get_c_array(const std::array<T,N>& arg))[N]
-    {
-        return static_cast<T(&)[N]>(arg);
-    }
-#endif
-
-    template <class It> std::size_t hash_range(It, It);
-
-    template<class T, std::size_t N>
-    std::size_t hash_value(const array<T,N>& arr)
-    {
-        return boost::hash_range(arr.begin(), arr.end());
-    }
-
-   template <size_t Idx, typename T, size_t N>
-   T &get(boost::array<T,N> &arr) BOOST_NOEXCEPT {
-       BOOST_STATIC_ASSERT_MSG ( Idx < N, "boost::get<>(boost::array &) index out of range" );
-       return arr[Idx];
-       }
-    
-   template <size_t Idx, typename T, size_t N>
-   const T &get(const boost::array<T,N> &arr) BOOST_NOEXCEPT {
-       BOOST_STATIC_ASSERT_MSG ( Idx < N, "boost::get<>(const boost::array &) index out of range" );
-       return arr[Idx];
-       }
-
-} /* namespace boost */
-
-#ifndef BOOST_NO_CXX11_HDR_ARRAY
-//  If we don't have std::array, I'm assuming that we don't have std::get
-namespace std {
-   template <size_t Idx, typename T, size_t N>
-   T &get(boost::array<T,N> &arr) BOOST_NOEXCEPT {
-       BOOST_STATIC_ASSERT_MSG ( Idx < N, "std::get<>(boost::array &) index out of range" );
-       return arr[Idx];
-       }
-    
-   template <size_t Idx, typename T, size_t N>
-   const T &get(const boost::array<T,N> &arr) BOOST_NOEXCEPT {
-       BOOST_STATIC_ASSERT_MSG ( Idx < N, "std::get<>(const boost::array &) index out of range" );
-       return arr[Idx];
-       }
-}
-#endif
-
-#if BOOST_WORKAROUND(BOOST_MSVC, >= 1400)  
-# pragma warning(pop)  
-#endif 
-
-#endif /*BOOST_ARRAY_HPP*/
diff --git a/third_party/boost/boost/assert.hpp b/third_party/boost/boost/assert.hpp
deleted file mode 100644
index 9650d7a..0000000
--- a/third_party/boost/boost/assert.hpp
+++ /dev/null
@@ -1,85 +0,0 @@
-//
-//  boost/assert.hpp - BOOST_ASSERT(expr)
-//                     BOOST_ASSERT_MSG(expr, msg)
-//                     BOOST_VERIFY(expr)
-//                     BOOST_VERIFY_MSG(expr, msg)
-//                     BOOST_ASSERT_IS_VOID
-//
-//  Copyright (c) 2001, 2002 Peter Dimov and Multi Media Ltd.
-//  Copyright (c) 2007, 2014 Peter Dimov
-//  Copyright (c) Beman Dawes 2011
-//  Copyright (c) 2015 Ion Gaztanaga
-//
-//  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
-//
-//  Note: There are no include guards. This is intentional.
-//
-//  See http://www.boost.org/libs/assert/assert.html for documentation.
-//
-
-//
-// Stop inspect complaining about use of 'assert':
-//
-// boostinspect:naassert_macro
-//
-
-//
-// BOOST_ASSERT, BOOST_ASSERT_MSG, BOOST_ASSERT_IS_VOID
-//
-
-#undef BOOST_ASSERT
-#undef BOOST_ASSERT_MSG
-#undef BOOST_ASSERT_IS_VOID
-
-#if defined(BOOST_DISABLE_ASSERTS) || ( defined(BOOST_ENABLE_ASSERT_DEBUG_HANDLER) && defined(NDEBUG) )
-
-# define BOOST_ASSERT(expr) ((void)0)
-# define BOOST_ASSERT_MSG(expr, msg) ((void)0)
-# define BOOST_ASSERT_IS_VOID
-
-#elif defined(BOOST_ENABLE_ASSERT_HANDLER) || ( defined(BOOST_ENABLE_ASSERT_DEBUG_HANDLER) && !defined(NDEBUG) )
-
-#include <boost/config.hpp> // for BOOST_LIKELY
-#include <boost/current_function.hpp>
-
-namespace boost
-{
-    void assertion_failed(char const * expr, char const * function, char const * file, long line); // user defined
-    void assertion_failed_msg(char const * expr, char const * msg, char const * function, char const * file, long line); // user defined
-} // namespace boost
-
-#define BOOST_ASSERT(expr) (BOOST_LIKELY(!!(expr))? ((void)0): ::boost::assertion_failed(#expr, BOOST_CURRENT_FUNCTION, __FILE__, __LINE__))
-#define BOOST_ASSERT_MSG(expr, msg) (BOOST_LIKELY(!!(expr))? ((void)0): ::boost::assertion_failed_msg(#expr, msg, BOOST_CURRENT_FUNCTION, __FILE__, __LINE__))
-
-#else
-
-# include <assert.h> // .h to support old libraries w/o <cassert> - effect is the same
-
-# define BOOST_ASSERT(expr) assert(expr)
-# define BOOST_ASSERT_MSG(expr, msg) assert((expr)&&(msg))
-#if defined(NDEBUG)
-# define BOOST_ASSERT_IS_VOID
-#endif
-
-#endif
-
-//
-// BOOST_VERIFY, BOOST_VERIFY_MSG
-//
-
-#undef BOOST_VERIFY
-#undef BOOST_VERIFY_MSG
-
-#if defined(BOOST_DISABLE_ASSERTS) || ( !defined(BOOST_ENABLE_ASSERT_HANDLER) && defined(NDEBUG) )
-
-# define BOOST_VERIFY(expr) ((void)(expr))
-# define BOOST_VERIFY_MSG(expr, msg) ((void)(expr))
-
-#else
-
-# define BOOST_VERIFY(expr) BOOST_ASSERT(expr)
-# define BOOST_VERIFY_MSG(expr, msg) BOOST_ASSERT_MSG(expr,msg)
-
-#endif
diff --git a/third_party/boost/boost/config.hpp b/third_party/boost/boost/config.hpp
deleted file mode 100644
index f00a980..0000000
--- a/third_party/boost/boost/config.hpp
+++ /dev/null
@@ -1,67 +0,0 @@
-//  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/third_party/boost/boost/config/abi/borland_prefix.hpp b/third_party/boost/boost/config/abi/borland_prefix.hpp
deleted file mode 100644
index 3a0e5ae..0000000
--- a/third_party/boost/boost/config/abi/borland_prefix.hpp
+++ /dev/null
@@ -1,27 +0,0 @@
-//  (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/third_party/boost/boost/config/abi/borland_suffix.hpp b/third_party/boost/boost/config/abi/borland_suffix.hpp
deleted file mode 100644
index 940535f..0000000
--- a/third_party/boost/boost/config/abi/borland_suffix.hpp
+++ /dev/null
@@ -1,12 +0,0 @@
-//  (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/third_party/boost/boost/config/abi/msvc_prefix.hpp b/third_party/boost/boost/config/abi/msvc_prefix.hpp
deleted file mode 100644
index 97f06cd..0000000
--- a/third_party/boost/boost/config/abi/msvc_prefix.hpp
+++ /dev/null
@@ -1,22 +0,0 @@
-//  (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/third_party/boost/boost/config/abi/msvc_suffix.hpp b/third_party/boost/boost/config/abi/msvc_suffix.hpp
deleted file mode 100644
index a64d783..0000000
--- a/third_party/boost/boost/config/abi/msvc_suffix.hpp
+++ /dev/null
@@ -1,8 +0,0 @@
-//  (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/third_party/boost/boost/config/abi_prefix.hpp b/third_party/boost/boost/config/abi_prefix.hpp
deleted file mode 100644
index 3b13474..0000000
--- a/third_party/boost/boost/config/abi_prefix.hpp
+++ /dev/null
@@ -1,25 +0,0 @@
-//  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/third_party/boost/boost/config/abi_suffix.hpp b/third_party/boost/boost/config/abi_suffix.hpp
deleted file mode 100644
index 9391616..0000000
--- a/third_party/boost/boost/config/abi_suffix.hpp
+++ /dev/null
@@ -1,27 +0,0 @@
-//  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/third_party/boost/boost/config/auto_link.hpp b/third_party/boost/boost/config/auto_link.hpp
deleted file mode 100644
index d0079d9..0000000
--- a/third_party/boost/boost/config/auto_link.hpp
+++ /dev/null
@@ -1,479 +0,0 @@
-//  (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.
-BOOST_AUTO_LINK_SYSTEM:   Specifies that we link to libraries built with the --layout=system option.
-                          This is essentially the same as the non-name-mangled version, but with
-                          the prefix to differentiate static and dll builds
-
-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) && (BOOST_MSVC < 1920)
-
-     // vc14.1:
-#    define BOOST_LIB_TOOLSET "vc141"
-
-#  elif defined(BOOST_MSVC)
-
-     // vc14.2:
-#    define BOOST_LIB_TOOLSET "vc142"
-
-#  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 BOOST_LIB_ARCH_AND_MODEL_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 BOOST_LIB_ARCH_AND_MODEL_OPT ".lib")
-#  endif
-#elif defined(BOOST_AUTO_LINK_SYSTEM)
-#  pragma comment(lib, BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) ".lib")
-#  ifdef BOOST_LIB_DIAGNOSTIC
-#     pragma message ("Linking to lib file: " BOOST_LIB_PREFIX BOOST_STRINGIZE(BOOST_LIB_NAME) ".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/third_party/boost/boost/config/compiler/borland.hpp b/third_party/boost/boost/config/compiler/borland.hpp
deleted file mode 100644
index beec946..0000000
--- a/third_party/boost/boost/config/compiler/borland.hpp
+++ /dev/null
@@ -1,335 +0,0 @@
-//  (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 "boost: Unknown compiler version - please run the configure tests and report the results"
-//#  else
-//#     pragma message( "boost: 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/third_party/boost/boost/config/compiler/clang.hpp b/third_party/boost/boost/config/compiler/clang.hpp
deleted file mode 100644
index 52b23d9..0000000
--- a/third_party/boost/boost/config/compiler/clang.hpp
+++ /dev/null
@@ -1,348 +0,0 @@
-// (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
-
-#if (defined(linux) || defined(__linux) || defined(__linux__) || defined(__GNU__) || defined(__GLIBC__)) && !defined(_CRAYC)
-#if (__clang_major__ >= 4) && defined(__has_include)
-#if __has_include(<quadmath.h>)
-#  define BOOST_HAS_FLOAT128
-#endif
-#endif
-#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_VISIBLE __attribute__((__visibility__("default")))
-#  define BOOST_SYMBOL_IMPORT
-#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) && (_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/third_party/boost/boost/config/compiler/codegear.hpp b/third_party/boost/boost/config/compiler/codegear.hpp
deleted file mode 100644
index 52531d2..0000000
--- a/third_party/boost/boost/config/compiler/codegear.hpp
+++ /dev/null
@@ -1,239 +0,0 @@
-//  (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 "boost: Unknown compiler version - please run the configure tests and report the results"
-#  else
-#     pragma message( "boost: 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/third_party/boost/boost/config/compiler/comeau.hpp b/third_party/boost/boost/config/compiler/comeau.hpp
deleted file mode 100644
index ca80fac..0000000
--- a/third_party/boost/boost/config/compiler/comeau.hpp
+++ /dev/null
@@ -1,59 +0,0 @@
-//  (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 "boost: Unknown compiler version - please run the configure tests and report the results"
-#  endif
-#endif
-
-
-
-
diff --git a/third_party/boost/boost/config/compiler/common_edg.hpp b/third_party/boost/boost/config/compiler/common_edg.hpp
deleted file mode 100644
index 88aba9a..0000000
--- a/third_party/boost/boost/config/compiler/common_edg.hpp
+++ /dev/null
@@ -1,160 +0,0 @@
-//  (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/third_party/boost/boost/config/compiler/compaq_cxx.hpp b/third_party/boost/boost/config/compiler/compaq_cxx.hpp
deleted file mode 100644
index 4d6b8ab..0000000
--- a/third_party/boost/boost/config/compiler/compaq_cxx.hpp
+++ /dev/null
@@ -1,19 +0,0 @@
-//  (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/third_party/boost/boost/config/compiler/cray.hpp b/third_party/boost/boost/config/compiler/cray.hpp
deleted file mode 100644
index 412ef9e..0000000
--- a/third_party/boost/boost/config/compiler/cray.hpp
+++ /dev/null
@@ -1,440 +0,0 @@
-//  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/third_party/boost/boost/config/compiler/diab.hpp b/third_party/boost/boost/config/compiler/diab.hpp
deleted file mode 100644
index 943db83..0000000
--- a/third_party/boost/boost/config/compiler/diab.hpp
+++ /dev/null
@@ -1,26 +0,0 @@
-//  (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/third_party/boost/boost/config/compiler/digitalmars.hpp b/third_party/boost/boost/config/compiler/digitalmars.hpp
deleted file mode 100644
index 1466373..0000000
--- a/third_party/boost/boost/config/compiler/digitalmars.hpp
+++ /dev/null
@@ -1,140 +0,0 @@
-//  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 "boost: Unknown compiler version - please run the configure tests and report the results"
-#  endif
-#endif
diff --git a/third_party/boost/boost/config/compiler/gcc.hpp b/third_party/boost/boost/config/compiler/gcc.hpp
deleted file mode 100644
index 9ae6072..0000000
--- a/third_party/boost/boost/config/compiler/gcc.hpp
+++ /dev/null
@@ -1,361 +0,0 @@
-//  (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_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)
-// Note that while constexpr is partly supported in gcc-4.6 it's a 
-// pre-std version with several bugs:
-#  define BOOST_NO_CXX11_CONSTEXPR
-#  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 8.1:
-#if (BOOST_GCC_VERSION > 80100)
-#  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 "boost: Unknown compiler version - please run the configure tests and report the results"
-#  endif
-#endif
-
diff --git a/third_party/boost/boost/config/compiler/gcc_xml.hpp b/third_party/boost/boost/config/compiler/gcc_xml.hpp
deleted file mode 100644
index bdba4ed..0000000
--- a/third_party/boost/boost/config/compiler/gcc_xml.hpp
+++ /dev/null
@@ -1,111 +0,0 @@
-//  (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/third_party/boost/boost/config/compiler/greenhills.hpp b/third_party/boost/boost/config/compiler/greenhills.hpp
deleted file mode 100644
index 39112c2..0000000
--- a/third_party/boost/boost/config/compiler/greenhills.hpp
+++ /dev/null
@@ -1,28 +0,0 @@
-//  (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 "boost: Unknown compiler version - please run the configure tests and report the results"
-#  endif
-#endif
-
-
diff --git a/third_party/boost/boost/config/compiler/hp_acc.hpp b/third_party/boost/boost/config/compiler/hp_acc.hpp
deleted file mode 100644
index 49d676f..0000000
--- a/third_party/boost/boost/config/compiler/hp_acc.hpp
+++ /dev/null
@@ -1,147 +0,0 @@
-//  (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 "boost: Unknown compiler version - please run the configure tests and report the results"
-#  endif
-#endif
diff --git a/third_party/boost/boost/config/compiler/intel.hpp b/third_party/boost/boost/config/compiler/intel.hpp
deleted file mode 100644
index f56807d..0000000
--- a/third_party/boost/boost/config/compiler/intel.hpp
+++ /dev/null
@@ -1,569 +0,0 @@
-//  (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
-#undef BOOST_FALLTHROUGH
-
-// 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
-
-#if (__INTEL_COMPILER >= 1800) && (__cplusplus >= 201703)
-#  define BOOST_FALLTHROUGH [[fallthrough]]
-#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("boost: Unknown compiler version - please run the configure tests and report the results")
-#  endif
-#endif
-
diff --git a/third_party/boost/boost/config/compiler/kai.hpp b/third_party/boost/boost/config/compiler/kai.hpp
deleted file mode 100644
index 0b22ec1..0000000
--- a/third_party/boost/boost/config/compiler/kai.hpp
+++ /dev/null
@@ -1,33 +0,0 @@
-//  (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 "boost: Unknown compiler version - please run the configure tests and report the results"
-#  endif
-#endif
-
-
-
diff --git a/third_party/boost/boost/config/compiler/metrowerks.hpp b/third_party/boost/boost/config/compiler/metrowerks.hpp
deleted file mode 100644
index 0e18e18..0000000
--- a/third_party/boost/boost/config/compiler/metrowerks.hpp
+++ /dev/null
@@ -1,195 +0,0 @@
-//  (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 "boost: Unknown compiler version - please run the configure tests and report the results"
-#  endif
-#endif
-
-
-
-
-
-
-
diff --git a/third_party/boost/boost/config/compiler/mpw.hpp b/third_party/boost/boost/config/compiler/mpw.hpp
deleted file mode 100644
index 05c066e..0000000
--- a/third_party/boost/boost/config/compiler/mpw.hpp
+++ /dev/null
@@ -1,137 +0,0 @@
-//  (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 "boost: Unknown compiler version - please run the configure tests and report the results"
-#  endif
-#endif
-
-
diff --git a/third_party/boost/boost/config/compiler/nvcc.hpp b/third_party/boost/boost/config/compiler/nvcc.hpp
deleted file mode 100644
index ed035fc..0000000
--- a/third_party/boost/boost/config/compiler/nvcc.hpp
+++ /dev/null
@@ -1,58 +0,0 @@
-//  (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/third_party/boost/boost/config/compiler/pathscale.hpp b/third_party/boost/boost/config/compiler/pathscale.hpp
deleted file mode 100644
index 1318d27..0000000
--- a/third_party/boost/boost/config/compiler/pathscale.hpp
+++ /dev/null
@@ -1,135 +0,0 @@
-//  (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/third_party/boost/boost/config/compiler/pgi.hpp b/third_party/boost/boost/config/compiler/pgi.hpp
deleted file mode 100644
index 4e909d8..0000000
--- a/third_party/boost/boost/config/compiler/pgi.hpp
+++ /dev/null
@@ -1,23 +0,0 @@
-//  (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/third_party/boost/boost/config/compiler/sgi_mipspro.hpp b/third_party/boost/boost/config/compiler/sgi_mipspro.hpp
deleted file mode 100644
index 54433c9..0000000
--- a/third_party/boost/boost/config/compiler/sgi_mipspro.hpp
+++ /dev/null
@@ -1,29 +0,0 @@
-//  (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/third_party/boost/boost/config/compiler/sunpro_cc.hpp b/third_party/boost/boost/config/compiler/sunpro_cc.hpp
deleted file mode 100644
index 41b7bca..0000000
--- a/third_party/boost/boost/config/compiler/sunpro_cc.hpp
+++ /dev/null
@@ -1,213 +0,0 @@
-//  (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/third_party/boost/boost/config/compiler/vacpp.hpp b/third_party/boost/boost/config/compiler/vacpp.hpp
deleted file mode 100644
index 8e26449..0000000
--- a/third_party/boost/boost/config/compiler/vacpp.hpp
+++ /dev/null
@@ -1,183 +0,0 @@
-//  (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 "boost: 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/third_party/boost/boost/config/compiler/visualc.hpp b/third_party/boost/boost/config/compiler/visualc.hpp
deleted file mode 100644
index 2964247..0000000
--- a/third_party/boost/boost/config/compiler/visualc.hpp
+++ /dev/null
@@ -1,359 +0,0 @@
-//  (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
-#  define BOOST_NO_CXX17_HDR_OPTIONAL
-#  define BOOST_NO_CXX17_HDR_STRING_VIEW
-#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
-#if (_MSC_VER < 1915) || (_MSVC_LANG < 201402)
-// C++ 14:
-// Still gives internal compiler error for msvc-15.5:
-#  define BOOST_NO_CXX14_CONSTEXPR
-#endif
-// 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 "boost: Unknown EVC++ compiler version - please run the configure tests and report the results"
-#      else
-#         pragma message("boost: 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 "boost: Unknown EVC++ compiler version - please run the configure tests and report the results"
-#      else
-#         pragma message("boost: 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/third_party/boost/boost/config/compiler/xlcpp.hpp b/third_party/boost/boost/config/compiler/xlcpp.hpp
deleted file mode 100644
index ee7aa12..0000000
--- a/third_party/boost/boost/config/compiler/xlcpp.hpp
+++ /dev/null
@@ -1,285 +0,0 @@
-// (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/third_party/boost/boost/config/compiler/xlcpp_zos.hpp b/third_party/boost/boost/config/compiler/xlcpp_zos.hpp
deleted file mode 100644
index eb1bf2e..0000000
--- a/third_party/boost/boost/config/compiler/xlcpp_zos.hpp
+++ /dev/null
@@ -1,170 +0,0 @@
-//  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/third_party/boost/boost/config/detail/posix_features.hpp b/third_party/boost/boost/config/detail/posix_features.hpp
deleted file mode 100644
index d129547..0000000
--- a/third_party/boost/boost/config/detail/posix_features.hpp
+++ /dev/null
@@ -1,95 +0,0 @@
-//  (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/third_party/boost/boost/config/detail/select_compiler_config.hpp b/third_party/boost/boost/config/detail/select_compiler_config.hpp
deleted file mode 100644
index 8970dff..0000000
--- a/third_party/boost/boost/config/detail/select_compiler_config.hpp
+++ /dev/null
@@ -1,157 +0,0 @@
-//  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(__ibmxl__)
-//  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/third_party/boost/boost/config/detail/select_platform_config.hpp b/third_party/boost/boost/config/detail/select_platform_config.hpp
deleted file mode 100644
index b36eca5..0000000
--- a/third_party/boost/boost/config/detail/select_platform_config.hpp
+++ /dev/null
@@ -1,142 +0,0 @@
-//  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/third_party/boost/boost/config/detail/select_stdlib_config.hpp b/third_party/boost/boost/config/detail/select_stdlib_config.hpp
deleted file mode 100644
index 8db778c..0000000
--- a/third_party/boost/boost/config/detail/select_stdlib_config.hpp
+++ /dev/null
@@ -1,110 +0,0 @@
-//  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/third_party/boost/boost/config/detail/suffix.hpp b/third_party/boost/boost/config/detail/suffix.hpp
deleted file mode 100644
index cee9647..0000000
--- a/third_party/boost/boost/config/detail/suffix.hpp
+++ /dev/null
@@ -1,1049 +0,0 @@
-//  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
-
-// This is a catch all case for obsolete compilers / std libs:
-#if !defined(__has_include)
-#  define BOOST_NO_CXX17_HDR_OPTIONAL
-#  define BOOST_NO_CXX17_HDR_STRING_VIEW
-#else
-#if !__has_include(<optional>)
-#  define BOOST_NO_CXX17_HDR_OPTIONAL
-#endif
-#if !__has_include(<string_view>)
-#  define BOOST_NO_CXX17_HDR_STRING_VIEW
-#endif
-#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/third_party/boost/boost/config/header_deprecated.hpp b/third_party/boost/boost/config/header_deprecated.hpp
deleted file mode 100644
index 864554f..0000000
--- a/third_party/boost/boost/config/header_deprecated.hpp
+++ /dev/null
@@ -1,26 +0,0 @@
-#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/third_party/boost/boost/config/helper_macros.hpp b/third_party/boost/boost/config/helper_macros.hpp
deleted file mode 100644
index 3e79526..0000000
--- a/third_party/boost/boost/config/helper_macros.hpp
+++ /dev/null
@@ -1,37 +0,0 @@
-#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/third_party/boost/boost/config/no_tr1/cmath.hpp b/third_party/boost/boost/config/no_tr1/cmath.hpp
deleted file mode 100644
index d8268d8..0000000
--- a/third_party/boost/boost/config/no_tr1/cmath.hpp
+++ /dev/null
@@ -1,28 +0,0 @@
-//  (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/third_party/boost/boost/config/no_tr1/complex.hpp b/third_party/boost/boost/config/no_tr1/complex.hpp
deleted file mode 100644
index ca20092..0000000
--- a/third_party/boost/boost/config/no_tr1/complex.hpp
+++ /dev/null
@@ -1,28 +0,0 @@
-//  (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/third_party/boost/boost/config/no_tr1/functional.hpp b/third_party/boost/boost/config/no_tr1/functional.hpp
deleted file mode 100644
index e395efc..0000000
--- a/third_party/boost/boost/config/no_tr1/functional.hpp
+++ /dev/null
@@ -1,28 +0,0 @@
-//  (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/third_party/boost/boost/config/no_tr1/memory.hpp b/third_party/boost/boost/config/no_tr1/memory.hpp
deleted file mode 100644
index 2b5d208..0000000
--- a/third_party/boost/boost/config/no_tr1/memory.hpp
+++ /dev/null
@@ -1,28 +0,0 @@
-//  (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/third_party/boost/boost/config/no_tr1/utility.hpp b/third_party/boost/boost/config/no_tr1/utility.hpp
deleted file mode 100644
index dea8f11..0000000
--- a/third_party/boost/boost/config/no_tr1/utility.hpp
+++ /dev/null
@@ -1,28 +0,0 @@
-//  (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/third_party/boost/boost/config/platform/aix.hpp b/third_party/boost/boost/config/platform/aix.hpp
deleted file mode 100644
index a48e232..0000000
--- a/third_party/boost/boost/config/platform/aix.hpp
+++ /dev/null
@@ -1,33 +0,0 @@
-//  (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/third_party/boost/boost/config/platform/amigaos.hpp b/third_party/boost/boost/config/platform/amigaos.hpp
deleted file mode 100644
index 34bcf41..0000000
--- a/third_party/boost/boost/config/platform/amigaos.hpp
+++ /dev/null
@@ -1,15 +0,0 @@
-//  (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/third_party/boost/boost/config/platform/beos.hpp b/third_party/boost/boost/config/platform/beos.hpp
deleted file mode 100644
index 6158c1c..0000000
--- a/third_party/boost/boost/config/platform/beos.hpp
+++ /dev/null
@@ -1,26 +0,0 @@
-//  (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/third_party/boost/boost/config/platform/bsd.hpp b/third_party/boost/boost/config/platform/bsd.hpp
deleted file mode 100644
index 79e74a0..0000000
--- a/third_party/boost/boost/config/platform/bsd.hpp
+++ /dev/null
@@ -1,86 +0,0 @@
-//  (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/third_party/boost/boost/config/platform/cloudabi.hpp b/third_party/boost/boost/config/platform/cloudabi.hpp
deleted file mode 100644
index bed7b63..0000000
--- a/third_party/boost/boost/config/platform/cloudabi.hpp
+++ /dev/null
@@ -1,18 +0,0 @@
-//       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/third_party/boost/boost/config/platform/cray.hpp b/third_party/boost/boost/config/platform/cray.hpp
deleted file mode 100644
index 103e9c0..0000000
--- a/third_party/boost/boost/config/platform/cray.hpp
+++ /dev/null
@@ -1,18 +0,0 @@
-//  (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/third_party/boost/boost/config/platform/cygwin.hpp b/third_party/boost/boost/config/platform/cygwin.hpp
deleted file mode 100644
index d0052d8..0000000
--- a/third_party/boost/boost/config/platform/cygwin.hpp
+++ /dev/null
@@ -1,71 +0,0 @@
-//  (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
-
-#include <cygwin/version.h>
-#if (CYGWIN_VERSION_API_MAJOR == 0 && CYGWIN_VERSION_API_MINOR < 231)
-/// Cygwin has no fenv.h
-#define BOOST_NO_FENV_H
-#endif
-
-// 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/third_party/boost/boost/config/platform/haiku.hpp b/third_party/boost/boost/config/platform/haiku.hpp
deleted file mode 100644
index 04244c5..0000000
--- a/third_party/boost/boost/config/platform/haiku.hpp
+++ /dev/null
@@ -1,31 +0,0 @@
-//  (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/third_party/boost/boost/config/platform/hpux.hpp b/third_party/boost/boost/config/platform/hpux.hpp
deleted file mode 100644
index 222622e..0000000
--- a/third_party/boost/boost/config/platform/hpux.hpp
+++ /dev/null
@@ -1,87 +0,0 @@
-//  (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/third_party/boost/boost/config/platform/irix.hpp b/third_party/boost/boost/config/platform/irix.hpp
deleted file mode 100644
index 0acb651..0000000
--- a/third_party/boost/boost/config/platform/irix.hpp
+++ /dev/null
@@ -1,31 +0,0 @@
-//  (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/third_party/boost/boost/config/platform/linux.hpp b/third_party/boost/boost/config/platform/linux.hpp
deleted file mode 100644
index c4eef8f..0000000
--- a/third_party/boost/boost/config/platform/linux.hpp
+++ /dev/null
@@ -1,106 +0,0 @@
-//  (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/third_party/boost/boost/config/platform/macos.hpp b/third_party/boost/boost/config/platform/macos.hpp
deleted file mode 100644
index ed7dc15..0000000
--- a/third_party/boost/boost/config/platform/macos.hpp
+++ /dev/null
@@ -1,87 +0,0 @@
-//  (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/third_party/boost/boost/config/platform/qnxnto.hpp b/third_party/boost/boost/config/platform/qnxnto.hpp
deleted file mode 100644
index d0298cb..0000000
--- a/third_party/boost/boost/config/platform/qnxnto.hpp
+++ /dev/null
@@ -1,31 +0,0 @@
-//  (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/third_party/boost/boost/config/platform/solaris.hpp b/third_party/boost/boost/config/platform/solaris.hpp
deleted file mode 100644
index 51ffe67f..0000000
--- a/third_party/boost/boost/config/platform/solaris.hpp
+++ /dev/null
@@ -1,31 +0,0 @@
-//  (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/third_party/boost/boost/config/platform/symbian.hpp b/third_party/boost/boost/config/platform/symbian.hpp
deleted file mode 100644
index f814d00..0000000
--- a/third_party/boost/boost/config/platform/symbian.hpp
+++ /dev/null
@@ -1,97 +0,0 @@
-//  (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/third_party/boost/boost/config/platform/vms.hpp b/third_party/boost/boost/config/platform/vms.hpp
deleted file mode 100644
index f70efcf..0000000
--- a/third_party/boost/boost/config/platform/vms.hpp
+++ /dev/null
@@ -1,25 +0,0 @@
-//  (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/third_party/boost/boost/config/platform/vxworks.hpp b/third_party/boost/boost/config/platform/vxworks.hpp
deleted file mode 100644
index a91e4ab..0000000
--- a/third_party/boost/boost/config/platform/vxworks.hpp
+++ /dev/null
@@ -1,433 +0,0 @@
-//  (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/third_party/boost/boost/config/platform/win32.hpp b/third_party/boost/boost/config/platform/win32.hpp
deleted file mode 100644
index 450158f..0000000
--- a/third_party/boost/boost/config/platform/win32.hpp
+++ /dev/null
@@ -1,90 +0,0 @@
-//  (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/third_party/boost/boost/config/platform/zos.hpp b/third_party/boost/boost/config/platform/zos.hpp
deleted file mode 100644
index fa77999..0000000
--- a/third_party/boost/boost/config/platform/zos.hpp
+++ /dev/null
@@ -1,32 +0,0 @@
-//  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/third_party/boost/boost/config/pragma_message.hpp b/third_party/boost/boost/config/pragma_message.hpp
deleted file mode 100644
index b2c5ff2..0000000
--- a/third_party/boost/boost/config/pragma_message.hpp
+++ /dev/null
@@ -1,31 +0,0 @@
-#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/third_party/boost/boost/config/requires_threads.hpp b/third_party/boost/boost/config/requires_threads.hpp
deleted file mode 100644
index cfaff23..0000000
--- a/third_party/boost/boost/config/requires_threads.hpp
+++ /dev/null
@@ -1,92 +0,0 @@
-//  (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/third_party/boost/boost/config/stdlib/dinkumware.hpp b/third_party/boost/boost/config/stdlib/dinkumware.hpp
deleted file mode 100644
index e829f08..0000000
--- a/third_party/boost/boost/config/stdlib/dinkumware.hpp
+++ /dev/null
@@ -1,258 +0,0 @@
-//  (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/third_party/boost/boost/config/stdlib/libcomo.hpp b/third_party/boost/boost/config/stdlib/libcomo.hpp
deleted file mode 100644
index 75ac2bb..0000000
--- a/third_party/boost/boost/config/stdlib/libcomo.hpp
+++ /dev/null
@@ -1,92 +0,0 @@
-//  (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/third_party/boost/boost/config/stdlib/libcpp.hpp b/third_party/boost/boost/config/stdlib/libcpp.hpp
deleted file mode 100644
index ffe2f2a..0000000
--- a/third_party/boost/boost/config/stdlib/libcpp.hpp
+++ /dev/null
@@ -1,143 +0,0 @@
-//  (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
-#  define BOOST_NO_CXX17_HDR_OPTIONAL
-#  define BOOST_NO_CXX17_HDR_STRING_VIEW
-#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__) && (_LIBCPP_VERSION < 6000) && !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`.
-//
-// clang's libc++abi provides an implementation by deferring to the glibc
-// implementation, which may or may not be available (it is not on Trusty).
-// clang 4's libc++abi will provide an implementation if one is not in glibc
-// though, so thread local support should work with clang 4 and above as long
-// as libc++abi is linked in.
-#  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
-
-#if !defined(BOOST_NO_CXX14_HDR_SHARED_MUTEX) && (_LIBCPP_VERSION < 5000)
-#  define BOOST_NO_CXX14_HDR_SHARED_MUTEX
-#endif
-
-//  --- end ---
diff --git a/third_party/boost/boost/config/stdlib/libstdcpp3.hpp b/third_party/boost/boost/config/stdlib/libstdcpp3.hpp
deleted file mode 100644
index 38209dd..0000000
--- a/third_party/boost/boost/config/stdlib/libstdcpp3.hpp
+++ /dev/null
@@ -1,349 +0,0 @@
-//  (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
-#  define BOOST_NO_CXX17_HDR_OPTIONAL
-#  define BOOST_NO_CXX17_HDR_STRING_VIEW
-#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/third_party/boost/boost/config/stdlib/modena.hpp b/third_party/boost/boost/config/stdlib/modena.hpp
deleted file mode 100644
index 81919e0..0000000
--- a/third_party/boost/boost/config/stdlib/modena.hpp
+++ /dev/null
@@ -1,78 +0,0 @@
-//  (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/third_party/boost/boost/config/stdlib/msl.hpp b/third_party/boost/boost/config/stdlib/msl.hpp
deleted file mode 100644
index 0e2e2af..0000000
--- a/third_party/boost/boost/config/stdlib/msl.hpp
+++ /dev/null
@@ -1,97 +0,0 @@
-//  (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/third_party/boost/boost/config/stdlib/roguewave.hpp b/third_party/boost/boost/config/stdlib/roguewave.hpp
deleted file mode 100644
index df60215..0000000
--- a/third_party/boost/boost/config/stdlib/roguewave.hpp
+++ /dev/null
@@ -1,207 +0,0 @@
-//  (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/third_party/boost/boost/config/stdlib/sgi.hpp b/third_party/boost/boost/config/stdlib/sgi.hpp
deleted file mode 100644
index 0c8ab2e..0000000
--- a/third_party/boost/boost/config/stdlib/sgi.hpp
+++ /dev/null
@@ -1,167 +0,0 @@
-//  (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/third_party/boost/boost/config/stdlib/stlport.hpp b/third_party/boost/boost/config/stdlib/stlport.hpp
deleted file mode 100644
index 2e304e2..0000000
--- a/third_party/boost/boost/config/stdlib/stlport.hpp
+++ /dev/null
@@ -1,257 +0,0 @@
-//  (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/third_party/boost/boost/config/stdlib/vacpp.hpp b/third_party/boost/boost/config/stdlib/vacpp.hpp
deleted file mode 100644
index c4e1fb1..0000000
--- a/third_party/boost/boost/config/stdlib/vacpp.hpp
+++ /dev/null
@@ -1,73 +0,0 @@
-//  (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/third_party/boost/boost/config/stdlib/xlcpp_zos.hpp b/third_party/boost/boost/config/stdlib/xlcpp_zos.hpp
deleted file mode 100644
index 4d5beb1..0000000
--- a/third_party/boost/boost/config/stdlib/xlcpp_zos.hpp
+++ /dev/null
@@ -1,60 +0,0 @@
-//  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/third_party/boost/boost/config/user.hpp b/third_party/boost/boost/config/user.hpp
deleted file mode 100644
index 28e7476..0000000
--- a/third_party/boost/boost/config/user.hpp
+++ /dev/null
@@ -1,133 +0,0 @@
-//  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/third_party/boost/boost/config/warning_disable.hpp b/third_party/boost/boost/config/warning_disable.hpp
deleted file mode 100644
index fea8e82..0000000
--- a/third_party/boost/boost/config/warning_disable.hpp
+++ /dev/null
@@ -1,47 +0,0 @@
-//  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/third_party/boost/boost/config/workaround.hpp b/third_party/boost/boost/config/workaround.hpp
deleted file mode 100644
index fca8f3a..0000000
--- a/third_party/boost/boost/config/workaround.hpp
+++ /dev/null
@@ -1,279 +0,0 @@
-// 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/third_party/boost/boost/container_hash/hash_fwd.hpp b/third_party/boost/boost/container_hash/hash_fwd.hpp
deleted file mode 100644
index a87c182..0000000
--- a/third_party/boost/boost/container_hash/hash_fwd.hpp
+++ /dev/null
@@ -1,36 +0,0 @@
-
-// Copyright 2005-2009 Daniel James.
-// 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)
-
-//  Based on Peter Dimov's proposal
-//  http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2005/n1756.pdf
-//  issue 6.18. 
-
-#if !defined(BOOST_FUNCTIONAL_HASH_FWD_HPP)
-#define BOOST_FUNCTIONAL_HASH_FWD_HPP
-
-#include <boost/config/workaround.hpp>
-#include <cstddef>
-
-#if defined(BOOST_HAS_PRAGMA_ONCE)
-#pragma once
-#endif
-
-
-namespace boost
-{
-    template <class T> struct hash;
-
-    template <class T> void hash_combine(std::size_t& seed, T const& v);
-
-    template <class It> std::size_t hash_range(It, It);
-    template <class It> void hash_range(std::size_t&, It, It);
-
-#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x551))
-    template <class T> inline std::size_t hash_range(T*, T*);
-    template <class T> inline void hash_range(std::size_t&, T*, T*);
-#endif
-}
-
-#endif
diff --git a/third_party/boost/boost/core/demangle.hpp b/third_party/boost/boost/core/demangle.hpp
deleted file mode 100644
index dc714d8..0000000
--- a/third_party/boost/boost/core/demangle.hpp
+++ /dev/null
@@ -1,126 +0,0 @@
-#ifndef BOOST_CORE_DEMANGLE_HPP_INCLUDED
-#define BOOST_CORE_DEMANGLE_HPP_INCLUDED
-
-// core::demangle
-//
-// Copyright 2014 Peter Dimov
-// Copyright 2014 Andrey Semashev
-//
-// 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.hpp>
-#include <string>
-
-#if defined(BOOST_HAS_PRAGMA_ONCE)
-# pragma once
-#endif
-
-// __has_include is currently supported by GCC and Clang. However GCC 4.9 may have issues and
-// returns 1 for 'defined( __has_include )', while '__has_include' is actually not supported:
-// https://gcc.gnu.org/bugzilla/show_bug.cgi?id=63662
-#if defined( __has_include ) && (!defined( BOOST_GCC ) || (__GNUC__ + 0) >= 5)
-# if __has_include(<cxxabi.h>)
-#  define BOOST_CORE_HAS_CXXABI_H
-# endif
-#elif defined( __GLIBCXX__ ) || defined( __GLIBCPP__ )
-# define BOOST_CORE_HAS_CXXABI_H
-#endif
-
-#if defined( BOOST_CORE_HAS_CXXABI_H )
-# include <cxxabi.h>
-// For some archtectures (mips, mips64, x86, x86_64) cxxabi.h in Android NDK is implemented by gabi++ library
-// (https://android.googlesource.com/platform/ndk/+/master/sources/cxx-stl/gabi++/), which does not implement
-// abi::__cxa_demangle(). We detect this implementation by checking the include guard here.
-# if defined( __GABIXX_CXXABI_H__ )
-#  undef BOOST_CORE_HAS_CXXABI_H
-# else
-#  include <cstdlib>
-#  include <cstddef>
-# endif
-#endif
-
-namespace boost
-{
-
-namespace core
-{
-
-inline char const * demangle_alloc( char const * name ) BOOST_NOEXCEPT;
-inline void demangle_free( char const * name ) BOOST_NOEXCEPT;
-
-class scoped_demangled_name
-{
-private:
-    char const * m_p;
-
-public:
-    explicit scoped_demangled_name( char const * name ) BOOST_NOEXCEPT :
-        m_p( demangle_alloc( name ) )
-    {
-    }
-
-    ~scoped_demangled_name() BOOST_NOEXCEPT
-    {
-        demangle_free( m_p );
-    }
-
-    char const * get() const BOOST_NOEXCEPT
-    {
-        return m_p;
-    }
-
-    BOOST_DELETED_FUNCTION(scoped_demangled_name( scoped_demangled_name const& ))
-    BOOST_DELETED_FUNCTION(scoped_demangled_name& operator= ( scoped_demangled_name const& ))
-};
-
-
-#if defined( BOOST_CORE_HAS_CXXABI_H )
-
-inline char const * demangle_alloc( char const * name ) BOOST_NOEXCEPT
-{
-    int status = 0;
-    std::size_t size = 0;
-    return abi::__cxa_demangle( name, NULL, &size, &status );
-}
-
-inline void demangle_free( char const * name ) BOOST_NOEXCEPT
-{
-    std::free( const_cast< char* >( name ) );
-}
-
-inline std::string demangle( char const * name )
-{
-    scoped_demangled_name demangled_name( name );
-    char const * p = demangled_name.get();
-    if( !p )
-        p = name;
-    return p;
-}
-
-#else
-
-inline char const * demangle_alloc( char const * name ) BOOST_NOEXCEPT
-{
-    return name;
-}
-
-inline void demangle_free( char const * ) BOOST_NOEXCEPT
-{
-}
-
-inline std::string demangle( char const * name )
-{
-    return name;
-}
-
-#endif
-
-} // namespace core
-
-} // namespace boost
-
-#undef BOOST_CORE_HAS_CXXABI_H
-
-#endif // #ifndef BOOST_CORE_DEMANGLE_HPP_INCLUDED
diff --git a/third_party/boost/boost/core/enable_if.hpp b/third_party/boost/boost/core/enable_if.hpp
deleted file mode 100644
index 5dcef1e..0000000
--- a/third_party/boost/boost/core/enable_if.hpp
+++ /dev/null
@@ -1,128 +0,0 @@
-// Boost enable_if library
-
-// Copyright 2003 (c) The Trustees of Indiana University.
-
-// 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)
-
-//    Authors: Jaakko Jarvi (jajarvi at osl.iu.edu)
-//             Jeremiah Willcock (jewillco at osl.iu.edu)
-//             Andrew Lumsdaine (lums at osl.iu.edu)
-
-
-#ifndef BOOST_CORE_ENABLE_IF_HPP
-#define BOOST_CORE_ENABLE_IF_HPP
-
-#include "boost/config.hpp"
-
-// Even the definition of enable_if causes problems on some compilers,
-// so it's macroed out for all compilers that do not support SFINAE
-
-#ifndef BOOST_NO_SFINAE
-
-namespace boost
-{
-  template<typename T, typename R=void>
-  struct enable_if_has_type
-  {
-    typedef R type;
-  };
- 
-  template <bool B, class T = void>
-  struct enable_if_c {
-    typedef T type;
-  };
-
-  template <class T>
-  struct enable_if_c<false, T> {};
-
-  template <class Cond, class T = void> 
-  struct enable_if : public enable_if_c<Cond::value, T> {};
-
-  template <bool B, class T>
-  struct lazy_enable_if_c {
-    typedef typename T::type type;
-  };
-
-  template <class T>
-  struct lazy_enable_if_c<false, T> {};
-
-  template <class Cond, class T> 
-  struct lazy_enable_if : public lazy_enable_if_c<Cond::value, T> {};
-
-
-  template <bool B, class T = void>
-  struct disable_if_c {
-    typedef T type;
-  };
-
-  template <class T>
-  struct disable_if_c<true, T> {};
-
-  template <class Cond, class T = void> 
-  struct disable_if : public disable_if_c<Cond::value, T> {};
-
-  template <bool B, class T>
-  struct lazy_disable_if_c {
-    typedef typename T::type type;
-  };
-
-  template <class T>
-  struct lazy_disable_if_c<true, T> {};
-
-  template <class Cond, class T> 
-  struct lazy_disable_if : public lazy_disable_if_c<Cond::value, T> {};
-
-} // namespace boost
-
-#else
-
-namespace boost {
-
-  namespace detail { typedef void enable_if_default_T; }
-
-  template <typename T>
-  struct enable_if_does_not_work_on_this_compiler;
-
-  template<typename T, typename R=void>
-  struct enable_if_has_type : enable_if_does_not_work_on_this_compiler<T>
-  { };
-
-  template <bool B, class T = detail::enable_if_default_T>
-  struct enable_if_c : enable_if_does_not_work_on_this_compiler<T>
-  { };
-
-  template <bool B, class T = detail::enable_if_default_T> 
-  struct disable_if_c : enable_if_does_not_work_on_this_compiler<T>
-  { };
-
-  template <bool B, class T = detail::enable_if_default_T> 
-  struct lazy_enable_if_c : enable_if_does_not_work_on_this_compiler<T>
-  { };
-
-  template <bool B, class T = detail::enable_if_default_T> 
-  struct lazy_disable_if_c : enable_if_does_not_work_on_this_compiler<T>
-  { };
-
-  template <class Cond, class T = detail::enable_if_default_T> 
-  struct enable_if : enable_if_does_not_work_on_this_compiler<T>
-  { };
-
-  template <class Cond, class T = detail::enable_if_default_T> 
-  struct disable_if : enable_if_does_not_work_on_this_compiler<T>
-  { };
-
-  template <class Cond, class T = detail::enable_if_default_T> 
-  struct lazy_enable_if : enable_if_does_not_work_on_this_compiler<T>
-  { };
-
-  template <class Cond, class T = detail::enable_if_default_T> 
-  struct lazy_disable_if : enable_if_does_not_work_on_this_compiler<T>
-  { };
-
-} // namespace boost
-
-#endif // BOOST_NO_SFINAE
-
-#endif
diff --git a/third_party/boost/boost/core/explicit_operator_bool.hpp b/third_party/boost/boost/core/explicit_operator_bool.hpp
deleted file mode 100644
index d689f11..0000000
--- a/third_party/boost/boost/core/explicit_operator_bool.hpp
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- *          Copyright Andrey Semashev 2007 - 2013.
- * 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)
- */
-
-/*!
- * \file   explicit_operator_bool.hpp
- * \author Andrey Semashev
- * \date   08.03.2009
- *
- * This header defines a compatibility macro that implements an unspecified
- * \c bool operator idiom, which is superseded with explicit conversion operators in
- * C++11.
- */
-
-#ifndef BOOST_CORE_EXPLICIT_OPERATOR_BOOL_HPP
-#define BOOST_CORE_EXPLICIT_OPERATOR_BOOL_HPP
-
-#include <boost/config.hpp>
-#include <boost/config/workaround.hpp>
-
-#ifdef BOOST_HAS_PRAGMA_ONCE
-#pragma once
-#endif
-
-#if !defined(BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS)
-
-/*!
- * \brief The macro defines an explicit operator of conversion to \c bool
- *
- * The macro should be used inside the definition of a class that has to
- * support the conversion. The class should also implement <tt>operator!</tt>,
- * in terms of which the conversion operator will be implemented.
- */
-#define BOOST_EXPLICIT_OPERATOR_BOOL()\
-    BOOST_FORCEINLINE explicit operator bool () const\
-    {\
-        return !this->operator! ();\
-    }
-
-/*!
- * \brief The macro defines a noexcept explicit operator of conversion to \c bool
- *
- * The macro should be used inside the definition of a class that has to
- * support the conversion. The class should also implement <tt>operator!</tt>,
- * in terms of which the conversion operator will be implemented.
- */
-#define BOOST_EXPLICIT_OPERATOR_BOOL_NOEXCEPT()\
-    BOOST_FORCEINLINE explicit operator bool () const BOOST_NOEXCEPT\
-    {\
-        return !this->operator! ();\
-    }
-
-#if !BOOST_WORKAROUND(BOOST_GCC, < 40700)
-
-/*!
- * \brief The macro defines a constexpr explicit operator of conversion to \c bool
- *
- * The macro should be used inside the definition of a class that has to
- * support the conversion. The class should also implement <tt>operator!</tt>,
- * in terms of which the conversion operator will be implemented.
- */
-#define BOOST_CONSTEXPR_EXPLICIT_OPERATOR_BOOL()\
-    BOOST_FORCEINLINE BOOST_CONSTEXPR explicit operator bool () const BOOST_NOEXCEPT\
-    {\
-        return !this->operator! ();\
-    }
-
-#else
-
-#define BOOST_CONSTEXPR_EXPLICIT_OPERATOR_BOOL() BOOST_EXPLICIT_OPERATOR_BOOL_NOEXCEPT()
-
-#endif
-
-#else // !defined(BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS)
-
-#if (defined(__SUNPRO_CC) && (__SUNPRO_CC <= 0x530)) && !defined(BOOST_NO_COMPILER_CONFIG)
-// Sun C++ 5.3 can't handle the safe_bool idiom, so don't use it
-#define BOOST_NO_UNSPECIFIED_BOOL
-#endif // (defined(__SUNPRO_CC) && (__SUNPRO_CC <= 0x530)) && !defined(BOOST_NO_COMPILER_CONFIG)
-
-#if !defined(BOOST_NO_UNSPECIFIED_BOOL)
-
-namespace boost {
-
-namespace detail {
-
-#if !defined(_MSC_VER) && !defined(__IBMCPP__)
-
-    struct unspecified_bool
-    {
-        // NOTE TO THE USER: If you see this in error messages then you tried
-        // to apply an unsupported operator on the object that supports
-        // explicit conversion to bool.
-        struct OPERATORS_NOT_ALLOWED;
-        static void true_value(OPERATORS_NOT_ALLOWED*) {}
-    };
-    typedef void (*unspecified_bool_type)(unspecified_bool::OPERATORS_NOT_ALLOWED*);
-
-#else
-
-    // MSVC and VACPP are too eager to convert pointer to function to void* even though they shouldn't
-    struct unspecified_bool
-    {
-        // NOTE TO THE USER: If you see this in error messages then you tried
-        // to apply an unsupported operator on the object that supports
-        // explicit conversion to bool.
-        struct OPERATORS_NOT_ALLOWED;
-        void true_value(OPERATORS_NOT_ALLOWED*) {}
-    };
-    typedef void (unspecified_bool::*unspecified_bool_type)(unspecified_bool::OPERATORS_NOT_ALLOWED*);
-
-#endif
-
-} // namespace detail
-
-} // namespace boost
-
-#define BOOST_EXPLICIT_OPERATOR_BOOL()\
-    BOOST_FORCEINLINE operator boost::detail::unspecified_bool_type () const\
-    {\
-        return (!this->operator! () ? &boost::detail::unspecified_bool::true_value : (boost::detail::unspecified_bool_type)0);\
-    }
-
-#define BOOST_EXPLICIT_OPERATOR_BOOL_NOEXCEPT()\
-    BOOST_FORCEINLINE operator boost::detail::unspecified_bool_type () const BOOST_NOEXCEPT\
-    {\
-        return (!this->operator! () ? &boost::detail::unspecified_bool::true_value : (boost::detail::unspecified_bool_type)0);\
-    }
-
-#define BOOST_CONSTEXPR_EXPLICIT_OPERATOR_BOOL()\
-    BOOST_FORCEINLINE BOOST_CONSTEXPR operator boost::detail::unspecified_bool_type () const BOOST_NOEXCEPT\
-    {\
-        return (!this->operator! () ? &boost::detail::unspecified_bool::true_value : (boost::detail::unspecified_bool_type)0);\
-    }
-
-#else // !defined(BOOST_NO_UNSPECIFIED_BOOL)
-
-#define BOOST_EXPLICIT_OPERATOR_BOOL()\
-    BOOST_FORCEINLINE operator bool () const\
-    {\
-        return !this->operator! ();\
-    }
-
-#define BOOST_EXPLICIT_OPERATOR_BOOL_NOEXCEPT()\
-    BOOST_FORCEINLINE operator bool () const BOOST_NOEXCEPT\
-    {\
-        return !this->operator! ();\
-    }
-
-#define BOOST_CONSTEXPR_EXPLICIT_OPERATOR_BOOL()\
-    BOOST_FORCEINLINE BOOST_CONSTEXPR operator bool () const BOOST_NOEXCEPT\
-    {\
-        return !this->operator! ();\
-    }
-
-#endif // !defined(BOOST_NO_UNSPECIFIED_BOOL)
-
-#endif // !defined(BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS)
-
-#endif // BOOST_CORE_EXPLICIT_OPERATOR_BOOL_HPP
diff --git a/third_party/boost/boost/core/noncopyable.hpp b/third_party/boost/boost/core/noncopyable.hpp
deleted file mode 100644
index 4a4f8ba..0000000
--- a/third_party/boost/boost/core/noncopyable.hpp
+++ /dev/null
@@ -1,63 +0,0 @@
-//  Boost noncopyable.hpp header file  --------------------------------------//
-
-//  (C) Copyright Beman Dawes 1999-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/libs/utility for documentation.
-
-#ifndef BOOST_CORE_NONCOPYABLE_HPP
-#define BOOST_CORE_NONCOPYABLE_HPP
-
-#include <boost/config.hpp>
-
-namespace boost {
-
-//  Private copy constructor and copy assignment ensure classes derived from
-//  class noncopyable cannot be copied.
-
-//  Contributed by Dave Abrahams
-
-namespace noncopyable_  // protection from unintended ADL
-{
-#ifndef BOOST_NONCOPYABLE_BASE_TOKEN_DEFINED
-#define BOOST_NONCOPYABLE_BASE_TOKEN_DEFINED
-
-// noncopyable derives from base_token to enable Type Traits to detect
-// whether a type derives from noncopyable without needing the definition
-// of noncopyable itself.
-//
-// The definition of base_token is macro-guarded so that Type Trais can
-// define it locally without including this header, to avoid a dependency
-// on Core.
-
-  struct base_token {};
-
-#endif // #ifndef BOOST_NONCOPYABLE_BASE_TOKEN_DEFINED
-
-  class noncopyable: base_token
-  {
-  protected:
-#if !defined(BOOST_NO_CXX11_DEFAULTED_FUNCTIONS) && !defined(BOOST_NO_CXX11_NON_PUBLIC_DEFAULTED_FUNCTIONS)
-      BOOST_CONSTEXPR noncopyable() = default;
-      ~noncopyable() = default;
-#else
-      noncopyable() {}
-      ~noncopyable() {}
-#endif
-#if !defined(BOOST_NO_CXX11_DELETED_FUNCTIONS)
-      noncopyable( const noncopyable& ) = delete;
-      noncopyable& operator=( const noncopyable& ) = delete;
-#else
-  private:  // emphasize the following members are private
-      noncopyable( const noncopyable& );
-      noncopyable& operator=( const noncopyable& );
-#endif
-  };
-}
-
-typedef noncopyable_::noncopyable noncopyable;
-
-} // namespace boost
-
-#endif  // BOOST_CORE_NONCOPYABLE_HPP
diff --git a/third_party/boost/boost/core/swap.hpp b/third_party/boost/boost/core/swap.hpp
deleted file mode 100644
index eff6b97..0000000
--- a/third_party/boost/boost/core/swap.hpp
+++ /dev/null
@@ -1,67 +0,0 @@
-// Copyright (C) 2007, 2008 Steven Watanabe, Joseph Gauterin, Niels Dekker
-//
-// 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)
-// For more information, see http://www.boost.org
-
-
-#ifndef BOOST_CORE_SWAP_HPP
-#define BOOST_CORE_SWAP_HPP
-
-// Note: the implementation of this utility contains various workarounds:
-// - swap_impl is put outside the boost namespace, to avoid infinite
-// recursion (causing stack overflow) when swapping objects of a primitive
-// type.
-// - swap_impl has a using-directive, rather than a using-declaration,
-// because some compilers (including MSVC 7.1, Borland 5.9.3, and
-// Intel 8.1) don't do argument-dependent lookup when it has a
-// using-declaration instead.
-// - boost::swap has two template arguments, instead of one, to
-// avoid ambiguity when swapping objects of a Boost type that does
-// not have its own boost::swap overload.
-
-#include <boost/core/enable_if.hpp>
-#include <boost/config.hpp>
-#include <utility> //for std::swap (C++11)
-#include <algorithm> //for std::swap (C++98)
-#include <cstddef> //for std::size_t
-
-namespace boost_swap_impl
-{
-  // we can't use type_traits here
-
-  template<class T> struct is_const { enum _vt { value = 0 }; };
-  template<class T> struct is_const<T const> { enum _vt { value = 1 }; };
-
-  template<class T>
-  BOOST_GPU_ENABLED
-  void swap_impl(T& left, T& right)
-  {
-    using namespace std;//use std::swap if argument dependent lookup fails
-    swap(left,right);
-  }
-
-  template<class T, std::size_t N>
-  BOOST_GPU_ENABLED
-  void swap_impl(T (& left)[N], T (& right)[N])
-  {
-    for (std::size_t i = 0; i < N; ++i)
-    {
-      ::boost_swap_impl::swap_impl(left[i], right[i]);
-    }
-  }
-}
-
-namespace boost
-{
-  template<class T1, class T2>
-  BOOST_GPU_ENABLED
-  typename enable_if_c< !boost_swap_impl::is_const<T1>::value && !boost_swap_impl::is_const<T2>::value >::type
-  swap(T1& left, T2& right)
-  {
-    ::boost_swap_impl::swap_impl(left, right);
-  }
-}
-
-#endif
diff --git a/third_party/boost/boost/current_function.hpp b/third_party/boost/boost/current_function.hpp
deleted file mode 100644
index 731d1b1..0000000
--- a/third_party/boost/boost/current_function.hpp
+++ /dev/null
@@ -1,75 +0,0 @@
-#ifndef BOOST_CURRENT_FUNCTION_HPP_INCLUDED
-#define BOOST_CURRENT_FUNCTION_HPP_INCLUDED
-
-// MS compatible compilers support #pragma once
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-//
-//  boost/current_function.hpp - BOOST_CURRENT_FUNCTION
-//
-//  Copyright 2002-2018 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
-//
-//  http://www.boost.org/libs/assert
-//
-
-namespace boost
-{
-
-namespace detail
-{
-
-inline void current_function_helper()
-{
-
-#if defined( BOOST_DISABLE_CURRENT_FUNCTION )
-
-# define BOOST_CURRENT_FUNCTION "(unknown)"
-
-#elif defined(__GNUC__) || (defined(__MWERKS__) && (__MWERKS__ >= 0x3000)) || (defined(__ICC) && (__ICC >= 600)) || defined(__ghs__) || defined(__clang__)
-
-# define BOOST_CURRENT_FUNCTION __PRETTY_FUNCTION__
-
-#elif defined(__DMC__) && (__DMC__ >= 0x810)
-
-# define BOOST_CURRENT_FUNCTION __PRETTY_FUNCTION__
-
-#elif defined(__FUNCSIG__)
-
-# define BOOST_CURRENT_FUNCTION __FUNCSIG__
-
-#elif (defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 600)) || (defined(__IBMCPP__) && (__IBMCPP__ >= 500))
-
-# define BOOST_CURRENT_FUNCTION __FUNCTION__
-
-#elif defined(__BORLANDC__) && (__BORLANDC__ >= 0x550)
-
-# define BOOST_CURRENT_FUNCTION __FUNC__
-
-#elif defined(__STDC_VERSION__) && (__STDC_VERSION__ >= 199901)
-
-# define BOOST_CURRENT_FUNCTION __func__
-
-#elif defined(__cplusplus) && (__cplusplus >= 201103)
-
-# define BOOST_CURRENT_FUNCTION __func__
-
-#else
-
-# define BOOST_CURRENT_FUNCTION "(unknown)"
-
-#endif
-
-}
-
-} // namespace detail
-
-} // namespace boost
-
-#endif // #ifndef BOOST_CURRENT_FUNCTION_HPP_INCLUDED
diff --git a/third_party/boost/boost/detail/iterator.hpp b/third_party/boost/boost/detail/iterator.hpp
deleted file mode 100644
index 2498ef4..0000000
--- a/third_party/boost/boost/detail/iterator.hpp
+++ /dev/null
@@ -1,39 +0,0 @@
-// (C) 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 ITERATOR_DWA122600_HPP_
-#define ITERATOR_DWA122600_HPP_
-
-// This header is obsolete and will be deprecated.
-
-#include <iterator>
-#if defined(__SUNPRO_CC) && (defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION))
-#include <cstddef>
-#endif
-
-namespace boost
-{
-
-namespace detail
-{
-
-using std::iterator_traits;
-using std::distance;
-
-#if defined(__SUNPRO_CC) && (defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION))
-// std::distance from stlport with Oracle compiler 12.4 and 12.5 fails to deduce template parameters
-// when one of the arguments is an array and the other one is a pointer.
-template< typename T, std::size_t N >
-inline typename std::iterator_traits< T* >::difference_type distance(T (&left)[N], T* right)
-{
-    return std::distance(static_cast< T* >(left), right);
-}
-#endif
-
-} // namespace detail
-
-} // namespace boost
-
-#endif // ITERATOR_DWA122600_HPP_
diff --git a/third_party/boost/boost/detail/workaround.hpp b/third_party/boost/boost/detail/workaround.hpp
deleted file mode 100644
index fb96115..0000000
--- a/third_party/boost/boost/detail/workaround.hpp
+++ /dev/null
@@ -1,10 +0,0 @@
-// 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/third_party/boost/boost/exception/exception.hpp b/third_party/boost/boost/exception/exception.hpp
deleted file mode 100644
index d5c22c4..0000000
--- a/third_party/boost/boost/exception/exception.hpp
+++ /dev/null
@@ -1,525 +0,0 @@
-//Copyright (c) 2006-2009 Emil Dotchevski and Reverge Studios, Inc.
-
-//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 UUID_274DA366004E11DCB1DDFE2E56D89593
-#define UUID_274DA366004E11DCB1DDFE2E56D89593
-
-#include <boost/config.hpp>
-
-#ifdef BOOST_EXCEPTION_MINI_BOOST
-#include  <memory>
-namespace boost { namespace exception_detail { using std::shared_ptr; } }
-#else
-namespace boost { template <class T> class shared_ptr; }
-namespace boost { namespace exception_detail { using boost::shared_ptr; } }
-#endif
-
-#if defined(__GNUC__) && (__GNUC__*100+__GNUC_MINOR__>301) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
-#pragma GCC system_header
-#endif
-#if defined(_MSC_VER) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
-#pragma warning(push,1)
-#endif
-
-namespace
-boost
-    {
-    namespace
-    exception_detail
-        {
-        template <class T>
-        class
-        refcount_ptr
-            {
-            public:
-
-            refcount_ptr():
-                px_(0)
-                {
-                }
-
-            ~refcount_ptr()
-                {
-                release();
-                }
-
-            refcount_ptr( refcount_ptr const & x ):
-                px_(x.px_)
-                {
-                add_ref();
-                }
-
-            refcount_ptr &
-            operator=( refcount_ptr const & x )
-                {
-                adopt(x.px_);
-                return *this;
-                }
-
-            void
-            adopt( T * px )
-                {
-                release();
-                px_=px;
-                add_ref();
-                }
-
-            T *
-            get() const
-                {
-                return px_;
-                }
-
-            private:
-
-            T * px_;
-
-            void
-            add_ref()
-                {
-                if( px_ )
-                    px_->add_ref();
-                }
-
-            void
-            release()
-                {
-                if( px_ && px_->release() )
-                    px_=0;
-                }
-            };
-        }
-
-    ////////////////////////////////////////////////////////////////////////
-
-    template <class Tag,class T>
-    class error_info;
-
-    typedef error_info<struct throw_function_,char const *> throw_function;
-    typedef error_info<struct throw_file_,char const *> throw_file;
-    typedef error_info<struct throw_line_,int> throw_line;
-
-    template <>
-    class
-    error_info<throw_function_,char const *>
-        {
-        public:
-        typedef char const * value_type;
-        value_type v_;
-        explicit
-        error_info( value_type v ):
-            v_(v)
-            {
-            }
-        };
-
-    template <>
-    class
-    error_info<throw_file_,char const *>
-        {
-        public:
-        typedef char const * value_type;
-        value_type v_;
-        explicit
-        error_info( value_type v ):
-            v_(v)
-            {
-            }
-        };
-
-    template <>
-    class
-    error_info<throw_line_,int>
-        {
-        public:
-        typedef int value_type;
-        value_type v_;
-        explicit
-        error_info( value_type v ):
-            v_(v)
-            {
-            }
-        };
-
-    class
-    BOOST_SYMBOL_VISIBLE
-    exception;
-
-    namespace
-    exception_detail
-        {
-        class error_info_base;
-        struct type_info_;
-
-        struct
-        error_info_container
-            {
-            virtual char const * diagnostic_information( char const * ) const = 0;
-            virtual shared_ptr<error_info_base> get( type_info_ const & ) const = 0;
-            virtual void set( shared_ptr<error_info_base> const &, type_info_ const & ) = 0;
-            virtual void add_ref() const = 0;
-            virtual bool release() const = 0;
-            virtual refcount_ptr<exception_detail::error_info_container> clone() const = 0;
-
-            protected:
-
-            ~error_info_container() throw()
-                {
-                }
-            };
-
-        template <class>
-        struct get_info;
-
-        template <>
-        struct get_info<throw_function>;
-
-        template <>
-        struct get_info<throw_file>;
-
-        template <>
-        struct get_info<throw_line>;
-
-        template <class>
-        struct set_info_rv;
-
-        template <>
-        struct set_info_rv<throw_function>;
-
-        template <>
-        struct set_info_rv<throw_file>;
-
-        template <>
-        struct set_info_rv<throw_line>;
-
-        char const * get_diagnostic_information( exception const &, char const * );
-
-        void copy_boost_exception( exception *, exception const * );
-
-        template <class E,class Tag,class T>
-        E const & set_info( E const &, error_info<Tag,T> const & );
-
-        template <class E>
-        E const & set_info( E const &, throw_function const & );
-
-        template <class E>
-        E const & set_info( E const &, throw_file const & );
-
-        template <class E>
-        E const & set_info( E const &, throw_line const & );
-        }
-
-    class
-    BOOST_SYMBOL_VISIBLE
-    exception
-        {
-        //<N3757>
-        public:
-        template <class Tag> void set( typename Tag::type const & );
-        template <class Tag> typename Tag::type const * get() const;
-        //</N3757>
-
-        protected:
-
-        exception():
-            throw_function_(0),
-            throw_file_(0),
-            throw_line_(-1)
-            {
-            }
-
-#ifdef __HP_aCC
-        //On HP aCC, this protected copy constructor prevents throwing boost::exception.
-        //On all other platforms, the same effect is achieved by the pure virtual destructor.
-        exception( exception const & x ) throw():
-            data_(x.data_),
-            throw_function_(x.throw_function_),
-            throw_file_(x.throw_file_),
-            throw_line_(x.throw_line_)
-            {
-            }
-#endif
-
-        virtual ~exception() throw()
-#ifndef __HP_aCC
-            = 0 //Workaround for HP aCC, =0 incorrectly leads to link errors.
-#endif
-            ;
-
-#if (defined(__MWERKS__) && __MWERKS__<=0x3207) || (defined(_MSC_VER) && _MSC_VER<=1310)
-        public:
-#else
-        private:
-
-        template <class E>
-        friend E const & exception_detail::set_info( E const &, throw_function const & );
-
-        template <class E>
-        friend E const & exception_detail::set_info( E const &, throw_file const & );
-
-        template <class E>
-        friend E const & exception_detail::set_info( E const &, throw_line const & );
-
-        template <class E,class Tag,class T>
-        friend E const & exception_detail::set_info( E const &, error_info<Tag,T> const & );
-
-        friend char const * exception_detail::get_diagnostic_information( exception const &, char const * );
-
-        template <class>
-        friend struct exception_detail::get_info;
-        friend struct exception_detail::get_info<throw_function>;
-        friend struct exception_detail::get_info<throw_file>;
-        friend struct exception_detail::get_info<throw_line>;
-        template <class>
-        friend struct exception_detail::set_info_rv;
-        friend struct exception_detail::set_info_rv<throw_function>;
-        friend struct exception_detail::set_info_rv<throw_file>;
-        friend struct exception_detail::set_info_rv<throw_line>;
-        friend void exception_detail::copy_boost_exception( exception *, exception const * );
-#endif
-        mutable exception_detail::refcount_ptr<exception_detail::error_info_container> data_;
-        mutable char const * throw_function_;
-        mutable char const * throw_file_;
-        mutable int throw_line_;
-        };
-
-    inline
-    exception::
-    ~exception() throw()
-        {
-        }
-
-    namespace
-    exception_detail
-        {
-        template <class E>
-        E const &
-        set_info( E const & x, throw_function const & y )
-            {
-            x.throw_function_=y.v_;
-            return x;
-            }
-
-        template <class E>
-        E const &
-        set_info( E const & x, throw_file const & y )
-            {
-            x.throw_file_=y.v_;
-            return x;
-            }
-
-        template <class E>
-        E const &
-        set_info( E const & x, throw_line const & y )
-            {
-            x.throw_line_=y.v_;
-            return x;
-            }
-        }
-
-    ////////////////////////////////////////////////////////////////////////
-
-    namespace
-    exception_detail
-        {
-        template <class T>
-        struct
-        BOOST_SYMBOL_VISIBLE
-        error_info_injector:
-            public T,
-            public exception
-            {
-            explicit
-            error_info_injector( T const & x ):
-                T(x)
-                {
-                }
-
-            ~error_info_injector() throw()
-                {
-                }
-            };
-
-        struct large_size { char c[256]; };
-        large_size dispatch_boost_exception( exception const * );
-
-        struct small_size { };
-        small_size dispatch_boost_exception( void const * );
-
-        template <class,int>
-        struct enable_error_info_helper;
-
-        template <class T>
-        struct
-        enable_error_info_helper<T,sizeof(large_size)>
-            {
-            typedef T type;
-            };
-
-        template <class T>
-        struct
-        enable_error_info_helper<T,sizeof(small_size)>
-            {
-            typedef error_info_injector<T> type;
-            };
-
-        template <class T>
-        struct
-        enable_error_info_return_type
-            {
-            typedef typename enable_error_info_helper<T,sizeof(exception_detail::dispatch_boost_exception(static_cast<T *>(0)))>::type type;
-            };
-        }
-
-    template <class T>
-    inline
-    typename
-    exception_detail::enable_error_info_return_type<T>::type
-    enable_error_info( T const & x )
-        {
-        typedef typename exception_detail::enable_error_info_return_type<T>::type rt;
-        return rt(x);
-        }
-
-    ////////////////////////////////////////////////////////////////////////
-
-    namespace
-    exception_detail
-        {
-        class
-        BOOST_SYMBOL_VISIBLE
-        clone_base
-            {
-            public:
-
-            virtual clone_base const * clone() const = 0;
-            virtual void rethrow() const = 0;
-
-            virtual
-            ~clone_base() throw()
-                {
-                }
-            };
-
-        inline
-        void
-        copy_boost_exception( exception * a, exception const * b )
-            {
-            refcount_ptr<error_info_container> data;
-            if( error_info_container * d=b->data_.get() )
-                data = d->clone();
-            a->throw_file_ = b->throw_file_;
-            a->throw_line_ = b->throw_line_;
-            a->throw_function_ = b->throw_function_;
-            a->data_ = data;
-            }
-
-        inline
-        void
-        copy_boost_exception( void *, void const * )
-            {
-            }
-
-        template <class T>
-        class
-        BOOST_SYMBOL_VISIBLE
-        clone_impl:
-            public T,
-            public virtual clone_base
-            {
-            struct clone_tag { };
-            clone_impl( clone_impl const & x, clone_tag ):
-                T(x)
-                {
-                copy_boost_exception(this,&x);
-                }
-
-            public:
-
-            explicit
-            clone_impl( T const & x ):
-                T(x)
-                {
-                copy_boost_exception(this,&x);
-                }
-
-            ~clone_impl() throw()
-                {
-                }
-
-            private:
-
-            clone_base const *
-            clone() const
-                {
-                return new clone_impl(*this,clone_tag());
-                }
-
-            void
-            rethrow() const
-                {
-                throw*this;
-                }
-            };
-        }
-
-    template <class T>
-    inline
-    exception_detail::clone_impl<T>
-    enable_current_exception( T const & x )
-        {
-        return exception_detail::clone_impl<T>(x);
-        }
-
-    template <class T>
-    struct
-    BOOST_SYMBOL_VISIBLE
-    wrapexcept:
-        public exception_detail::clone_impl<typename exception_detail::enable_error_info_return_type<T>::type>
-        {
-        typedef exception_detail::clone_impl<typename exception_detail::enable_error_info_return_type<T>::type> base_type;
-        public:
-        explicit
-        wrapexcept( typename exception_detail::enable_error_info_return_type<T>::type const & x ):
-            base_type( x )
-            {
-            }
-
-        ~wrapexcept() throw()
-            {
-            }
-        };
-
-    namespace
-    exception_detail
-        {
-        template <class T>
-        struct
-        remove_error_info_injector
-            {
-            typedef T type;
-            };
-
-        template <class T>
-        struct
-        remove_error_info_injector< error_info_injector<T> >
-            {
-            typedef T type;
-            };
-
-        template <class T>
-        inline
-        wrapexcept<typename remove_error_info_injector<T>::type>
-        enable_both( T const & x )
-            {
-            return wrapexcept<typename remove_error_info_injector<T>::type>( enable_error_info( x ) );
-            }
-        }
-    }
-
-#if defined(_MSC_VER) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
-#pragma warning(pop)
-#endif
-#endif
diff --git a/third_party/boost/boost/predef.h b/third_party/boost/boost/predef.h
deleted file mode 100644
index 4965337..0000000
--- a/third_party/boost/boost/predef.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#if !defined(BOOST_PREDEF_H) || defined(BOOST_PREDEF_INTERNAL_GENERATE_TESTS)
-#ifndef BOOST_PREDEF_H
-#define BOOST_PREDEF_H
-#endif
-
-#include <boost/predef/language.h>
-#include <boost/predef/architecture.h>
-#include <boost/predef/compiler.h>
-#include <boost/predef/library.h>
-#include <boost/predef/os.h>
-#include <boost/predef/other.h>
-#include <boost/predef/platform.h>
-#include <boost/predef/hardware.h>
-
-#include <boost/predef/version.h>
-
-#endif
diff --git a/third_party/boost/boost/predef/architecture.h b/third_party/boost/boost/predef/architecture.h
deleted file mode 100644
index 120d557..0000000
--- a/third_party/boost/boost/predef/architecture.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#if !defined(BOOST_PREDEF_ARCHITECTURE_H) || defined(BOOST_PREDEF_INTERNAL_GENERATE_TESTS)
-#ifndef BOOST_PREDEF_ARCHITECTURE_H
-#define BOOST_PREDEF_ARCHITECTURE_H
-#endif
-
-#include <boost/predef/architecture/alpha.h>
-#include <boost/predef/architecture/arm.h>
-#include <boost/predef/architecture/blackfin.h>
-#include <boost/predef/architecture/convex.h>
-#include <boost/predef/architecture/ia64.h>
-#include <boost/predef/architecture/m68k.h>
-#include <boost/predef/architecture/mips.h>
-#include <boost/predef/architecture/parisc.h>
-#include <boost/predef/architecture/ppc.h>
-#include <boost/predef/architecture/ptx.h>
-#include <boost/predef/architecture/pyramid.h>
-#include <boost/predef/architecture/rs6k.h>
-#include <boost/predef/architecture/sparc.h>
-#include <boost/predef/architecture/superh.h>
-#include <boost/predef/architecture/sys370.h>
-#include <boost/predef/architecture/sys390.h>
-#include <boost/predef/architecture/x86.h>
-#include <boost/predef/architecture/z.h>
-/*#include <boost/predef/architecture/.h>*/
-
-#endif
diff --git a/third_party/boost/boost/predef/architecture/alpha.h b/third_party/boost/boost/predef/architecture/alpha.h
deleted file mode 100644
index 5bcade1..0000000
--- a/third_party/boost/boost/predef/architecture/alpha.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_ARCHITECTURE_ALPHA_H
-#define BOOST_PREDEF_ARCHITECTURE_ALPHA_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_ARCH_ALPHA`]
-
-[@http://en.wikipedia.org/wiki/DEC_Alpha DEC Alpha] architecture.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-    [[`__alpha__`] [__predef_detection__]]
-    [[`__alpha`] [__predef_detection__]]
-    [[`_M_ALPHA`] [__predef_detection__]]
-
-    [[`__alpha_ev4__`] [4.0.0]]
-    [[`__alpha_ev5__`] [5.0.0]]
-    [[`__alpha_ev6__`] [6.0.0]]
-    ]
- */
-
-#define BOOST_ARCH_ALPHA BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__alpha__) || defined(__alpha) || \
-    defined(_M_ALPHA)
-#   undef BOOST_ARCH_ALPHA
-#   if !defined(BOOST_ARCH_ALPHA) && defined(__alpha_ev4__)
-#       define BOOST_ARCH_ALPHA BOOST_VERSION_NUMBER(4,0,0)
-#   endif
-#   if !defined(BOOST_ARCH_ALPHA) && defined(__alpha_ev5__)
-#       define BOOST_ARCH_ALPHA BOOST_VERSION_NUMBER(5,0,0)
-#   endif
-#   if !defined(BOOST_ARCH_ALPHA) && defined(__alpha_ev6__)
-#       define BOOST_ARCH_ALPHA BOOST_VERSION_NUMBER(6,0,0)
-#   endif
-#   if !defined(BOOST_ARCH_ALPHA)
-#       define BOOST_ARCH_ALPHA BOOST_VERSION_NUMBER_AVAILABLE
-#   endif
-#endif
-
-#if BOOST_ARCH_ALPHA
-#   define BOOST_ARCH_ALPHA_AVAILABLE
-#endif
-
-#define BOOST_ARCH_ALPHA_NAME "DEC Alpha"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_ALPHA,BOOST_ARCH_ALPHA_NAME)
diff --git a/third_party/boost/boost/predef/architecture/arm.h b/third_party/boost/boost/predef/architecture/arm.h
deleted file mode 100644
index 45a0a8e..0000000
--- a/third_party/boost/boost/predef/architecture/arm.h
+++ /dev/null
@@ -1,133 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2019
-Copyright Franz Detro 2014
-Copyright (c) Microsoft Corporation 2014
-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_PREDEF_ARCHITECTURE_ARM_H
-#define BOOST_PREDEF_ARCHITECTURE_ARM_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_ARCH_ARM`]
-
-[@http://en.wikipedia.org/wiki/ARM_architecture ARM] architecture.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__ARM_ARCH`] [__predef_detection__]]
-    [[`__TARGET_ARCH_ARM`] [__predef_detection__]]
-    [[`__TARGET_ARCH_THUMB`] [__predef_detection__]]
-    [[`_M_ARM`] [__predef_detection__]]
-    [[`__arm__`] [__predef_detection__]]
-    [[`__arm64`] [__predef_detection__]]
-    [[`__thumb__`] [__predef_detection__]]
-    [[`_M_ARM64`] [__predef_detection__]]
-    [[`__aarch64__`] [__predef_detection__]]
-    [[`__AARCH64EL__`] [__predef_detection__]]
-    [[`__ARM_ARCH_7__`] [__predef_detection__]]
-    [[`__ARM_ARCH_7A__`] [__predef_detection__]]
-    [[`__ARM_ARCH_7R__`] [__predef_detection__]]
-    [[`__ARM_ARCH_7M__`] [__predef_detection__]]
-    [[`__ARM_ARCH_6K__`] [__predef_detection__]]
-    [[`__ARM_ARCH_6Z__`] [__predef_detection__]]
-    [[`__ARM_ARCH_6KZ__`] [__predef_detection__]]
-    [[`__ARM_ARCH_6T2__`] [__predef_detection__]]
-    [[`__ARM_ARCH_5TE__`] [__predef_detection__]]
-    [[`__ARM_ARCH_5TEJ__`] [__predef_detection__]]
-    [[`__ARM_ARCH_4T__`] [__predef_detection__]]
-    [[`__ARM_ARCH_4__`] [__predef_detection__]]
-
-    [[`__ARM_ARCH`] [V.0.0]]
-    [[`__TARGET_ARCH_ARM`] [V.0.0]]
-    [[`__TARGET_ARCH_THUMB`] [V.0.0]]
-    [[`_M_ARM`] [V.0.0]]
-    [[`__arm64`] [8.0.0]]
-    [[`_M_ARM64`] [8.0.0]]
-    [[`__aarch64__`] [8.0.0]]
-    [[`__AARCH64EL__`] [8.0.0]]
-    [[`__ARM_ARCH_7__`] [7.0.0]]
-    [[`__ARM_ARCH_7A__`] [7.0.0]]
-    [[`__ARM_ARCH_7R__`] [7.0.0]]
-    [[`__ARM_ARCH_7M__`] [7.0.0]]
-    [[`__ARM_ARCH_6K__`] [6.0.0]]
-    [[`__ARM_ARCH_6Z__`] [6.0.0]]
-    [[`__ARM_ARCH_6KZ__`] [6.0.0]]
-    [[`__ARM_ARCH_6T2__`] [6.0.0]]
-    [[`__ARM_ARCH_5TE__`] [5.0.0]]
-    [[`__ARM_ARCH_5TEJ__`] [5.0.0]]
-    [[`__ARM_ARCH_4T__`] [4.0.0]]
-    [[`__ARM_ARCH_4__`] [4.0.0]]
-    ]
- */
-
-#define BOOST_ARCH_ARM BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if \
-    defined(__ARM_ARCH) || defined(__TARGET_ARCH_ARM) || \
-    defined(__TARGET_ARCH_THUMB) || defined(_M_ARM) || \
-    defined(__arm__) || defined(__arm64) || defined(__thumb__) || \
-    defined(_M_ARM64) || defined(__aarch64__) || defined(__AARCH64EL__) || \
-    defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || \
-    defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) || \
-    defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6Z__) || \
-    defined(__ARM_ARCH_6KZ__) || defined(__ARM_ARCH_6T2__) || \
-    defined(__ARM_ARCH_5TE__) || defined(__ARM_ARCH_5TEJ__) || \
-    defined(__ARM_ARCH_4T__) || defined(__ARM_ARCH_4__)
-#   undef BOOST_ARCH_ARM
-#   if !defined(BOOST_ARCH_ARM) && defined(__ARM_ARCH)
-#       define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(__ARM_ARCH,0,0)
-#   endif
-#   if !defined(BOOST_ARCH_ARM) && defined(__TARGET_ARCH_ARM)
-#       define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(__TARGET_ARCH_ARM,0,0)
-#   endif
-#   if !defined(BOOST_ARCH_ARM) && defined(__TARGET_ARCH_THUMB)
-#       define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(__TARGET_ARCH_THUMB,0,0)
-#   endif
-#   if !defined(BOOST_ARCH_ARM) && defined(_M_ARM)
-#       define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(_M_ARM,0,0)
-#   endif
-#   if !defined(BOOST_ARCH_ARM) && ( \
-        defined(__arm64) || defined(_M_ARM64) || defined(__aarch64__) || \
-        defined(__AARCH64EL__) )
-#       define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(8,0,0)
-#   endif
-#   if !defined(BOOST_ARCH_ARM) && ( \
-    defined(__ARM_ARCH_7__) || defined(__ARM_ARCH_7A__) || \
-    defined(__ARM_ARCH_7R__) || defined(__ARM_ARCH_7M__) )
-#       define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(7,0,0)
-#   endif
-#   if !defined(BOOST_ARCH_ARM) && ( \
-    defined(__ARM_ARCH_6K__) || defined(__ARM_ARCH_6Z__) || \
-    defined(__ARM_ARCH_6KZ__) || defined(__ARM_ARCH_6T2__) )
-#       define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(6,0,0)
-#   endif
-#   if !defined(BOOST_ARCH_ARM) && ( \
-    defined(__ARM_ARCH_5TE__) || defined(__ARM_ARCH_5TEJ__) )
-#       define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(5,0,0)
-#   endif
-#   if !defined(BOOST_ARCH_ARM) && ( \
-    defined(__ARM_ARCH_4T__) || defined(__ARM_ARCH_4__) )
-#       define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(4,0,0)
-#   endif
-#   if !defined(BOOST_ARCH_ARM)
-#       define BOOST_ARCH_ARM BOOST_VERSION_NUMBER_AVAILABLE
-#   endif
-#endif
-
-#if BOOST_ARCH_ARM
-#   define BOOST_ARCH_ARM_AVAILABLE
-#endif
-
-#define BOOST_ARCH_ARM_NAME "ARM"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_ARM,BOOST_ARCH_ARM_NAME)
diff --git a/third_party/boost/boost/predef/architecture/blackfin.h b/third_party/boost/boost/predef/architecture/blackfin.h
deleted file mode 100644
index 84c58a2..0000000
--- a/third_party/boost/boost/predef/architecture/blackfin.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
-Copyright Rene Rivera 2013-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)
-*/
-
-#ifndef BOOST_PREDEF_ARCHITECTURE_BLACKFIN_H
-#define BOOST_PREDEF_ARCHITECTURE_BLACKFIN_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_ARCH_BLACKFIN`]
-
-Blackfin Processors from Analog Devices.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__bfin__`] [__predef_detection__]]
-    [[`__BFIN__`] [__predef_detection__]]
-    [[`bfin`] [__predef_detection__]]
-    [[`BFIN`] [__predef_detection__]]
-    ]
- */
-
-#define BOOST_ARCH_BLACKFIN BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__bfin__) || defined(__BFIN__) || \
-    defined(bfin) || defined(BFIN)
-#   undef BOOST_ARCH_BLACKFIN
-#   define BOOST_ARCH_BLACKFIN BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#if BOOST_ARCH_BLACKFIN
-#   define BOOST_ARCH_BLACKFIN_AVAILABLE
-#endif
-
-#define BOOST_ARCH_BLACKFIN_NAME "Blackfin"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_BLACKFIN,BOOST_ARCH_BLACKFIN_NAME)
diff --git a/third_party/boost/boost/predef/architecture/convex.h b/third_party/boost/boost/predef/architecture/convex.h
deleted file mode 100644
index ac783a9..0000000
--- a/third_party/boost/boost/predef/architecture/convex.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
-Copyright Rene Rivera 2011-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)
-*/
-
-#ifndef BOOST_PREDEF_ARCHITECTURE_CONVEX_H
-#define BOOST_PREDEF_ARCHITECTURE_CONVEX_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_ARCH_CONVEX`]
-
-[@http://en.wikipedia.org/wiki/Convex_Computer Convex Computer] architecture.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__convex__`] [__predef_detection__]]
-
-    [[`__convex_c1__`] [1.0.0]]
-    [[`__convex_c2__`] [2.0.0]]
-    [[`__convex_c32__`] [3.2.0]]
-    [[`__convex_c34__`] [3.4.0]]
-    [[`__convex_c38__`] [3.8.0]]
-    ]
- */
-
-#define BOOST_ARCH_CONVEX BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__convex__)
-#   undef BOOST_ARCH_CONVEX
-#   if !defined(BOOST_ARCH_CONVEX) && defined(__convex_c1__)
-#       define BOOST_ARCH_CONVEX BOOST_VERSION_NUMBER(1,0,0)
-#   endif
-#   if !defined(BOOST_ARCH_CONVEX) && defined(__convex_c2__)
-#       define BOOST_ARCH_CONVEX BOOST_VERSION_NUMBER(2,0,0)
-#   endif
-#   if !defined(BOOST_ARCH_CONVEX) && defined(__convex_c32__)
-#       define BOOST_ARCH_CONVEX BOOST_VERSION_NUMBER(3,2,0)
-#   endif
-#   if !defined(BOOST_ARCH_CONVEX) && defined(__convex_c34__)
-#       define BOOST_ARCH_CONVEX BOOST_VERSION_NUMBER(3,4,0)
-#   endif
-#   if !defined(BOOST_ARCH_CONVEX) && defined(__convex_c38__)
-#       define BOOST_ARCH_CONVEX BOOST_VERSION_NUMBER(3,8,0)
-#   endif
-#   if !defined(BOOST_ARCH_CONVEX)
-#       define BOOST_ARCH_CONVEX BOOST_VERSION_NUMBER_AVAILABLE
-#   endif
-#endif
-
-#if BOOST_ARCH_CONVEX
-#   define BOOST_ARCH_CONVEX_AVAILABLE
-#endif
-
-#define BOOST_ARCH_CONVEX_NAME "Convex Computer"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_CONVEX,BOOST_ARCH_CONVEX_NAME)
diff --git a/third_party/boost/boost/predef/architecture/ia64.h b/third_party/boost/boost/predef/architecture/ia64.h
deleted file mode 100644
index 9b1972b..0000000
--- a/third_party/boost/boost/predef/architecture/ia64.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_ARCHITECTURE_IA64_H
-#define BOOST_PREDEF_ARCHITECTURE_IA64_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_ARCH_IA64`]
-
-[@http://en.wikipedia.org/wiki/Ia64 Intel Itanium 64] architecture.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__ia64__`] [__predef_detection__]]
-    [[`_IA64`] [__predef_detection__]]
-    [[`__IA64__`] [__predef_detection__]]
-    [[`__ia64`] [__predef_detection__]]
-    [[`_M_IA64`] [__predef_detection__]]
-    [[`__itanium__`] [__predef_detection__]]
-    ]
- */
-
-#define BOOST_ARCH_IA64 BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__ia64__) || defined(_IA64) || \
-    defined(__IA64__) || defined(__ia64) || \
-    defined(_M_IA64) || defined(__itanium__)
-#   undef BOOST_ARCH_IA64
-#   define BOOST_ARCH_IA64 BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#if BOOST_ARCH_IA64
-#   define BOOST_ARCH_IA64_AVAILABLE
-#endif
-
-#define BOOST_ARCH_IA64_NAME "Intel Itanium 64"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_IA64,BOOST_ARCH_IA64_NAME)
diff --git a/third_party/boost/boost/predef/architecture/m68k.h b/third_party/boost/boost/predef/architecture/m68k.h
deleted file mode 100644
index 63ed5f8..0000000
--- a/third_party/boost/boost/predef/architecture/m68k.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_ARCHITECTURE_M68K_H
-#define BOOST_PREDEF_ARCHITECTURE_M68K_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_ARCH_M68K`]
-
-[@http://en.wikipedia.org/wiki/M68k Motorola 68k] architecture.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__m68k__`] [__predef_detection__]]
-    [[`M68000`] [__predef_detection__]]
-
-    [[`__mc68060__`] [6.0.0]]
-    [[`mc68060`] [6.0.0]]
-    [[`__mc68060`] [6.0.0]]
-    [[`__mc68040__`] [4.0.0]]
-    [[`mc68040`] [4.0.0]]
-    [[`__mc68040`] [4.0.0]]
-    [[`__mc68030__`] [3.0.0]]
-    [[`mc68030`] [3.0.0]]
-    [[`__mc68030`] [3.0.0]]
-    [[`__mc68020__`] [2.0.0]]
-    [[`mc68020`] [2.0.0]]
-    [[`__mc68020`] [2.0.0]]
-    [[`__mc68010__`] [1.0.0]]
-    [[`mc68010`] [1.0.0]]
-    [[`__mc68010`] [1.0.0]]
-    [[`__mc68000__`] [0.0.1]]
-    [[`mc68000`] [0.0.1]]
-    [[`__mc68000`] [0.0.1]]
-    ]
- */
-
-#define BOOST_ARCH_M68K BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__m68k__) || defined(M68000)
-#   undef BOOST_ARCH_M68K
-#   if !defined(BOOST_ARCH_M68K) && (defined(__mc68060__) || defined(mc68060) || defined(__mc68060))
-#       define BOOST_ARCH_M68K BOOST_VERSION_NUMBER(6,0,0)
-#   endif
-#   if !defined(BOOST_ARCH_M68K) && (defined(__mc68040__) || defined(mc68040) || defined(__mc68040))
-#       define BOOST_ARCH_M68K BOOST_VERSION_NUMBER(4,0,0)
-#   endif
-#   if !defined(BOOST_ARCH_M68K) && (defined(__mc68030__) || defined(mc68030) || defined(__mc68030))
-#       define BOOST_ARCH_M68K BOOST_VERSION_NUMBER(3,0,0)
-#   endif
-#   if !defined(BOOST_ARCH_M68K) && (defined(__mc68020__) || defined(mc68020) || defined(__mc68020))
-#       define BOOST_ARCH_M68K BOOST_VERSION_NUMBER(2,0,0)
-#   endif
-#   if !defined(BOOST_ARCH_M68K) && (defined(__mc68010__) || defined(mc68010) || defined(__mc68010))
-#       define BOOST_ARCH_M68K BOOST_VERSION_NUMBER(1,0,0)
-#   endif
-#   if !defined(BOOST_ARCH_M68K) && (defined(__mc68000__) || defined(mc68000) || defined(__mc68000))
-#       define BOOST_ARCH_M68K BOOST_VERSION_NUMBER_AVAILABLE
-#   endif
-#   if !defined(BOOST_ARCH_M68K)
-#       define BOOST_ARCH_M68K BOOST_VERSION_NUMBER_AVAILABLE
-#   endif
-#endif
-
-#if BOOST_ARCH_M68K
-#   define BOOST_ARCH_M68K_AVAILABLE
-#endif
-
-#define BOOST_ARCH_M68K_NAME "Motorola 68k"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_M68K,BOOST_ARCH_M68K_NAME)
diff --git a/third_party/boost/boost/predef/architecture/mips.h b/third_party/boost/boost/predef/architecture/mips.h
deleted file mode 100644
index 0189d7d..0000000
--- a/third_party/boost/boost/predef/architecture/mips.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_ARCHITECTURE_MIPS_H
-#define BOOST_PREDEF_ARCHITECTURE_MIPS_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_ARCH_MIPS`]
-
-[@http://en.wikipedia.org/wiki/MIPS_architecture MIPS] architecture.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__mips__`] [__predef_detection__]]
-    [[`__mips`] [__predef_detection__]]
-    [[`__MIPS__`] [__predef_detection__]]
-
-    [[`__mips`] [V.0.0]]
-    [[`_MIPS_ISA_MIPS1`] [1.0.0]]
-    [[`_R3000`] [1.0.0]]
-    [[`_MIPS_ISA_MIPS2`] [2.0.0]]
-    [[`__MIPS_ISA2__`] [2.0.0]]
-    [[`_R4000`] [2.0.0]]
-    [[`_MIPS_ISA_MIPS3`] [3.0.0]]
-    [[`__MIPS_ISA3__`] [3.0.0]]
-    [[`_MIPS_ISA_MIPS4`] [4.0.0]]
-    [[`__MIPS_ISA4__`] [4.0.0]]
-    ]
- */
-
-#define BOOST_ARCH_MIPS BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__mips__) || defined(__mips) || \
-    defined(__MIPS__)
-#   undef BOOST_ARCH_MIPS
-#   if !defined(BOOST_ARCH_MIPS) && (defined(__mips))
-#       define BOOST_ARCH_MIPS BOOST_VERSION_NUMBER(__mips,0,0)
-#   endif
-#   if !defined(BOOST_ARCH_MIPS) && (defined(_MIPS_ISA_MIPS1) || defined(_R3000))
-#       define BOOST_ARCH_MIPS BOOST_VERSION_NUMBER(1,0,0)
-#   endif
-#   if !defined(BOOST_ARCH_MIPS) && (defined(_MIPS_ISA_MIPS2) || defined(__MIPS_ISA2__) || defined(_R4000))
-#       define BOOST_ARCH_MIPS BOOST_VERSION_NUMBER(2,0,0)
-#   endif
-#   if !defined(BOOST_ARCH_MIPS) && (defined(_MIPS_ISA_MIPS3) || defined(__MIPS_ISA3__))
-#       define BOOST_ARCH_MIPS BOOST_VERSION_NUMBER(3,0,0)
-#   endif
-#   if !defined(BOOST_ARCH_MIPS) && (defined(_MIPS_ISA_MIPS4) || defined(__MIPS_ISA4__))
-#       define BOOST_ARCH_MIPS BOOST_VERSION_NUMBER(4,0,0)
-#   endif
-#   if !defined(BOOST_ARCH_MIPS)
-#       define BOOST_ARCH_MIPS BOOST_VERSION_NUMBER_AVAILABLE
-#   endif
-#endif
-
-#if BOOST_ARCH_MIPS
-#   define BOOST_ARCH_MIPS_AVAILABLE
-#endif
-
-#define BOOST_ARCH_MIPS_NAME "MIPS"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_MIPS,BOOST_ARCH_MIPS_NAME)
diff --git a/third_party/boost/boost/predef/architecture/parisc.h b/third_party/boost/boost/predef/architecture/parisc.h
deleted file mode 100644
index c75a1f3..0000000
--- a/third_party/boost/boost/predef/architecture/parisc.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_ARCHITECTURE_PARISC_H
-#define BOOST_PREDEF_ARCHITECTURE_PARISC_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_ARCH_PARISC`]
-
-[@http://en.wikipedia.org/wiki/PA-RISC_family HP/PA RISC] architecture.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__hppa__`] [__predef_detection__]]
-    [[`__hppa`] [__predef_detection__]]
-    [[`__HPPA__`] [__predef_detection__]]
-
-    [[`_PA_RISC1_0`] [1.0.0]]
-    [[`_PA_RISC1_1`] [1.1.0]]
-    [[`__HPPA11__`] [1.1.0]]
-    [[`__PA7100__`] [1.1.0]]
-    [[`_PA_RISC2_0`] [2.0.0]]
-    [[`__RISC2_0__`] [2.0.0]]
-    [[`__HPPA20__`] [2.0.0]]
-    [[`__PA8000__`] [2.0.0]]
-    ]
- */
-
-#define BOOST_ARCH_PARISC BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__hppa__) || defined(__hppa) || defined(__HPPA__)
-#   undef BOOST_ARCH_PARISC
-#   if !defined(BOOST_ARCH_PARISC) && (defined(_PA_RISC1_0))
-#       define BOOST_ARCH_PARISC BOOST_VERSION_NUMBER(1,0,0)
-#   endif
-#   if !defined(BOOST_ARCH_PARISC) && (defined(_PA_RISC1_1) || defined(__HPPA11__) || defined(__PA7100__))
-#       define BOOST_ARCH_PARISC BOOST_VERSION_NUMBER(1,1,0)
-#   endif
-#   if !defined(BOOST_ARCH_PARISC) && (defined(_PA_RISC2_0) || defined(__RISC2_0__) || defined(__HPPA20__) || defined(__PA8000__))
-#       define BOOST_ARCH_PARISC BOOST_VERSION_NUMBER(2,0,0)
-#   endif
-#   if !defined(BOOST_ARCH_PARISC)
-#       define BOOST_ARCH_PARISC BOOST_VERSION_NUMBER_AVAILABLE
-#   endif
-#endif
-
-#if BOOST_ARCH_PARISC
-#   define BOOST_ARCH_PARISC_AVAILABLE
-#endif
-
-#define BOOST_ARCH_PARISC_NAME "HP/PA RISC"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_PARISC,BOOST_ARCH_PARISC_NAME)
diff --git a/third_party/boost/boost/predef/architecture/ppc.h b/third_party/boost/boost/predef/architecture/ppc.h
deleted file mode 100644
index e8c57c9..0000000
--- a/third_party/boost/boost/predef/architecture/ppc.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_ARCHITECTURE_PPC_H
-#define BOOST_PREDEF_ARCHITECTURE_PPC_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_ARCH_PPC`]
-
-[@http://en.wikipedia.org/wiki/PowerPC PowerPC] architecture.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__powerpc`] [__predef_detection__]]
-    [[`__powerpc__`] [__predef_detection__]]
-    [[`__POWERPC__`] [__predef_detection__]]
-    [[`__ppc__`] [__predef_detection__]]
-    [[`_M_PPC`] [__predef_detection__]]
-    [[`_ARCH_PPC`] [__predef_detection__]]
-    [[`__PPCGECKO__`] [__predef_detection__]]
-    [[`__PPCBROADWAY__`] [__predef_detection__]]
-    [[`_XENON`] [__predef_detection__]]
-
-    [[`__ppc601__`] [6.1.0]]
-    [[`_ARCH_601`] [6.1.0]]
-    [[`__ppc603__`] [6.3.0]]
-    [[`_ARCH_603`] [6.3.0]]
-    [[`__ppc604__`] [6.4.0]]
-    [[`__ppc604__`] [6.4.0]]
-    ]
- */
-
-#define BOOST_ARCH_PPC BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__powerpc) || defined(__powerpc__) || \
-    defined(__POWERPC__) || defined(__ppc__) || \
-    defined(_M_PPC) || defined(_ARCH_PPC) || \
-    defined(__PPCGECKO__) || defined(__PPCBROADWAY__) || \
-    defined(_XENON)
-#   undef BOOST_ARCH_PPC
-#   if !defined (BOOST_ARCH_PPC) && (defined(__ppc601__) || defined(_ARCH_601))
-#       define BOOST_ARCH_PPC BOOST_VERSION_NUMBER(6,1,0)
-#   endif
-#   if !defined (BOOST_ARCH_PPC) && (defined(__ppc603__) || defined(_ARCH_603))
-#       define BOOST_ARCH_PPC BOOST_VERSION_NUMBER(6,3,0)
-#   endif
-#   if !defined (BOOST_ARCH_PPC) && (defined(__ppc604__) || defined(__ppc604__))
-#       define BOOST_ARCH_PPC BOOST_VERSION_NUMBER(6,4,0)
-#   endif
-#   if !defined (BOOST_ARCH_PPC)
-#       define BOOST_ARCH_PPC BOOST_VERSION_NUMBER_AVAILABLE
-#   endif
-#endif
-
-#if BOOST_ARCH_PPC
-#   define BOOST_ARCH_PPC_AVAILABLE
-#endif
-
-#define BOOST_ARCH_PPC_NAME "PowerPC"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_PPC,BOOST_ARCH_PPC_NAME)
diff --git a/third_party/boost/boost/predef/architecture/ptx.h b/third_party/boost/boost/predef/architecture/ptx.h
deleted file mode 100644
index 335517b..0000000
--- a/third_party/boost/boost/predef/architecture/ptx.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-Copyright Benjamin Worpitz 2018
-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_PREDEF_ARCHITECTURE_PTX_H
-#define BOOST_PREDEF_ARCHITECTURE_PTX_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_ARCH_PTX`]
-
-[@https://en.wikipedia.org/wiki/Parallel_Thread_Execution PTX] architecture.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__CUDA_ARCH__`] [__predef_detection__]]
-
-    [[`__CUDA_ARCH__`] [V.R.0]]
-    ]
- */
-
-#define BOOST_ARCH_PTX BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__CUDA_ARCH__)
-#   undef BOOST_ARCH_PTX
-#   define BOOST_ARCH_PTX BOOST_PREDEF_MAKE_10_VR0(__CUDA_ARCH__)
-#endif
-
-#if BOOST_ARCH_PTX
-#   define BOOST_ARCH_PTX_AVAILABLE
-#endif
-
-#define BOOST_ARCH_PTX_NAME "PTX"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_PTX,BOOST_ARCH_PTX_NAME)
diff --git a/third_party/boost/boost/predef/architecture/pyramid.h b/third_party/boost/boost/predef/architecture/pyramid.h
deleted file mode 100644
index 4f13253..0000000
--- a/third_party/boost/boost/predef/architecture/pyramid.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
-Copyright Rene Rivera 2011-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)
-*/
-
-#ifndef BOOST_PREDEF_ARCHITECTURE_PYRAMID_H
-#define BOOST_PREDEF_ARCHITECTURE_PYRAMID_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_ARCH_PYRAMID`]
-
-Pyramid 9810 architecture.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`pyr`] [__predef_detection__]]
-    ]
- */
-
-#define BOOST_ARCH_PYRAMID BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(pyr)
-#   undef BOOST_ARCH_PYRAMID
-#   define BOOST_ARCH_PYRAMID BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#if BOOST_ARCH_PYRAMID
-#   define BOOST_ARCH_PYRAMID_AVAILABLE
-#endif
-
-#define BOOST_ARCH_PYRAMID_NAME "Pyramid 9810"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_PYRAMID,BOOST_ARCH_PYRAMID_NAME)
diff --git a/third_party/boost/boost/predef/architecture/rs6k.h b/third_party/boost/boost/predef/architecture/rs6k.h
deleted file mode 100644
index 8a6e9b6..0000000
--- a/third_party/boost/boost/predef/architecture/rs6k.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_ARCHITECTURE_RS6K_H
-#define BOOST_PREDEF_ARCHITECTURE_RS6K_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_ARCH_RS6000`]
-
-[@http://en.wikipedia.org/wiki/RS/6000 RS/6000] architecture.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__THW_RS6000`] [__predef_detection__]]
-    [[`_IBMR2`] [__predef_detection__]]
-    [[`_POWER`] [__predef_detection__]]
-    [[`_ARCH_PWR`] [__predef_detection__]]
-    [[`_ARCH_PWR2`] [__predef_detection__]]
-    ]
- */
-
-#define BOOST_ARCH_RS6000 BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__THW_RS6000) || defined(_IBMR2) || \
-    defined(_POWER) || defined(_ARCH_PWR) || \
-    defined(_ARCH_PWR2)
-#   undef BOOST_ARCH_RS6000
-#   define BOOST_ARCH_RS6000 BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#if BOOST_ARCH_RS6000
-#   define BOOST_ARCH_RS6000_AVAILABLE
-#endif
-
-#define BOOST_ARCH_RS6000_NAME "RS/6000"
-
-#define BOOST_ARCH_PWR BOOST_ARCH_RS6000
-
-#if BOOST_ARCH_PWR
-#   define BOOST_ARCH_PWR_AVAILABLE
-#endif
-
-#define BOOST_ARCH_PWR_NAME BOOST_ARCH_RS6000_NAME
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_RS6000,BOOST_ARCH_RS6000_NAME)
diff --git a/third_party/boost/boost/predef/architecture/sparc.h b/third_party/boost/boost/predef/architecture/sparc.h
deleted file mode 100644
index a89a510..0000000
--- a/third_party/boost/boost/predef/architecture/sparc.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_ARCHITECTURE_SPARC_H
-#define BOOST_PREDEF_ARCHITECTURE_SPARC_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_ARCH_SPARC`]
-
-[@http://en.wikipedia.org/wiki/SPARC SPARC] architecture.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__sparc__`] [__predef_detection__]]
-    [[`__sparc`] [__predef_detection__]]
-
-    [[`__sparcv9`] [9.0.0]]
-    [[`__sparcv8`] [8.0.0]]
-    ]
- */
-
-#define BOOST_ARCH_SPARC BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__sparc__) || defined(__sparc)
-#   undef BOOST_ARCH_SPARC
-#   if !defined(BOOST_ARCH_SPARC) && defined(__sparcv9)
-#       define BOOST_ARCH_SPARC BOOST_VERSION_NUMBER(9,0,0)
-#   endif
-#   if !defined(BOOST_ARCH_SPARC) && defined(__sparcv8)
-#       define BOOST_ARCH_SPARC BOOST_VERSION_NUMBER(8,0,0)
-#   endif
-#   if !defined(BOOST_ARCH_SPARC)
-#       define BOOST_ARCH_SPARC BOOST_VERSION_NUMBER_AVAILABLE
-#   endif
-#endif
-
-#if BOOST_ARCH_SPARC
-#   define BOOST_ARCH_SPARC_AVAILABLE
-#endif
-
-#define BOOST_ARCH_SPARC_NAME "SPARC"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_SPARC,BOOST_ARCH_SPARC_NAME)
diff --git a/third_party/boost/boost/predef/architecture/superh.h b/third_party/boost/boost/predef/architecture/superh.h
deleted file mode 100644
index da0529e..0000000
--- a/third_party/boost/boost/predef/architecture/superh.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_ARCHITECTURE_SUPERH_H
-#define BOOST_PREDEF_ARCHITECTURE_SUPERH_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_ARCH_SH`]
-
-[@http://en.wikipedia.org/wiki/SuperH SuperH] architecture:
-If available versions \[1-5\] are specifically detected.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__sh__`] [__predef_detection__]]
-
-    [[`__SH5__`] [5.0.0]]
-    [[`__SH4__`] [4.0.0]]
-    [[`__sh3__`] [3.0.0]]
-    [[`__SH3__`] [3.0.0]]
-    [[`__sh2__`] [2.0.0]]
-    [[`__sh1__`] [1.0.0]]
-    ]
- */
-
-#define BOOST_ARCH_SH BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__sh__)
-#   undef BOOST_ARCH_SH
-#   if !defined(BOOST_ARCH_SH) && (defined(__SH5__))
-#       define BOOST_ARCH_SH BOOST_VERSION_NUMBER(5,0,0)
-#   endif
-#   if !defined(BOOST_ARCH_SH) && (defined(__SH4__))
-#       define BOOST_ARCH_SH BOOST_VERSION_NUMBER(4,0,0)
-#   endif
-#   if !defined(BOOST_ARCH_SH) && (defined(__sh3__) || defined(__SH3__))
-#       define BOOST_ARCH_SH BOOST_VERSION_NUMBER(3,0,0)
-#   endif
-#   if !defined(BOOST_ARCH_SH) && (defined(__sh2__))
-#       define BOOST_ARCH_SH BOOST_VERSION_NUMBER(2,0,0)
-#   endif
-#   if !defined(BOOST_ARCH_SH) && (defined(__sh1__))
-#       define BOOST_ARCH_SH BOOST_VERSION_NUMBER(1,0,0)
-#   endif
-#   if !defined(BOOST_ARCH_SH)
-#       define BOOST_ARCH_SH BOOST_VERSION_NUMBER_AVAILABLE
-#   endif
-#endif
-
-#if BOOST_ARCH_SH
-#   define BOOST_ARCH_SH_AVAILABLE
-#endif
-
-#define BOOST_ARCH_SH_NAME "SuperH"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_SH,BOOST_ARCH_SH_NAME)
diff --git a/third_party/boost/boost/predef/architecture/sys370.h b/third_party/boost/boost/predef/architecture/sys370.h
deleted file mode 100644
index cfd85dc..0000000
--- a/third_party/boost/boost/predef/architecture/sys370.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_ARCHITECTURE_SYS370_H
-#define BOOST_PREDEF_ARCHITECTURE_SYS370_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_ARCH_SYS370`]
-
-[@http://en.wikipedia.org/wiki/System/370 System/370] architecture.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__370__`] [__predef_detection__]]
-    [[`__THW_370__`] [__predef_detection__]]
-    ]
- */
-
-#define BOOST_ARCH_SYS370 BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__370__) || defined(__THW_370__)
-#   undef BOOST_ARCH_SYS370
-#   define BOOST_ARCH_SYS370 BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#if BOOST_ARCH_SYS370
-#   define BOOST_ARCH_SYS370_AVAILABLE
-#endif
-
-#define BOOST_ARCH_SYS370_NAME "System/370"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_SYS370,BOOST_ARCH_SYS370_NAME)
diff --git a/third_party/boost/boost/predef/architecture/sys390.h b/third_party/boost/boost/predef/architecture/sys390.h
deleted file mode 100644
index 47aff6a..0000000
--- a/third_party/boost/boost/predef/architecture/sys390.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_ARCHITECTURE_SYS390_H
-#define BOOST_PREDEF_ARCHITECTURE_SYS390_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_ARCH_SYS390`]
-
-[@http://en.wikipedia.org/wiki/System/390 System/390] architecture.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__s390__`] [__predef_detection__]]
-    [[`__s390x__`] [__predef_detection__]]
-    ]
- */
-
-#define BOOST_ARCH_SYS390 BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__s390__) || defined(__s390x__)
-#   undef BOOST_ARCH_SYS390
-#   define BOOST_ARCH_SYS390 BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#if BOOST_ARCH_SYS390
-#   define BOOST_ARCH_SYS390_AVAILABLE
-#endif
-
-#define BOOST_ARCH_SYS390_NAME "System/390"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_SYS390,BOOST_ARCH_SYS390_NAME)
diff --git a/third_party/boost/boost/predef/architecture/x86.h b/third_party/boost/boost/predef/architecture/x86.h
deleted file mode 100644
index 0ef3ef4..0000000
--- a/third_party/boost/boost/predef/architecture/x86.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#include <boost/predef/architecture/x86/32.h>
-#include <boost/predef/architecture/x86/64.h>
-
-#ifndef BOOST_PREDEF_ARCHITECTURE_X86_H
-#define BOOST_PREDEF_ARCHITECTURE_X86_H
-
-/*`
-[heading `BOOST_ARCH_X86`]
-
-[@http://en.wikipedia.org/wiki/X86 Intel x86] architecture. This is
-a category to indicate that either `BOOST_ARCH_X86_32` or
-`BOOST_ARCH_X86_64` is detected.
- */
-
-#define BOOST_ARCH_X86 BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if BOOST_ARCH_X86_32 || BOOST_ARCH_X86_64
-#   undef BOOST_ARCH_X86
-#   define BOOST_ARCH_X86 BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#if BOOST_ARCH_X86
-#   define BOOST_ARCH_X86_AVAILABLE
-#endif
-
-#define BOOST_ARCH_X86_NAME "Intel x86"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_X86,BOOST_ARCH_X86_NAME)
diff --git a/third_party/boost/boost/predef/architecture/x86/32.h b/third_party/boost/boost/predef/architecture/x86/32.h
deleted file mode 100644
index 17fbff55..0000000
--- a/third_party/boost/boost/predef/architecture/x86/32.h
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_ARCHITECTURE_X86_32_H
-#define BOOST_PREDEF_ARCHITECTURE_X86_32_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_ARCH_X86_32`]
-
-[@http://en.wikipedia.org/wiki/X86 Intel x86] architecture:
-If available versions \[3-6\] are specifically detected.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`i386`] [__predef_detection__]]
-    [[`__i386__`] [__predef_detection__]]
-    [[`__i486__`] [__predef_detection__]]
-    [[`__i586__`] [__predef_detection__]]
-    [[`__i686__`] [__predef_detection__]]
-    [[`__i386`] [__predef_detection__]]
-    [[`_M_IX86`] [__predef_detection__]]
-    [[`_X86_`] [__predef_detection__]]
-    [[`__THW_INTEL__`] [__predef_detection__]]
-    [[`__I86__`] [__predef_detection__]]
-    [[`__INTEL__`] [__predef_detection__]]
-
-    [[`__I86__`] [V.0.0]]
-    [[`_M_IX86`] [V.0.0]]
-    [[`__i686__`] [6.0.0]]
-    [[`__i586__`] [5.0.0]]
-    [[`__i486__`] [4.0.0]]
-    [[`__i386__`] [3.0.0]]
-    ]
- */
-
-#define BOOST_ARCH_X86_32 BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(i386) || defined(__i386__) || \
-    defined(__i486__) || defined(__i586__) || \
-    defined(__i686__) || defined(__i386) || \
-    defined(_M_IX86) || defined(_X86_) || \
-    defined(__THW_INTEL__) || defined(__I86__) || \
-    defined(__INTEL__)
-#   undef BOOST_ARCH_X86_32
-#   if !defined(BOOST_ARCH_X86_32) && defined(__I86__)
-#       define BOOST_ARCH_X86_32 BOOST_VERSION_NUMBER(__I86__,0,0)
-#   endif
-#   if !defined(BOOST_ARCH_X86_32) && defined(_M_IX86)
-#       define BOOST_ARCH_X86_32 BOOST_PREDEF_MAKE_10_VV00(_M_IX86)
-#   endif
-#   if !defined(BOOST_ARCH_X86_32) && defined(__i686__)
-#       define BOOST_ARCH_X86_32 BOOST_VERSION_NUMBER(6,0,0)
-#   endif
-#   if !defined(BOOST_ARCH_X86_32) && defined(__i586__)
-#       define BOOST_ARCH_X86_32 BOOST_VERSION_NUMBER(5,0,0)
-#   endif
-#   if !defined(BOOST_ARCH_X86_32) && defined(__i486__)
-#       define BOOST_ARCH_X86_32 BOOST_VERSION_NUMBER(4,0,0)
-#   endif
-#   if !defined(BOOST_ARCH_X86_32) && defined(__i386__)
-#       define BOOST_ARCH_X86_32 BOOST_VERSION_NUMBER(3,0,0)
-#   endif
-#   if !defined(BOOST_ARCH_X86_32)
-#       define BOOST_ARCH_X86_32 BOOST_VERSION_NUMBER_AVAILABLE
-#   endif
-#endif
-
-#if BOOST_ARCH_X86_32
-#   define BOOST_ARCH_X86_32_AVAILABLE
-#endif
-
-#define BOOST_ARCH_X86_32_NAME "Intel x86-32"
-
-#include <boost/predef/architecture/x86.h>
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_X86_32,BOOST_ARCH_X86_32_NAME)
diff --git a/third_party/boost/boost/predef/architecture/x86/64.h b/third_party/boost/boost/predef/architecture/x86/64.h
deleted file mode 100644
index f761c92..0000000
--- a/third_party/boost/boost/predef/architecture/x86/64.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_ARCHITECTURE_X86_64_H
-#define BOOST_PREDEF_ARCHITECTURE_X86_64_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_ARCH_X86_64`]
-
-[@http://en.wikipedia.org/wiki/Ia64 Intel IA-64] architecture.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__x86_64`] [__predef_detection__]]
-    [[`__x86_64__`] [__predef_detection__]]
-    [[`__amd64__`] [__predef_detection__]]
-    [[`__amd64`] [__predef_detection__]]
-    [[`_M_X64`] [__predef_detection__]]
-    ]
- */
-
-#define BOOST_ARCH_X86_64 BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__x86_64) || defined(__x86_64__) || \
-    defined(__amd64__) || defined(__amd64) || \
-    defined(_M_X64)
-#   undef BOOST_ARCH_X86_64
-#   define BOOST_ARCH_X86_64 BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#if BOOST_ARCH_X86_64
-#   define BOOST_ARCH_X86_64_AVAILABLE
-#endif
-
-#define BOOST_ARCH_X86_64_NAME "Intel x86-64"
-
-#include <boost/predef/architecture/x86.h>
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_X86_64,BOOST_ARCH_X86_64_NAME)
diff --git a/third_party/boost/boost/predef/architecture/z.h b/third_party/boost/boost/predef/architecture/z.h
deleted file mode 100644
index 3d218aa..0000000
--- a/third_party/boost/boost/predef/architecture/z.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_ARCHITECTURE_Z_H
-#define BOOST_PREDEF_ARCHITECTURE_Z_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_ARCH_Z`]
-
-[@http://en.wikipedia.org/wiki/Z/Architecture z/Architecture] architecture.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__SYSC_ZARCH__`] [__predef_detection__]]
-    ]
- */
-
-#define BOOST_ARCH_Z BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__SYSC_ZARCH__)
-#   undef BOOST_ARCH_Z
-#   define BOOST_ARCH_Z BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#if BOOST_ARCH_Z
-#   define BOOST_ARCH_Z_AVAILABLE
-#endif
-
-#define BOOST_ARCH_Z_NAME "z/Architecture"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_Z,BOOST_ARCH_Z_NAME)
diff --git a/third_party/boost/boost/predef/compiler.h b/third_party/boost/boost/predef/compiler.h
deleted file mode 100644
index de1b4ab..0000000
--- a/third_party/boost/boost/predef/compiler.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#if !defined(BOOST_PREDEF_COMPILER_H) || defined(BOOST_PREDEF_INTERNAL_GENERATE_TESTS)
-#ifndef BOOST_PREDEF_COMPILER_H
-#define BOOST_PREDEF_COMPILER_H
-#endif
-
-#include <boost/predef/compiler/borland.h>
-#include <boost/predef/compiler/clang.h>
-#include <boost/predef/compiler/comeau.h>
-#include <boost/predef/compiler/compaq.h>
-#include <boost/predef/compiler/diab.h>
-#include <boost/predef/compiler/digitalmars.h>
-#include <boost/predef/compiler/dignus.h>
-#include <boost/predef/compiler/edg.h>
-#include <boost/predef/compiler/ekopath.h>
-#include <boost/predef/compiler/gcc_xml.h>
-#include <boost/predef/compiler/gcc.h>
-#include <boost/predef/compiler/greenhills.h>
-#include <boost/predef/compiler/hp_acc.h>
-#include <boost/predef/compiler/iar.h>
-#include <boost/predef/compiler/ibm.h>
-#include <boost/predef/compiler/intel.h>
-#include <boost/predef/compiler/kai.h>
-#include <boost/predef/compiler/llvm.h>
-#include <boost/predef/compiler/metaware.h>
-#include <boost/predef/compiler/metrowerks.h>
-#include <boost/predef/compiler/microtec.h>
-#include <boost/predef/compiler/mpw.h>
-#include <boost/predef/compiler/nvcc.h>
-#include <boost/predef/compiler/palm.h>
-#include <boost/predef/compiler/pgi.h>
-#include <boost/predef/compiler/sgi_mipspro.h>
-#include <boost/predef/compiler/sunpro.h>
-#include <boost/predef/compiler/tendra.h>
-#include <boost/predef/compiler/visualc.h>
-#include <boost/predef/compiler/watcom.h>
-
-#endif
diff --git a/third_party/boost/boost/predef/compiler/borland.h b/third_party/boost/boost/predef/compiler/borland.h
deleted file mode 100644
index 3677cca..0000000
--- a/third_party/boost/boost/predef/compiler/borland.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_COMPILER_BORLAND_H
-#define BOOST_PREDEF_COMPILER_BORLAND_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_COMP_BORLAND`]
-
-[@http://en.wikipedia.org/wiki/C_plus_plus_builder Borland C++] compiler.
-Version number available as major, minor, and patch.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__BORLANDC__`] [__predef_detection__]]
-    [[`__CODEGEARC__`] [__predef_detection__]]
-
-    [[`__BORLANDC__`] [V.R.P]]
-    [[`__CODEGEARC__`] [V.R.P]]
-    ]
- */
-
-#define BOOST_COMP_BORLAND BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__BORLANDC__) || defined(__CODEGEARC__)
-#   if !defined(BOOST_COMP_BORLAND_DETECTION) && (defined(__CODEGEARC__))
-#       define BOOST_COMP_BORLAND_DETECTION BOOST_PREDEF_MAKE_0X_VVRP(__CODEGEARC__)
-#   endif
-#   if !defined(BOOST_COMP_BORLAND_DETECTION)
-#       define BOOST_COMP_BORLAND_DETECTION BOOST_PREDEF_MAKE_0X_VVRP(__BORLANDC__)
-#   endif
-#endif
-
-#ifdef BOOST_COMP_BORLAND_DETECTION
-#   define BOOST_COMP_BORLAND_AVAILABLE
-#   if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED)
-#       define BOOST_COMP_BORLAND_EMULATED BOOST_COMP_BORLAND_DETECTION
-#   else
-#       undef BOOST_COMP_BORLAND
-#       define BOOST_COMP_BORLAND BOOST_COMP_BORLAND_DETECTION
-#   endif
-#   include <boost/predef/detail/comp_detected.h>
-#endif
-
-#define BOOST_COMP_BORLAND_NAME "Borland C++"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_BORLAND,BOOST_COMP_BORLAND_NAME)
-
-#ifdef BOOST_COMP_BORLAND_EMULATED
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_BORLAND_EMULATED,BOOST_COMP_BORLAND_NAME)
-#endif
diff --git a/third_party/boost/boost/predef/compiler/clang.h b/third_party/boost/boost/predef/compiler/clang.h
deleted file mode 100644
index 56678fe..0000000
--- a/third_party/boost/boost/predef/compiler/clang.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_COMPILER_CLANG_H
-#define BOOST_PREDEF_COMPILER_CLANG_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_COMP_CLANG`]
-
-[@http://en.wikipedia.org/wiki/Clang Clang] compiler.
-Version number available as major, minor, and patch.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__clang__`] [__predef_detection__]]
-
-    [[`__clang_major__`, `__clang_minor__`, `__clang_patchlevel__`] [V.R.P]]
-    ]
- */
-
-#define BOOST_COMP_CLANG BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__clang__)
-#   define BOOST_COMP_CLANG_DETECTION BOOST_VERSION_NUMBER(__clang_major__,__clang_minor__,__clang_patchlevel__)
-#endif
-
-#ifdef BOOST_COMP_CLANG_DETECTION
-#   if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED)
-#       define BOOST_COMP_CLANG_EMULATED BOOST_COMP_CLANG_DETECTION
-#   else
-#       undef BOOST_COMP_CLANG
-#       define BOOST_COMP_CLANG BOOST_COMP_CLANG_DETECTION
-#   endif
-#   define BOOST_COMP_CLANG_AVAILABLE
-#   include <boost/predef/detail/comp_detected.h>
-#endif
-
-#define BOOST_COMP_CLANG_NAME "Clang"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_CLANG,BOOST_COMP_CLANG_NAME)
-
-#ifdef BOOST_COMP_CLANG_EMULATED
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_CLANG_EMULATED,BOOST_COMP_CLANG_NAME)
-#endif
diff --git a/third_party/boost/boost/predef/compiler/comeau.h b/third_party/boost/boost/predef/compiler/comeau.h
deleted file mode 100644
index 15a4564..0000000
--- a/third_party/boost/boost/predef/compiler/comeau.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_COMPILER_COMEAU_H
-#define BOOST_PREDEF_COMPILER_COMEAU_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-#define BOOST_COMP_COMO BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-/*`
-[heading `BOOST_COMP_COMO`]
-
-[@http://en.wikipedia.org/wiki/Comeau_C/C%2B%2B Comeau C++] compiler.
-Version number available as major, minor, and patch.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__COMO__`] [__predef_detection__]]
-
-    [[`__COMO_VERSION__`] [V.R.P]]
-    ]
- */
-
-#if defined(__COMO__)
-#   if !defined(BOOST_COMP_COMO_DETECTION) && defined(__COMO_VERSION__)
-#       define BOOST_COMP_COMO_DETECTION BOOST_PREDEF_MAKE_0X_VRP(__COMO_VERSION__)
-#   endif
-#   if !defined(BOOST_COMP_COMO_DETECTION)
-#       define BOOST_COMP_COMO_DETECTION BOOST_VERSION_NUMBER_AVAILABLE
-#   endif
-#endif
-
-#ifdef BOOST_COMP_COMO_DETECTION
-#   if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED)
-#       define BOOST_COMP_COMO_EMULATED BOOST_COMP_COMO_DETECTION
-#   else
-#       undef BOOST_COMP_COMO
-#       define BOOST_COMP_COMO BOOST_COMP_COMO_DETECTION
-#   endif
-#   define BOOST_COMP_COMO_AVAILABLE
-#   include <boost/predef/detail/comp_detected.h>
-#endif
-
-#define BOOST_COMP_COMO_NAME "Comeau C++"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_COMO,BOOST_COMP_COMO_NAME)
-
-#ifdef BOOST_COMP_COMO_EMULATED
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_COMO_EMULATED,BOOST_COMP_COMO_NAME)
-#endif
diff --git a/third_party/boost/boost/predef/compiler/compaq.h b/third_party/boost/boost/predef/compiler/compaq.h
deleted file mode 100644
index c6a83ff..0000000
--- a/third_party/boost/boost/predef/compiler/compaq.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_COMPILER_COMPAQ_H
-#define BOOST_PREDEF_COMPILER_COMPAQ_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_COMP_DEC`]
-
-[@http://www.openvms.compaq.com/openvms/brochures/deccplus/ Compaq C/C++] compiler.
-Version number available as major, minor, and patch.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__DECCXX`] [__predef_detection__]]
-    [[`__DECC`] [__predef_detection__]]
-
-    [[`__DECCXX_VER`] [V.R.P]]
-    [[`__DECC_VER`] [V.R.P]]
-    ]
- */
-
-#define BOOST_COMP_DEC BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__DECC) || defined(__DECCXX)
-#   if !defined(BOOST_COMP_DEC_DETECTION) && defined(__DECCXX_VER)
-#       define BOOST_COMP_DEC_DETECTION BOOST_PREDEF_MAKE_10_VVRR0PP00(__DECCXX_VER)
-#   endif
-#   if !defined(BOOST_COMP_DEC_DETECTION) && defined(__DECC_VER)
-#       define BOOST_COMP_DEC_DETECTION BOOST_PREDEF_MAKE_10_VVRR0PP00(__DECC_VER)
-#   endif
-#   if !defined(BOOST_COMP_DEC_DETECTION)
-#       define BOOST_COMP_DEC_DETECTION BOOST_VERSION_NUMBER_AVAILABLE
-#   endif
-#endif
-
-#ifdef BOOST_COMP_DEC_DETECTION
-#   if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED)
-#       define BOOST_COMP_DEC_EMULATED BOOST_COMP_DEC_DETECTION
-#   else
-#       undef BOOST_COMP_DEC
-#       define BOOST_COMP_DEC BOOST_COMP_DEC_DETECTION
-#   endif
-#   define BOOST_COMP_DEC_AVAILABLE
-#   include <boost/predef/detail/comp_detected.h>
-#endif
-
-#define BOOST_COMP_DEC_NAME "Compaq C/C++"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_DEC,BOOST_COMP_DEC_NAME)
-
-#ifdef BOOST_COMP_DEC_EMULATED
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_DEC_EMULATED,BOOST_COMP_DEC_NAME)
-#endif
diff --git a/third_party/boost/boost/predef/compiler/diab.h b/third_party/boost/boost/predef/compiler/diab.h
deleted file mode 100644
index f5a37de..0000000
--- a/third_party/boost/boost/predef/compiler/diab.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_COMPILER_DIAB_H
-#define BOOST_PREDEF_COMPILER_DIAB_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_COMP_DIAB`]
-
-[@http://www.windriver.com/products/development_suite/wind_river_compiler/ Diab C/C++] compiler.
-Version number available as major, minor, and patch.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__DCC__`] [__predef_detection__]]
-
-    [[`__VERSION_NUMBER__`] [V.R.P]]
-    ]
- */
-
-#define BOOST_COMP_DIAB BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__DCC__)
-#   define BOOST_COMP_DIAB_DETECTION BOOST_PREDEF_MAKE_10_VRPP(__VERSION_NUMBER__)
-#endif
-
-#ifdef BOOST_COMP_DIAB_DETECTION
-#   if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED)
-#       define BOOST_COMP_DIAB_EMULATED BOOST_COMP_DIAB_DETECTION
-#   else
-#       undef BOOST_COMP_DIAB
-#       define BOOST_COMP_DIAB BOOST_COMP_DIAB_DETECTION
-#   endif
-#   define BOOST_COMP_DIAB_AVAILABLE
-#   include <boost/predef/detail/comp_detected.h>
-#endif
-
-#define BOOST_COMP_DIAB_NAME "Diab C/C++"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_DIAB,BOOST_COMP_DIAB_NAME)
-
-#ifdef BOOST_COMP_DIAB_EMULATED
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_DIAB_EMULATED,BOOST_COMP_DIAB_NAME)
-#endif
diff --git a/third_party/boost/boost/predef/compiler/digitalmars.h b/third_party/boost/boost/predef/compiler/digitalmars.h
deleted file mode 100644
index 9bd5850..0000000
--- a/third_party/boost/boost/predef/compiler/digitalmars.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_COMPILER_DIGITALMARS_H
-#define BOOST_PREDEF_COMPILER_DIGITALMARS_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_COMP_DMC`]
-
-[@http://en.wikipedia.org/wiki/Digital_Mars Digital Mars] compiler.
-Version number available as major, minor, and patch.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__DMC__`] [__predef_detection__]]
-
-    [[`__DMC__`] [V.R.P]]
-    ]
- */
-
-#define BOOST_COMP_DMC BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__DMC__)
-#   define BOOST_COMP_DMC_DETECTION BOOST_PREDEF_MAKE_0X_VRP(__DMC__)
-#endif
-
-#ifdef BOOST_COMP_DMC_DETECTION
-#   if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED)
-#       define BOOST_COMP_DMC_EMULATED BOOST_COMP_DMC_DETECTION
-#   else
-#       undef BOOST_COMP_DMC
-#       define BOOST_COMP_DMC BOOST_COMP_DMC_DETECTION
-#   endif
-#   define BOOST_COMP_DMC_AVAILABLE
-#   include <boost/predef/detail/comp_detected.h>
-#endif
-
-#define BOOST_COMP_DMC_NAME "Digital Mars"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_DMC,BOOST_COMP_DMC_NAME)
-
-#ifdef BOOST_COMP_DMC_EMULATED
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_DMC_EMULATED,BOOST_COMP_DMC_NAME)
-#endif
diff --git a/third_party/boost/boost/predef/compiler/dignus.h b/third_party/boost/boost/predef/compiler/dignus.h
deleted file mode 100644
index c65d3dc..0000000
--- a/third_party/boost/boost/predef/compiler/dignus.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_COMPILER_DIGNUS_H
-#define BOOST_PREDEF_COMPILER_DIGNUS_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_COMP_SYSC`]
-
-[@http://www.dignus.com/dcxx/ Dignus Systems/C++] compiler.
-Version number available as major, minor, and patch.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__SYSC__`] [__predef_detection__]]
-
-    [[`__SYSC_VER__`] [V.R.P]]
-    ]
- */
-
-#define BOOST_COMP_SYSC BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__SYSC__)
-#   define BOOST_COMP_SYSC_DETECTION BOOST_PREDEF_MAKE_10_VRRPP(__SYSC_VER__)
-#endif
-
-#ifdef BOOST_COMP_SYSC_DETECTION
-#   if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED)
-#       define BOOST_COMP_SYSC_EMULATED BOOST_COMP_SYSC_DETECTION
-#   else
-#       undef BOOST_COMP_SYSC
-#       define BOOST_COMP_SYSC BOOST_COMP_SYSC_DETECTION
-#   endif
-#   define BOOST_COMP_SYSC_AVAILABLE
-#   include <boost/predef/detail/comp_detected.h>
-#endif
-
-#define BOOST_COMP_SYSC_NAME "Dignus Systems/C++"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_SYSC,BOOST_COMP_SYSC_NAME)
-
-#ifdef BOOST_COMP_SYSC_EMULATED
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_SYSC_EMULATED,BOOST_COMP_SYSC_NAME)
-#endif
diff --git a/third_party/boost/boost/predef/compiler/edg.h b/third_party/boost/boost/predef/compiler/edg.h
deleted file mode 100644
index 2ffb9b0..0000000
--- a/third_party/boost/boost/predef/compiler/edg.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_COMPILER_EDG_H
-#define BOOST_PREDEF_COMPILER_EDG_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_COMP_EDG`]
-
-[@http://en.wikipedia.org/wiki/Edison_Design_Group EDG C++ Frontend] compiler.
-Version number available as major, minor, and patch.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__EDG__`] [__predef_detection__]]
-
-    [[`__EDG_VERSION__`] [V.R.0]]
-    ]
- */
-
-#define BOOST_COMP_EDG BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__EDG__)
-#   define BOOST_COMP_EDG_DETECTION BOOST_PREDEF_MAKE_10_VRR(__EDG_VERSION__)
-#endif
-
-#ifdef BOOST_COMP_EDG_DETECTION
-#   if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED)
-#       define BOOST_COMP_EDG_EMULATED BOOST_COMP_EDG_DETECTION
-#   else
-#       undef BOOST_COMP_EDG
-#       define BOOST_COMP_EDG BOOST_COMP_EDG_DETECTION
-#   endif
-#   define BOOST_COMP_EDG_AVAILABLE
-#   include <boost/predef/detail/comp_detected.h>
-#endif
-
-#define BOOST_COMP_EDG_NAME "EDG C++ Frontend"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_EDG,BOOST_COMP_EDG_NAME)
-
-#ifdef BOOST_COMP_EDG_EMULATED
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_EDG_EMULATED,BOOST_COMP_EDG_NAME)
-#endif
diff --git a/third_party/boost/boost/predef/compiler/ekopath.h b/third_party/boost/boost/predef/compiler/ekopath.h
deleted file mode 100644
index e5cde36..0000000
--- a/third_party/boost/boost/predef/compiler/ekopath.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_COMPILER_EKOPATH_H
-#define BOOST_PREDEF_COMPILER_EKOPATH_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_COMP_PATH`]
-
-[@http://en.wikipedia.org/wiki/PathScale EKOpath] compiler.
-Version number available as major, minor, and patch.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__PATHCC__`] [__predef_detection__]]
-
-    [[`__PATHCC__`, `__PATHCC_MINOR__`, `__PATHCC_PATCHLEVEL__`] [V.R.P]]
-    ]
- */
-
-#define BOOST_COMP_PATH BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__PATHCC__)
-#   define BOOST_COMP_PATH_DETECTION \
-        BOOST_VERSION_NUMBER(__PATHCC__,__PATHCC_MINOR__,__PATHCC_PATCHLEVEL__)
-#endif
-
-#ifdef BOOST_COMP_PATH_DETECTION
-#   if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED)
-#       define BOOST_COMP_PATH_EMULATED BOOST_COMP_PATH_DETECTION
-#   else
-#       undef BOOST_COMP_PATH
-#       define BOOST_COMP_PATH BOOST_COMP_PATH_DETECTION
-#   endif
-#   define BOOST_COMP_PATH_AVAILABLE
-#   include <boost/predef/detail/comp_detected.h>
-#endif
-
-#define BOOST_COMP_PATH_NAME "EKOpath"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_PATH,BOOST_COMP_PATH_NAME)
-
-#ifdef BOOST_COMP_PATH_EMULATED
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_PATH_EMULATED,BOOST_COMP_PATH_NAME)
-#endif
diff --git a/third_party/boost/boost/predef/compiler/gcc.h b/third_party/boost/boost/predef/compiler/gcc.h
deleted file mode 100644
index c2d7fff..0000000
--- a/third_party/boost/boost/predef/compiler/gcc.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_COMPILER_GCC_H
-#define BOOST_PREDEF_COMPILER_GCC_H
-
-/* Other compilers that emulate this one need to be detected first. */
-
-#include <boost/predef/compiler/clang.h>
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_COMP_GNUC`]
-
-[@http://en.wikipedia.org/wiki/GNU_Compiler_Collection Gnu GCC C/C++] compiler.
-Version number available as major, minor, and patch (if available).
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__GNUC__`] [__predef_detection__]]
-
-    [[`__GNUC__`, `__GNUC_MINOR__`, `__GNUC_PATCHLEVEL__`] [V.R.P]]
-    [[`__GNUC__`, `__GNUC_MINOR__`] [V.R.0]]
-    ]
- */
-
-#define BOOST_COMP_GNUC BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__GNUC__)
-#   if !defined(BOOST_COMP_GNUC_DETECTION) && defined(__GNUC_PATCHLEVEL__)
-#       define BOOST_COMP_GNUC_DETECTION \
-            BOOST_VERSION_NUMBER(__GNUC__,__GNUC_MINOR__,__GNUC_PATCHLEVEL__)
-#   endif
-#   if !defined(BOOST_COMP_GNUC_DETECTION)
-#       define BOOST_COMP_GNUC_DETECTION \
-            BOOST_VERSION_NUMBER(__GNUC__,__GNUC_MINOR__,0)
-#   endif
-#endif
-
-#ifdef BOOST_COMP_GNUC_DETECTION
-#   if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED)
-#       define BOOST_COMP_GNUC_EMULATED BOOST_COMP_GNUC_DETECTION
-#   else
-#       undef BOOST_COMP_GNUC
-#       define BOOST_COMP_GNUC BOOST_COMP_GNUC_DETECTION
-#   endif
-#   define BOOST_COMP_GNUC_AVAILABLE
-#   include <boost/predef/detail/comp_detected.h>
-#endif
-
-#define BOOST_COMP_GNUC_NAME "Gnu GCC C/C++"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_GNUC,BOOST_COMP_GNUC_NAME)
-
-#ifdef BOOST_COMP_GNUC_EMULATED
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_GNUC_EMULATED,BOOST_COMP_GNUC_NAME)
-#endif
diff --git a/third_party/boost/boost/predef/compiler/gcc_xml.h b/third_party/boost/boost/predef/compiler/gcc_xml.h
deleted file mode 100644
index acae600..0000000
--- a/third_party/boost/boost/predef/compiler/gcc_xml.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_COMPILER_GCC_XML_H
-#define BOOST_PREDEF_COMPILER_GCC_XML_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_COMP_GCCXML`]
-
-[@http://www.gccxml.org/ GCC XML] compiler.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__GCCXML__`] [__predef_detection__]]
-    ]
- */
-
-#define BOOST_COMP_GCCXML BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__GCCXML__)
-#   define BOOST_COMP_GCCXML_DETECTION BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#ifdef BOOST_COMP_GCCXML_DETECTION
-#   if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED)
-#       define BOOST_COMP_GCCXML_EMULATED BOOST_COMP_GCCXML_DETECTION
-#   else
-#       undef BOOST_COMP_GCCXML
-#       define BOOST_COMP_GCCXML BOOST_COMP_GCCXML_DETECTION
-#   endif
-#   define BOOST_COMP_GCCXML_AVAILABLE
-#   include <boost/predef/detail/comp_detected.h>
-#endif
-
-#define BOOST_COMP_GCCXML_NAME "GCC XML"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_GCCXML,BOOST_COMP_GCCXML_NAME)
-
-#ifdef BOOST_COMP_GCCXML_EMULATED
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_GCCXML_EMULATED,BOOST_COMP_GCCXML_NAME)
-#endif
diff --git a/third_party/boost/boost/predef/compiler/greenhills.h b/third_party/boost/boost/predef/compiler/greenhills.h
deleted file mode 100644
index 23b8f01..0000000
--- a/third_party/boost/boost/predef/compiler/greenhills.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_COMPILER_GREENHILLS_H
-#define BOOST_PREDEF_COMPILER_GREENHILLS_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_COMP_GHS`]
-
-[@http://en.wikipedia.org/wiki/Green_Hills_Software Green Hills C/C++] compiler.
-Version number available as major, minor, and patch.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__ghs`] [__predef_detection__]]
-    [[`__ghs__`] [__predef_detection__]]
-
-    [[`__GHS_VERSION_NUMBER__`] [V.R.P]]
-    [[`__ghs`] [V.R.P]]
-    ]
- */
-
-#define BOOST_COMP_GHS BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__ghs) || defined(__ghs__)
-#   if !defined(BOOST_COMP_GHS_DETECTION) && defined(__GHS_VERSION_NUMBER__)
-#       define BOOST_COMP_GHS_DETECTION BOOST_PREDEF_MAKE_10_VRP(__GHS_VERSION_NUMBER__)
-#   endif
-#   if !defined(BOOST_COMP_GHS_DETECTION) && defined(__ghs)
-#       define BOOST_COMP_GHS_DETECTION BOOST_PREDEF_MAKE_10_VRP(__ghs)
-#   endif
-#   if !defined(BOOST_COMP_GHS_DETECTION)
-#       define BOOST_COMP_GHS_DETECTION BOOST_VERSION_NUMBER_AVAILABLE
-#   endif
-#endif
-
-#ifdef BOOST_COMP_GHS_DETECTION
-#   if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED)
-#       define BOOST_COMP_GHS_EMULATED BOOST_COMP_GHS_DETECTION
-#   else
-#       undef BOOST_COMP_GHS
-#       define BOOST_COMP_GHS BOOST_COMP_GHS_DETECTION
-#   endif
-#   define BOOST_COMP_GHS_AVAILABLE
-#   include <boost/predef/detail/comp_detected.h>
-#endif
-
-#define BOOST_COMP_GHS_NAME "Green Hills C/C++"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_GHS,BOOST_COMP_GHS_NAME)
-
-#ifdef BOOST_COMP_GHS_EMULATED
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_GHS_EMULATED,BOOST_COMP_GHS_NAME)
-#endif
diff --git a/third_party/boost/boost/predef/compiler/hp_acc.h b/third_party/boost/boost/predef/compiler/hp_acc.h
deleted file mode 100644
index 7b3ffe9..0000000
--- a/third_party/boost/boost/predef/compiler/hp_acc.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_COMPILER_HP_ACC_H
-#define BOOST_PREDEF_COMPILER_HP_ACC_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_COMP_HPACC`]
-
-HP aC++ compiler.
-Version number available as major, minor, and patch.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__HP_aCC`] [__predef_detection__]]
-
-    [[`__HP_aCC`] [V.R.P]]
-    ]
- */
-
-#define BOOST_COMP_HPACC BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__HP_aCC)
-#   if !defined(BOOST_COMP_HPACC_DETECTION) && (__HP_aCC > 1)
-#       define BOOST_COMP_HPACC_DETECTION BOOST_PREDEF_MAKE_10_VVRRPP(__HP_aCC)
-#   endif
-#   if !defined(BOOST_COMP_HPACC_DETECTION)
-#       define BOOST_COMP_HPACC_DETECTION BOOST_VERSION_NUMBER_AVAILABLE
-#   endif
-#endif
-
-#ifdef BOOST_COMP_HPACC_DETECTION
-#   if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED)
-#       define BOOST_COMP_HPACC_EMULATED BOOST_COMP_HPACC_DETECTION
-#   else
-#       undef BOOST_COMP_HPACC
-#       define BOOST_COMP_HPACC BOOST_COMP_HPACC_DETECTION
-#   endif
-#   define BOOST_COMP_HPACC_AVAILABLE
-#   include <boost/predef/detail/comp_detected.h>
-#endif
-
-#define BOOST_COMP_HPACC_NAME "HP aC++"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_HPACC,BOOST_COMP_HPACC_NAME)
-
-#ifdef BOOST_COMP_HPACC_EMULATED
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_HPACC_EMULATED,BOOST_COMP_HPACC_NAME)
-#endif
diff --git a/third_party/boost/boost/predef/compiler/iar.h b/third_party/boost/boost/predef/compiler/iar.h
deleted file mode 100644
index 237f492..0000000
--- a/third_party/boost/boost/predef/compiler/iar.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_COMPILER_IAR_H
-#define BOOST_PREDEF_COMPILER_IAR_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_COMP_IAR`]
-
-IAR C/C++ compiler.
-Version number available as major, minor, and patch.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__IAR_SYSTEMS_ICC__`] [__predef_detection__]]
-
-    [[`__VER__`] [V.R.P]]
-    ]
- */
-
-#define BOOST_COMP_IAR BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__IAR_SYSTEMS_ICC__)
-#   define BOOST_COMP_IAR_DETECTION BOOST_PREDEF_MAKE_10_VVRR(__VER__)
-#endif
-
-#ifdef BOOST_COMP_IAR_DETECTION
-#   if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED)
-#       define BOOST_COMP_IAR_EMULATED BOOST_COMP_IAR_DETECTION
-#   else
-#       undef BOOST_COMP_IAR
-#       define BOOST_COMP_IAR BOOST_COMP_IAR_DETECTION
-#   endif
-#   define BOOST_COMP_IAR_AVAILABLE
-#   include <boost/predef/detail/comp_detected.h>
-#endif
-
-#define BOOST_COMP_IAR_NAME "IAR C/C++"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_IAR,BOOST_COMP_IAR_NAME)
-
-#ifdef BOOST_COMP_IAR_EMULATED
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_IAR_EMULATED,BOOST_COMP_IAR_NAME)
-#endif
diff --git a/third_party/boost/boost/predef/compiler/ibm.h b/third_party/boost/boost/predef/compiler/ibm.h
deleted file mode 100644
index 6931ebd..0000000
--- a/third_party/boost/boost/predef/compiler/ibm.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_COMPILER_IBM_H
-#define BOOST_PREDEF_COMPILER_IBM_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_COMP_IBM`]
-
-[@http://en.wikipedia.org/wiki/VisualAge IBM XL C/C++] compiler.
-Version number available as major, minor, and patch.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__IBMCPP__`] [__predef_detection__]]
-    [[`__xlC__`] [__predef_detection__]]
-    [[`__xlc__`] [__predef_detection__]]
-
-    [[`__COMPILER_VER__`] [V.R.P]]
-    [[`__xlC__`] [V.R.P]]
-    [[`__xlc__`] [V.R.P]]
-    [[`__IBMCPP__`] [V.R.P]]
-    ]
- */
-
-#define BOOST_COMP_IBM BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__IBMCPP__) || defined(__xlC__) || defined(__xlc__)
-#   if !defined(BOOST_COMP_IBM_DETECTION) && defined(__COMPILER_VER__)
-#       define BOOST_COMP_IBM_DETECTION BOOST_PREDEF_MAKE_0X_VRRPPPP(__COMPILER_VER__)
-#   endif
-#   if !defined(BOOST_COMP_IBM_DETECTION) && defined(__xlC__)
-#       define BOOST_COMP_IBM_DETECTION BOOST_PREDEF_MAKE_0X_VVRR(__xlC__)
-#   endif
-#   if !defined(BOOST_COMP_IBM_DETECTION) && defined(__xlc__)
-#       define BOOST_COMP_IBM_DETECTION BOOST_PREDEF_MAKE_0X_VVRR(__xlc__)
-#   endif
-#   if !defined(BOOST_COMP_IBM_DETECTION)
-#       define BOOST_COMP_IBM_DETECTION BOOST_PREDEF_MAKE_10_VRP(__IBMCPP__)
-#   endif
-#endif
-
-#ifdef BOOST_COMP_IBM_DETECTION
-#   if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED)
-#       define BOOST_COMP_IBM_EMULATED BOOST_COMP_IBM_DETECTION
-#   else
-#       undef BOOST_COMP_IBM
-#       define BOOST_COMP_IBM BOOST_COMP_IBM_DETECTION
-#   endif
-#   define BOOST_COMP_IBM_AVAILABLE
-#   include <boost/predef/detail/comp_detected.h>
-#endif
-
-#define BOOST_COMP_IBM_NAME "IBM XL C/C++"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_IBM,BOOST_COMP_IBM_NAME)
-
-#ifdef BOOST_COMP_IBM_EMULATED
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_IBM_EMULATED,BOOST_COMP_IBM_NAME)
-#endif
diff --git a/third_party/boost/boost/predef/compiler/intel.h b/third_party/boost/boost/predef/compiler/intel.h
deleted file mode 100644
index f8a17ef..0000000
--- a/third_party/boost/boost/predef/compiler/intel.h
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2017
-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_PREDEF_COMPILER_INTEL_H
-#define BOOST_PREDEF_COMPILER_INTEL_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_COMP_INTEL`]
-
-[@http://en.wikipedia.org/wiki/Intel_C%2B%2B Intel C/C++] compiler.
-Version number available as major, minor, and patch.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__INTEL_COMPILER`] [__predef_detection__]]
-    [[`__ICL`] [__predef_detection__]]
-    [[`__ICC`] [__predef_detection__]]
-    [[`__ECC`] [__predef_detection__]]
-
-    [[`__INTEL_COMPILER`] [V.R]]
-    [[`__INTEL_COMPILER` and `__INTEL_COMPILER_UPDATE`] [V.R.P]]
-    ]
- */
-
-#define BOOST_COMP_INTEL BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__INTEL_COMPILER) || defined(__ICL) || defined(__ICC) || \
-    defined(__ECC)
-/*`
-[note Because of an Intel mistake in the release version numbering when
-`__INTEL_COMPILER` is `9999` it is detected as version 12.1.0.]
- */
-#   if !defined(BOOST_COMP_INTEL_DETECTION) && defined(__INTEL_COMPILER) && (__INTEL_COMPILER == 9999)
-#       define BOOST_COMP_INTEL_DETECTION BOOST_VERSION_NUMBER(12,1,0)
-#   endif
-#   if !defined(BOOST_COMP_INTEL_DETECTION) && defined(__INTEL_COMPILER) && defined(__INTEL_COMPILER_UPDATE)
-#       define BOOST_COMP_INTEL_DETECTION BOOST_VERSION_NUMBER( \
-            BOOST_VERSION_NUMBER_MAJOR(BOOST_PREDEF_MAKE_10_VVRR(__INTEL_COMPILER)), \
-            BOOST_VERSION_NUMBER_MINOR(BOOST_PREDEF_MAKE_10_VVRR(__INTEL_COMPILER)), \
-            __INTEL_COMPILER_UPDATE)
-#   endif
-#   if !defined(BOOST_COMP_INTEL_DETECTION) && defined(__INTEL_COMPILER)
-#       define BOOST_COMP_INTEL_DETECTION BOOST_PREDEF_MAKE_10_VVRR(__INTEL_COMPILER)
-#   endif
-#   if !defined(BOOST_COMP_INTEL_DETECTION)
-#       define BOOST_COMP_INTEL_DETECTION BOOST_VERSION_NUMBER_AVAILABLE
-#   endif
-#endif
-
-#ifdef BOOST_COMP_INTEL_DETECTION
-#   if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED)
-#       define BOOST_COMP_INTEL_EMULATED BOOST_COMP_INTEL_DETECTION
-#   else
-#       undef BOOST_COMP_INTEL
-#       define BOOST_COMP_INTEL BOOST_COMP_INTEL_DETECTION
-#   endif
-#   define BOOST_COMP_INTEL_AVAILABLE
-#   include <boost/predef/detail/comp_detected.h>
-#endif
-
-#define BOOST_COMP_INTEL_NAME "Intel C/C++"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_INTEL,BOOST_COMP_INTEL_NAME)
-
-#ifdef BOOST_COMP_INTEL_EMULATED
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_INTEL_EMULATED,BOOST_COMP_INTEL_NAME)
-#endif
diff --git a/third_party/boost/boost/predef/compiler/kai.h b/third_party/boost/boost/predef/compiler/kai.h
deleted file mode 100644
index 68ce84e..0000000
--- a/third_party/boost/boost/predef/compiler/kai.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_COMPILER_KAI_H
-#define BOOST_PREDEF_COMPILER_KAI_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_COMP_KCC`]
-
-Kai C++ compiler.
-Version number available as major, minor, and patch.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__KCC`] [__predef_detection__]]
-
-    [[`__KCC_VERSION`] [V.R.P]]
-    ]
- */
-
-#define BOOST_COMP_KCC BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__KCC)
-#   define BOOST_COMP_KCC_DETECTION BOOST_PREDEF_MAKE_0X_VRPP(__KCC_VERSION)
-#endif
-
-#ifdef BOOST_COMP_KCC_DETECTION
-#   if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED)
-#       define BOOST_COMP_KCC_EMULATED BOOST_COMP_KCC_DETECTION
-#   else
-#       undef BOOST_COMP_KCC
-#       define BOOST_COMP_KCC BOOST_COMP_KCC_DETECTION
-#   endif
-#   define BOOST_COMP_KCC_AVAILABLE
-#   include <boost/predef/detail/comp_detected.h>
-#endif
-
-#define BOOST_COMP_KCC_NAME "Kai C++"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_KCC,BOOST_COMP_KCC_NAME)
-
-#ifdef BOOST_COMP_KCC_EMULATED
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_KCC_EMULATED,BOOST_COMP_KCC_NAME)
-#endif
diff --git a/third_party/boost/boost/predef/compiler/llvm.h b/third_party/boost/boost/predef/compiler/llvm.h
deleted file mode 100644
index de654eb..0000000
--- a/third_party/boost/boost/predef/compiler/llvm.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_COMPILER_LLVM_H
-#define BOOST_PREDEF_COMPILER_LLVM_H
-
-/* Other compilers that emulate this one need to be detected first. */
-
-#include <boost/predef/compiler/clang.h>
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_COMP_LLVM`]
-
-[@http://en.wikipedia.org/wiki/LLVM LLVM] compiler.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__llvm__`] [__predef_detection__]]
-    ]
- */
-
-#define BOOST_COMP_LLVM BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__llvm__)
-#   define BOOST_COMP_LLVM_DETECTION BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#ifdef BOOST_COMP_LLVM_DETECTION
-#   if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED)
-#       define BOOST_COMP_LLVM_EMULATED BOOST_COMP_LLVM_DETECTION
-#   else
-#       undef BOOST_COMP_LLVM
-#       define BOOST_COMP_LLVM BOOST_COMP_LLVM_DETECTION
-#   endif
-#   define BOOST_COMP_LLVM_AVAILABLE
-#   include <boost/predef/detail/comp_detected.h>
-#endif
-
-#define BOOST_COMP_LLVM_NAME "LLVM"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_LLVM,BOOST_COMP_LLVM_NAME)
-
-#ifdef BOOST_COMP_LLVM_EMULATED
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_LLVM_EMULATED,BOOST_COMP_LLVM_NAME)
-#endif
diff --git a/third_party/boost/boost/predef/compiler/metaware.h b/third_party/boost/boost/predef/compiler/metaware.h
deleted file mode 100644
index 1a32039..0000000
--- a/third_party/boost/boost/predef/compiler/metaware.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_COMPILER_METAWARE_H
-#define BOOST_PREDEF_COMPILER_METAWARE_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_COMP_HIGHC`]
-
-MetaWare High C/C++ compiler.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__HIGHC__`] [__predef_detection__]]
-    ]
- */
-
-#define BOOST_COMP_HIGHC BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__HIGHC__)
-#   define BOOST_COMP_HIGHC_DETECTION BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#ifdef BOOST_COMP_HIGHC_DETECTION
-#   if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED)
-#       define BOOST_COMP_HIGHC_EMULATED BOOST_COMP_HIGHC_DETECTION
-#   else
-#       undef BOOST_COMP_HIGHC
-#       define BOOST_COMP_HIGHC BOOST_COMP_HIGHC_DETECTION
-#   endif
-#   define BOOST_COMP_HIGHC_AVAILABLE
-#   include <boost/predef/detail/comp_detected.h>
-#endif
-
-#define BOOST_COMP_HIGHC_NAME "MetaWare High C/C++"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_HIGHC,BOOST_COMP_HIGHC_NAME)
-
-#ifdef BOOST_COMP_HIGHC_EMULATED
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_HIGHC_EMULATED,BOOST_COMP_HIGHC_NAME)
-#endif
diff --git a/third_party/boost/boost/predef/compiler/metrowerks.h b/third_party/boost/boost/predef/compiler/metrowerks.h
deleted file mode 100644
index f2d739b..0000000
--- a/third_party/boost/boost/predef/compiler/metrowerks.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_COMPILER_METROWERKS_H
-#define BOOST_PREDEF_COMPILER_METROWERKS_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_COMP_MWERKS`]
-
-[@http://en.wikipedia.org/wiki/CodeWarrior Metrowerks CodeWarrior] compiler.
-Version number available as major, minor, and patch.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__MWERKS__`] [__predef_detection__]]
-    [[`__CWCC__`] [__predef_detection__]]
-
-    [[`__CWCC__`] [V.R.P]]
-    [[`__MWERKS__`] [V.R.P >= 4.2.0]]
-    [[`__MWERKS__`] [9.R.0]]
-    [[`__MWERKS__`] [8.R.0]]
-    ]
- */
-
-#define BOOST_COMP_MWERKS BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__MWERKS__) || defined(__CWCC__)
-#   if !defined(BOOST_COMP_MWERKS_DETECTION) && defined(__CWCC__)
-#       define BOOST_COMP_MWERKS_DETECTION BOOST_PREDEF_MAKE_0X_VRPP(__CWCC__)
-#   endif
-#   if !defined(BOOST_COMP_MWERKS_DETECTION) && (__MWERKS__ >= 0x4200)
-#       define BOOST_COMP_MWERKS_DETECTION BOOST_PREDEF_MAKE_0X_VRPP(__MWERKS__)
-#   endif
-#   if !defined(BOOST_COMP_MWERKS_DETECTION) && (__MWERKS__ >= 0x3204) // note the "skip": 04->9.3
-#       define BOOST_COMP_MWERKS_DETECTION BOOST_VERSION_NUMBER(9,(__MWERKS__)%100-1,0)
-#   endif
-#   if !defined(BOOST_COMP_MWERKS_DETECTION) && (__MWERKS__ >= 0x3200)
-#       define BOOST_COMP_MWERKS_DETECTION BOOST_VERSION_NUMBER(9,(__MWERKS__)%100,0)
-#   endif
-#   if !defined(BOOST_COMP_MWERKS_DETECTION) && (__MWERKS__ >= 0x3000)
-#       define BOOST_COMP_MWERKS_DETECTION BOOST_VERSION_NUMBER(8,(__MWERKS__)%100,0)
-#   endif
-#   if !defined(BOOST_COMP_MWERKS_DETECTION)
-#       define BOOST_COMP_MWERKS_DETECTION BOOST_VERSION_NUMBER_AVAILABLE
-#   endif
-#endif
-
-#ifdef BOOST_COMP_MWERKS_DETECTION
-#   if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED)
-#       define BOOST_COMP_MWERKS_EMULATED BOOST_COMP_MWERKS_DETECTION
-#   else
-#       undef BOOST_COMP_MWERKS
-#       define BOOST_COMP_MWERKS BOOST_COMP_MWERKS_DETECTION
-#   endif
-#   define BOOST_COMP_MWERKS_AVAILABLE
-#   include <boost/predef/detail/comp_detected.h>
-#endif
-
-#define BOOST_COMP_MWERKS_NAME "Metrowerks CodeWarrior"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_MWERKS,BOOST_COMP_MWERKS_NAME)
-
-#ifdef BOOST_COMP_MWERKS_EMULATED
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_MWERKS_EMULATED,BOOST_COMP_MWERKS_NAME)
-#endif
diff --git a/third_party/boost/boost/predef/compiler/microtec.h b/third_party/boost/boost/predef/compiler/microtec.h
deleted file mode 100644
index 066a6d2..0000000
--- a/third_party/boost/boost/predef/compiler/microtec.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_COMPILER_MICROTEC_H
-#define BOOST_PREDEF_COMPILER_MICROTEC_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_COMP_MRI`]
-
-[@http://www.mentor.com/microtec/ Microtec C/C++] compiler.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`_MRI`] [__predef_detection__]]
-    ]
- */
-
-#define BOOST_COMP_MRI BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(_MRI)
-#   define BOOST_COMP_MRI_DETECTION BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#ifdef BOOST_COMP_MRI_DETECTION
-#   if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED)
-#       define BOOST_COMP_MRI_EMULATED BOOST_COMP_MRI_DETECTION
-#   else
-#       undef BOOST_COMP_MRI
-#       define BOOST_COMP_MRI BOOST_COMP_MRI_DETECTION
-#   endif
-#   define BOOST_COMP_MRI_AVAILABLE
-#   include <boost/predef/detail/comp_detected.h>
-#endif
-
-#define BOOST_COMP_MRI_NAME "Microtec C/C++"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_MRI,BOOST_COMP_MRI_NAME)
-
-#ifdef BOOST_COMP_MRI_EMULATED
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_MRI_EMULATED,BOOST_COMP_MRI_NAME)
-#endif
diff --git a/third_party/boost/boost/predef/compiler/mpw.h b/third_party/boost/boost/predef/compiler/mpw.h
deleted file mode 100644
index 1183306..0000000
--- a/third_party/boost/boost/predef/compiler/mpw.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_COMPILER_MPW_H
-#define BOOST_PREDEF_COMPILER_MPW_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_COMP_MPW`]
-
-[@http://en.wikipedia.org/wiki/Macintosh_Programmer%27s_Workshop MPW C++] compiler.
-Version number available as major, and minor.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__MRC__`] [__predef_detection__]]
-    [[`MPW_C`] [__predef_detection__]]
-    [[`MPW_CPLUS`] [__predef_detection__]]
-
-    [[`__MRC__`] [V.R.0]]
-    ]
- */
-
-#define BOOST_COMP_MPW BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__MRC__) || defined(MPW_C) || defined(MPW_CPLUS)
-#   if !defined(BOOST_COMP_MPW_DETECTION) && defined(__MRC__)
-#       define BOOST_COMP_MPW_DETECTION BOOST_PREDEF_MAKE_0X_VVRR(__MRC__)
-#   endif
-#   if !defined(BOOST_COMP_MPW_DETECTION)
-#       define BOOST_COMP_MPW_DETECTION BOOST_VERSION_NUMBER_AVAILABLE
-#   endif
-#endif
-
-#ifdef BOOST_COMP_MPW_DETECTION
-#   if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED)
-#       define BOOST_COMP_MPW_EMULATED BOOST_COMP_MPW_DETECTION
-#   else
-#       undef BOOST_COMP_MPW
-#       define BOOST_COMP_MPW BOOST_COMP_MPW_DETECTION
-#   endif
-#   define BOOST_COMP_MPW_AVAILABLE
-#   include <boost/predef/detail/comp_detected.h>
-#endif
-
-#define BOOST_COMP_MPW_NAME "MPW C++"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_MPW,BOOST_COMP_MPW_NAME)
-
-#ifdef BOOST_COMP_MPW_EMULATED
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_MPW_EMULATED,BOOST_COMP_MPW_NAME)
-#endif
diff --git a/third_party/boost/boost/predef/compiler/nvcc.h b/third_party/boost/boost/predef/compiler/nvcc.h
deleted file mode 100644
index 4130539..0000000
--- a/third_party/boost/boost/predef/compiler/nvcc.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
-Copyright Benjamin Worpitz 2018
-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_PREDEF_COMPILER_NVCC_H
-#define BOOST_PREDEF_COMPILER_NVCC_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_COMP_NVCC`]
-
-[@https://en.wikipedia.org/wiki/NVIDIA_CUDA_Compiler NVCC] compiler.
-Version number available as major, minor, and patch beginning with version 7.5.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__NVCC__`] [__predef_detection__]]
-
-    [[`__CUDACC_VER_MAJOR__`, `__CUDACC_VER_MINOR__`, `__CUDACC_VER_BUILD__`] [V.R.P]]
-    ]
- */
-
-#define BOOST_COMP_NVCC BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__NVCC__)
-#   if !defined(__CUDACC_VER_MAJOR__) || !defined(__CUDACC_VER_MINOR__) || !defined(__CUDACC_VER_BUILD__)
-#       define BOOST_COMP_NVCC_DETECTION BOOST_VERSION_NUMBER_AVAILABLE
-#   else
-#       define BOOST_COMP_NVCC_DETECTION BOOST_VERSION_NUMBER(__CUDACC_VER_MAJOR__, __CUDACC_VER_MINOR__, __CUDACC_VER_BUILD__)
-#   endif
-#endif
-
-#ifdef BOOST_COMP_NVCC_DETECTION
-/*
-Always define BOOST_COMP_NVCC instead of BOOST_COMP_NVCC_EMULATED
-The nvcc compilation process is somewhat special as can be read here:
-https://docs.nvidia.com/cuda/cuda-compiler-driver-nvcc/index.html#cuda-compilation-trajectory
-The nvcc compiler precompiles the input two times. Once for the device code
-being compiled by the cicc device compiler and once for the host code
-compiled by the real host compiler. NVCC uses gcc/clang/msvc/...
-depending on the host compiler being set on the command line.
-
-Predef (as a preprocessor only lib) detects the one doing the preprocessing
-as compiler and expects it to be the one doing the real compilation.
-This is not true for NVCC which is only doing the preprocessing and which
-is using another compiler for parts of its work. So for NVCC it should be
-allowed to set BOOST_COMP_NVCC additionally to the already detected host
-compiler because both is true: It is gcc/clang/... compiling the code, but it
-is also NVCC doing the preprocessing and adding some other quirks you may
-want to detect.
-
-This behavior is similar to what boost config is doing in `select_compiler_config.hpp`.
-There the NVCC detection is not handled as a real compiler (part of the
-#if-#elif) but as additional option before the real compiler.
-*/
-#   undef BOOST_COMP_NVCC
-#   define BOOST_COMP_NVCC BOOST_COMP_NVCC_DETECTION
-#   define BOOST_COMP_NVCC_AVAILABLE
-#   include <boost/predef/detail/comp_detected.h>
-#endif
-
-#define BOOST_COMP_NVCC_NAME "NVCC"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_NVCC,BOOST_COMP_NVCC_NAME)
diff --git a/third_party/boost/boost/predef/compiler/palm.h b/third_party/boost/boost/predef/compiler/palm.h
deleted file mode 100644
index 707925a..0000000
--- a/third_party/boost/boost/predef/compiler/palm.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_COMPILER_PALM_H
-#define BOOST_PREDEF_COMPILER_PALM_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_COMP_PALM`]
-
-Palm C/C++ compiler.
-Version number available as major, minor, and patch.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`_PACC_VER`] [__predef_detection__]]
-
-    [[`_PACC_VER`] [V.R.P]]
-    ]
- */
-
-#define BOOST_COMP_PALM BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(_PACC_VER)
-#   define BOOST_COMP_PALM_DETECTION BOOST_PREDEF_MAKE_0X_VRRPP000(_PACC_VER)
-#endif
-
-#ifdef BOOST_COMP_PALM_DETECTION
-#   if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED)
-#       define BOOST_COMP_PALM_EMULATED BOOST_COMP_PALM_DETECTION
-#   else
-#       undef BOOST_COMP_PALM
-#       define BOOST_COMP_PALM BOOST_COMP_PALM_DETECTION
-#   endif
-#   define BOOST_COMP_PALM_AVAILABLE
-#   include <boost/predef/detail/comp_detected.h>
-#endif
-
-#define BOOST_COMP_PALM_NAME "Palm C/C++"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_PALM,BOOST_COMP_PALM_NAME)
-
-#ifdef BOOST_COMP_PALM_EMULATED
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_PALM_EMULATED,BOOST_COMP_PALM_NAME)
-#endif
diff --git a/third_party/boost/boost/predef/compiler/pgi.h b/third_party/boost/boost/predef/compiler/pgi.h
deleted file mode 100644
index e016aeb..0000000
--- a/third_party/boost/boost/predef/compiler/pgi.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_COMPILER_PGI_H
-#define BOOST_PREDEF_COMPILER_PGI_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_COMP_PGI`]
-
-[@http://en.wikipedia.org/wiki/The_Portland_Group Portland Group C/C++] compiler.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__PGI`] [__predef_detection__]]
-
-    [[`__PGIC__`, `__PGIC_MINOR__`, `__PGIC_PATCHLEVEL__`] [V.R.P]]
-    ]
- */
-
-#define BOOST_COMP_PGI BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__PGI)
-#   if !defined(BOOST_COMP_PGI_DETECTION) && (defined(__PGIC__) && defined(__PGIC_MINOR__) && defined(__PGIC_PATCHLEVEL__))
-#       define BOOST_COMP_PGI_DETECTION BOOST_VERSION_NUMBER(__PGIC__,__PGIC_MINOR__,__PGIC_PATCHLEVEL__)
-#   endif
-#   if !defined(BOOST_COMP_PGI_DETECTION)
-#       define BOOST_COMP_PGI_DETECTION BOOST_VERSION_NUMBER_AVAILABLE
-#   endif
-#endif
-
-#ifdef BOOST_COMP_PGI_DETECTION
-#   if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED)
-#       define BOOST_COMP_PGI_EMULATED BOOST_COMP_PGI_DETECTION
-#   else
-#       undef BOOST_COMP_PGI
-#       define BOOST_COMP_PGI BOOST_COMP_PGI_DETECTION
-#   endif
-#   define BOOST_COMP_PGI_AVAILABLE
-#   include <boost/predef/detail/comp_detected.h>
-#endif
-
-#define BOOST_COMP_PGI_NAME "Portland Group C/C++"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_PGI,BOOST_COMP_PGI_NAME)
-
-#ifdef BOOST_COMP_PGI_EMULATED
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_PGI_EMULATED,BOOST_COMP_PGI_NAME)
-#endif
diff --git a/third_party/boost/boost/predef/compiler/sgi_mipspro.h b/third_party/boost/boost/predef/compiler/sgi_mipspro.h
deleted file mode 100644
index 00739f0..0000000
--- a/third_party/boost/boost/predef/compiler/sgi_mipspro.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_COMPILER_SGI_MIPSPRO_H
-#define BOOST_PREDEF_COMPILER_SGI_MIPSPRO_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_COMP_SGI`]
-
-[@http://en.wikipedia.org/wiki/MIPSpro SGI MIPSpro] compiler.
-Version number available as major, minor, and patch.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__sgi`] [__predef_detection__]]
-    [[`sgi`] [__predef_detection__]]
-
-    [[`_SGI_COMPILER_VERSION`] [V.R.P]]
-    [[`_COMPILER_VERSION`] [V.R.P]]
-    ]
- */
-
-#define BOOST_COMP_SGI BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__sgi) || defined(sgi)
-#   if !defined(BOOST_COMP_SGI_DETECTION) && defined(_SGI_COMPILER_VERSION)
-#       define BOOST_COMP_SGI_DETECTION BOOST_PREDEF_MAKE_10_VRP(_SGI_COMPILER_VERSION)
-#   endif
-#   if !defined(BOOST_COMP_SGI_DETECTION) && defined(_COMPILER_VERSION)
-#       define BOOST_COMP_SGI_DETECTION BOOST_PREDEF_MAKE_10_VRP(_COMPILER_VERSION)
-#   endif
-#   if !defined(BOOST_COMP_SGI_DETECTION)
-#       define BOOST_COMP_SGI_DETECTION BOOST_VERSION_NUMBER_AVAILABLE
-#   endif
-#endif
-
-#ifdef BOOST_COMP_SGI_DETECTION
-#   if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED)
-#       define BOOST_COMP_SGI_EMULATED BOOST_COMP_SGI_DETECTION
-#   else
-#       undef BOOST_COMP_SGI
-#       define BOOST_COMP_SGI BOOST_COMP_SGI_DETECTION
-#   endif
-#   define BOOST_COMP_SGI_AVAILABLE
-#   include <boost/predef/detail/comp_detected.h>
-#endif
-
-#define BOOST_COMP_SGI_NAME "SGI MIPSpro"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_SGI,BOOST_COMP_SGI_NAME)
-
-#ifdef BOOST_COMP_SGI_EMULATED
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_SGI_EMULATED,BOOST_COMP_SGI_NAME)
-#endif
diff --git a/third_party/boost/boost/predef/compiler/sunpro.h b/third_party/boost/boost/predef/compiler/sunpro.h
deleted file mode 100644
index 92c3926..0000000
--- a/third_party/boost/boost/predef/compiler/sunpro.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_COMPILER_SUNPRO_H
-#define BOOST_PREDEF_COMPILER_SUNPRO_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_COMP_SUNPRO`]
-
-[@http://en.wikipedia.org/wiki/Oracle_Solaris_Studio Oracle Solaris Studio] compiler.
-Version number available as major, minor, and patch.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__SUNPRO_CC`] [__predef_detection__]]
-    [[`__SUNPRO_C`] [__predef_detection__]]
-
-    [[`__SUNPRO_CC`] [V.R.P]]
-    [[`__SUNPRO_C`] [V.R.P]]
-    [[`__SUNPRO_CC`] [VV.RR.P]]
-    [[`__SUNPRO_C`] [VV.RR.P]]
-    ]
- */
-
-#define BOOST_COMP_SUNPRO BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__SUNPRO_CC) || defined(__SUNPRO_C)
-#   if !defined(BOOST_COMP_SUNPRO_DETECTION) && defined(__SUNPRO_CC)
-#       if (__SUNPRO_CC < 0x5100)
-#           define BOOST_COMP_SUNPRO_DETECTION BOOST_PREDEF_MAKE_0X_VRP(__SUNPRO_CC)
-#       else
-#           define BOOST_COMP_SUNPRO_DETECTION BOOST_PREDEF_MAKE_0X_VVRRP(__SUNPRO_CC)
-#       endif
-#   endif
-#   if !defined(BOOST_COMP_SUNPRO_DETECTION) && defined(__SUNPRO_C)
-#       if (__SUNPRO_C < 0x5100)
-#           define BOOST_COMP_SUNPRO_DETECTION BOOST_PREDEF_MAKE_0X_VRP(__SUNPRO_C)
-#       else
-#           define BOOST_COMP_SUNPRO_DETECTION BOOST_PREDEF_MAKE_0X_VVRRP(__SUNPRO_C)
-#       endif
-#   endif
-#   if !defined(BOOST_COMP_SUNPRO_DETECTION)
-#       define BOOST_COMP_SUNPRO_DETECTION BOOST_VERSION_NUMBER_AVAILABLE
-#   endif
-#endif
-
-#ifdef BOOST_COMP_SUNPRO_DETECTION
-#   if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED)
-#       define BOOST_COMP_SUNPRO_EMULATED BOOST_COMP_SUNPRO_DETECTION
-#   else
-#       undef BOOST_COMP_SUNPRO
-#       define BOOST_COMP_SUNPRO BOOST_COMP_SUNPRO_DETECTION
-#   endif
-#   define BOOST_COMP_SUNPRO_AVAILABLE
-#   include <boost/predef/detail/comp_detected.h>
-#endif
-
-#define BOOST_COMP_SUNPRO_NAME "Oracle Solaris Studio"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_SUNPRO,BOOST_COMP_SUNPRO_NAME)
-
-#ifdef BOOST_COMP_SUNPRO_EMULATED
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_SUNPRO_EMULATED,BOOST_COMP_SUNPRO_NAME)
-#endif
diff --git a/third_party/boost/boost/predef/compiler/tendra.h b/third_party/boost/boost/predef/compiler/tendra.h
deleted file mode 100644
index c2bc5e4..0000000
--- a/third_party/boost/boost/predef/compiler/tendra.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_COMPILER_TENDRA_H
-#define BOOST_PREDEF_COMPILER_TENDRA_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_COMP_TENDRA`]
-
-[@http://en.wikipedia.org/wiki/TenDRA_Compiler TenDRA C/C++] compiler.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__TenDRA__`] [__predef_detection__]]
-    ]
- */
-
-#define BOOST_COMP_TENDRA BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__TenDRA__)
-#   define BOOST_COMP_TENDRA_DETECTION BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#ifdef BOOST_COMP_TENDRA_DETECTION
-#   if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED)
-#       define BOOST_COMP_TENDRA_EMULATED BOOST_COMP_TENDRA_DETECTION
-#   else
-#       undef BOOST_COMP_TENDRA
-#       define BOOST_COMP_TENDRA BOOST_COMP_TENDRA_DETECTION
-#   endif
-#   define BOOST_COMP_TENDRA_AVAILABLE
-#   include <boost/predef/detail/comp_detected.h>
-#endif
-
-#define BOOST_COMP_TENDRA_NAME "TenDRA C/C++"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_TENDRA,BOOST_COMP_TENDRA_NAME)
-
-#ifdef BOOST_COMP_TENDRA_EMULATED
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_TENDRA_EMULATED,BOOST_COMP_TENDRA_NAME)
-#endif
diff --git a/third_party/boost/boost/predef/compiler/visualc.h b/third_party/boost/boost/predef/compiler/visualc.h
deleted file mode 100644
index f81e61e..0000000
--- a/third_party/boost/boost/predef/compiler/visualc.h
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_COMPILER_VISUALC_H
-#define BOOST_PREDEF_COMPILER_VISUALC_H
-
-/* Other compilers that emulate this one need to be detected first. */
-
-#include <boost/predef/compiler/clang.h>
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_COMP_MSVC`]
-
-[@http://en.wikipedia.org/wiki/Visual_studio Microsoft Visual C/C++] compiler.
-Version number available as major, minor, and patch.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`_MSC_VER`] [__predef_detection__]]
-
-    [[`_MSC_FULL_VER`] [V.R.P]]
-    [[`_MSC_VER`] [V.R.0]]
-    ]
-
-[note Release of Visual Studio after 2015 will no longer be identified
-by Boost Predef as the marketing version number. Instead we use the
-compiler version number directly, i.e. the _MSC_VER number.]
- */
-
-#define BOOST_COMP_MSVC BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(_MSC_VER)
-#   if !defined (_MSC_FULL_VER)
-#       define BOOST_COMP_MSVC_BUILD 0
-#   else
-        /* how many digits does the build number have? */
-#       if _MSC_FULL_VER / 10000 == _MSC_VER
-            /* four digits */
-#           define BOOST_COMP_MSVC_BUILD (_MSC_FULL_VER % 10000)
-#       elif _MSC_FULL_VER / 100000 == _MSC_VER
-            /* five digits */
-#           define BOOST_COMP_MSVC_BUILD (_MSC_FULL_VER % 100000)
-#       else
-#           error "Cannot determine build number from _MSC_FULL_VER"
-#       endif
-#   endif
-    /*
-    VS2014 was skipped in the release sequence for MS. Which
-    means that the compiler and VS product versions are no longer
-    in sync. Hence we need to use different formulas for
-    mapping from MSC version to VS product version.
-
-    VS2017 is a total nightmare when it comes to version numbers.
-    Hence to avoid arguments relating to that both present and
-    future.. Any version after VS2015 will use solely the compiler
-    version, i.e. cl.exe, as the version number here.
-    */
-#   if (_MSC_VER > 1900)
-#       define BOOST_COMP_MSVC_DETECTION BOOST_VERSION_NUMBER(\
-            _MSC_VER/100,\
-            _MSC_VER%100,\
-            BOOST_COMP_MSVC_BUILD)
-#   elif (_MSC_VER >= 1900)
-#       define BOOST_COMP_MSVC_DETECTION BOOST_VERSION_NUMBER(\
-            _MSC_VER/100-5,\
-            _MSC_VER%100,\
-            BOOST_COMP_MSVC_BUILD)
-#   else
-#       define BOOST_COMP_MSVC_DETECTION BOOST_VERSION_NUMBER(\
-            _MSC_VER/100-6,\
-            _MSC_VER%100,\
-            BOOST_COMP_MSVC_BUILD)
-#   endif
-#endif
-
-#ifdef BOOST_COMP_MSVC_DETECTION
-#   if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED)
-#       define BOOST_COMP_MSVC_EMULATED BOOST_COMP_MSVC_DETECTION
-#   else
-#       undef BOOST_COMP_MSVC
-#       define BOOST_COMP_MSVC BOOST_COMP_MSVC_DETECTION
-#   endif
-#   define BOOST_COMP_MSVC_AVAILABLE
-#   include <boost/predef/detail/comp_detected.h>
-#endif
-
-#define BOOST_COMP_MSVC_NAME "Microsoft Visual C/C++"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_MSVC,BOOST_COMP_MSVC_NAME)
-
-#ifdef BOOST_COMP_MSVC_EMULATED
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_MSVC_EMULATED,BOOST_COMP_MSVC_NAME)
-#endif
diff --git a/third_party/boost/boost/predef/compiler/watcom.h b/third_party/boost/boost/predef/compiler/watcom.h
deleted file mode 100644
index b0e7776..0000000
--- a/third_party/boost/boost/predef/compiler/watcom.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_COMPILER_WATCOM_H
-#define BOOST_PREDEF_COMPILER_WATCOM_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_COMP_WATCOM`]
-
-[@http://en.wikipedia.org/wiki/Watcom Watcom C++] compiler.
-Version number available as major, and minor.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__WATCOMC__`] [__predef_detection__]]
-
-    [[`__WATCOMC__`] [V.R.P]]
-    ]
- */
-
-#define BOOST_COMP_WATCOM BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__WATCOMC__)
-#   define BOOST_COMP_WATCOM_DETECTION BOOST_PREDEF_MAKE_10_VVRR(__WATCOMC__)
-#endif
-
-#ifdef BOOST_COMP_WATCOM_DETECTION
-#   if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED)
-#       define BOOST_COMP_WATCOM_EMULATED BOOST_COMP_WATCOM_DETECTION
-#   else
-#       undef BOOST_COMP_WATCOM
-#       define BOOST_COMP_WATCOM BOOST_COMP_WATCOM_DETECTION
-#   endif
-#   define BOOST_COMP_WATCOM_AVAILABLE
-#   include <boost/predef/detail/comp_detected.h>
-#endif
-
-#define BOOST_COMP_WATCOM_NAME "Watcom C++"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_WATCOM,BOOST_COMP_WATCOM_NAME)
-
-#ifdef BOOST_COMP_WATCOM_EMULATED
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_WATCOM_EMULATED,BOOST_COMP_WATCOM_NAME)
-#endif
diff --git a/third_party/boost/boost/predef/detail/_cassert.h b/third_party/boost/boost/predef/detail/_cassert.h
deleted file mode 100644
index 940e944..0000000
--- a/third_party/boost/boost/predef/detail/_cassert.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
-Copyright Rene Rivera 2011-2012
-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_PREDEF_DETAIL__CASSERT_H
-#define BOOST_PREDEF_DETAIL__CASSERT_H
-
-#if defined(__cplusplus)
-#include <cassert>
-#else
-#include <assert.h>
-#endif
-
-#endif
diff --git a/third_party/boost/boost/predef/detail/_exception.h b/third_party/boost/boost/predef/detail/_exception.h
deleted file mode 100644
index f5a6687..0000000
--- a/third_party/boost/boost/predef/detail/_exception.h
+++ /dev/null
@@ -1,15 +0,0 @@
-/*
-Copyright Rene Rivera 2011-2012
-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_PREDEF_DETAIL__EXCEPTION_H
-#define BOOST_PREDEF_DETAIL__EXCEPTION_H
-
-#if defined(__cplusplus)
-#include <exception>
-#endif
-
-#endif
diff --git a/third_party/boost/boost/predef/detail/comp_detected.h b/third_party/boost/boost/predef/detail/comp_detected.h
deleted file mode 100644
index fda1801..0000000
--- a/third_party/boost/boost/predef/detail/comp_detected.h
+++ /dev/null
@@ -1,10 +0,0 @@
-/*
-Copyright Rene Rivera 2014
-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_PREDEF_DETAIL_COMP_DETECTED
-#define BOOST_PREDEF_DETAIL_COMP_DETECTED 1
-#endif
diff --git a/third_party/boost/boost/predef/detail/os_detected.h b/third_party/boost/boost/predef/detail/os_detected.h
deleted file mode 100644
index 08e10f9..0000000
--- a/third_party/boost/boost/predef/detail/os_detected.h
+++ /dev/null
@@ -1,10 +0,0 @@
-/*
-Copyright Rene Rivera 2013
-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_PREDEF_DETAIL_OS_DETECTED
-#define BOOST_PREDEF_DETAIL_OS_DETECTED 1
-#endif
diff --git a/third_party/boost/boost/predef/detail/platform_detected.h b/third_party/boost/boost/predef/detail/platform_detected.h
deleted file mode 100644
index 4faf693..0000000
--- a/third_party/boost/boost/predef/detail/platform_detected.h
+++ /dev/null
@@ -1,10 +0,0 @@
-/*
-Copyright Rene Rivera 2014
-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_PREDEF_DETAIL_PLAT_DETECTED
-#define BOOST_PREDEF_DETAIL_PLAT_DETECTED 1
-#endif
diff --git a/third_party/boost/boost/predef/detail/test.h b/third_party/boost/boost/predef/detail/test.h
deleted file mode 100644
index 546a9e4..0000000
--- a/third_party/boost/boost/predef/detail/test.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
-Copyright Rene Rivera 2011-2012
-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_PREDEF_DETAIL_TEST_H
-#define BOOST_PREDEF_DETAIL_TEST_H
-
-#if !defined(BOOST_PREDEF_INTERNAL_GENERATE_TESTS)
-
-#define BOOST_PREDEF_DECLARE_TEST(x,s)
-
-#endif
-
-#endif
diff --git a/third_party/boost/boost/predef/hardware.h b/third_party/boost/boost/predef/hardware.h
deleted file mode 100644
index 972b73a..0000000
--- a/third_party/boost/boost/predef/hardware.h
+++ /dev/null
@@ -1,16 +0,0 @@
-/*
-Copyright Charly Chevalier 2015
-Copyright Joel Falcou 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)
-*/
-
-#if !defined(BOOST_PREDEF_HARDWARE_H) || defined(BOOST_PREDEF_INTERNAL_GENERATE_TESTS)
-#ifndef BOOST_PREDEF_HARDWARE_H
-#define BOOST_PREDEF_HARDWARE_H
-#endif
-
-#include <boost/predef/hardware/simd.h>
-
-#endif
diff --git a/third_party/boost/boost/predef/hardware/simd.h b/third_party/boost/boost/predef/hardware/simd.h
deleted file mode 100644
index ac5c9da..0000000
--- a/third_party/boost/boost/predef/hardware/simd.h
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
-Copyright Charly Chevalier 2015
-Copyright Joel Falcou 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)
-*/
-
-#include <boost/predef/hardware/simd/x86.h>
-#include <boost/predef/hardware/simd/x86_amd.h>
-#include <boost/predef/hardware/simd/arm.h>
-#include <boost/predef/hardware/simd/ppc.h>
-
-#ifndef BOOST_PREDEF_HARDWARE_SIMD_H
-#define BOOST_PREDEF_HARDWARE_SIMD_H
-
-#include <boost/predef/version_number.h>
-
-/*`
- [section Using the `BOOST_HW_SIMD_*` predefs]
- [include ../doc/hardware_simd.qbk]
- [endsect]
-
- [/ --------------------------- ]
-
- [section `BOOST_HW_SIMD_*`]
-
- [heading `BOOST_HW_SIMD`]
-
- The SIMD extension detected for a specific architectures.
- Version number depends on the detected extension.
-
- [table
-     [[__predef_symbol__] [__predef_version__]]
-
-     [[`BOOST_HW_SIMD_X86_AVAILABLE`] [__predef_detection__]]
-     [[`BOOST_HW_SIMD_X86_AMD_AVAILABLE`] [__predef_detection__]]
-     [[`BOOST_HW_SIMD_ARM_AVAILABLE`] [__predef_detection__]]
-     [[`BOOST_HW_SIMD_PPC_AVAILABLE`] [__predef_detection__]]
-     ]
-
- [include ../include/boost/predef/hardware/simd/x86.h]
- [include ../include/boost/predef/hardware/simd/x86_amd.h]
- [include ../include/boost/predef/hardware/simd/arm.h]
- [include ../include/boost/predef/hardware/simd/ppc.h]
-
- [endsect]
-
- [/ --------------------------- ]
-
- [section `BOOST_HW_SIMD_X86_*_VERSION`]
- [include ../include/boost/predef/hardware/simd/x86/versions.h]
- [endsect]
-
- [section `BOOST_HW_SIMD_X86_AMD_*_VERSION`]
- [include ../include/boost/predef/hardware/simd/x86_amd/versions.h]
- [endsect]
-
- [section `BOOST_HW_SIMD_ARM_*_VERSION`]
- [include ../include/boost/predef/hardware/simd/arm/versions.h]
- [endsect]
-
- [section `BOOST_HW_SIMD_PPC_*_VERSION`]
- [include ../include/boost/predef/hardware/simd/ppc/versions.h]
- [endsect]
-
- */
-
-// We check if SIMD extension of multiples architectures have been detected,
-// if yes, then this is an error!
-//
-// NOTE: _X86_AMD implies _X86, so there is no need to check for it here!
-//
-#if defined(BOOST_HW_SIMD_ARM_AVAILABLE) && defined(BOOST_HW_SIMD_PPC_AVAILABLE) ||\
-    defined(BOOST_HW_SIMD_ARM_AVAILABLE) && defined(BOOST_HW_SIMD_X86_AVAILABLE) ||\
-    defined(BOOST_HW_SIMD_PPC_AVAILABLE) && defined(BOOST_HW_SIMD_X86_AVAILABLE)
-#   error "Multiple SIMD architectures detected, this cannot happen!"
-#endif
-
-#if defined(BOOST_HW_SIMD_X86_AVAILABLE) && defined(BOOST_HW_SIMD_X86_AMD_AVAILABLE)
-    // If both standard _X86 and _X86_AMD are available,
-    // then take the biggest version of the two!
-#   if BOOST_HW_SIMD_X86 >= BOOST_HW_SIMD_X86_AMD
-#      define BOOST_HW_SIMD BOOST_HW_SIMD_X86
-#   else
-#      define BOOST_HW_SIMD BOOST_HW_SIMD_X86_AMD
-#   endif
-#endif
-
-#if !defined(BOOST_HW_SIMD)
-    // At this point, only one of these two is defined
-#   if defined(BOOST_HW_SIMD_X86_AVAILABLE)
-#      define BOOST_HW_SIMD BOOST_HW_SIMD_X86
-#   endif
-#   if defined(BOOST_HW_SIMD_X86_AMD_AVAILABLE)
-#      define BOOST_HW_SIMD BOOST_HW_SIMD_X86_AMD
-#   endif
-#endif
-
-#if defined(BOOST_HW_SIMD_ARM_AVAILABLE)
-#   define BOOST_HW_SIMD BOOST_HW_SIMD_ARM
-#endif
-
-#if defined(BOOST_HW_SIMD_PPC_AVAILABLE)
-#   define BOOST_HW_SIMD BOOST_HW_SIMD_PPC
-#endif
-
-#if defined(BOOST_HW_SIMD)
-#   define BOOST_HW_SIMD_AVAILABLE
-#else
-#   define BOOST_HW_SIMD BOOST_VERSION_NUMBER_NOT_AVAILABLE
-#endif
-
-#define BOOST_HW_SIMD_NAME "Hardware SIMD"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_HW_SIMD, BOOST_HW_SIMD_NAME)
diff --git a/third_party/boost/boost/predef/hardware/simd/arm.h b/third_party/boost/boost/predef/hardware/simd/arm.h
deleted file mode 100644
index 3b3fc3f..0000000
--- a/third_party/boost/boost/predef/hardware/simd/arm.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
-Copyright Charly Chevalier 2015
-Copyright Joel Falcou 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)
-*/
-
-#ifndef BOOST_PREDEF_HARDWARE_SIMD_ARM_H
-#define BOOST_PREDEF_HARDWARE_SIMD_ARM_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/hardware/simd/arm/versions.h>
-
-/*`
- [heading `BOOST_HW_SIMD_ARM`]
-
- The SIMD extension for ARM (*if detected*).
- Version number depends on the most recent detected extension.
-
- [table
-     [[__predef_symbol__] [__predef_version__]]
-
-     [[`__ARM_NEON__`] [__predef_detection__]]
-     [[`__aarch64__`] [__predef_detection__]]
-     [[`_M_ARM`] [__predef_detection__]]
-     [[`_M_ARM64`] [__predef_detection__]]
-     ]
-
- [table
-     [[__predef_symbol__] [__predef_version__]]
-
-     [[`__ARM_NEON__`] [BOOST_HW_SIMD_ARM_NEON_VERSION]]
-     [[`__aarch64__`] [BOOST_HW_SIMD_ARM_NEON_VERSION]]
-     [[`_M_ARM`] [BOOST_HW_SIMD_ARM_NEON_VERSION]]
-     [[`_M_ARM64`] [BOOST_HW_SIMD_ARM_NEON_VERSION]]
-     ]
-
- */
-
-#define BOOST_HW_SIMD_ARM BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#undef BOOST_HW_SIMD_ARM
-#if !defined(BOOST_HW_SIMD_ARM) && (defined(__ARM_NEON__) || defined(__aarch64__) || defined (_M_ARM) || defined (_M_ARM64))
-#   define BOOST_HW_SIMD_ARM BOOST_HW_SIMD_ARM_NEON_VERSION
-#endif
-
-#if !defined(BOOST_HW_SIMD_ARM)
-#   define BOOST_HW_SIMD_ARM BOOST_VERSION_NUMBER_NOT_AVAILABLE
-#else
-#   define BOOST_HW_SIMD_ARM_AVAILABLE
-#endif
-
-#define BOOST_HW_SIMD_ARM_NAME "ARM SIMD"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_HW_SIMD_ARM, BOOST_HW_SIMD_ARM_NAME)
diff --git a/third_party/boost/boost/predef/hardware/simd/arm/versions.h b/third_party/boost/boost/predef/hardware/simd/arm/versions.h
deleted file mode 100644
index 8425b31..0000000
--- a/third_party/boost/boost/predef/hardware/simd/arm/versions.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
-Copyright Charly Chevalier 2015
-Copyright Joel Falcou 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)
-*/
-
-#ifndef BOOST_PREDEF_HARDWARE_SIMD_ARM_VERSIONS_H
-#define BOOST_PREDEF_HARDWARE_SIMD_ARM_VERSIONS_H
-
-#include <boost/predef/version_number.h>
-
-/*`
- Those defines represent ARM SIMD extensions versions.
-
- [note You *MUST* compare them with the predef `BOOST_HW_SIMD_ARM`.]
- */
-
-// ---------------------------------
-
-/*`
- [heading `BOOST_HW_SIMD_ARM_NEON_VERSION`]
-
- The [@https://en.wikipedia.org/wiki/ARM_architecture#Advanced_SIMD_.28NEON.29 NEON]
- ARM extension version number.
-
- Version number is: *1.0.0*.
- */
-#define BOOST_HW_SIMD_ARM_NEON_VERSION BOOST_VERSION_NUMBER(1, 0, 0)
-
-#endif
diff --git a/third_party/boost/boost/predef/hardware/simd/ppc.h b/third_party/boost/boost/predef/hardware/simd/ppc.h
deleted file mode 100644
index eef25c2..0000000
--- a/third_party/boost/boost/predef/hardware/simd/ppc.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
-Copyright Charly Chevalier 2015
-Copyright Joel Falcou 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)
-*/
-
-#ifndef BOOST_PREDEF_HARDWARE_SIMD_PPC_H
-#define BOOST_PREDEF_HARDWARE_SIMD_PPC_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/hardware/simd/ppc/versions.h>
-
-/*`
- [heading `BOOST_HW_SIMD_PPC`]
-
- The SIMD extension for PowerPC (*if detected*).
- Version number depends on the most recent detected extension.
-
- [table
-     [[__predef_symbol__] [__predef_version__]]
-
-     [[`__VECTOR4DOUBLE__`] [__predef_detection__]]
-
-     [[`__ALTIVEC__`] [__predef_detection__]]
-     [[`__VEC__`] [__predef_detection__]]
-
-     [[`__VSX__`] [__predef_detection__]]
-     ]
-
- [table
-     [[__predef_symbol__] [__predef_version__]]
-
-     [[`__VECTOR4DOUBLE__`] [BOOST_HW_SIMD_PPC_QPX_VERSION]]
-
-     [[`__ALTIVEC__`] [BOOST_HW_SIMD_PPC_VMX_VERSION]]
-     [[`__VEC__`] [BOOST_HW_SIMD_PPC_VMX_VERSION]]
-
-     [[`__VSX__`] [BOOST_HW_SIMD_PPC_VSX_VERSION]]
-     ]
-
- */
-
-#define BOOST_HW_SIMD_PPC BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#undef BOOST_HW_SIMD_PPC
-#if !defined(BOOST_HW_SIMD_PPC) && defined(__VECTOR4DOUBLE__)
-#   define BOOST_HW_SIMD_PPC BOOST_HW_SIMD_PPC_QPX_VERSION
-#endif
-#if !defined(BOOST_HW_SIMD_PPC) && defined(__VSX__)
-#   define BOOST_HW_SIMD_PPC BOOST_HW_SIMD_PPC_VSX_VERSION
-#endif
-#if !defined(BOOST_HW_SIMD_PPC) && (defined(__ALTIVEC__) || defined(__VEC__))
-#   define BOOST_HW_SIMD_PPC BOOST_HW_SIMD_PPC_VMX_VERSION
-#endif
-
-#if !defined(BOOST_HW_SIMD_PPC)
-#   define BOOST_HW_SIMD_PPC BOOST_VERSION_NUMBER_NOT_AVAILABLE
-#else
-#   define BOOST_HW_SIMD_PPC_AVAILABLE
-#endif
-
-#define BOOST_HW_SIMD_PPC_NAME "PPC SIMD"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_HW_SIMD_PPC, BOOST_HW_SIMD_PPC_NAME)
diff --git a/third_party/boost/boost/predef/hardware/simd/ppc/versions.h b/third_party/boost/boost/predef/hardware/simd/ppc/versions.h
deleted file mode 100644
index ffe3f0b..0000000
--- a/third_party/boost/boost/predef/hardware/simd/ppc/versions.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
-Copyright Charly Chevalier 2015
-Copyright Joel Falcou 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)
-*/
-
-#ifndef BOOST_PREDEF_HARDWARE_SIMD_PPC_VERSIONS_H
-#define BOOST_PREDEF_HARDWARE_SIMD_PPC_VERSIONS_H
-
-#include <boost/predef/version_number.h>
-
-/*`
- Those defines represent Power PC SIMD extensions versions.
-
- [note You *MUST* compare them with the predef `BOOST_HW_SIMD_PPC`.]
- */
-
-// ---------------------------------
-
-/*`
- [heading `BOOST_HW_SIMD_PPC_VMX_VERSION`]
-
- The [@https://en.wikipedia.org/wiki/AltiVec#VMX128 VMX] powerpc extension
- version number.
-
- Version number is: *1.0.0*.
- */
-#define BOOST_HW_SIMD_PPC_VMX_VERSION BOOST_VERSION_NUMBER(1, 0, 0)
-
-/*`
- [heading `BOOST_HW_SIMD_PPC_VSX_VERSION`]
-
- The [@https://en.wikipedia.org/wiki/AltiVec#VSX VSX] powerpc extension version
- number.
-
- Version number is: *1.1.0*.
- */
-#define BOOST_HW_SIMD_PPC_VSX_VERSION BOOST_VERSION_NUMBER(1, 1, 0)
-
-/*`
- [heading `BOOST_HW_SIMD_PPC_QPX_VERSION`]
-
- The QPX powerpc extension version number.
-
- Version number is: *2.0.0*.
- */
-#define BOOST_HW_SIMD_PPC_QPX_VERSION BOOST_VERSION_NUMBER(2, 0, 0)
-
-#endif
diff --git a/third_party/boost/boost/predef/hardware/simd/x86.h b/third_party/boost/boost/predef/hardware/simd/x86.h
deleted file mode 100644
index 88bd81e..0000000
--- a/third_party/boost/boost/predef/hardware/simd/x86.h
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
-Copyright Charly Chevalier 2015
-Copyright Joel Falcou 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)
-*/
-
-#ifndef BOOST_PREDEF_HARDWARE_SIMD_X86_H
-#define BOOST_PREDEF_HARDWARE_SIMD_X86_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/hardware/simd/x86/versions.h>
-
-/*`
- [heading `BOOST_HW_SIMD_X86`]
-
- The SIMD extension for x86 (*if detected*).
- Version number depends on the most recent detected extension.
-
- [table
-     [[__predef_symbol__] [__predef_version__]]
-
-     [[`__SSE__`] [__predef_detection__]]
-     [[`_M_X64`] [__predef_detection__]]
-     [[`_M_IX86_FP >= 1`] [__predef_detection__]]
-
-     [[`__SSE2__`] [__predef_detection__]]
-     [[`_M_X64`] [__predef_detection__]]
-     [[`_M_IX86_FP >= 2`] [__predef_detection__]]
-
-     [[`__SSE3__`] [__predef_detection__]]
-
-     [[`__SSSE3__`] [__predef_detection__]]
-
-     [[`__SSE4_1__`] [__predef_detection__]]
-
-     [[`__SSE4_2__`] [__predef_detection__]]
-
-     [[`__AVX__`] [__predef_detection__]]
-
-     [[`__FMA__`] [__predef_detection__]]
-
-     [[`__AVX2__`] [__predef_detection__]]
-     ]
-
- [table
-     [[__predef_symbol__] [__predef_version__]]
-
-     [[`__SSE__`] [BOOST_HW_SIMD_X86_SSE_VERSION]]
-     [[`_M_X64`] [BOOST_HW_SIMD_X86_SSE_VERSION]]
-     [[`_M_IX86_FP >= 1`] [BOOST_HW_SIMD_X86_SSE_VERSION]]
-
-     [[`__SSE2__`] [BOOST_HW_SIMD_X86_SSE2_VERSION]]
-     [[`_M_X64`] [BOOST_HW_SIMD_X86_SSE2_VERSION]]
-     [[`_M_IX86_FP >= 2`] [BOOST_HW_SIMD_X86_SSE2_VERSION]]
-
-     [[`__SSE3__`] [BOOST_HW_SIMD_X86_SSE3_VERSION]]
-
-     [[`__SSSE3__`] [BOOST_HW_SIMD_X86_SSSE3_VERSION]]
-
-     [[`__SSE4_1__`] [BOOST_HW_SIMD_X86_SSE4_1_VERSION]]
-
-     [[`__SSE4_2__`] [BOOST_HW_SIMD_X86_SSE4_2_VERSION]]
-
-     [[`__AVX__`] [BOOST_HW_SIMD_X86_AVX_VERSION]]
-
-     [[`__FMA__`] [BOOST_HW_SIMD_X86_FMA3_VERSION]]
-
-     [[`__AVX2__`] [BOOST_HW_SIMD_X86_AVX2_VERSION]]
-     ]
-
- */
-
-#define BOOST_HW_SIMD_X86 BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#undef BOOST_HW_SIMD_X86
-#if !defined(BOOST_HW_SIMD_X86) && defined(__MIC__)
-#   define BOOST_HW_SIMD_X86 BOOST_HW_SIMD_X86_MIC_VERSION
-#endif
-#if !defined(BOOST_HW_SIMD_X86) && defined(__AVX2__)
-#   define BOOST_HW_SIMD_X86 BOOST_HW_SIMD_X86_AVX2_VERSION
-#endif
-#if !defined(BOOST_HW_SIMD_X86) && defined(__AVX__)
-#   define BOOST_HW_SIMD_X86 BOOST_HW_SIMD_X86_AVX_VERSION
-#endif
-#if !defined(BOOST_HW_SIMD_X86) && defined(__FMA__)
-#   define BOOST_HW_SIMD_X86 BOOST_HW_SIMD_X86_FMA_VERSION
-#endif
-#if !defined(BOOST_HW_SIMD_X86) && defined(__SSE4_2__)
-#   define BOOST_HW_SIMD_X86 BOOST_HW_SIMD_X86_SSE4_2_VERSION
-#endif
-#if !defined(BOOST_HW_SIMD_X86) && defined(__SSE4_1__)
-#   define BOOST_HW_SIMD_X86 BOOST_HW_SIMD_X86_SSE4_1_VERSION
-#endif
-#if !defined(BOOST_HW_SIMD_X86) && defined(__SSSE3__)
-#   define BOOST_HW_SIMD_X86 BOOST_HW_SIMD_X86_SSSE3_VERSION
-#endif
-#if !defined(BOOST_HW_SIMD_X86) && defined(__SSE3__)
-#   define BOOST_HW_SIMD_X86 BOOST_HW_SIMD_X86_SSE3_VERSION
-#endif
-#if !defined(BOOST_HW_SIMD_X86) && (defined(__SSE2__) || defined(_M_X64) || (defined(_M_IX86_FP) && _M_IX86_FP >= 2))
-#   define BOOST_HW_SIMD_X86 BOOST_HW_SIMD_X86_SSE2_VERSION
-#endif
-#if !defined(BOOST_HW_SIMD_X86) && (defined(__SSE__) || defined(_M_X64) || (defined(_M_IX86_FP) && _M_IX86_FP >= 1))
-#   define BOOST_HW_SIMD_X86 BOOST_HW_SIMD_X86_SSE_VERSION
-#endif
-#if !defined(BOOST_HW_SIMD_X86) && defined(__MMX__)
-#   define BOOST_HW_SIMD_X86 BOOST_HW_SIMD_X86_MMX_VERSION
-#endif
-
-#if !defined(BOOST_HW_SIMD_X86)
-#   define BOOST_HW_SIMD_X86 BOOST_VERSION_NUMBER_NOT_AVAILABLE
-#else
-#   define BOOST_HW_SIMD_X86_AVAILABLE
-#endif
-
-#define BOOST_HW_SIMD_X86_NAME "x86 SIMD"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_HW_SIMD_X86, BOOST_HW_SIMD_X86_NAME)
diff --git a/third_party/boost/boost/predef/hardware/simd/x86/versions.h b/third_party/boost/boost/predef/hardware/simd/x86/versions.h
deleted file mode 100644
index 0c7a4d3..0000000
--- a/third_party/boost/boost/predef/hardware/simd/x86/versions.h
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
-Copyright Charly Chevalier 2015
-Copyright Joel Falcou 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)
-*/
-
-#ifndef BOOST_PREDEF_HARDWARE_SIMD_X86_VERSIONS_H
-#define BOOST_PREDEF_HARDWARE_SIMD_X86_VERSIONS_H
-
-#include <boost/predef/version_number.h>
-
-/*`
- Those defines represent x86 SIMD extensions versions.
-
- [note You *MUST* compare them with the predef `BOOST_HW_SIMD_X86`.]
- */
-
-// ---------------------------------
-
-/*`
- [heading `BOOST_HW_SIMD_X86_MMX_VERSION`]
-
- The [@https://en.wikipedia.org/wiki/MMX_(instruction_set) MMX] x86 extension
- version number.
-
- Version number is: *0.99.0*.
- */
-#define BOOST_HW_SIMD_X86_MMX_VERSION BOOST_VERSION_NUMBER(0, 99, 0)
-
-/*`
- [heading `BOOST_HW_SIMD_X86_SSE_VERSION`]
-
- The [@https://en.wikipedia.org/wiki/Streaming_SIMD_Extensions SSE] x86 extension
- version number.
-
- Version number is: *1.0.0*.
- */
-#define BOOST_HW_SIMD_X86_SSE_VERSION BOOST_VERSION_NUMBER(1, 0, 0)
-
-/*`
- [heading `BOOST_HW_SIMD_X86_SSE2_VERSION`]
-
- The [@https://en.wikipedia.org/wiki/SSE2 SSE2] x86 extension version number.
-
- Version number is: *2.0.0*.
- */
-#define BOOST_HW_SIMD_X86_SSE2_VERSION BOOST_VERSION_NUMBER(2, 0, 0)
-
-/*`
- [heading `BOOST_HW_SIMD_X86_SSE3_VERSION`]
-
- The [@https://en.wikipedia.org/wiki/SSE3 SSE3] x86 extension version number.
-
- Version number is: *3.0.0*.
- */
-#define BOOST_HW_SIMD_X86_SSE3_VERSION BOOST_VERSION_NUMBER(3, 0, 0)
-
-/*`
- [heading `BOOST_HW_SIMD_X86_SSSE3_VERSION`]
-
- The [@https://en.wikipedia.org/wiki/SSSE3 SSSE3] x86 extension version number.
-
- Version number is: *3.1.0*.
- */
-#define BOOST_HW_SIMD_X86_SSSE3_VERSION BOOST_VERSION_NUMBER(3, 1, 0)
-
-/*`
- [heading `BOOST_HW_SIMD_X86_SSE4_1_VERSION`]
-
- The [@https://en.wikipedia.org/wiki/SSE4#SSE4.1 SSE4_1] x86 extension version
- number.
-
- Version number is: *4.1.0*.
- */
-#define BOOST_HW_SIMD_X86_SSE4_1_VERSION BOOST_VERSION_NUMBER(4, 1, 0)
-
-/*`
- [heading `BOOST_HW_SIMD_X86_SSE4_2_VERSION`]
-
- The [@https://en.wikipedia.org/wiki/SSE4##SSE4.2 SSE4_2] x86 extension version
- number.
-
- Version number is: *4.2.0*.
- */
-#define BOOST_HW_SIMD_X86_SSE4_2_VERSION BOOST_VERSION_NUMBER(4, 2, 0)
-
-/*`
- [heading `BOOST_HW_SIMD_X86_AVX_VERSION`]
-
- The [@https://en.wikipedia.org/wiki/Advanced_Vector_Extensions AVX] x86
- extension version number.
-
- Version number is: *5.0.0*.
- */
-#define BOOST_HW_SIMD_X86_AVX_VERSION BOOST_VERSION_NUMBER(5, 0, 0)
-
-/*`
- [heading `BOOST_HW_SIMD_X86_FMA3_VERSION`]
-
- The [@https://en.wikipedia.org/wiki/FMA_instruction_set FMA3] x86 extension
- version number.
-
- Version number is: *5.2.0*.
- */
-#define BOOST_HW_SIMD_X86_FMA3_VERSION BOOST_VERSION_NUMBER(5, 2, 0)
-
-/*`
- [heading `BOOST_HW_SIMD_X86_AVX2_VERSION`]
-
- The [@https://en.wikipedia.org/wiki/Advanced_Vector_Extensions#Advanced_Vector_Extensions_2 AVX2]
- x86 extension version number.
-
- Version number is: *5.3.0*.
- */
-#define BOOST_HW_SIMD_X86_AVX2_VERSION BOOST_VERSION_NUMBER(5, 3, 0)
-
-/*`
- [heading `BOOST_HW_SIMD_X86_MIC_VERSION`]
-
- The [@https://en.wikipedia.org/wiki/Xeon_Phi MIC] (Xeon Phi) x86 extension
- version number.
-
- Version number is: *9.0.0*.
- */
-#define BOOST_HW_SIMD_X86_MIC_VERSION BOOST_VERSION_NUMBER(9, 0, 0)
-
-#endif
diff --git a/third_party/boost/boost/predef/hardware/simd/x86_amd.h b/third_party/boost/boost/predef/hardware/simd/x86_amd.h
deleted file mode 100644
index c80d1ce..0000000
--- a/third_party/boost/boost/predef/hardware/simd/x86_amd.h
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
-Copyright Charly Chevalier 2015
-Copyright Joel Falcou 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)
-*/
-
-#ifndef BOOST_PREDEF_HARDWARE_SIMD_X86_AMD_H
-#define BOOST_PREDEF_HARDWARE_SIMD_X86_AMD_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/hardware/simd/x86_amd/versions.h>
-
-/*`
- [heading `BOOST_HW_SIMD_X86_AMD`]
-
- The SIMD extension for x86 (AMD) (*if detected*).
- Version number depends on the most recent detected extension.
-
- [table
-     [[__predef_symbol__] [__predef_version__]]
-
-     [[`__SSE4A__`] [__predef_detection__]]
-
-     [[`__FMA4__`] [__predef_detection__]]
-
-     [[`__XOP__`] [__predef_detection__]]
-
-     [[`BOOST_HW_SIMD_X86`] [__predef_detection__]]
-     ]
-
- [table
-     [[__predef_symbol__] [__predef_version__]]
-
-     [[`__SSE4A__`] [BOOST_HW_SIMD_X86_SSE4A_VERSION]]
-
-     [[`__FMA4__`] [BOOST_HW_SIMD_X86_FMA4_VERSION]]
-
-     [[`__XOP__`] [BOOST_HW_SIMD_X86_XOP_VERSION]]
-
-     [[`BOOST_HW_SIMD_X86`] [BOOST_HW_SIMD_X86]]
-     ]
-
- [note This predef includes every other x86 SIMD extensions and also has other
- more specific extensions (FMA4, XOP, SSE4a). You should use this predef
- instead of `BOOST_HW_SIMD_X86` to test if those specific extensions have
- been detected.]
-
- */
-
-#define BOOST_HW_SIMD_X86_AMD BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-// AMD CPUs also use x86 architecture. We first try to detect if any AMD
-// specific extension are detected, if yes, then try to detect more recent x86
-// common extensions.
-
-#undef BOOST_HW_SIMD_X86_AMD
-#if !defined(BOOST_HW_SIMD_X86_AMD) && defined(__XOP__)
-#   define BOOST_HW_SIMD_X86_AMD BOOST_HW_SIMD_X86_AMD_XOP_VERSION
-#endif
-#if !defined(BOOST_HW_SIMD_X86_AMD) && defined(__FMA4__)
-#   define BOOST_HW_SIMD_X86_AMD BOOST_HW_SIMD_X86_AMD_FMA4_VERSION
-#endif
-#if !defined(BOOST_HW_SIMD_X86_AMD) && defined(__SSE4A__)
-#   define BOOST_HW_SIMD_X86_AMD BOOST_HW_SIMD_X86_AMD_SSE4A_VERSION
-#endif
-
-#if !defined(BOOST_HW_SIMD_X86_AMD)
-#   define BOOST_HW_SIMD_X86_AMD BOOST_VERSION_NUMBER_NOT_AVAILABLE
-#else
-    // At this point, we know that we have an AMD CPU, we do need to check for
-    // other x86 extensions to determine the final version number.
-#   include <boost/predef/hardware/simd/x86.h>
-#   if BOOST_HW_SIMD_X86 > BOOST_HW_SIMD_X86_AMD
-#      undef BOOST_HW_SIMD_X86_AMD
-#      define BOOST_HW_SIMD_X86_AMD BOOST_HW_SIMD_X86
-#   endif
-#   define BOOST_HW_SIMD_X86_AMD_AVAILABLE
-#endif
-
-#define BOOST_HW_SIMD_X86_AMD_NAME "x86 (AMD) SIMD"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_HW_SIMD_X86_AMD, BOOST_HW_SIMD_X86_AMD_NAME)
diff --git a/third_party/boost/boost/predef/hardware/simd/x86_amd/versions.h b/third_party/boost/boost/predef/hardware/simd/x86_amd/versions.h
deleted file mode 100644
index 1f9e96c..0000000
--- a/third_party/boost/boost/predef/hardware/simd/x86_amd/versions.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
-Copyright Charly Chevalier 2015
-Copyright Joel Falcou 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)
-*/
-
-#ifndef BOOST_PREDEF_HARDWARE_SIMD_X86_AMD_VERSIONS_H
-#define BOOST_PREDEF_HARDWARE_SIMD_X86_AMD_VERSIONS_H
-
-#include <boost/predef/version_number.h>
-
-/*`
- Those defines represent x86 (AMD specific) SIMD extensions versions.
-
- [note You *MUST* compare them with the predef `BOOST_HW_SIMD_X86_AMD`.]
- */
-
-
-// ---------------------------------
-
-/*`
- [heading `BOOST_HW_SIMD_X86_AMD_SSE4A_VERSION`]
-
- [@https://en.wikipedia.org/wiki/SSE4##SSE4A SSE4A] x86 extension (AMD specific).
-
- Version number is: *4.0.0*.
- */
-#define BOOST_HW_SIMD_X86_AMD_SSE4A_VERSION BOOST_VERSION_NUMBER(4, 0, 0)
-
-/*`
- [heading `BOOST_HW_SIMD_X86_AMD_FMA4_VERSION`]
-
- [@https://en.wikipedia.org/wiki/FMA_instruction_set#FMA4_instruction_set FMA4] x86 extension (AMD specific).
-
- Version number is: *5.1.0*.
- */
-#define BOOST_HW_SIMD_X86_AMD_FMA4_VERSION BOOST_VERSION_NUMBER(5, 1, 0)
-
-/*`
- [heading `BOOST_HW_SIMD_X86_AMD_XOP_VERSION`]
-
- [@https://en.wikipedia.org/wiki/XOP_instruction_set XOP] x86 extension (AMD specific).
-
- Version number is: *5.1.1*.
- */
-#define BOOST_HW_SIMD_X86_AMD_XOP_VERSION BOOST_VERSION_NUMBER(5, 1, 1)
-
-
-#endif
diff --git a/third_party/boost/boost/predef/language.h b/third_party/boost/boost/predef/language.h
deleted file mode 100644
index 9ce3cc9..0000000
--- a/third_party/boost/boost/predef/language.h
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
-Copyright Rene Rivera 2011-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)
-*/
-
-#if !defined(BOOST_PREDEF_LANGUAGE_H) || defined(BOOST_PREDEF_INTERNAL_GENERATE_TESTS)
-#ifndef BOOST_PREDEF_LANGUAGE_H
-#define BOOST_PREDEF_LANGUAGE_H
-#endif
-
-#include <boost/predef/language/stdc.h>
-#include <boost/predef/language/stdcpp.h>
-#include <boost/predef/language/objc.h>
-#include <boost/predef/language/cuda.h>
-
-#endif
diff --git a/third_party/boost/boost/predef/language/cuda.h b/third_party/boost/boost/predef/language/cuda.h
deleted file mode 100644
index 5c5fed3..0000000
--- a/third_party/boost/boost/predef/language/cuda.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
-Copyright Benjamin Worpitz 2018
-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_PREDEF_LANGUAGE_CUDA_H
-#define BOOST_PREDEF_LANGUAGE_CUDA_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_LANG_CUDA`]
-
-[@https://en.wikipedia.org/wiki/CUDA CUDA C/C++] language.
-If available, the version is detected as VV.RR.P.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__CUDACC__`] [__predef_detection__]]
-    [[`__CUDA__`] [__predef_detection__]]
-
-    [[`CUDA_VERSION`] [VV.RR.P]]
-    ]
- */
-
-#define BOOST_LANG_CUDA BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__CUDACC__) || defined(__CUDA__)
-#   undef BOOST_LANG_CUDA
-#   include <cuda.h>
-#   if defined(CUDA_VERSION)
-#       define BOOST_LANG_CUDA BOOST_PREDEF_MAKE_10_VVRRP(CUDA_VERSION)
-#   else
-#       define BOOST_LANG_CUDA BOOST_VERSION_NUMBER_AVAILABLE
-#   endif
-#endif
-
-#if BOOST_LANG_CUDA
-#   define BOOST_LANG_CUDA_AVAILABLE
-#endif
-
-#define BOOST_LANG_CUDA_NAME "CUDA C/C++"
-
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_LANG_CUDA,BOOST_LANG_CUDA_NAME)
diff --git a/third_party/boost/boost/predef/language/objc.h b/third_party/boost/boost/predef/language/objc.h
deleted file mode 100644
index 24e3ad3..0000000
--- a/third_party/boost/boost/predef/language/objc.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
-Copyright Rene Rivera 2011-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)
-*/
-
-#ifndef BOOST_PREDEF_LANGUAGE_OBJC_H
-#define BOOST_PREDEF_LANGUAGE_OBJC_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_LANG_OBJC`]
-
-[@http://en.wikipedia.org/wiki/Objective-C Objective-C] language.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__OBJC__`] [__predef_detection__]]
-    ]
- */
-
-#define BOOST_LANG_OBJC BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__OBJC__)
-#   undef BOOST_LANG_OBJC
-#   define BOOST_LANG_OBJC BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#if BOOST_LANG_OBJC
-#   define BOOST_LANG_OBJC_AVAILABLE
-#endif
-
-#define BOOST_LANG_OBJC_NAME "Objective-C"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_LANG_OBJC,BOOST_LANG_OBJC_NAME)
diff --git a/third_party/boost/boost/predef/language/stdc.h b/third_party/boost/boost/predef/language/stdc.h
deleted file mode 100644
index db25c12..0000000
--- a/third_party/boost/boost/predef/language/stdc.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
-Copyright Rene Rivera 2011-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)
-*/
-
-#ifndef BOOST_PREDEF_LANGUAGE_STDC_H
-#define BOOST_PREDEF_LANGUAGE_STDC_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_LANG_STDC`]
-
-[@http://en.wikipedia.org/wiki/C_(programming_language) Standard C] language.
-If available, the year of the standard is detected as YYYY.MM.1 from the Epoc date.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__STDC__`] [__predef_detection__]]
-
-    [[`__STDC_VERSION__`] [V.R.P]]
-    ]
- */
-
-#define BOOST_LANG_STDC BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__STDC__)
-#   undef BOOST_LANG_STDC
-#   if defined(__STDC_VERSION__)
-#       if (__STDC_VERSION__ > 100)
-#           define BOOST_LANG_STDC BOOST_PREDEF_MAKE_YYYYMM(__STDC_VERSION__)
-#       else
-#           define BOOST_LANG_STDC BOOST_VERSION_NUMBER_AVAILABLE
-#       endif
-#   else
-#       define BOOST_LANG_STDC BOOST_VERSION_NUMBER_AVAILABLE
-#   endif
-#endif
-
-#if BOOST_LANG_STDC
-#   define BOOST_LANG_STDC_AVAILABLE
-#endif
-
-#define BOOST_LANG_STDC_NAME "Standard C"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_LANG_STDC,BOOST_LANG_STDC_NAME)
diff --git a/third_party/boost/boost/predef/language/stdcpp.h b/third_party/boost/boost/predef/language/stdcpp.h
deleted file mode 100644
index 34dc8c7..0000000
--- a/third_party/boost/boost/predef/language/stdcpp.h
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
-Copyright Rene Rivera 2011-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)
-*/
-
-#ifndef BOOST_PREDEF_LANGUAGE_STDCPP_H
-#define BOOST_PREDEF_LANGUAGE_STDCPP_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_LANG_STDCPP`]
-
-[@http://en.wikipedia.org/wiki/C%2B%2B Standard C++] language.
-If available, the year of the standard is detected as YYYY.MM.1 from the Epoc date.
-Because of the way the C++ standardization process works the
-defined version year will not be the commonly known year of the standard.
-Specifically the defined versions are:
-
-[table Detected Version Number vs. C++ Standard Year
-  [[Detected Version Number] [Standard Year] [C++ Standard]]
-  [[27.11.1] [1998] [ISO/IEC 14882:1998]]
-  [[41.12.1] [2011] [ISO/IEC 14882:2011]]
-]
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__cplusplus`] [__predef_detection__]]
-
-    [[`__cplusplus`] [YYYY.MM.1]]
-    ]
- */
-
-#define BOOST_LANG_STDCPP BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__cplusplus)
-#   undef BOOST_LANG_STDCPP
-#   if (__cplusplus > 100)
-#       define BOOST_LANG_STDCPP BOOST_PREDEF_MAKE_YYYYMM(__cplusplus)
-#   else
-#       define BOOST_LANG_STDCPP BOOST_VERSION_NUMBER_AVAILABLE
-#   endif
-#endif
-
-#if BOOST_LANG_STDCPP
-#   define BOOST_LANG_STDCPP_AVAILABLE
-#endif
-
-#define BOOST_LANG_STDCPP_NAME "Standard C++"
-
-/*`
-[heading `BOOST_LANG_STDCPPCLI`]
-
-[@http://en.wikipedia.org/wiki/C%2B%2B/CLI Standard C++/CLI] language.
-If available, the year of the standard is detected as YYYY.MM.1 from the Epoc date.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__cplusplus_cli`] [__predef_detection__]]
-
-    [[`__cplusplus_cli`] [YYYY.MM.1]]
-    ]
- */
-
-#define BOOST_LANG_STDCPPCLI BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__cplusplus_cli)
-#   undef BOOST_LANG_STDCPPCLI
-#   if (__cplusplus_cli > 100)
-#       define BOOST_LANG_STDCPPCLI BOOST_PREDEF_MAKE_YYYYMM(__cplusplus_cli)
-#   else
-#       define BOOST_LANG_STDCPPCLI BOOST_VERSION_NUMBER_AVAILABLE
-#   endif
-#endif
-
-#if BOOST_LANG_STDCPPCLI
-#   define BOOST_LANG_STDCPPCLI_AVAILABLE
-#endif
-
-#define BOOST_LANG_STDCPPCLI_NAME "Standard C++/CLI"
-
-/*`
-[heading `BOOST_LANG_STDECPP`]
-
-[@http://en.wikipedia.org/wiki/Embedded_C%2B%2B Standard Embedded C++] language.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__embedded_cplusplus`] [__predef_detection__]]
-    ]
- */
-
-#define BOOST_LANG_STDECPP BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__embedded_cplusplus)
-#   undef BOOST_LANG_STDECPP
-#   define BOOST_LANG_STDECPP BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#if BOOST_LANG_STDECPP
-#   define BOOST_LANG_STDECPP_AVAILABLE
-#endif
-
-#define BOOST_LANG_STDECPP_NAME "Standard Embedded C++"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_LANG_STDCPP,BOOST_LANG_STDCPP_NAME)
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_LANG_STDCPPCLI,BOOST_LANG_STDCPPCLI_NAME)
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_LANG_STDECPP,BOOST_LANG_STDECPP_NAME)
diff --git a/third_party/boost/boost/predef/library.h b/third_party/boost/boost/predef/library.h
deleted file mode 100644
index 40518a9..0000000
--- a/third_party/boost/boost/predef/library.h
+++ /dev/null
@@ -1,16 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#if !defined(BOOST_PREDEF_LIBRARY_H) || defined(BOOST_PREDEF_INTERNAL_GENERATE_TESTS)
-#ifndef BOOST_PREDEF_LIBRARY_H
-#define BOOST_PREDEF_LIBRARY_H
-#endif
-
-#include <boost/predef/library/c.h>
-#include <boost/predef/library/std.h>
-
-#endif
diff --git a/third_party/boost/boost/predef/library/c.h b/third_party/boost/boost/predef/library/c.h
deleted file mode 100644
index 7ca84cc..0000000
--- a/third_party/boost/boost/predef/library/c.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#if !defined(BOOST_PREDEF_LIBRARY_C_H) || defined(BOOST_PREDEF_INTERNAL_GENERATE_TESTS)
-#ifndef BOOST_PREDEF_LIBRARY_C_H
-#define BOOST_PREDEF_LIBRARY_C_H
-#endif
-
-#include <boost/predef/library/c/_prefix.h>
-
-#include <boost/predef/library/c/cloudabi.h>
-#include <boost/predef/library/c/gnu.h>
-#include <boost/predef/library/c/uc.h>
-#include <boost/predef/library/c/vms.h>
-#include <boost/predef/library/c/zos.h>
-
-#endif
diff --git a/third_party/boost/boost/predef/library/c/_prefix.h b/third_party/boost/boost/predef/library/c/_prefix.h
deleted file mode 100644
index 12bcb0f..0000000
--- a/third_party/boost/boost/predef/library/c/_prefix.h
+++ /dev/null
@@ -1,13 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2013
-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_PREDEF_LIBRARY_C__PREFIX_H
-#define BOOST_PREDEF_LIBRARY_C__PREFIX_H
-
-#include <boost/predef/detail/_cassert.h>
-
-#endif
diff --git a/third_party/boost/boost/predef/library/c/cloudabi.h b/third_party/boost/boost/predef/library/c/cloudabi.h
deleted file mode 100644
index e6acaee..0000000
--- a/third_party/boost/boost/predef/library/c/cloudabi.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * Copyright (C) 2017 James E. King III
- *
- * 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_PREDEF_LIBRARY_C_CLOUDABI_H
-#define BOOST_PREDEF_LIBRARY_C_CLOUDABI_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-#include <boost/predef/library/c/_prefix.h>
-
-#if defined(__CloudABI__)
-#include <stddef.h>
-#endif
-
-/*`
-[heading `BOOST_LIB_C_CLOUDABI`]
-
-[@https://github.com/NuxiNL/cloudlibc cloudlibc] - CloudABI's standard C library.
-Version number available as major, and minor.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__cloudlibc__`] [__predef_detection__]]
-
-    [[`__cloudlibc_major__`, `__cloudlibc_minor__`] [V.R.0]]
-    ]
- */
-
-#define BOOST_LIB_C_CLOUDABI BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__cloudlibc__)
-#   undef BOOST_LIB_C_CLOUDABI
-#   define BOOST_LIB_C_CLOUDABI \
-            BOOST_VERSION_NUMBER(__cloudlibc_major__,__cloudlibc_minor__,0)
-#endif
-
-#if BOOST_LIB_C_CLOUDABI
-#   define BOOST_LIB_C_CLOUDABI_AVAILABLE
-#endif
-
-#define BOOST_LIB_C_CLOUDABI_NAME "cloudlibc"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_LIB_C_CLOUDABI,BOOST_LIB_C_CLOUDABI_NAME)
diff --git a/third_party/boost/boost/predef/library/c/gnu.h b/third_party/boost/boost/predef/library/c/gnu.h
deleted file mode 100644
index 9e4ca89..0000000
--- a/third_party/boost/boost/predef/library/c/gnu.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_LIBRARY_C_GNU_H
-#define BOOST_PREDEF_LIBRARY_C_GNU_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-#include <boost/predef/library/c/_prefix.h>
-
-#if defined(__STDC__)
-#include <stddef.h>
-#elif defined(__cplusplus)
-#include <cstddef>
-#endif
-
-/*`
-[heading `BOOST_LIB_C_GNU`]
-
-[@http://en.wikipedia.org/wiki/Glibc GNU glibc] Standard C library.
-Version number available as major, and minor.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__GLIBC__`] [__predef_detection__]]
-    [[`__GNU_LIBRARY__`] [__predef_detection__]]
-
-    [[`__GLIBC__`, `__GLIBC_MINOR__`] [V.R.0]]
-    [[`__GNU_LIBRARY__`, `__GNU_LIBRARY_MINOR__`] [V.R.0]]
-    ]
- */
-
-#define BOOST_LIB_C_GNU BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__GLIBC__) || defined(__GNU_LIBRARY__)
-#   undef BOOST_LIB_C_GNU
-#   if defined(__GLIBC__)
-#       define BOOST_LIB_C_GNU \
-            BOOST_VERSION_NUMBER(__GLIBC__,__GLIBC_MINOR__,0)
-#   else
-#       define BOOST_LIB_C_GNU \
-            BOOST_VERSION_NUMBER(__GNU_LIBRARY__,__GNU_LIBRARY_MINOR__,0)
-#   endif
-#endif
-
-#if BOOST_LIB_C_GNU
-#   define BOOST_LIB_C_GNU_AVAILABLE
-#endif
-
-#define BOOST_LIB_C_GNU_NAME "GNU"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_LIB_C_GNU,BOOST_LIB_C_GNU_NAME)
diff --git a/third_party/boost/boost/predef/library/c/uc.h b/third_party/boost/boost/predef/library/c/uc.h
deleted file mode 100644
index 03081e9..0000000
--- a/third_party/boost/boost/predef/library/c/uc.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_LIBRARY_C_UC_H
-#define BOOST_PREDEF_LIBRARY_C_UC_H
-
-#include <boost/predef/library/c/_prefix.h>
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_LIB_C_UC`]
-
-[@http://en.wikipedia.org/wiki/Uclibc uClibc] Standard C library.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__UCLIBC__`] [__predef_detection__]]
-
-    [[`__UCLIBC_MAJOR__`, `__UCLIBC_MINOR__`, `__UCLIBC_SUBLEVEL__`] [V.R.P]]
-    ]
- */
-
-#define BOOST_LIB_C_UC BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__UCLIBC__)
-#   undef BOOST_LIB_C_UC
-#   define BOOST_LIB_C_UC BOOST_VERSION_NUMBER(\
-        __UCLIBC_MAJOR__,__UCLIBC_MINOR__,__UCLIBC_SUBLEVEL__)
-#endif
-
-#if BOOST_LIB_C_UC
-#   define BOOST_LIB_C_UC_AVAILABLE
-#endif
-
-#define BOOST_LIB_C_UC_NAME "uClibc"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_LIB_C_UC,BOOST_LIB_C_UC_NAME)
diff --git a/third_party/boost/boost/predef/library/c/vms.h b/third_party/boost/boost/predef/library/c/vms.h
deleted file mode 100644
index 685f1a7..0000000
--- a/third_party/boost/boost/predef/library/c/vms.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_LIBRARY_C_VMS_H
-#define BOOST_PREDEF_LIBRARY_C_VMS_H
-
-#include <boost/predef/library/c/_prefix.h>
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_LIB_C_VMS`]
-
-VMS libc Standard C library.
-Version number available as major, minor, and patch.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__CRTL_VER`] [__predef_detection__]]
-
-    [[`__CRTL_VER`] [V.R.P]]
-    ]
- */
-
-#define BOOST_LIB_C_VMS BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__CRTL_VER)
-#   undef BOOST_LIB_C_VMS
-#   define BOOST_LIB_C_VMS BOOST_PREDEF_MAKE_10_VVRR0PP00(__CRTL_VER)
-#endif
-
-#if BOOST_LIB_C_VMS
-#   define BOOST_LIB_C_VMS_AVAILABLE
-#endif
-
-#define BOOST_LIB_C_VMS_NAME "VMS"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_LIB_C_VMS,BOOST_LIB_C_VMS_NAME)
diff --git a/third_party/boost/boost/predef/library/c/zos.h b/third_party/boost/boost/predef/library/c/zos.h
deleted file mode 100644
index 222d355..0000000
--- a/third_party/boost/boost/predef/library/c/zos.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_LIBRARY_C_ZOS_H
-#define BOOST_PREDEF_LIBRARY_C_ZOS_H
-
-#include <boost/predef/library/c/_prefix.h>
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_LIB_C_ZOS`]
-
-z/OS libc Standard C library.
-Version number available as major, minor, and patch.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__LIBREL__`] [__predef_detection__]]
-
-    [[`__LIBREL__`] [V.R.P]]
-    [[`__TARGET_LIB__`] [V.R.P]]
-    ]
- */
-
-#define BOOST_LIB_C_ZOS BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__LIBREL__)
-#   undef BOOST_LIB_C_ZOS
-#   if !defined(BOOST_LIB_C_ZOS) && defined(__LIBREL__)
-#       define BOOST_LIB_C_ZOS BOOST_PREDEF_MAKE_0X_VRRPPPP(__LIBREL__)
-#   endif
-#   if !defined(BOOST_LIB_C_ZOS) && defined(__TARGET_LIB__)
-#       define BOOST_LIB_C_ZOS BOOST_PREDEF_MAKE_0X_VRRPPPP(__TARGET_LIB__)
-#   endif
-#   if !defined(BOOST_LIB_C_ZOS)
-#       define BOOST_LIB_C_ZOS BOOST_VERSION_NUMBER_AVAILABLE
-#   endif
-#endif
-
-#if BOOST_LIB_C_ZOS
-#   define BOOST_LIB_C_ZOS_AVAILABLE
-#endif
-
-#define BOOST_LIB_C_ZOS_NAME "z/OS"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_LIB_C_ZOS,BOOST_LIB_C_ZOS_NAME)
diff --git a/third_party/boost/boost/predef/library/std.h b/third_party/boost/boost/predef/library/std.h
deleted file mode 100644
index 403b6ff..0000000
--- a/third_party/boost/boost/predef/library/std.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-#if !defined(BOOST_PREDEF_LIBRARY_STD_H) || defined(BOOST_PREDEF_INTERNAL_GENERATE_TESTS)
-#ifndef BOOST_PREDEF_LIBRARY_STD_H
-#define BOOST_PREDEF_LIBRARY_STD_H
-#endif
-
-#include <boost/predef/library/std/_prefix.h>
-
-#include <boost/predef/library/std/cxx.h>
-#include <boost/predef/library/std/dinkumware.h>
-#include <boost/predef/library/std/libcomo.h>
-#include <boost/predef/library/std/modena.h>
-#include <boost/predef/library/std/msl.h>
-#include <boost/predef/library/std/roguewave.h>
-#include <boost/predef/library/std/sgi.h>
-#include <boost/predef/library/std/stdcpp3.h>
-#include <boost/predef/library/std/stlport.h>
-#include <boost/predef/library/std/vacpp.h>
-
-#endif
diff --git a/third_party/boost/boost/predef/library/std/_prefix.h b/third_party/boost/boost/predef/library/std/_prefix.h
deleted file mode 100644
index 932b855..0000000
--- a/third_party/boost/boost/predef/library/std/_prefix.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2013
-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_PREDEF_LIBRARY_STD__PREFIX_H
-#define BOOST_PREDEF_LIBRARY_STD__PREFIX_H
-
-/*
-We need to include an STD header to gives us the context
-of which library we are using. The "smallest" code-wise header
-seems to be <exception>. Boost uses <utility> but as far
-as I can tell (RR) it's not a stand-alone header in most
-implementations. Using <exception> also has the benefit of
-being available in EC++, so we get a chance to make this work
-for embedded users. And since it's not a header impacted by TR1
-there's no magic needed for inclusion in the face of the
-Boost.TR1 library.
-*/
-#include <boost/predef/detail/_exception.h>
-
-#endif
diff --git a/third_party/boost/boost/predef/library/std/cxx.h b/third_party/boost/boost/predef/library/std/cxx.h
deleted file mode 100644
index 07b52cd..0000000
--- a/third_party/boost/boost/predef/library/std/cxx.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
-Copyright Rene Rivera 2011-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)
-*/
-
-#ifndef BOOST_PREDEF_LIBRARY_STD_CXX_H
-#define BOOST_PREDEF_LIBRARY_STD_CXX_H
-
-#include <boost/predef/library/std/_prefix.h>
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_LIB_STD_CXX`]
-
-[@http://libcxx.llvm.org/ libc++] C++ Standard Library.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`_LIBCPP_VERSION`] [__predef_detection__]]
-
-    [[`_LIBCPP_VERSION`] [V.0.P]]
-    ]
- */
-
-#define BOOST_LIB_STD_CXX BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(_LIBCPP_VERSION)
-#   undef BOOST_LIB_STD_CXX
-#   define BOOST_LIB_STD_CXX BOOST_PREDEF_MAKE_10_VPPP(_LIBCPP_VERSION)
-#endif
-
-#if BOOST_LIB_STD_CXX
-#   define BOOST_LIB_STD_CXX_AVAILABLE
-#endif
-
-#define BOOST_LIB_STD_CXX_NAME "libc++"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_LIB_STD_CXX,BOOST_LIB_STD_CXX_NAME)
diff --git a/third_party/boost/boost/predef/library/std/dinkumware.h b/third_party/boost/boost/predef/library/std/dinkumware.h
deleted file mode 100644
index 0fc0776..0000000
--- a/third_party/boost/boost/predef/library/std/dinkumware.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_LIBRARY_STD_DINKUMWARE_H
-#define BOOST_PREDEF_LIBRARY_STD_DINKUMWARE_H
-
-#include <boost/predef/library/std/_prefix.h>
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_LIB_STD_DINKUMWARE`]
-
-[@http://en.wikipedia.org/wiki/Dinkumware Dinkumware] Standard C++ Library.
-If available version number as major, minor, and patch.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`_YVALS`, `__IBMCPP__`] [__predef_detection__]]
-    [[`_CPPLIB_VER`] [__predef_detection__]]
-
-    [[`_CPPLIB_VER`] [V.R.0]]
-    ]
- */
-
-#define BOOST_LIB_STD_DINKUMWARE BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if (defined(_YVALS) && !defined(__IBMCPP__)) || defined(_CPPLIB_VER)
-#   undef BOOST_LIB_STD_DINKUMWARE
-#   if defined(_CPPLIB_VER)
-#       define BOOST_LIB_STD_DINKUMWARE BOOST_PREDEF_MAKE_10_VVRR(_CPPLIB_VER)
-#   else
-#       define BOOST_LIB_STD_DINKUMWARE BOOST_VERSION_NUMBER_AVAILABLE
-#   endif
-#endif
-
-#if BOOST_LIB_STD_DINKUMWARE
-#   define BOOST_LIB_STD_DINKUMWARE_AVAILABLE
-#endif
-
-#define BOOST_LIB_STD_DINKUMWARE_NAME "Dinkumware"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_LIB_STD_DINKUMWARE,BOOST_LIB_STD_DINKUMWARE_NAME)
diff --git a/third_party/boost/boost/predef/library/std/libcomo.h b/third_party/boost/boost/predef/library/std/libcomo.h
deleted file mode 100644
index 97d4a53..0000000
--- a/third_party/boost/boost/predef/library/std/libcomo.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_LIBRARY_STD_LIBCOMO_H
-#define BOOST_PREDEF_LIBRARY_STD_LIBCOMO_H
-
-#include <boost/predef/library/std/_prefix.h>
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_LIB_STD_COMO`]
-
-[@http://www.comeaucomputing.com/libcomo/ Comeau Computing] Standard C++ Library.
-Version number available as major.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__LIBCOMO__`] [__predef_detection__]]
-
-    [[`__LIBCOMO_VERSION__`] [V.0.0]]
-    ]
- */
-
-#define BOOST_LIB_STD_COMO BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__LIBCOMO__)
-#   undef BOOST_LIB_STD_COMO
-#   define BOOST_LIB_STD_COMO BOOST_VERSION_NUMBER(__LIBCOMO_VERSION__,0,0)
-#endif
-
-#if BOOST_LIB_STD_COMO
-#   define BOOST_LIB_STD_COMO_AVAILABLE
-#endif
-
-#define BOOST_LIB_STD_COMO_NAME "Comeau Computing"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_LIB_STD_COMO,BOOST_LIB_STD_COMO_NAME)
diff --git a/third_party/boost/boost/predef/library/std/modena.h b/third_party/boost/boost/predef/library/std/modena.h
deleted file mode 100644
index b67ac62..0000000
--- a/third_party/boost/boost/predef/library/std/modena.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_LIBRARY_STD_MODENA_H
-#define BOOST_PREDEF_LIBRARY_STD_MODENA_H
-
-#include <boost/predef/library/std/_prefix.h>
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_LIB_STD_MSIPL`]
-
-[@http://modena.us/ Modena Software Lib++] Standard C++ Library.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`MSIPL_COMPILE_H`] [__predef_detection__]]
-    [[`__MSIPL_COMPILE_H`] [__predef_detection__]]
-    ]
- */
-
-#define BOOST_LIB_STD_MSIPL BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(MSIPL_COMPILE_H) || defined(__MSIPL_COMPILE_H)
-#   undef BOOST_LIB_STD_MSIPL
-#   define BOOST_LIB_STD_MSIPL BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#if BOOST_LIB_STD_MSIPL
-#   define BOOST_LIB_STD_MSIPL_AVAILABLE
-#endif
-
-#define BOOST_LIB_STD_MSIPL_NAME "Modena Software Lib++"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_LIB_STD_MSIPL,BOOST_LIB_STD_MSIPL_NAME)
diff --git a/third_party/boost/boost/predef/library/std/msl.h b/third_party/boost/boost/predef/library/std/msl.h
deleted file mode 100644
index d73c74c..0000000
--- a/third_party/boost/boost/predef/library/std/msl.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_LIBRARY_STD_MSL_H
-#define BOOST_PREDEF_LIBRARY_STD_MSL_H
-
-#include <boost/predef/library/std/_prefix.h>
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_LIB_STD_MSL`]
-
-[@http://www.freescale.com/ Metrowerks] Standard C++ Library.
-Version number available as major, minor, and patch.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__MSL_CPP__`] [__predef_detection__]]
-    [[`__MSL__`] [__predef_detection__]]
-
-    [[`__MSL_CPP__`] [V.R.P]]
-    [[`__MSL__`] [V.R.P]]
-    ]
- */
-
-#define BOOST_LIB_STD_MSL BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__MSL_CPP__) || defined(__MSL__)
-#   undef BOOST_LIB_STD_MSL
-#   if defined(__MSL_CPP__)
-#       define BOOST_LIB_STD_MSL BOOST_PREDEF_MAKE_0X_VRPP(__MSL_CPP__)
-#   else
-#       define BOOST_LIB_STD_MSL BOOST_PREDEF_MAKE_0X_VRPP(__MSL__)
-#   endif
-#endif
-
-#if BOOST_LIB_STD_MSL
-#   define BOOST_LIB_STD_MSL_AVAILABLE
-#endif
-
-#define BOOST_LIB_STD_MSL_NAME "Metrowerks"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_LIB_STD_MSL,BOOST_LIB_STD_MSL_NAME)
diff --git a/third_party/boost/boost/predef/library/std/roguewave.h b/third_party/boost/boost/predef/library/std/roguewave.h
deleted file mode 100644
index 9c3f288..0000000
--- a/third_party/boost/boost/predef/library/std/roguewave.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_LIBRARY_STD_ROGUEWAVE_H
-#define BOOST_PREDEF_LIBRARY_STD_ROGUEWAVE_H
-
-#include <boost/predef/library/std/_prefix.h>
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_LIB_STD_RW`]
-
-[@http://stdcxx.apache.org/ Roguewave] Standard C++ library.
-If available version number as major, minor, and patch.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__STD_RWCOMPILER_H__`] [__predef_detection__]]
-    [[`_RWSTD_VER`] [__predef_detection__]]
-
-    [[`_RWSTD_VER`] [V.R.P]]
-    ]
- */
-
-#define BOOST_LIB_STD_RW BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__STD_RWCOMPILER_H__) || defined(_RWSTD_VER)
-#   undef BOOST_LIB_STD_RW
-#   if defined(_RWSTD_VER)
-#       if _RWSTD_VER < 0x010000
-#           define BOOST_LIB_STD_RW BOOST_PREDEF_MAKE_0X_VVRRP(_RWSTD_VER)
-#       else
-#           define BOOST_LIB_STD_RW BOOST_PREDEF_MAKE_0X_VVRRPP(_RWSTD_VER)
-#       endif
-#   else
-#       define BOOST_LIB_STD_RW BOOST_VERSION_NUMBER_AVAILABLE
-#   endif
-#endif
-
-#if BOOST_LIB_STD_RW
-#   define BOOST_LIB_STD_RW_AVAILABLE
-#endif
-
-#define BOOST_LIB_STD_RW_NAME "Roguewave"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_LIB_STD_RW,BOOST_LIB_STD_RW_NAME)
diff --git a/third_party/boost/boost/predef/library/std/sgi.h b/third_party/boost/boost/predef/library/std/sgi.h
deleted file mode 100644
index 5d19bba..0000000
--- a/third_party/boost/boost/predef/library/std/sgi.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_LIBRARY_STD_SGI_H
-#define BOOST_PREDEF_LIBRARY_STD_SGI_H
-
-#include <boost/predef/library/std/_prefix.h>
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_LIB_STD_SGI`]
-
-[@http://www.sgi.com/tech/stl/ SGI] Standard C++ library.
-If available version number as major, minor, and patch.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__STL_CONFIG_H`] [__predef_detection__]]
-
-    [[`__SGI_STL`] [V.R.P]]
-    ]
- */
-
-#define BOOST_LIB_STD_SGI BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__STL_CONFIG_H)
-#   undef BOOST_LIB_STD_SGI
-#   if defined(__SGI_STL)
-#       define BOOST_LIB_STD_SGI BOOST_PREDEF_MAKE_0X_VRP(__SGI_STL)
-#   else
-#       define BOOST_LIB_STD_SGI BOOST_VERSION_NUMBER_AVAILABLE
-#   endif
-#endif
-
-#if BOOST_LIB_STD_SGI
-#   define BOOST_LIB_STD_SGI_AVAILABLE
-#endif
-
-#define BOOST_LIB_STD_SGI_NAME "SGI"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_LIB_STD_SGI,BOOST_LIB_STD_SGI_NAME)
diff --git a/third_party/boost/boost/predef/library/std/stdcpp3.h b/third_party/boost/boost/predef/library/std/stdcpp3.h
deleted file mode 100644
index c980292..0000000
--- a/third_party/boost/boost/predef/library/std/stdcpp3.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_LIBRARY_STD_STDCPP3_H
-#define BOOST_PREDEF_LIBRARY_STD_STDCPP3_H
-
-#include <boost/predef/library/std/_prefix.h>
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_LIB_STD_GNU`]
-
-[@http://gcc.gnu.org/libstdc++/ GNU libstdc++] Standard C++ library.
-Version number available as year (from 1970), month, and day.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__GLIBCXX__`] [__predef_detection__]]
-    [[`__GLIBCPP__`] [__predef_detection__]]
-
-    [[`__GLIBCXX__`] [V.R.P]]
-    [[`__GLIBCPP__`] [V.R.P]]
-    ]
- */
-
-#define BOOST_LIB_STD_GNU BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__GLIBCPP__) || defined(__GLIBCXX__)
-#   undef BOOST_LIB_STD_GNU
-#   if defined(__GLIBCXX__)
-#       define BOOST_LIB_STD_GNU BOOST_PREDEF_MAKE_YYYYMMDD(__GLIBCXX__)
-#   else
-#       define BOOST_LIB_STD_GNU BOOST_PREDEF_MAKE_YYYYMMDD(__GLIBCPP__)
-#   endif
-#endif
-
-#if BOOST_LIB_STD_GNU
-#   define BOOST_LIB_STD_GNU_AVAILABLE
-#endif
-
-#define BOOST_LIB_STD_GNU_NAME "GNU"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_LIB_STD_GNU,BOOST_LIB_STD_GNU_NAME)
diff --git a/third_party/boost/boost/predef/library/std/stlport.h b/third_party/boost/boost/predef/library/std/stlport.h
deleted file mode 100644
index c09483b..0000000
--- a/third_party/boost/boost/predef/library/std/stlport.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_LIBRARY_STD_STLPORT_H
-#define BOOST_PREDEF_LIBRARY_STD_STLPORT_H
-
-#include <boost/predef/library/std/_prefix.h>
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_LIB_STD_STLPORT`]
-
-[@http://sourceforge.net/projects/stlport/ STLport Standard C++] library.
-Version number available as major, minor, and patch.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__SGI_STL_PORT`] [__predef_detection__]]
-    [[`_STLPORT_VERSION`] [__predef_detection__]]
-
-    [[`_STLPORT_MAJOR`, `_STLPORT_MINOR`, `_STLPORT_PATCHLEVEL`] [V.R.P]]
-    [[`_STLPORT_VERSION`] [V.R.P]]
-    [[`__SGI_STL_PORT`] [V.R.P]]
-    ]
- */
-
-#define BOOST_LIB_STD_STLPORT BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)
-#   undef BOOST_LIB_STD_STLPORT
-#   if !defined(BOOST_LIB_STD_STLPORT) && defined(_STLPORT_MAJOR)
-#       define BOOST_LIB_STD_STLPORT \
-            BOOST_VERSION_NUMBER(_STLPORT_MAJOR,_STLPORT_MINOR,_STLPORT_PATCHLEVEL)
-#   endif
-#   if !defined(BOOST_LIB_STD_STLPORT) && defined(_STLPORT_VERSION)
-#       define BOOST_LIB_STD_STLPORT BOOST_PREDEF_MAKE_0X_VRP(_STLPORT_VERSION)
-#   endif
-#   if !defined(BOOST_LIB_STD_STLPORT)
-#       define BOOST_LIB_STD_STLPORT BOOST_PREDEF_MAKE_0X_VRP(__SGI_STL_PORT)
-#   endif
-#endif
-
-#if BOOST_LIB_STD_STLPORT
-#   define BOOST_LIB_STD_STLPORT_AVAILABLE
-#endif
-
-#define BOOST_LIB_STD_STLPORT_NAME "STLport"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_LIB_STD_STLPORT,BOOST_LIB_STD_STLPORT_NAME)
diff --git a/third_party/boost/boost/predef/library/std/vacpp.h b/third_party/boost/boost/predef/library/std/vacpp.h
deleted file mode 100644
index 632f846..0000000
--- a/third_party/boost/boost/predef/library/std/vacpp.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_LIBRARY_STD_VACPP_H
-#define BOOST_PREDEF_LIBRARY_STD_VACPP_H
-
-#include <boost/predef/library/std/_prefix.h>
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_LIB_STD_IBM`]
-
-[@http://www.ibm.com/software/awdtools/xlcpp/ IBM VACPP Standard C++] library.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__IBMCPP__`] [__predef_detection__]]
-    ]
- */
-
-#define BOOST_LIB_STD_IBM BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__IBMCPP__)
-#   undef BOOST_LIB_STD_IBM
-#   define BOOST_LIB_STD_IBM BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#if BOOST_LIB_STD_IBM
-#   define BOOST_LIB_STD_IBM_AVAILABLE
-#endif
-
-#define BOOST_LIB_STD_IBM_NAME "IBM VACPP"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_LIB_STD_IBM,BOOST_LIB_STD_IBM_NAME)
diff --git a/third_party/boost/boost/predef/make.h b/third_party/boost/boost/predef/make.h
deleted file mode 100644
index fccd2d3..0000000
--- a/third_party/boost/boost/predef/make.h
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-#include <boost/predef/detail/test.h>
-
-#ifndef BOOST_PREDEF_MAKE_H
-#define BOOST_PREDEF_MAKE_H
-
-/*
-Shorthands for the common version number formats used by vendors...
-*/
-
-/*`
-[heading `BOOST_PREDEF_MAKE_..` macros]
-
-These set of macros decompose common vendor version number
-macros which are composed version, revision, and patch digits.
-The naming convention indicates:
-
-* The base of the specified version number. "`BOOST_PREDEF_MAKE_0X`" for
-  hexadecimal digits, and "`BOOST_PREDEF_MAKE_10`" for decimal digits.
-* The format of the vendor version number. Where "`V`" indicates the version digits,
-  "`R`" indicates the revision digits, "`P`" indicates the patch digits, and "`0`"
-  indicates an ignored digit.
-
-Macros are:
-*/
-/*` `BOOST_PREDEF_MAKE_0X_VRP(V)` */
-#define BOOST_PREDEF_MAKE_0X_VRP(V) BOOST_VERSION_NUMBER((V&0xF00)>>8,(V&0xF0)>>4,(V&0xF))
-/*` `BOOST_PREDEF_MAKE_0X_VVRP(V)` */
-#define BOOST_PREDEF_MAKE_0X_VVRP(V) BOOST_VERSION_NUMBER((V&0xFF00)>>8,(V&0xF0)>>4,(V&0xF))
-/*` `BOOST_PREDEF_MAKE_0X_VRPP(V)` */
-#define BOOST_PREDEF_MAKE_0X_VRPP(V) BOOST_VERSION_NUMBER((V&0xF000)>>12,(V&0xF00)>>8,(V&0xFF))
-/*` `BOOST_PREDEF_MAKE_0X_VVRR(V)` */
-#define BOOST_PREDEF_MAKE_0X_VVRR(V) BOOST_VERSION_NUMBER((V&0xFF00)>>8,(V&0xFF),0)
-/*` `BOOST_PREDEF_MAKE_0X_VRRPPPP(V)` */
-#define BOOST_PREDEF_MAKE_0X_VRRPPPP(V) BOOST_VERSION_NUMBER((V&0xF000000)>>24,(V&0xFF0000)>>16,(V&0xFFFF))
-/*` `BOOST_PREDEF_MAKE_0X_VVRRP(V)` */
-#define BOOST_PREDEF_MAKE_0X_VVRRP(V) BOOST_VERSION_NUMBER((V&0xFF000)>>12,(V&0xFF0)>>4,(V&0xF))
-/*` `BOOST_PREDEF_MAKE_0X_VRRPP000(V)` */
-#define BOOST_PREDEF_MAKE_0X_VRRPP000(V) BOOST_VERSION_NUMBER((V&0xF0000000)>>28,(V&0xFF00000)>>20,(V&0xFF000)>>12)
-/*` `BOOST_PREDEF_MAKE_0X_VVRRPP(V)` */
-#define BOOST_PREDEF_MAKE_0X_VVRRPP(V) BOOST_VERSION_NUMBER((V&0xFF0000)>>16,(V&0xFF00)>>8,(V&0xFF))
-/*` `BOOST_PREDEF_MAKE_10_VPPP(V)` */
-#define BOOST_PREDEF_MAKE_10_VPPP(V) BOOST_VERSION_NUMBER(((V)/1000)%10,0,(V)%1000)
-/*` `BOOST_PREDEF_MAKE_10_VR0(V)` */
-#define BOOST_PREDEF_MAKE_10_VR0(V) BOOST_VERSION_NUMBER(((V)/100)%10,((V)/10)%10,0)
-/*` `BOOST_PREDEF_MAKE_10_VRP(V)` */
-#define BOOST_PREDEF_MAKE_10_VRP(V) BOOST_VERSION_NUMBER(((V)/100)%10,((V)/10)%10,(V)%10)
-/*` `BOOST_PREDEF_MAKE_10_VRP000(V)` */
-#define BOOST_PREDEF_MAKE_10_VRP000(V) BOOST_VERSION_NUMBER(((V)/100000)%10,((V)/10000)%10,((V)/1000)%10)
-/*` `BOOST_PREDEF_MAKE_10_VRPPPP(V)` */
-#define BOOST_PREDEF_MAKE_10_VRPPPP(V) BOOST_VERSION_NUMBER(((V)/100000)%10,((V)/10000)%10,(V)%10000)
-/*` `BOOST_PREDEF_MAKE_10_VRPP(V)` */
-#define BOOST_PREDEF_MAKE_10_VRPP(V) BOOST_VERSION_NUMBER(((V)/1000)%10,((V)/100)%10,(V)%100)
-/*` `BOOST_PREDEF_MAKE_10_VRR(V)` */
-#define BOOST_PREDEF_MAKE_10_VRR(V) BOOST_VERSION_NUMBER(((V)/100)%10,(V)%100,0)
-/*` `BOOST_PREDEF_MAKE_10_VRRPP(V)` */
-#define BOOST_PREDEF_MAKE_10_VRRPP(V) BOOST_VERSION_NUMBER(((V)/10000)%10,((V)/100)%100,(V)%100)
-/*` `BOOST_PREDEF_MAKE_10_VRR000(V)` */
-#define BOOST_PREDEF_MAKE_10_VRR000(V) BOOST_VERSION_NUMBER(((V)/100000)%10,((V)/1000)%100,0)
-/*` `BOOST_PREDEF_MAKE_10_VV00(V)` */
-#define BOOST_PREDEF_MAKE_10_VV00(V) BOOST_VERSION_NUMBER(((V)/100)%100,0,0)
-/*` `BOOST_PREDEF_MAKE_10_VVRR(V)` */
-#define BOOST_PREDEF_MAKE_10_VVRR(V) BOOST_VERSION_NUMBER(((V)/100)%100,(V)%100,0)
-/*` `BOOST_PREDEF_MAKE_10_VVRRP(V)` */
-#define BOOST_PREDEF_MAKE_10_VVRRP(V) BOOST_VERSION_NUMBER(((V)/1000)%100,((V)/10)%100,(V)%10)
-/*` `BOOST_PREDEF_MAKE_10_VVRRPP(V)` */
-#define BOOST_PREDEF_MAKE_10_VVRRPP(V) BOOST_VERSION_NUMBER(((V)/10000)%100,((V)/100)%100,(V)%100)
-/*` `BOOST_PREDEF_MAKE_10_VVRRPPP(V)` */
-#define BOOST_PREDEF_MAKE_10_VVRRPPP(V) BOOST_VERSION_NUMBER(((V)/100000)%100,((V)/1000)%100,(V)%1000)
-/*` `BOOST_PREDEF_MAKE_10_VVRR0PP00(V)` */
-#define BOOST_PREDEF_MAKE_10_VVRR0PP00(V) BOOST_VERSION_NUMBER(((V)/10000000)%100,((V)/100000)%100,((V)/100)%100)
-/*` `BOOST_PREDEF_MAKE_10_VVRR0PPPP(V)` */
-#define BOOST_PREDEF_MAKE_10_VVRR0PPPP(V) BOOST_VERSION_NUMBER(((V)/10000000)%100,((V)/100000)%100,(V)%10000)
-/*` `BOOST_PREDEF_MAKE_10_VVRR00PP00(V)` */
-#define BOOST_PREDEF_MAKE_10_VVRR00PP00(V) BOOST_VERSION_NUMBER(((V)/100000000)%100,((V)/1000000)%100,((V)/100)%100)
-/*`
-[heading `BOOST_PREDEF_MAKE_*..` date macros]
-
-Date decomposition macros return a date in the relative to the 1970
-Epoch date. If the month is not available, January 1st is used as the month and day.
-If the day is not available, but the month is, the 1st of the month is used as the day.
-*/
-/*` `BOOST_PREDEF_MAKE_DATE(Y,M,D)` */
-#define BOOST_PREDEF_MAKE_DATE(Y,M,D) BOOST_VERSION_NUMBER((Y)%10000-1970,(M)%100,(D)%100)
-/*` `BOOST_PREDEF_MAKE_YYYYMMDD(V)` */
-#define BOOST_PREDEF_MAKE_YYYYMMDD(V) BOOST_PREDEF_MAKE_DATE(((V)/10000)%10000,((V)/100)%100,(V)%100)
-/*` `BOOST_PREDEF_MAKE_YYYY(V)` */
-#define BOOST_PREDEF_MAKE_YYYY(V) BOOST_PREDEF_MAKE_DATE(V,1,1)
-/*` `BOOST_PREDEF_MAKE_YYYYMM(V)` */
-#define BOOST_PREDEF_MAKE_YYYYMM(V) BOOST_PREDEF_MAKE_DATE((V)/100,(V)%100,1)
-
-#endif
diff --git a/third_party/boost/boost/predef/os.h b/third_party/boost/boost/predef/os.h
deleted file mode 100644
index 9a9f9c6..0000000
--- a/third_party/boost/boost/predef/os.h
+++ /dev/null
@@ -1,34 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Copyright Franz Detro 2014
-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(BOOST_PREDEF_OS_H) || defined(BOOST_PREDEF_INTERNAL_GENERATE_TESTS)
-#ifndef BOOST_PREDEF_OS_H
-#define BOOST_PREDEF_OS_H
-#endif
-
-#include <boost/predef/os/aix.h>
-#include <boost/predef/os/amigaos.h>
-#include <boost/predef/os/beos.h>
-#include <boost/predef/os/bsd.h>
-#include <boost/predef/os/cygwin.h>
-#include <boost/predef/os/haiku.h>
-#include <boost/predef/os/hpux.h>
-#include <boost/predef/os/irix.h>
-#include <boost/predef/os/ios.h>
-#include <boost/predef/os/linux.h>
-#include <boost/predef/os/macos.h>
-#include <boost/predef/os/os400.h>
-#include <boost/predef/os/qnxnto.h>
-#include <boost/predef/os/solaris.h>
-#include <boost/predef/os/unix.h>
-#include <boost/predef/os/vms.h>
-#include <boost/predef/os/windows.h>
-
-#include <boost/predef/os/android.h>
-
-#endif
diff --git a/third_party/boost/boost/predef/os/aix.h b/third_party/boost/boost/predef/os/aix.h
deleted file mode 100644
index 3e5a953..0000000
--- a/third_party/boost/boost/predef/os/aix.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_OS_AIX_H
-#define BOOST_PREDEF_OS_AIX_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_OS_AIX`]
-
-[@http://en.wikipedia.org/wiki/AIX_operating_system IBM AIX] operating system.
-Version number available as major, minor, and patch.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`_AIX`] [__predef_detection__]]
-    [[`__TOS_AIX__`] [__predef_detection__]]
-
-    [[`_AIX43`] [4.3.0]]
-    [[`_AIX41`] [4.1.0]]
-    [[`_AIX32`] [3.2.0]]
-    [[`_AIX3`] [3.0.0]]
-    ]
- */
-
-#define BOOST_OS_AIX BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if !defined(BOOST_PREDEF_DETAIL_OS_DETECTED) && ( \
-    defined(_AIX) || defined(__TOS_AIX__) \
-    )
-#   undef BOOST_OS_AIX
-#   if !defined(BOOST_OS_AIX) && defined(_AIX43)
-#       define BOOST_OS_AIX BOOST_VERSION_NUMBER(4,3,0)
-#   endif
-#   if !defined(BOOST_OS_AIX) && defined(_AIX41)
-#       define BOOST_OS_AIX BOOST_VERSION_NUMBER(4,1,0)
-#   endif
-#   if !defined(BOOST_OS_AIX) && defined(_AIX32)
-#       define BOOST_OS_AIX BOOST_VERSION_NUMBER(3,2,0)
-#   endif
-#   if !defined(BOOST_OS_AIX) && defined(_AIX3)
-#       define BOOST_OS_AIX BOOST_VERSION_NUMBER(3,0,0)
-#   endif
-#   if !defined(BOOST_OS_AIX)
-#       define BOOST_OS_AIX BOOST_VERSION_NUMBER_AVAILABLE
-#   endif
-#endif
-
-#if BOOST_OS_AIX
-#   define BOOST_OS_AIX_AVAILABLE
-#   include <boost/predef/detail/os_detected.h>
-#endif
-
-#define BOOST_OS_AIX_NAME "IBM AIX"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_OS_AIX,BOOST_OS_AIX_NAME)
diff --git a/third_party/boost/boost/predef/os/amigaos.h b/third_party/boost/boost/predef/os/amigaos.h
deleted file mode 100644
index 7b32ddf..0000000
--- a/third_party/boost/boost/predef/os/amigaos.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_OS_AMIGAOS_H
-#define BOOST_PREDEF_OS_AMIGAOS_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_OS_AMIGAOS`]
-
-[@http://en.wikipedia.org/wiki/AmigaOS AmigaOS] operating system.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`AMIGA`] [__predef_detection__]]
-    [[`__amigaos__`] [__predef_detection__]]
-    ]
- */
-
-#define BOOST_OS_AMIGAOS BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if !defined(BOOST_PREDEF_DETAIL_OS_DETECTED) && ( \
-    defined(AMIGA) || defined(__amigaos__) \
-    )
-#   undef BOOST_OS_AMIGAOS
-#   define BOOST_OS_AMIGAOS BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#if BOOST_OS_AMIGAOS
-#   define BOOST_OS_AMIGAOS_AVAILABLE
-#   include <boost/predef/detail/os_detected.h>
-#endif
-
-#define BOOST_OS_AMIGAOS_NAME "AmigaOS"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_OS_AMIGAOS,BOOST_OS_AMIGAOS_NAME)
diff --git a/third_party/boost/boost/predef/os/android.h b/third_party/boost/boost/predef/os/android.h
deleted file mode 100644
index 564423f..0000000
--- a/third_party/boost/boost/predef/os/android.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
-Copyright Rene Rivera 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)
-*/
-
-#ifndef BOOST_PREDEF_OS_ANDROID_H
-#define BOOST_PREDEF_OS_ANDROID_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_OS_ANDROID`]
-
-NOTE: `BOOST_OS_ANDROID` is deprecated, and will be removed in a following release.
-Please use `BOOST_PLAT_ANDROID` instead.
-
-[@http://en.wikipedia.org/wiki/Android_%28operating_system%29 Android] operating system.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__ANDROID__`] [__predef_detection__]]
-    ]
- */
-
-#define BOOST_OS_ANDROID BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if !defined(BOOST_PREDEF_DETAIL_OS_DETECTED) && ( \
-    defined(__ANDROID__) \
-    )
-#   undef BOOST_OS_ANDROID
-#   define BOOST_OS_ANDROID BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#if BOOST_OS_ANDROID
-#   define BOOST_OS_ANDROID_AVAILABLE
-#   include <boost/predef/detail/os_detected.h>
-#endif
-
-#define BOOST_OS_ANDROID_NAME "Android"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_OS_ANDROID,BOOST_OS_ANDROID_NAME)
diff --git a/third_party/boost/boost/predef/os/beos.h b/third_party/boost/boost/predef/os/beos.h
deleted file mode 100644
index 19f4cb7..0000000
--- a/third_party/boost/boost/predef/os/beos.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_OS_BEOS_H
-#define BOOST_PREDEF_OS_BEOS_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_OS_BEOS`]
-
-[@http://en.wikipedia.org/wiki/BeOS BeOS] operating system.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__BEOS__`] [__predef_detection__]]
-    ]
- */
-
-#define BOOST_OS_BEOS BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if !defined(BOOST_PREDEF_DETAIL_OS_DETECTED) && ( \
-    defined(__BEOS__) \
-    )
-#   undef BOOST_OS_BEOS
-#   define BOOST_OS_BEOS BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#if BOOST_OS_BEOS
-#   define BOOST_OS_BEOS_AVAILABLE
-#   include <boost/predef/detail/os_detected.h>
-#endif
-
-#define BOOST_OS_BEOS_NAME "BeOS"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_OS_BEOS,BOOST_OS_BEOS_NAME)
diff --git a/third_party/boost/boost/predef/os/bsd.h b/third_party/boost/boost/predef/os/bsd.h
deleted file mode 100644
index 81d2c08..0000000
--- a/third_party/boost/boost/predef/os/bsd.h
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_OS_BSD_H
-#define BOOST_PREDEF_OS_BSD_H
-
-/* Special case: OSX will define BSD predefs if the sys/param.h
- * header is included. We can guard against that, but only if we
- * detect OSX first. Hence we will force include OSX detection
- * before doing any BSD detection.
- */
-#include <boost/predef/os/macos.h>
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_OS_BSD`]
-
-[@http://en.wikipedia.org/wiki/Berkeley_Software_Distribution BSD] operating system.
-
-BSD has various branch operating systems possible and each detected
-individually. This detects the following variations and sets a specific
-version number macro to match:
-
-* `BOOST_OS_BSD_DRAGONFLY` [@http://en.wikipedia.org/wiki/DragonFly_BSD DragonFly BSD]
-* `BOOST_OS_BSD_FREE` [@http://en.wikipedia.org/wiki/Freebsd FreeBSD]
-* `BOOST_OS_BSD_BSDI` [@http://en.wikipedia.org/wiki/BSD/OS BSDi BSD/OS]
-* `BOOST_OS_BSD_NET` [@http://en.wikipedia.org/wiki/Netbsd NetBSD]
-* `BOOST_OS_BSD_OPEN` [@http://en.wikipedia.org/wiki/Openbsd OpenBSD]
-
-[note The general `BOOST_OS_BSD` is set in all cases to indicate some form
-of BSD. If the above variants is detected the corresponding macro is also set.]
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`BSD`] [__predef_detection__]]
-    [[`_SYSTYPE_BSD`] [__predef_detection__]]
-
-    [[`BSD4_2`] [4.2.0]]
-    [[`BSD4_3`] [4.3.0]]
-    [[`BSD4_4`] [4.4.0]]
-    [[`BSD`] [V.R.0]]
-    ]
- */
-
-#include <boost/predef/os/bsd/bsdi.h>
-#include <boost/predef/os/bsd/dragonfly.h>
-#include <boost/predef/os/bsd/free.h>
-#include <boost/predef/os/bsd/open.h>
-#include <boost/predef/os/bsd/net.h>
-
-#ifndef BOOST_OS_BSD
-#define BOOST_OS_BSD BOOST_VERSION_NUMBER_NOT_AVAILABLE
-#endif
-
-#if !defined(BOOST_PREDEF_DETAIL_OS_DETECTED) && ( \
-    defined(BSD) || \
-    defined(_SYSTYPE_BSD) \
-    )
-#   undef BOOST_OS_BSD
-#   include <sys/param.h>
-#   if !defined(BOOST_OS_BSD) && defined(BSD4_4)
-#       define BOOST_OS_BSD BOOST_VERSION_NUMBER(4,4,0)
-#   endif
-#   if !defined(BOOST_OS_BSD) && defined(BSD4_3)
-#       define BOOST_OS_BSD BOOST_VERSION_NUMBER(4,3,0)
-#   endif
-#   if !defined(BOOST_OS_BSD) && defined(BSD4_2)
-#       define BOOST_OS_BSD BOOST_VERSION_NUMBER(4,2,0)
-#   endif
-#   if !defined(BOOST_OS_BSD) && defined(BSD)
-#       define BOOST_OS_BSD BOOST_PREDEF_MAKE_10_VVRR(BSD)
-#   endif
-#   if !defined(BOOST_OS_BSD)
-#       define BOOST_OS_BSD BOOST_VERSION_NUMBER_AVAILABLE
-#   endif
-#endif
-
-#if BOOST_OS_BSD
-#   define BOOST_OS_BSD_AVAILABLE
-#   include <boost/predef/detail/os_detected.h>
-#endif
-
-#define BOOST_OS_BSD_NAME "BSD"
-
-#endif
-
-#include <boost/predef/os/bsd/bsdi.h>
-#include <boost/predef/os/bsd/dragonfly.h>
-#include <boost/predef/os/bsd/free.h>
-#include <boost/predef/os/bsd/open.h>
-#include <boost/predef/os/bsd/net.h>
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_OS_BSD,BOOST_OS_BSD_NAME)
diff --git a/third_party/boost/boost/predef/os/bsd/bsdi.h b/third_party/boost/boost/predef/os/bsd/bsdi.h
deleted file mode 100644
index afdcd3e..0000000
--- a/third_party/boost/boost/predef/os/bsd/bsdi.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
-Copyright Rene Rivera 2012-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)
-*/
-
-#ifndef BOOST_PREDEF_OS_BSD_BSDI_H
-#define BOOST_PREDEF_OS_BSD_BSDI_H
-
-#include <boost/predef/os/bsd.h>
-
-/*`
-[heading `BOOST_OS_BSD_BSDI`]
-
-[@http://en.wikipedia.org/wiki/BSD/OS BSDi BSD/OS] operating system.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__bsdi__`] [__predef_detection__]]
-    ]
- */
-
-#define BOOST_OS_BSD_BSDI BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if !defined(BOOST_PREDEF_DETAIL_OS_DETECTED) && ( \
-    defined(__bsdi__) \
-    )
-#   ifndef BOOST_OS_BSD_AVAILABLE
-#       define BOOST_OS_BSD BOOST_VERSION_NUMBER_AVAILABLE
-#       define BOOST_OS_BSD_AVAILABLE
-#   endif
-#   undef BOOST_OS_BSD_BSDI
-#   define BOOST_OS_BSD_BSDI BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#if BOOST_OS_BSD_BSDI
-#   define BOOST_OS_BSD_BSDI_AVAILABLE
-#   include <boost/predef/detail/os_detected.h>
-#endif
-
-#define BOOST_OS_BSD_BSDI_NAME "BSDi BSD/OS"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_OS_BSD_BSDI,BOOST_OS_BSD_BSDI_NAME)
diff --git a/third_party/boost/boost/predef/os/bsd/dragonfly.h b/third_party/boost/boost/predef/os/bsd/dragonfly.h
deleted file mode 100644
index 1d07579..0000000
--- a/third_party/boost/boost/predef/os/bsd/dragonfly.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
-Copyright Rene Rivera 2012-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)
-*/
-
-#ifndef BOOST_PREDEF_OS_BSD_DRAGONFLY_H
-#define BOOST_PREDEF_OS_BSD_DRAGONFLY_H
-
-#include <boost/predef/os/bsd.h>
-
-/*`
-[heading `BOOST_OS_BSD_DRAGONFLY`]
-
-[@http://en.wikipedia.org/wiki/DragonFly_BSD DragonFly BSD] operating system.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__DragonFly__`] [__predef_detection__]]
-    ]
- */
-
-#define BOOST_OS_BSD_DRAGONFLY BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if !defined(BOOST_PREDEF_DETAIL_OS_DETECTED) && ( \
-    defined(__DragonFly__) \
-    )
-#   ifndef BOOST_OS_BSD_AVAILABLE
-#       define BOOST_OS_BSD BOOST_VERSION_NUMBER_AVAILABLE
-#       define BOOST_OS_BSD_AVAILABLE
-#   endif
-#   undef BOOST_OS_BSD_DRAGONFLY
-#   if defined(__DragonFly__)
-#       define BOOST_OS_DRAGONFLY_BSD BOOST_VERSION_NUMBER_AVAILABLE
-#   endif
-#endif
-
-#if BOOST_OS_BSD_DRAGONFLY
-#   define BOOST_OS_BSD_DRAGONFLY_AVAILABLE
-#   include <boost/predef/detail/os_detected.h>
-#endif
-
-#define BOOST_OS_BSD_DRAGONFLY_NAME "DragonFly BSD"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_OS_BSD_DRAGONFLY,BOOST_OS_BSD_DRAGONFLY_NAME)
diff --git a/third_party/boost/boost/predef/os/bsd/free.h b/third_party/boost/boost/predef/os/bsd/free.h
deleted file mode 100644
index 81c0021..0000000
--- a/third_party/boost/boost/predef/os/bsd/free.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
-Copyright Rene Rivera 2012-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)
-*/
-
-#ifndef BOOST_PREDEF_OS_BSD_FREE_H
-#define BOOST_PREDEF_OS_BSD_FREE_H
-
-#include <boost/predef/os/bsd.h>
-
-/*`
-[heading `BOOST_OS_BSD_FREE`]
-
-[@http://en.wikipedia.org/wiki/Freebsd FreeBSD] operating system.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__FreeBSD__`] [__predef_detection__]]
-
-    [[`__FreeBSD_version`] [V.R.P]]
-    ]
- */
-
-#define BOOST_OS_BSD_FREE BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if !defined(BOOST_PREDEF_DETAIL_OS_DETECTED) && ( \
-    defined(__FreeBSD__) \
-    )
-#   ifndef BOOST_OS_BSD_AVAILABLE
-#       define BOOST_OS_BSD BOOST_VERSION_NUMBER_AVAILABLE
-#       define BOOST_OS_BSD_AVAILABLE
-#   endif
-#   undef BOOST_OS_BSD_FREE
-#   include <sys/param.h>
-#   if defined(__FreeBSD_version)
-#       if __FreeBSD_version == 491000
-#           define BOOST_OS_BSD_FREE \
-                BOOST_VERSION_NUMBER(4, 10, 0)
-#       elif __FreeBSD_version == 492000
-#           define BOOST_OS_BSD_FREE \
-                BOOST_VERSION_NUMBER(4, 11, 0)
-#       elif __FreeBSD_version < 500000
-#           define BOOST_OS_BSD_FREE \
-                BOOST_PREDEF_MAKE_10_VRPPPP(__FreeBSD_version)
-#       else
-#           define BOOST_OS_BSD_FREE \
-                BOOST_PREDEF_MAKE_10_VVRRPPP(__FreeBSD_version)
-#       endif
-#   else
-#       define BOOST_OS_BSD_FREE BOOST_VERSION_NUMBER_AVAILABLE
-#   endif
-#endif
-
-#if BOOST_OS_BSD_FREE
-#   define BOOST_OS_BSD_FREE_AVAILABLE
-#   include <boost/predef/detail/os_detected.h>
-#endif
-
-#define BOOST_OS_BSD_FREE_NAME "Free BSD"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_OS_BSD_FREE,BOOST_OS_BSD_FREE_NAME)
diff --git a/third_party/boost/boost/predef/os/bsd/net.h b/third_party/boost/boost/predef/os/bsd/net.h
deleted file mode 100644
index 3fe5589..0000000
--- a/third_party/boost/boost/predef/os/bsd/net.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
-Copyright Rene Rivera 2012-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)
-*/
-
-#ifndef BOOST_PREDEF_OS_BSD_NET_H
-#define BOOST_PREDEF_OS_BSD_NET_H
-
-#include <boost/predef/os/bsd.h>
-
-/*`
-[heading `BOOST_OS_BSD_NET`]
-
-[@http://en.wikipedia.org/wiki/Netbsd NetBSD] operating system.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__NETBSD__`] [__predef_detection__]]
-    [[`__NetBSD__`] [__predef_detection__]]
-
-    [[`__NETBSD_version`] [V.R.P]]
-    [[`NetBSD0_8`] [0.8.0]]
-    [[`NetBSD0_9`] [0.9.0]]
-    [[`NetBSD1_0`] [1.0.0]]
-    [[`__NetBSD_Version`] [V.R.P]]
-    ]
- */
-
-#define BOOST_OS_BSD_NET BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if !defined(BOOST_PREDEF_DETAIL_OS_DETECTED) && ( \
-    defined(__NETBSD__) || defined(__NetBSD__) \
-    )
-#   ifndef BOOST_OS_BSD_AVAILABLE
-#       define BOOST_OS_BSD BOOST_VERSION_NUMBER_AVAILABLE
-#       define BOOST_OS_BSD_AVAILABLE
-#   endif
-#   undef BOOST_OS_BSD_NET
-#   if defined(__NETBSD__)
-#       if defined(__NETBSD_version)
-#           if __NETBSD_version < 500000
-#               define BOOST_OS_BSD_NET \
-                    BOOST_PREDEF_MAKE_10_VRP000(__NETBSD_version)
-#           else
-#               define BOOST_OS_BSD_NET \
-                    BOOST_PREDEF_MAKE_10_VRR000(__NETBSD_version)
-#           endif
-#       else
-#           define BOOST_OS_BSD_NET BOOST_VERSION_NUMBER_AVAILABLE
-#       endif
-#   elif defined(__NetBSD__)
-#       if !defined(BOOST_OS_BSD_NET) && defined(NetBSD0_8)
-#           define BOOST_OS_BSD_NET BOOST_VERSION_NUMBER(0,8,0)
-#       endif
-#       if !defined(BOOST_OS_BSD_NET) && defined(NetBSD0_9)
-#           define BOOST_OS_BSD_NET BOOST_VERSION_NUMBER(0,9,0)
-#       endif
-#       if !defined(BOOST_OS_BSD_NET) && defined(NetBSD1_0)
-#           define BOOST_OS_BSD_NET BOOST_VERSION_NUMBER(1,0,0)
-#       endif
-#       if !defined(BOOST_OS_BSD_NET) && defined(__NetBSD_Version)
-#           define BOOST_OS_BSD_NET \
-                BOOST_PREDEF_MAKE_10_VVRR00PP00(__NetBSD_Version)
-#       endif
-#       if !defined(BOOST_OS_BSD_NET)
-#           define BOOST_OS_BSD_NET BOOST_VERSION_NUMBER_AVAILABLE
-#       endif
-#   endif
-#endif
-
-#if BOOST_OS_BSD_NET
-#   define BOOST_OS_BSD_NET_AVAILABLE
-#   include <boost/predef/detail/os_detected.h>
-#endif
-
-#define BOOST_OS_BSD_NET_NAME "NetBSD"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_OS_BSD_NET,BOOST_OS_BSD_NET_NAME)
diff --git a/third_party/boost/boost/predef/os/bsd/open.h b/third_party/boost/boost/predef/os/bsd/open.h
deleted file mode 100644
index f6ccd24..0000000
--- a/third_party/boost/boost/predef/os/bsd/open.h
+++ /dev/null
@@ -1,251 +0,0 @@
-/*
-Copyright Rene Rivera 2012-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)
-*/
-
-#ifndef BOOST_PREDEF_OS_BSD_OPEN_H
-#define BOOST_PREDEF_OS_BSD_OPEN_H
-
-#include <boost/predef/os/bsd.h>
-
-/*`
-[heading `BOOST_OS_BSD_OPEN`]
-
-[@http://en.wikipedia.org/wiki/Openbsd OpenBSD] operating system.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__OpenBSD__`] [__predef_detection__]]
-
-    [[`OpenBSD2_0`] [2.0.0]]
-    [[`OpenBSD2_1`] [2.1.0]]
-    [[`OpenBSD2_2`] [2.2.0]]
-    [[`OpenBSD2_3`] [2.3.0]]
-    [[`OpenBSD2_4`] [2.4.0]]
-    [[`OpenBSD2_5`] [2.5.0]]
-    [[`OpenBSD2_6`] [2.6.0]]
-    [[`OpenBSD2_7`] [2.7.0]]
-    [[`OpenBSD2_8`] [2.8.0]]
-    [[`OpenBSD2_9`] [2.9.0]]
-    [[`OpenBSD3_0`] [3.0.0]]
-    [[`OpenBSD3_1`] [3.1.0]]
-    [[`OpenBSD3_2`] [3.2.0]]
-    [[`OpenBSD3_3`] [3.3.0]]
-    [[`OpenBSD3_4`] [3.4.0]]
-    [[`OpenBSD3_5`] [3.5.0]]
-    [[`OpenBSD3_6`] [3.6.0]]
-    [[`OpenBSD3_7`] [3.7.0]]
-    [[`OpenBSD3_8`] [3.8.0]]
-    [[`OpenBSD3_9`] [3.9.0]]
-    [[`OpenBSD4_0`] [4.0.0]]
-    [[`OpenBSD4_1`] [4.1.0]]
-    [[`OpenBSD4_2`] [4.2.0]]
-    [[`OpenBSD4_3`] [4.3.0]]
-    [[`OpenBSD4_4`] [4.4.0]]
-    [[`OpenBSD4_5`] [4.5.0]]
-    [[`OpenBSD4_6`] [4.6.0]]
-    [[`OpenBSD4_7`] [4.7.0]]
-    [[`OpenBSD4_8`] [4.8.0]]
-    [[`OpenBSD4_9`] [4.9.0]]
-    [[`OpenBSD5_0`] [5.0.0]]
-    [[`OpenBSD5_1`] [5.1.0]]
-    [[`OpenBSD5_2`] [5.2.0]]
-    [[`OpenBSD5_3`] [5.3.0]]
-    [[`OpenBSD5_4`] [5.4.0]]
-    [[`OpenBSD5_5`] [5.5.0]]
-    [[`OpenBSD5_6`] [5.6.0]]
-    [[`OpenBSD5_7`] [5.7.0]]
-    [[`OpenBSD5_8`] [5.8.0]]
-    [[`OpenBSD5_9`] [5.9.0]]
-    [[`OpenBSD6_0`] [6.0.0]]
-    [[`OpenBSD6_1`] [6.1.0]]
-    [[`OpenBSD6_2`] [6.2.0]]
-    [[`OpenBSD6_3`] [6.3.0]]
-    [[`OpenBSD6_4`] [6.4.0]]
-    [[`OpenBSD6_5`] [6.5.0]]
-    [[`OpenBSD6_6`] [6.6.0]]
-    [[`OpenBSD6_7`] [6.7.0]]
-    [[`OpenBSD6_8`] [6.8.0]]
-    [[`OpenBSD6_9`] [6.9.0]]
-    ]
- */
-
-#define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if !defined(BOOST_PREDEF_DETAIL_OS_DETECTED) && ( \
-    defined(__OpenBSD__) \
-    )
-#   ifndef BOOST_OS_BSD_AVAILABLE
-#       define BOOST_OS_BSD BOOST_VERSION_NUMBER_AVAILABLE
-#       define BOOST_OS_BSD_AVAILABLE
-#   endif
-#   undef BOOST_OS_BSD_OPEN
-#   if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD2_0)
-#       define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(2,0,0)
-#   endif
-#   if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD2_1)
-#       define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(2,1,0)
-#   endif
-#   if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD2_2)
-#       define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(2,2,0)
-#   endif
-#   if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD2_3)
-#       define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(2,3,0)
-#   endif
-#   if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD2_4)
-#       define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(2,4,0)
-#   endif
-#   if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD2_5)
-#       define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(2,5,0)
-#   endif
-#   if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD2_6)
-#       define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(2,6,0)
-#   endif
-#   if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD2_7)
-#       define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(2,7,0)
-#   endif
-#   if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD2_8)
-#       define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(2,8,0)
-#   endif
-#   if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD2_9)
-#       define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(2,9,0)
-#   endif
-#   if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD3_0)
-#       define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(3,0,0)
-#   endif
-#   if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD3_1)
-#       define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(3,1,0)
-#   endif
-#   if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD3_2)
-#       define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(3,2,0)
-#   endif
-#   if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD3_3)
-#       define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(3,3,0)
-#   endif
-#   if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD3_4)
-#       define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(3,4,0)
-#   endif
-#   if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD3_5)
-#       define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(3,5,0)
-#   endif
-#   if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD3_6)
-#       define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(3,6,0)
-#   endif
-#   if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD3_7)
-#       define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(3,7,0)
-#   endif
-#   if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD3_8)
-#       define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(3,8,0)
-#   endif
-#   if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD3_9)
-#       define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(3,9,0)
-#   endif
-#   if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD4_0)
-#       define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(4,0,0)
-#   endif
-#   if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD4_1)
-#       define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(4,1,0)
-#   endif
-#   if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD4_2)
-#       define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(4,2,0)
-#   endif
-#   if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD4_3)
-#       define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(4,3,0)
-#   endif
-#   if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD4_4)
-#       define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(4,4,0)
-#   endif
-#   if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD4_5)
-#       define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(4,5,0)
-#   endif
-#   if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD4_6)
-#       define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(4,6,0)
-#   endif
-#   if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD4_7)
-#       define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(4,7,0)
-#   endif
-#   if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD4_8)
-#       define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(4,8,0)
-#   endif
-#   if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD4_9)
-#       define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(4,9,0)
-#   endif
-#   if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD5_0)
-#       define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(5,0,0)
-#   endif
-#   if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD5_1)
-#       define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(5,1,0)
-#   endif
-#   if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD5_2)
-#       define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(5,2,0)
-#   endif
-#   if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD5_3)
-#       define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(5,3,0)
-#   endif
-#   if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD5_4)
-#       define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(5,4,0)
-#   endif
-#   if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD5_5)
-#       define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(5,5,0)
-#   endif
-#   if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD5_6)
-#       define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(5,6,0)
-#   endif
-#   if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD5_7)
-#       define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(5,7,0)
-#   endif
-#   if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD5_8)
-#       define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(5,8,0)
-#   endif
-#   if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD5_9)
-#       define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(5,9,0)
-#   endif
-#   if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD6_0)
-#       define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(6,0,0)
-#   endif
-#   if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD6_1)
-#       define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(6,1,0)
-#   endif
-#   if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD6_2)
-#       define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(6,2,0)
-#   endif
-#   if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD6_3)
-#       define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(6,3,0)
-#   endif
-#   if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD6_4)
-#       define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(6,4,0)
-#   endif
-#   if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD6_5)
-#       define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(6,5,0)
-#   endif
-#   if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD6_6)
-#       define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(6,6,0)
-#   endif
-#   if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD6_7)
-#       define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(6,7,0)
-#   endif
-#   if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD6_8)
-#       define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(6,8,0)
-#   endif
-#   if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD6_9)
-#       define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(6,9,0)
-#   endif
-#   if !defined(BOOST_OS_BSD_OPEN)
-#       define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER_AVAILABLE
-#   endif
-#endif
-
-#if BOOST_OS_BSD_OPEN
-#   define BOOST_OS_BSD_OPEN_AVAILABLE
-#   include <boost/predef/detail/os_detected.h>
-#endif
-
-#define BOOST_OS_BSD_OPEN_NAME "OpenBSD"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_OS_BSD_OPEN,BOOST_OS_BSD_OPEN_NAME)
diff --git a/third_party/boost/boost/predef/os/cygwin.h b/third_party/boost/boost/predef/os/cygwin.h
deleted file mode 100644
index 207809c..0000000
--- a/third_party/boost/boost/predef/os/cygwin.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_OS_CYGWIN_H
-#define BOOST_PREDEF_OS_CYGWIN_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_OS_CYGWIN`]
-
-[@http://en.wikipedia.org/wiki/Cygwin Cygwin] evironment.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__CYGWIN__`] [__predef_detection__]]
-
-    [[`CYGWIN_VERSION_API_MAJOR`, `CYGWIN_VERSION_API_MINOR`] [V.R.0]]
-    ]
- */
-
-#define BOOST_OS_CYGWIN BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if !defined(BOOST_PREDEF_DETAIL_OS_DETECTED) && ( \
-    defined(__CYGWIN__) \
-    )
-#   include <cygwin/version.h>
-#   undef BOOST_OS_CYGWIN
-#   define BOOST_OS_CYGWIN \
-        BOOST_VERSION_NUMBER(CYGWIN_VERSION_API_MAJOR,\
-                             CYGWIN_VERSION_API_MINOR, 0)
-#endif
-
-#if BOOST_OS_CYGWIN
-#   define BOOST_OS_CYGWIN_AVAILABLE
-#   include <boost/predef/detail/os_detected.h>
-#endif
-
-#define BOOST_OS_CYGWIN_NAME "Cygwin"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_OS_CYGWIN,BOOST_OS_CYGWIN_NAME)
diff --git a/third_party/boost/boost/predef/os/haiku.h b/third_party/boost/boost/predef/os/haiku.h
deleted file mode 100644
index d79dbea..0000000
--- a/third_party/boost/boost/predef/os/haiku.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
-Copyright Jessica Hamilton 2014
-Copyright Rene Rivera 2014-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)
-*/
-
-#ifndef BOOST_PREDEF_OS_HAIKU_H
-#define BOOST_PREDEF_OS_HAIKU_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_OS_HAIKU`]
-
-[@http://en.wikipedia.org/wiki/Haiku_(operating_system) Haiku] operating system.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__HAIKU__`] [__predef_detection__]]
-    ]
- */
-
-#define BOOST_OS_HAIKU BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if !defined(BOOST_PREDEF_DETAIL_OS_DETECTED) && ( \
-    defined(__HAIKU__) \
-    )
-#   undef BOOST_OS_HAIKU
-#   define BOOST_OS_HAIKU BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#if BOOST_OS_HAIKU
-#   define BOOST_OS_HAIKU_AVAILABLE
-#   include <boost/predef/detail/os_detected.h>
-#endif
-
-#define BOOST_OS_HAIKU_NAME "Haiku"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_OS_HAIKU,BOOST_OS_HAIKU_NAME)
diff --git a/third_party/boost/boost/predef/os/hpux.h b/third_party/boost/boost/predef/os/hpux.h
deleted file mode 100644
index 29243f4..0000000
--- a/third_party/boost/boost/predef/os/hpux.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_OS_HPUX_H
-#define BOOST_PREDEF_OS_HPUX_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_OS_HPUX`]
-
-[@http://en.wikipedia.org/wiki/HP-UX HP-UX] operating system.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`hpux`] [__predef_detection__]]
-    [[`_hpux`] [__predef_detection__]]
-    [[`__hpux`] [__predef_detection__]]
-    ]
- */
-
-#define BOOST_OS_HPUX BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if !defined(BOOST_PREDEF_DETAIL_OS_DETECTED) && ( \
-    defined(hpux) || defined(_hpux) || defined(__hpux) \
-    )
-#   undef BOOST_OS_HPUX
-#   define BOOST_OS_HPUX BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#if BOOST_OS_HPUX
-#   define BOOST_OS_HPUX_AVAILABLE
-#   include <boost/predef/detail/os_detected.h>
-#endif
-
-#define BOOST_OS_HPUX_NAME "HP-UX"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_OS_HPUX,BOOST_OS_HPUX_NAME)
diff --git a/third_party/boost/boost/predef/os/ios.h b/third_party/boost/boost/predef/os/ios.h
deleted file mode 100644
index f853815..0000000
--- a/third_party/boost/boost/predef/os/ios.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
-Copyright Franz Detro 2014
-Copyright Rene Rivera 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)
-*/
-
-#ifndef BOOST_PREDEF_OS_IOS_H
-#define BOOST_PREDEF_OS_IOS_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_OS_IOS`]
-
-[@http://en.wikipedia.org/wiki/iOS iOS] operating system.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__APPLE__`] [__predef_detection__]]
-    [[`__MACH__`] [__predef_detection__]]
-    [[`__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__`] [__predef_detection__]]
-
-    [[`__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__`] [__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__*1000]]
-    ]
- */
-
-#define BOOST_OS_IOS BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if !defined(BOOST_PREDEF_DETAIL_OS_DETECTED) && ( \
-    defined(__APPLE__) && defined(__MACH__) && \
-    defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) \
-    )
-#   undef BOOST_OS_IOS
-#   define BOOST_OS_IOS (__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__*1000)
-#endif
-
-#if BOOST_OS_IOS
-#   define BOOST_OS_IOS_AVAILABLE
-#   include <boost/predef/detail/os_detected.h>
-#endif
-
-#define BOOST_OS_IOS_NAME "iOS"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_OS_IOS,BOOST_OS_IOS_NAME)
diff --git a/third_party/boost/boost/predef/os/irix.h b/third_party/boost/boost/predef/os/irix.h
deleted file mode 100644
index fa6ac41..0000000
--- a/third_party/boost/boost/predef/os/irix.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_OS_IRIX_H
-#define BOOST_PREDEF_OS_IRIX_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_OS_IRIX`]
-
-[@http://en.wikipedia.org/wiki/Irix IRIX] operating system.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`sgi`] [__predef_detection__]]
-    [[`__sgi`] [__predef_detection__]]
-    ]
- */
-
-#define BOOST_OS_IRIX BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if !defined(BOOST_PREDEF_DETAIL_OS_DETECTED) && ( \
-    defined(sgi) || defined(__sgi) \
-    )
-#   undef BOOST_OS_IRIX
-#   define BOOST_OS_IRIX BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#if BOOST_OS_IRIX
-#   define BOOST_OS_IRIX_AVAILABLE
-#   include <boost/predef/detail/os_detected.h>
-#endif
-
-#define BOOST_OS_IRIX_NAME "IRIX"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_OS_IRIX,BOOST_OS_IRIX_NAME)
diff --git a/third_party/boost/boost/predef/os/linux.h b/third_party/boost/boost/predef/os/linux.h
deleted file mode 100644
index f945f01..0000000
--- a/third_party/boost/boost/predef/os/linux.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_OS_LINUX_H
-#define BOOST_PREDEF_OS_LINUX_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_OS_LINUX`]
-
-[@http://en.wikipedia.org/wiki/Linux Linux] operating system.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`linux`] [__predef_detection__]]
-    [[`__linux`] [__predef_detection__]]
-    [[`__linux__`] [__predef_detection__]]
-    [[`__gnu_linux__`] [__predef_detection__]]
-    ]
- */
-
-#define BOOST_OS_LINUX BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if !defined(BOOST_PREDEF_DETAIL_OS_DETECTED) && ( \
-    defined(linux) || defined(__linux) || \
-    defined(__linux__) || defined(__gnu_linux__) \
-    )
-#   undef BOOST_OS_LINUX
-#   define BOOST_OS_LINUX BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#if BOOST_OS_LINUX
-#   define BOOST_OS_LINUX_AVAILABLE
-#   include <boost/predef/detail/os_detected.h>
-#endif
-
-#define BOOST_OS_LINUX_NAME "Linux"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_OS_LINUX,BOOST_OS_LINUX_NAME)
diff --git a/third_party/boost/boost/predef/os/macos.h b/third_party/boost/boost/predef/os/macos.h
deleted file mode 100644
index 4afb30d..0000000
--- a/third_party/boost/boost/predef/os/macos.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Copyright Franz Detro 2014
-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_PREDEF_OS_MACOS_H
-#define BOOST_PREDEF_OS_MACOS_H
-
-/* Special case: iOS will define the same predefs as MacOS, and additionally
- '__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__'. We can guard against that,
- but only if we detect iOS first. Hence we will force include iOS detection
- * before doing any MacOS detection.
- */
-#include <boost/predef/os/ios.h>
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_OS_MACOS`]
-
-[@http://en.wikipedia.org/wiki/Mac_OS Mac OS] operating system.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`macintosh`] [__predef_detection__]]
-    [[`Macintosh`] [__predef_detection__]]
-    [[`__APPLE__`] [__predef_detection__]]
-    [[`__MACH__`] [__predef_detection__]]
-
-    [[`__APPLE__`, `__MACH__`] [10.0.0]]
-    [[ /otherwise/ ] [9.0.0]]
-    ]
- */
-
-#define BOOST_OS_MACOS BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if !defined(BOOST_PREDEF_DETAIL_OS_DETECTED) && ( \
-    defined(macintosh) || defined(Macintosh) || \
-    (defined(__APPLE__) && defined(__MACH__)) \
-    )
-#   undef BOOST_OS_MACOS
-#   if !defined(BOOST_OS_MACOS) && defined(__APPLE__) && defined(__MACH__)
-#       define BOOST_OS_MACOS BOOST_VERSION_NUMBER(10,0,0)
-#   endif
-#   if !defined(BOOST_OS_MACOS)
-#       define BOOST_OS_MACOS BOOST_VERSION_NUMBER(9,0,0)
-#   endif
-#endif
-
-#if BOOST_OS_MACOS
-#   define BOOST_OS_MACOS_AVAILABLE
-#   include <boost/predef/detail/os_detected.h>
-#endif
-
-#define BOOST_OS_MACOS_NAME "Mac OS"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_OS_MACOS,BOOST_OS_MACOS_NAME)
diff --git a/third_party/boost/boost/predef/os/os400.h b/third_party/boost/boost/predef/os/os400.h
deleted file mode 100644
index b3446c2..0000000
--- a/third_party/boost/boost/predef/os/os400.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
-Copyright Rene Rivera 2011-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)
-*/
-
-#ifndef BOOST_PREDEF_OS_OS400_H
-#define BOOST_PREDEF_OS_OS400_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_OS_OS400`]
-
-[@http://en.wikipedia.org/wiki/IBM_i IBM OS/400] operating system.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__OS400__`] [__predef_detection__]]
-    ]
- */
-
-#define BOOST_OS_OS400 BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if !defined(BOOST_PREDEF_DETAIL_OS_DETECTED) && ( \
-    defined(__OS400__) \
-    )
-#   undef BOOST_OS_OS400
-#   define BOOST_OS_OS400 BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#if BOOST_OS_OS400
-#   define BOOST_OS_OS400_AVAILABLE
-#   include <boost/predef/detail/os_detected.h>
-#endif
-
-#define BOOST_OS_OS400_NAME "IBM OS/400"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_OS_OS400,BOOST_OS_OS400_NAME)
diff --git a/third_party/boost/boost/predef/os/qnxnto.h b/third_party/boost/boost/predef/os/qnxnto.h
deleted file mode 100644
index e76fbf2..0000000
--- a/third_party/boost/boost/predef/os/qnxnto.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_OS_QNXNTO_H
-#define BOOST_PREDEF_OS_QNXNTO_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_OS_QNX`]
-
-[@http://en.wikipedia.org/wiki/QNX QNX] operating system.
-Version number available as major, and minor if possible. And
-version 4 is specifically detected.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__QNX__`] [__predef_detection__]]
-    [[`__QNXNTO__`] [__predef_detection__]]
-
-    [[`_NTO_VERSION`] [V.R.0]]
-    [[`__QNX__`] [4.0.0]]
-    ]
- */
-
-#define BOOST_OS_QNX BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if !defined(BOOST_PREDEF_DETAIL_OS_DETECTED) && ( \
-    defined(__QNX__) || defined(__QNXNTO__) \
-    )
-#   undef BOOST_OS_QNX
-#   if !defined(BOOST_OS_QNX) && defined(_NTO_VERSION)
-#       define BOOST_OS_QNX BOOST_PREDEF_MAKE_10_VVRR(_NTO_VERSION)
-#   endif
-#   if !defined(BOOST_OS_QNX) && defined(__QNX__)
-#       define BOOST_OS_QNX BOOST_VERSION_NUMBER(4,0,0)
-#   endif
-#   if !defined(BOOST_OS_QNX)
-#       define BOOST_OS_QNX BOOST_VERSION_NUMBER_AVAILABLE
-#   endif
-#endif
-
-#if BOOST_OS_QNX
-#   define BOOST_OS_QNX_AVAILABLE
-#   include <boost/predef/detail/os_detected.h>
-#endif
-
-#define BOOST_OS_QNX_NAME "QNX"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_OS_QNX,BOOST_OS_QNX_NAME)
diff --git a/third_party/boost/boost/predef/os/solaris.h b/third_party/boost/boost/predef/os/solaris.h
deleted file mode 100644
index 75ddc91..0000000
--- a/third_party/boost/boost/predef/os/solaris.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_OS_SOLARIS_H
-#define BOOST_PREDEF_OS_SOLARIS_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_OS_SOLARIS`]
-
-[@http://en.wikipedia.org/wiki/Solaris_Operating_Environment Solaris] operating system.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`sun`] [__predef_detection__]]
-    [[`__sun`] [__predef_detection__]]
-    ]
- */
-
-#define BOOST_OS_SOLARIS BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if !defined(BOOST_PREDEF_DETAIL_OS_DETECTED) && ( \
-    defined(sun) || defined(__sun) \
-    )
-#   undef BOOST_OS_SOLARIS
-#   define BOOST_OS_SOLARIS BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#if BOOST_OS_SOLARIS
-#   define BOOST_OS_SOLARIS_AVAILABLE
-#   include <boost/predef/detail/os_detected.h>
-#endif
-
-#define BOOST_OS_SOLARIS_NAME "Solaris"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_OS_SOLARIS,BOOST_OS_SOLARIS_NAME)
diff --git a/third_party/boost/boost/predef/os/unix.h b/third_party/boost/boost/predef/os/unix.h
deleted file mode 100644
index a607104..0000000
--- a/third_party/boost/boost/predef/os/unix.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_OS_UNIX_H
-#define BOOST_PREDEF_OS_UNIX_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_OS_UNIX`]
-
-[@http://en.wikipedia.org/wiki/Unix Unix Environment] operating system.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`unix`] [__predef_detection__]]
-    [[`__unix`] [__predef_detection__]]
-    [[`_XOPEN_SOURCE`] [__predef_detection__]]
-    [[`_POSIX_SOURCE`] [__predef_detection__]]
-    ]
- */
-
-#define BOOST_OS_UNIX BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(unix) || defined(__unix) || \
-    defined(_XOPEN_SOURCE) || defined(_POSIX_SOURCE)
-#   undef BOOST_OS_UNIX
-#   define BOOST_OS_UNIX BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#if BOOST_OS_UNIX
-#   define BOOST_OS_UNIX_AVAILABLE
-#endif
-
-#define BOOST_OS_UNIX_NAME "Unix Environment"
-
-/*`
-[heading `BOOST_OS_SVR4`]
-
-[@http://en.wikipedia.org/wiki/UNIX_System_V SVR4 Environment] operating system.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__sysv__`] [__predef_detection__]]
-    [[`__SVR4`] [__predef_detection__]]
-    [[`__svr4__`] [__predef_detection__]]
-    [[`_SYSTYPE_SVR4`] [__predef_detection__]]
-    ]
- */
-
-#define BOOST_OS_SVR4 BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__sysv__) || defined(__SVR4) || \
-    defined(__svr4__) || defined(_SYSTYPE_SVR4)
-#   undef BOOST_OS_SVR4
-#   define BOOST_OS_SVR4 BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#if BOOST_OS_SVR4
-#   define BOOST_OS_SVR4_AVAILABLE
-#endif
-
-#define BOOST_OS_SVR4_NAME "SVR4 Environment"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_OS_UNIX,BOOST_OS_UNIX_NAME)
-BOOST_PREDEF_DECLARE_TEST(BOOST_OS_SVR4,BOOST_OS_SVR4_NAME)
diff --git a/third_party/boost/boost/predef/os/vms.h b/third_party/boost/boost/predef/os/vms.h
deleted file mode 100644
index 2f8f786..0000000
--- a/third_party/boost/boost/predef/os/vms.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
-Copyright Rene Rivera 2011-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)
-*/
-
-#ifndef BOOST_PREDEF_OS_VMS_H
-#define BOOST_PREDEF_OS_VMS_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_OS_VMS`]
-
-[@http://en.wikipedia.org/wiki/Vms VMS] operating system.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`VMS`] [__predef_detection__]]
-    [[`__VMS`] [__predef_detection__]]
-
-    [[`__VMS_VER`] [V.R.P]]
-    ]
- */
-
-#define BOOST_OS_VMS BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if !defined(BOOST_PREDEF_DETAIL_OS_DETECTED) && ( \
-    defined(VMS) || defined(__VMS) \
-    )
-#   undef BOOST_OS_VMS
-#   if defined(__VMS_VER)
-#       define BOOST_OS_VMS BOOST_PREDEF_MAKE_10_VVRR00PP00(__VMS_VER)
-#   else
-#       define BOOST_OS_VMS BOOST_VERSION_NUMBER_AVAILABLE
-#   endif
-#endif
-
-#if BOOST_OS_VMS
-#   define BOOST_OS_VMS_AVAILABLE
-#   include <boost/predef/detail/os_detected.h>
-#endif
-
-#define BOOST_OS_VMS_NAME "VMS"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_OS_VMS,BOOST_OS_VMS_NAME)
diff --git a/third_party/boost/boost/predef/os/windows.h b/third_party/boost/boost/predef/os/windows.h
deleted file mode 100644
index 9db4390..0000000
--- a/third_party/boost/boost/predef/os/windows.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_OS_WINDOWS_H
-#define BOOST_PREDEF_OS_WINDOWS_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_OS_WINDOWS`]
-
-[@http://en.wikipedia.org/wiki/Category:Microsoft_Windows Microsoft Windows] operating system.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`_WIN32`] [__predef_detection__]]
-    [[`_WIN64`] [__predef_detection__]]
-    [[`__WIN32__`] [__predef_detection__]]
-    [[`__TOS_WIN__`] [__predef_detection__]]
-    [[`__WINDOWS__`] [__predef_detection__]]
-    ]
- */
-
-#define BOOST_OS_WINDOWS BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if !defined(BOOST_PREDEF_DETAIL_OS_DETECTED) && ( \
-    defined(_WIN32) || defined(_WIN64) || \
-    defined(__WIN32__) || defined(__TOS_WIN__) || \
-    defined(__WINDOWS__) \
-    )
-#   undef BOOST_OS_WINDOWS
-#   define BOOST_OS_WINDOWS BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#if BOOST_OS_WINDOWS
-#   define BOOST_OS_WINDOWS_AVAILABLE
-#   include <boost/predef/detail/os_detected.h>
-#endif
-
-#define BOOST_OS_WINDOWS_NAME "Microsoft Windows"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_OS_WINDOWS,BOOST_OS_WINDOWS_NAME)
diff --git a/third_party/boost/boost/predef/other.h b/third_party/boost/boost/predef/other.h
deleted file mode 100644
index c09ad49..0000000
--- a/third_party/boost/boost/predef/other.h
+++ /dev/null
@@ -1,16 +0,0 @@
-/*
-Copyright Rene Rivera 2013-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)
-*/
-
-#if !defined(BOOST_PREDEF_OTHER_H) || defined(BOOST_PREDEF_INTERNAL_GENERATE_TESTS)
-#ifndef BOOST_PREDEF_OTHER_H
-#define BOOST_PREDEF_OTHER_H
-#endif
-
-#include <boost/predef/other/endian.h>
-/*#include <boost/predef/other/.h>*/
-
-#endif
diff --git a/third_party/boost/boost/predef/other/endian.h b/third_party/boost/boost/predef/other/endian.h
deleted file mode 100644
index b42da53..0000000
--- a/third_party/boost/boost/predef/other/endian.h
+++ /dev/null
@@ -1,203 +0,0 @@
-/*
-Copyright Rene Rivera 2013-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)
-*/
-
-#ifndef BOOST_PREDEF_ENDIAN_H
-#define BOOST_PREDEF_ENDIAN_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-#include <boost/predef/library/c/gnu.h>
-#include <boost/predef/os/macos.h>
-#include <boost/predef/os/bsd.h>
-#include <boost/predef/os/android.h>
-
-/*`
-[heading `BOOST_ENDIAN_*`]
-
-Detection of endian memory ordering. There are four defined macros
-in this header that define the various generally possible endian
-memory orderings:
-
-* `BOOST_ENDIAN_BIG_BYTE`, byte-swapped big-endian.
-* `BOOST_ENDIAN_BIG_WORD`, word-swapped big-endian.
-* `BOOST_ENDIAN_LITTLE_BYTE`, byte-swapped little-endian.
-* `BOOST_ENDIAN_LITTLE_WORD`, word-swapped little-endian.
-
-The detection is conservative in that it only identifies endianness
-that it knows for certain. In particular bi-endianness is not
-indicated as is it not practically possible to determine the
-endianness from anything but an operating system provided
-header. And the currently known headers do not define that
-programatic bi-endianness is available.
-
-This implementation is a compilation of various publicly available
-information and acquired knowledge:
-
-# The indispensable documentation of "Pre-defined Compiler Macros"
-  [@http://sourceforge.net/p/predef/wiki/Endianness Endianness].
-# The various endian specifications available in the
-  [@http://wikipedia.org/ Wikipedia] computer architecture pages.
-# Generally available searches for headers that define endianness.
- */
-
-#define BOOST_ENDIAN_BIG_BYTE BOOST_VERSION_NUMBER_NOT_AVAILABLE
-#define BOOST_ENDIAN_BIG_WORD BOOST_VERSION_NUMBER_NOT_AVAILABLE
-#define BOOST_ENDIAN_LITTLE_BYTE BOOST_VERSION_NUMBER_NOT_AVAILABLE
-#define BOOST_ENDIAN_LITTLE_WORD BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-/* GNU libc provides a header defining __BYTE_ORDER, or _BYTE_ORDER.
- * And some OSs provide some for of endian header also.
- */
-#if !BOOST_ENDIAN_BIG_BYTE && !BOOST_ENDIAN_BIG_WORD && \
-    !BOOST_ENDIAN_LITTLE_BYTE && !BOOST_ENDIAN_LITTLE_WORD
-#   if BOOST_LIB_C_GNU || BOOST_OS_ANDROID
-#       include <endian.h>
-#   else
-#       if BOOST_OS_MACOS
-#           include <machine/endian.h>
-#       else
-#           if BOOST_OS_BSD
-#               if BOOST_OS_BSD_OPEN
-#                   include <machine/endian.h>
-#               else
-#                   include <sys/endian.h>
-#               endif
-#           endif
-#       endif
-#   endif
-#   if defined(__BYTE_ORDER)
-#       if defined(__BIG_ENDIAN) && (__BYTE_ORDER == __BIG_ENDIAN)
-#           undef BOOST_ENDIAN_BIG_BYTE
-#           define BOOST_ENDIAN_BIG_BYTE BOOST_VERSION_NUMBER_AVAILABLE
-#       endif
-#       if defined(__LITTLE_ENDIAN) && (__BYTE_ORDER == __LITTLE_ENDIAN)
-#           undef BOOST_ENDIAN_LITTLE_BYTE
-#           define BOOST_ENDIAN_LITTLE_BYTE BOOST_VERSION_NUMBER_AVAILABLE
-#       endif
-#       if defined(__PDP_ENDIAN) && (__BYTE_ORDER == __PDP_ENDIAN)
-#           undef BOOST_ENDIAN_LITTLE_WORD
-#           define BOOST_ENDIAN_LITTLE_WORD BOOST_VERSION_NUMBER_AVAILABLE
-#       endif
-#   endif
-#   if !defined(__BYTE_ORDER) && defined(_BYTE_ORDER)
-#       if defined(_BIG_ENDIAN) && (_BYTE_ORDER == _BIG_ENDIAN)
-#           undef BOOST_ENDIAN_BIG_BYTE
-#           define BOOST_ENDIAN_BIG_BYTE BOOST_VERSION_NUMBER_AVAILABLE
-#       endif
-#       if defined(_LITTLE_ENDIAN) && (_BYTE_ORDER == _LITTLE_ENDIAN)
-#           undef BOOST_ENDIAN_LITTLE_BYTE
-#           define BOOST_ENDIAN_LITTLE_BYTE BOOST_VERSION_NUMBER_AVAILABLE
-#       endif
-#       if defined(_PDP_ENDIAN) && (_BYTE_ORDER == _PDP_ENDIAN)
-#           undef BOOST_ENDIAN_LITTLE_WORD
-#           define BOOST_ENDIAN_LITTLE_WORD BOOST_VERSION_NUMBER_AVAILABLE
-#       endif
-#   endif
-#endif
-
-/* Built-in byte-swpped big-endian macros.
- */
-#if !BOOST_ENDIAN_BIG_BYTE && !BOOST_ENDIAN_BIG_WORD && \
-    !BOOST_ENDIAN_LITTLE_BYTE && !BOOST_ENDIAN_LITTLE_WORD
-#   if (defined(__BIG_ENDIAN__) && !defined(__LITTLE_ENDIAN__)) || \
-       (defined(_BIG_ENDIAN) && !defined(_LITTLE_ENDIAN)) || \
-        defined(__ARMEB__) || \
-        defined(__THUMBEB__) || \
-        defined(__AARCH64EB__) || \
-        defined(_MIPSEB) || \
-        defined(__MIPSEB) || \
-        defined(__MIPSEB__)
-#       undef BOOST_ENDIAN_BIG_BYTE
-#       define BOOST_ENDIAN_BIG_BYTE BOOST_VERSION_NUMBER_AVAILABLE
-#   endif
-#endif
-
-/* Built-in byte-swpped little-endian macros.
- */
-#if !BOOST_ENDIAN_BIG_BYTE && !BOOST_ENDIAN_BIG_WORD && \
-    !BOOST_ENDIAN_LITTLE_BYTE && !BOOST_ENDIAN_LITTLE_WORD
-#   if (defined(__LITTLE_ENDIAN__) && !defined(__BIG_ENDIAN__)) || \
-       (defined(_LITTLE_ENDIAN) && !defined(_BIG_ENDIAN)) || \
-        defined(__ARMEL__) || \
-        defined(__THUMBEL__) || \
-        defined(__AARCH64EL__) || \
-        defined(_MIPSEL) || \
-        defined(__MIPSEL) || \
-        defined(__MIPSEL__)
-#       undef BOOST_ENDIAN_LITTLE_BYTE
-#       define BOOST_ENDIAN_LITTLE_BYTE BOOST_VERSION_NUMBER_AVAILABLE
-#   endif
-#endif
-
-/* Some architectures are strictly one endianess (as opposed
- * the current common bi-endianess).
- */
-#if !BOOST_ENDIAN_BIG_BYTE && !BOOST_ENDIAN_BIG_WORD && \
-    !BOOST_ENDIAN_LITTLE_BYTE && !BOOST_ENDIAN_LITTLE_WORD
-#   include <boost/predef/architecture.h>
-#   if BOOST_ARCH_M68K || \
-        BOOST_ARCH_PARISC || \
-        BOOST_ARCH_SPARC || \
-        BOOST_ARCH_SYS370 || \
-        BOOST_ARCH_SYS390 || \
-        BOOST_ARCH_Z
-#       undef BOOST_ENDIAN_BIG_BYTE
-#       define BOOST_ENDIAN_BIG_BYTE BOOST_VERSION_NUMBER_AVAILABLE
-#   endif
-#   if BOOST_ARCH_IA64 || \
-        BOOST_ARCH_X86 || \
-        BOOST_ARCH_BLACKFIN
-#       undef BOOST_ENDIAN_LITTLE_BYTE
-#       define BOOST_ENDIAN_LITTLE_BYTE BOOST_VERSION_NUMBER_AVAILABLE
-#   endif
-#endif
-
-/* Windows on ARM, if not otherwise detected/specified, is always
- * byte-swaped little-endian.
- */
-#if !BOOST_ENDIAN_BIG_BYTE && !BOOST_ENDIAN_BIG_WORD && \
-    !BOOST_ENDIAN_LITTLE_BYTE && !BOOST_ENDIAN_LITTLE_WORD
-#   if BOOST_ARCH_ARM
-#       include <boost/predef/os/windows.h>
-#       if BOOST_OS_WINDOWS
-#           undef BOOST_ENDIAN_LITTLE_BYTE
-#           define BOOST_ENDIAN_LITTLE_BYTE BOOST_VERSION_NUMBER_AVAILABLE
-#       endif
-#   endif
-#endif
-
-#if BOOST_ENDIAN_BIG_BYTE
-#   define BOOST_ENDIAN_BIG_BYTE_AVAILABLE
-#endif
-#if BOOST_ENDIAN_BIG_WORD
-#   define BOOST_ENDIAN_BIG_WORD_BYTE_AVAILABLE
-#endif
-#if BOOST_ENDIAN_LITTLE_BYTE
-#   define BOOST_ENDIAN_LITTLE_BYTE_AVAILABLE
-#endif
-#if BOOST_ENDIAN_LITTLE_WORD
-#   define BOOST_ENDIAN_LITTLE_WORD_BYTE_AVAILABLE
-#endif
-
-#define BOOST_ENDIAN_BIG_BYTE_NAME "Byte-Swapped Big-Endian"
-#define BOOST_ENDIAN_BIG_WORD_NAME "Word-Swapped Big-Endian"
-#define BOOST_ENDIAN_LITTLE_BYTE_NAME "Byte-Swapped Little-Endian"
-#define BOOST_ENDIAN_LITTLE_WORD_NAME "Word-Swapped Little-Endian"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_ENDIAN_BIG_BYTE,BOOST_ENDIAN_BIG_BYTE_NAME)
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_ENDIAN_BIG_WORD,BOOST_ENDIAN_BIG_WORD_NAME)
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_ENDIAN_LITTLE_BYTE,BOOST_ENDIAN_LITTLE_BYTE_NAME)
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_ENDIAN_LITTLE_WORD,BOOST_ENDIAN_LITTLE_WORD_NAME)
diff --git a/third_party/boost/boost/predef/platform.h b/third_party/boost/boost/predef/platform.h
deleted file mode 100644
index 65a0e2a..0000000
--- a/third_party/boost/boost/predef/platform.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
-Copyright Rene Rivera 2013-2015
-Copyright (c) Microsoft Corporation 2014
-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(BOOST_PREDEF_PLATFORM_H) || defined(BOOST_PREDEF_INTERNAL_GENERATE_TESTS)
-#ifndef BOOST_PREDEF_PLATFORM_H
-#define BOOST_PREDEF_PLATFORM_H
-#endif
-
-#include <boost/predef/platform/android.h>
-#include <boost/predef/platform/cloudabi.h>
-#include <boost/predef/platform/mingw.h>
-#include <boost/predef/platform/mingw32.h>
-#include <boost/predef/platform/mingw64.h>
-#include <boost/predef/platform/windows_uwp.h>
-#include <boost/predef/platform/windows_desktop.h>
-#include <boost/predef/platform/windows_phone.h>
-#include <boost/predef/platform/windows_server.h>
-#include <boost/predef/platform/windows_store.h>
-#include <boost/predef/platform/windows_system.h>
-#include <boost/predef/platform/windows_runtime.h> // deprecated
-#include <boost/predef/platform/ios.h>
-/*#include <boost/predef/platform/.h>*/
-
-#endif
diff --git a/third_party/boost/boost/predef/platform/android.h b/third_party/boost/boost/predef/platform/android.h
deleted file mode 100644
index 485382f..0000000
--- a/third_party/boost/boost/predef/platform/android.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
-Copyright Rene Rivera 2015-2019
-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_PREDEF_PLAT_ANDROID_H
-#define BOOST_PREDEF_PLAT_ANDROID_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_PLAT_ANDROID`]
-
-[@http://en.wikipedia.org/wiki/Android_%28operating_system%29 Android] platform.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__ANDROID__`] [__predef_detection__]]
-    ]
- */
-
-#define BOOST_PLAT_ANDROID BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__ANDROID__)
-#   undef BOOST_PLAT_ANDROID
-#   define BOOST_PLAT_ANDROID BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#if BOOST_PLAT_ANDROID
-#   define BOOST_PLAT_ANDROID_AVAILABLE
-#   include <boost/predef/detail/platform_detected.h>
-#endif
-
-#define BOOST_PLAT_ANDROID_NAME "Android"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_PLAT_ANDROID,BOOST_PLAT_ANDROID_NAME)
diff --git a/third_party/boost/boost/predef/platform/cloudabi.h b/third_party/boost/boost/predef/platform/cloudabi.h
deleted file mode 100644
index c44f689..0000000
--- a/third_party/boost/boost/predef/platform/cloudabi.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
-  Copyright 2017 James E. King, III
-  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_PREDEF_PLAT_CLOUDABI_H
-#define BOOST_PREDEF_PLAT_CLOUDABI_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_PLAT_CLOUDABI`]
-
-[@https://github.com/NuxiNL/cloudabi CloudABI] platform.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__CloudABI__`] [__predef_detection__]]
-    ]
- */
-
-#define BOOST_PLAT_CLOUDABI BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__CloudABI__)
-#   undef BOOST_PLAT_CLOUDABI
-#   define BOOST_PLAT_CLOUDABI BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#if BOOST_PLAT_CLOUDABI
-#   define BOOST_PLAT_CLOUDABI_AVAILABLE
-#   include <boost/predef/detail/platform_detected.h>
-#endif
-
-#define BOOST_PLAT_CLOUDABI_NAME "CloudABI"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_PLAT_CLOUDABI,BOOST_PLAT_CLOUDABI_NAME)
diff --git a/third_party/boost/boost/predef/platform/ios.h b/third_party/boost/boost/predef/platform/ios.h
deleted file mode 100644
index 83ba3c4..0000000
--- a/third_party/boost/boost/predef/platform/ios.h
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
-Copyright Ruslan Baratov 2017
-Copyright Rene Rivera 2017
-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_PREDEF_PLAT_IOS_H
-#define BOOST_PREDEF_PLAT_IOS_H
-
-#include <boost/predef/os/ios.h> // BOOST_OS_IOS
-#include <boost/predef/version_number.h> // BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-/*`
-[heading `BOOST_PLAT_IOS_DEVICE`]
-[heading `BOOST_PLAT_IOS_SIMULATOR`]
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`TARGET_IPHONE_SIMULATOR`] [__predef_detection__]]
-    [[`TARGET_OS_SIMULATOR`] [__predef_detection__]]
-    ]
- */
-
-#define BOOST_PLAT_IOS_DEVICE BOOST_VERSION_NUMBER_NOT_AVAILABLE
-#define BOOST_PLAT_IOS_SIMULATOR BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-// https://opensource.apple.com/source/CarbonHeaders/CarbonHeaders-18.1/TargetConditionals.h
-#if BOOST_OS_IOS
-#    include <TargetConditionals.h>
-#    if defined(TARGET_OS_SIMULATOR) && (TARGET_OS_SIMULATOR == 1)
-#        undef BOOST_PLAT_IOS_SIMULATOR
-#        define BOOST_PLAT_IOS_SIMULATOR BOOST_VERSION_NUMBER_AVAILABLE
-#    elif defined(TARGET_IPHONE_SIMULATOR) && (TARGET_IPHONE_SIMULATOR == 1)
-#        undef BOOST_PLAT_IOS_SIMULATOR
-#        define BOOST_PLAT_IOS_SIMULATOR BOOST_VERSION_NUMBER_AVAILABLE
-#    else
-#        undef BOOST_PLAT_IOS_DEVICE
-#        define BOOST_PLAT_IOS_DEVICE BOOST_VERSION_NUMBER_AVAILABLE
-#    endif
-#endif
-
-#if BOOST_PLAT_IOS_SIMULATOR
-#    define BOOST_PLAT_IOS_SIMULATOR_AVAILABLE
-#    include <boost/predef/detail/platform_detected.h>
-#endif
-
-#if BOOST_PLAT_IOS_DEVICE
-#    define BOOST_PLAT_IOS_DEVICE_AVAILABLE
-#    include <boost/predef/detail/platform_detected.h>
-#endif
-
-#define BOOST_PLAT_IOS_SIMULATOR_NAME "iOS Simulator"
-#define BOOST_PLAT_IOS_DEVICE_NAME "iOS Device"
-
-#endif // BOOST_PREDEF_PLAT_IOS_H
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_PLAT_IOS_SIMULATOR,BOOST_PLAT_IOS_SIMULATOR_NAME)
-BOOST_PREDEF_DECLARE_TEST(BOOST_PLAT_IOS_DEVICE,BOOST_PLAT_IOS_DEVICE_NAME)
diff --git a/third_party/boost/boost/predef/platform/mingw.h b/third_party/boost/boost/predef/platform/mingw.h
deleted file mode 100644
index c52827d..0000000
--- a/third_party/boost/boost/predef/platform/mingw.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_PLAT_MINGW_H
-#define BOOST_PREDEF_PLAT_MINGW_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_PLAT_MINGW`]
-
-[@http://en.wikipedia.org/wiki/MinGW MinGW] platform, either variety.
-Version number available as major, minor, and patch.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__MINGW32__`] [__predef_detection__]]
-    [[`__MINGW64__`] [__predef_detection__]]
-
-    [[`__MINGW64_VERSION_MAJOR`, `__MINGW64_VERSION_MINOR`] [V.R.0]]
-    [[`__MINGW32_VERSION_MAJOR`, `__MINGW32_VERSION_MINOR`] [V.R.0]]
-    ]
- */
-
-#define BOOST_PLAT_MINGW BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__MINGW32__) || defined(__MINGW64__)
-#   include <_mingw.h>
-#   if !defined(BOOST_PLAT_MINGW_DETECTION) && (defined(__MINGW64_VERSION_MAJOR) && defined(__MINGW64_VERSION_MINOR))
-#       define BOOST_PLAT_MINGW_DETECTION \
-            BOOST_VERSION_NUMBER(__MINGW64_VERSION_MAJOR,__MINGW64_VERSION_MINOR,0)
-#   endif
-#   if !defined(BOOST_PLAT_MINGW_DETECTION) && (defined(__MINGW32_VERSION_MAJOR) && defined(__MINGW32_VERSION_MINOR))
-#       define BOOST_PLAT_MINGW_DETECTION \
-            BOOST_VERSION_NUMBER(__MINGW32_MAJOR_VERSION,__MINGW32_MINOR_VERSION,0)
-#   endif
-#   if !defined(BOOST_PLAT_MINGW_DETECTION)
-#       define BOOST_PLAT_MINGW_DETECTION BOOST_VERSION_NUMBER_AVAILABLE
-#   endif
-#endif
-
-#ifdef BOOST_PLAT_MINGW_DETECTION
-#   define BOOST_PLAT_MINGW_AVAILABLE
-#   if defined(BOOST_PREDEF_DETAIL_PLAT_DETECTED)
-#       define BOOST_PLAT_MINGW_EMULATED BOOST_PLAT_MINGW_DETECTION
-#   else
-#       undef BOOST_PLAT_MINGW
-#       define BOOST_PLAT_MINGW BOOST_PLAT_MINGW_DETECTION
-#   endif
-#   include <boost/predef/detail/platform_detected.h>
-#endif
-
-#define BOOST_PLAT_MINGW_NAME "MinGW (any variety)"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_PLAT_MINGW,BOOST_PLAT_MINGW_NAME)
-
-#ifdef BOOST_PLAT_MINGW_EMULATED
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_PLAT_MINGW_EMULATED,BOOST_PLAT_MINGW_NAME)
-#endif
diff --git a/third_party/boost/boost/predef/platform/mingw32.h b/third_party/boost/boost/predef/platform/mingw32.h
deleted file mode 100644
index ff90038..0000000
--- a/third_party/boost/boost/predef/platform/mingw32.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_PLAT_MINGW32_H
-#define BOOST_PREDEF_PLAT_MINGW32_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_PLAT_MINGW32`]
-
-[@http://www.mingw.org/ MinGW] platform.
-Version number available as major, minor, and patch.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__MINGW32__`] [__predef_detection__]]
-
-    [[`__MINGW32_VERSION_MAJOR`, `__MINGW32_VERSION_MINOR`] [V.R.0]]
-    ]
- */
-
-#define BOOST_PLAT_MINGW32 BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__MINGW32__)
-#   include <_mingw.h>
-#   if !defined(BOOST_PLAT_MINGW32_DETECTION) && (defined(__MINGW32_VERSION_MAJOR) && defined(__MINGW32_VERSION_MINOR))
-#       define BOOST_PLAT_MINGW32_DETECTION \
-            BOOST_VERSION_NUMBER(__MINGW32_VERSION_MAJOR,__MINGW32_VERSION_MINOR,0)
-#   endif
-#   if !defined(BOOST_PLAT_MINGW32_DETECTION)
-#       define BOOST_PLAT_MINGW32_DETECTION BOOST_VERSION_NUMBER_AVAILABLE
-#   endif
-#endif
-
-#ifdef BOOST_PLAT_MINGW32_DETECTION
-#   define BOOST_PLAT_MINGW32_AVAILABLE
-#   if defined(BOOST_PREDEF_DETAIL_PLAT_DETECTED)
-#       define BOOST_PLAT_MINGW32_EMULATED BOOST_PLAT_MINGW32_DETECTION
-#   else
-#       undef BOOST_PLAT_MINGW32
-#       define BOOST_PLAT_MINGW32 BOOST_PLAT_MINGW32_DETECTION
-#   endif
-#   include <boost/predef/detail/platform_detected.h>
-#endif
-
-#define BOOST_PLAT_MINGW32_NAME "MinGW"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_PLAT_MINGW32,BOOST_PLAT_MINGW32_NAME)
-
-#ifdef BOOST_PLAT_MINGW32_EMULATED
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_PLAT_MINGW32_EMULATED,BOOST_PLAT_MINGW32_NAME)
-#endif
diff --git a/third_party/boost/boost/predef/platform/mingw64.h b/third_party/boost/boost/predef/platform/mingw64.h
deleted file mode 100644
index a35dd3e..0000000
--- a/third_party/boost/boost/predef/platform/mingw64.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
-Copyright Rene Rivera 2008-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)
-*/
-
-#ifndef BOOST_PREDEF_PLAT_MINGW64_H
-#define BOOST_PREDEF_PLAT_MINGW64_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_PLAT_MINGW64`]
-
-[@https://mingw-w64.org/ MinGW-w64] platform.
-Version number available as major, minor, and patch.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__MINGW64__`] [__predef_detection__]]
-
-    [[`__MINGW64_VERSION_MAJOR`, `__MINGW64_VERSION_MINOR`] [V.R.0]]
-    ]
- */
-
-#define BOOST_PLAT_MINGW64 BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__MINGW64__)
-#   include <_mingw.h>
-#   if !defined(BOOST_PLAT_MINGW64_DETECTION) && (defined(__MINGW64_VERSION_MAJOR) && defined(__MINGW64_VERSION_MINOR))
-#       define BOOST_PLAT_MINGW64_DETECTION \
-            BOOST_VERSION_NUMBER(__MINGW64_VERSION_MAJOR,__MINGW64_VERSION_MINOR,0)
-#   endif
-#   if !defined(BOOST_PLAT_MINGW64_DETECTION)
-#       define BOOST_PLAT_MINGW64_DETECTION BOOST_VERSION_NUMBER_AVAILABLE
-#   endif
-#endif
-
-#ifdef BOOST_PLAT_MINGW64_DETECTION
-#   define BOOST_PLAT_MINGW64_AVAILABLE
-#   if defined(BOOST_PREDEF_DETAIL_PLAT_DETECTED)
-#       define BOOST_PLAT_MINGW64_EMULATED BOOST_PLAT_MINGW64_DETECTION
-#   else
-#       undef BOOST_PLAT_MINGW64
-#       define BOOST_PLAT_MINGW64 BOOST_PLAT_MINGW64_DETECTION
-#   endif
-#   include <boost/predef/detail/platform_detected.h>
-#endif
-
-#define BOOST_PLAT_MINGW64_NAME "MinGW-w64"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_PLAT_MINGW64,BOOST_PLAT_MINGW64_NAME)
-
-#ifdef BOOST_PLAT_MINGW64_EMULATED
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_PLAT_MINGW64_EMULATED,BOOST_PLAT_MINGW64_NAME)
-#endif
diff --git a/third_party/boost/boost/predef/platform/windows_desktop.h b/third_party/boost/boost/predef/platform/windows_desktop.h
deleted file mode 100644
index afb3907..0000000
--- a/third_party/boost/boost/predef/platform/windows_desktop.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
-Copyright (c) Microsoft Corporation 2014
-Copyright Rene Rivera 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)
-*/
-
-#ifndef BOOST_PREDEF_PLAT_WINDOWS_DESKTOP_H
-#define BOOST_PREDEF_PLAT_WINDOWS_DESKTOP_H
-
-#include <boost/predef/make.h>
-#include <boost/predef/os/windows.h>
-#include <boost/predef/platform/windows_uwp.h>
-#include <boost/predef/version_number.h>
-
-/*`
-[heading `BOOST_PLAT_WINDOWS_DESKTOP`]
-
-[@https://docs.microsoft.com/en-us/windows/uwp/get-started/universal-application-platform-guide UWP]
-for Windows Desktop development.  Also available if the Platform SDK is too
-old to support UWP.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`WINAPI_FAMILY == WINAPI_FAMILY_DESKTOP_APP`] [__predef_detection__]]
-    [[`!BOOST_PLAT_WINDOWS_UWP`] [__predef_detection__]]
-    ]
- */
-
-#define BOOST_PLAT_WINDOWS_DESKTOP BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if BOOST_OS_WINDOWS && \
-    ((defined(WINAPI_FAMILY_DESKTOP_APP) && WINAPI_FAMILY == WINAPI_FAMILY_DESKTOP_APP) || \
-     !BOOST_PLAT_WINDOWS_UWP)
-#   undef BOOST_PLAT_WINDOWS_DESKTOP
-#   define BOOST_PLAT_WINDOWS_DESKTOP BOOST_VERSION_NUMBER_AVAILABLE
-#endif
- 
-#if BOOST_PLAT_WINDOWS_DESKTOP
-#   define BOOST_PLAT_WINDOWS_DESKTOP_AVAILABLE
-#   include <boost/predef/detail/platform_detected.h>
-#endif
-
-#define BOOST_PLAT_WINDOWS_DESKTOP_NAME "Windows Desktop"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_PLAT_WINDOWS_DESKTOP,BOOST_PLAT_WINDOWS_DESKTOP_NAME)
diff --git a/third_party/boost/boost/predef/platform/windows_phone.h b/third_party/boost/boost/predef/platform/windows_phone.h
deleted file mode 100644
index 0ebc76d..0000000
--- a/third_party/boost/boost/predef/platform/windows_phone.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
-Copyright (c) Microsoft Corporation 2014
-Copyright Rene Rivera 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)
-*/
-
-#ifndef BOOST_PREDEF_PLAT_WINDOWS_PHONE_H
-#define BOOST_PREDEF_PLAT_WINDOWS_PHONE_H
-
-#include <boost/predef/make.h>
-#include <boost/predef/os/windows.h>
-#include <boost/predef/platform/windows_uwp.h>
-#include <boost/predef/version_number.h>
-
-/*`
-[heading `BOOST_PLAT_WINDOWS_PHONE`]
-
-[@https://docs.microsoft.com/en-us/windows/uwp/get-started/universal-application-platform-guide UWP]
-for Windows Phone development.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP`] [__predef_detection__]]
-    ]
- */
-
-#define BOOST_PLAT_WINDOWS_PHONE BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if BOOST_OS_WINDOWS && \
-    defined(WINAPI_FAMILY_PHONE_APP) && WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP
-#   undef BOOST_PLAT_WINDOWS_PHONE
-#   define BOOST_PLAT_WINDOWS_PHONE BOOST_VERSION_NUMBER_AVAILABLE
-#endif
- 
-#if BOOST_PLAT_WINDOWS_PHONE
-#   define BOOST_PLAT_WINDOWS_PHONE_AVAILABLE
-#   include <boost/predef/detail/platform_detected.h>
-#endif
-
-#define BOOST_PLAT_WINDOWS_PHONE_NAME "Windows Phone"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_PLAT_WINDOWS_PHONE,BOOST_PLAT_WINDOWS_PHONE_NAME)
diff --git a/third_party/boost/boost/predef/platform/windows_runtime.h b/third_party/boost/boost/predef/platform/windows_runtime.h
deleted file mode 100644
index e7978d7..0000000
--- a/third_party/boost/boost/predef/platform/windows_runtime.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
-Copyright (c) Microsoft Corporation 2014
-Copyright Rene Rivera 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)
-*/
-
-#ifndef BOOST_PREDEF_PLAT_WINDOWS_RUNTIME_H
-#define BOOST_PREDEF_PLAT_WINDOWS_RUNTIME_H
-
-#include <boost/predef/make.h>
-#include <boost/predef/os/windows.h>
-#include <boost/predef/platform/windows_phone.h>
-#include <boost/predef/platform/windows_store.h>
-#include <boost/predef/version_number.h>
-
-/*`
-[heading `BOOST_PLAT_WINDOWS_RUNTIME`]
-
-Deprecated.
-
-[@https://docs.microsoft.com/en-us/windows/uwp/get-started/universal-application-platform-guide UWP]
-for Windows Phone or Store development.  This does not align to the existing development model for
-UWP and is deprecated.  Use one of the other `BOOST_PLAT_WINDOWS_*`definitions instead.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`BOOST_PLAT_WINDOWS_PHONE`] [__predef_detection__]]
-    [[`BOOST_PLAT_WINDOWS_STORE`] [__predef_detection__]]
-    ]
- */
-
-#define BOOST_PLAT_WINDOWS_RUNTIME BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if BOOST_OS_WINDOWS && \
-    (BOOST_PLAT_WINDOWS_STORE || BOOST_PLAT_WINDOWS_PHONE)
-#   undef BOOST_PLAT_WINDOWS_RUNTIME
-#   define BOOST_PLAT_WINDOWS_RUNTIME BOOST_VERSION_NUMBER_AVAILABLE
-#endif
- 
-#if BOOST_PLAT_WINDOWS_RUNTIME
-#   define BOOST_PLAT_WINDOWS_RUNTIME_AVAILABLE
-#   include <boost/predef/detail/platform_detected.h>
-#endif
-
-#define BOOST_PLAT_WINDOWS_RUNTIME_NAME "Windows Runtime"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_PLAT_WINDOWS_RUNTIME,BOOST_PLAT_WINDOWS_RUNTIME_NAME)
diff --git a/third_party/boost/boost/predef/platform/windows_server.h b/third_party/boost/boost/predef/platform/windows_server.h
deleted file mode 100644
index 7bd629d..0000000
--- a/third_party/boost/boost/predef/platform/windows_server.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
-Copyright James E. King III, 2017
-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_PREDEF_PLAT_WINDOWS_SERVER_H
-#define BOOST_PREDEF_PLAT_WINDOWS_SERVER_H
-
-#include <boost/predef/make.h>
-#include <boost/predef/os/windows.h>
-#include <boost/predef/platform/windows_uwp.h>
-#include <boost/predef/version_number.h>
-
-/*`
-[heading `BOOST_PLAT_WINDOWS_SERVER`]
-
-[@https://docs.microsoft.com/en-us/windows/uwp/get-started/universal-application-platform-guide UWP]
-for Windows Server development.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`WINAPI_FAMILY == WINAPI_FAMILY_SERVER`] [__predef_detection__]]
-    ]
- */
-
-#define BOOST_PLAT_WINDOWS_SERVER BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if BOOST_OS_WINDOWS && \
-    defined(WINAPI_FAMILY_SERVER) && WINAPI_FAMILY == WINAPI_FAMILY_SERVER
-#   undef BOOST_PLAT_WINDOWS_SERVER
-#   define BOOST_PLAT_WINDOWS_SERVER BOOST_VERSION_NUMBER_AVAILABLE
-#endif
- 
-#if BOOST_PLAT_WINDOWS_SERVER
-#   define BOOST_PLAT_WINDOWS_SERVER_AVAILABLE
-#   include <boost/predef/detail/platform_detected.h>
-#endif
-
-#define BOOST_PLAT_WINDOWS_SERVER_NAME "Windows Server"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_PLAT_WINDOWS_SERVER,BOOST_PLAT_WINDOWS_SERVER_NAME)
diff --git a/third_party/boost/boost/predef/platform/windows_store.h b/third_party/boost/boost/predef/platform/windows_store.h
deleted file mode 100644
index 3a3fd8e..0000000
--- a/third_party/boost/boost/predef/platform/windows_store.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
-Copyright (c) Microsoft Corporation 2014
-Copyright Rene Rivera 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)
-*/
-
-#ifndef BOOST_PREDEF_PLAT_WINDOWS_STORE_H
-#define BOOST_PREDEF_PLAT_WINDOWS_STORE_H
-
-#include <boost/predef/make.h>
-#include <boost/predef/os/windows.h>
-#include <boost/predef/platform/windows_uwp.h>
-#include <boost/predef/version_number.h>
-
-/*`
-[heading `BOOST_PLAT_WINDOWS_STORE`]
-
-[@https://docs.microsoft.com/en-us/windows/uwp/get-started/universal-application-platform-guide UWP]
-for Windows Store development.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`WINAPI_FAMILY == WINAPI_FAMILY_PC_APP`] [__predef_detection__]]
-    [[`WINAPI_FAMILY == WINAPI_FAMILY_APP` (deprecated)] [__predef_detection__]]
-]
- */
-
-#define BOOST_PLAT_WINDOWS_STORE BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if BOOST_OS_WINDOWS && \
-    ((defined(WINAPI_FAMILY_PC_APP) && WINAPI_FAMILY == WINAPI_FAMILY_PC_APP) || \
-     (defined(WINAPI_FAMILY_APP)    && WINAPI_FAMILY == WINAPI_FAMILY_APP))
-#   undef BOOST_PLAT_WINDOWS_STORE
-#   define BOOST_PLAT_WINDOWS_STORE BOOST_VERSION_NUMBER_AVAILABLE
-#endif
- 
-#if BOOST_PLAT_WINDOWS_STORE
-#   define BOOST_PLAT_WINDOWS_STORE_AVAILABLE
-#   include <boost/predef/detail/platform_detected.h>
-#endif
-
-#define BOOST_PLAT_WINDOWS_STORE_NAME "Windows Store"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_PLAT_WINDOWS_STORE,BOOST_PLAT_WINDOWS_STORE_NAME)
diff --git a/third_party/boost/boost/predef/platform/windows_system.h b/third_party/boost/boost/predef/platform/windows_system.h
deleted file mode 100644
index 92f424f..0000000
--- a/third_party/boost/boost/predef/platform/windows_system.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
-Copyright James E. King III, 2017
-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_PREDEF_PLAT_WINDOWS_SYSTEM_H
-#define BOOST_PREDEF_PLAT_WINDOWS_SYSTEM_H
-
-#include <boost/predef/make.h>
-#include <boost/predef/os/windows.h>
-#include <boost/predef/platform/windows_uwp.h>
-#include <boost/predef/version_number.h>
-
-/*`
-[heading `BOOST_PLAT_WINDOWS_SYSTEM`]
-
-[@https://docs.microsoft.com/en-us/windows/uwp/get-started/universal-application-platform-guide UWP]
-for Windows System development.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`WINAPI_FAMILY == WINAPI_FAMILY_SYSTEM`] [__predef_detection__]]
-    ]
- */
-
-#define BOOST_PLAT_WINDOWS_SYSTEM BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if BOOST_OS_WINDOWS && \
-    defined(WINAPI_FAMILY_SYSTEM) && WINAPI_FAMILY == WINAPI_FAMILY_SYSTEM
-#   undef BOOST_PLAT_WINDOWS_SYSTEM
-#   define BOOST_PLAT_WINDOWS_SYSTEM BOOST_VERSION_NUMBER_AVAILABLE
-#endif
- 
-#if BOOST_PLAT_WINDOWS_SYSTEM
-#   define BOOST_PLAT_WINDOWS_SYSTEM_AVAILABLE
-#   include <boost/predef/detail/platform_detected.h>
-#endif
-
-#define BOOST_PLAT_WINDOWS_SYSTEM_NAME "Windows Drivers and Tools"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_PLAT_WINDOWS_SYSTEM,BOOST_PLAT_WINDOWS_SYSTEM_NAME)
diff --git a/third_party/boost/boost/predef/platform/windows_uwp.h b/third_party/boost/boost/predef/platform/windows_uwp.h
deleted file mode 100644
index e4c6647..0000000
--- a/third_party/boost/boost/predef/platform/windows_uwp.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
-Copyright James E. King III, 2017
-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_PREDEF_PLAT_WINDOWS_UWP_H
-#define BOOST_PREDEF_PLAT_WINDOWS_UWP_H
-
-#include <boost/predef/make.h>
-#include <boost/predef/os/windows.h>
-#include <boost/predef/version_number.h>
-
-/*`
-[heading `BOOST_PLAT_WINDOWS_UWP`]
-
-[@http://docs.microsoft.com/windows/uwp/ Universal Windows Platform]
-is available if the current development environment is capable of targeting 
-UWP development.
-
-[table
-    [[__predef_symbol__] [__predef_version__]]
-
-    [[`__MINGW64_VERSION_MAJOR` from `_mingw.h`] [`>= 3`]]
-    [[`VER_PRODUCTBUILD` from `ntverp.h`] [`>= 9200`]]
-]
-*/
-
-#define BOOST_PLAT_WINDOWS_UWP BOOST_VERSION_NUMBER_NOT_AVAILABLE
-#define BOOST_PLAT_WINDOWS_SDK_VERSION BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if BOOST_OS_WINDOWS
-//  MinGW (32-bit) has no ntverp.h header
-#if !defined(__MINGW32__)
-#   include <ntverp.h>
-#   undef BOOST_PLAT_WINDOWS_SDK_VERSION
-#   define BOOST_PLAT_WINDOWS_SDK_VERSION BOOST_VERSION_NUMBER(0, 0, VER_PRODUCTBUILD)
-#endif
-
-// 9200 is Windows SDK 8.0 from ntverp.h which introduced family support
-#if ((BOOST_PLAT_WINDOWS_SDK_VERSION >= BOOST_VERSION_NUMBER(0, 0, 9200)) || \
-     (defined(__MINGW64__) && __MINGW64_VERSION_MAJOR >= 3))
-#   undef BOOST_PLAT_WINDOWS_UWP
-#   define BOOST_PLAT_WINDOWS_UWP BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-#endif
-
-#if BOOST_PLAT_WINDOWS_UWP
-#   define BOOST_PLAT_WINDOWS_UWP_AVAILABLE
-#   include <boost/predef/detail/platform_detected.h>
-#   include <winapifamily.h>    // Windows SDK
-#endif
-
-#define BOOST_PLAT_WINDOWS_UWP_NAME "Universal Windows Platform"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_PLAT_WINDOWS_UWP, BOOST_PLAT_WINDOWS_UWP_NAME)
diff --git a/third_party/boost/boost/predef/version.h b/third_party/boost/boost/predef/version.h
deleted file mode 100644
index 6406d79..0000000
--- a/third_party/boost/boost/predef/version.h
+++ /dev/null
@@ -1,15 +0,0 @@
-/*
-Copyright Rene Rivera 2015-2016
-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_PREDEF_VERSION_H
-#define BOOST_PREDEF_VERSION_H
-
-#include <boost/predef/version_number.h>
-
-#define BOOST_PREDEF_VERSION BOOST_VERSION_NUMBER(1,10,0)
-
-#endif
diff --git a/third_party/boost/boost/predef/version_number.h b/third_party/boost/boost/predef/version_number.h
deleted file mode 100644
index 4494270..0000000
--- a/third_party/boost/boost/predef/version_number.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
-Copyright Rene Rivera 2005-2016
-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_PREDEF_VERSION_NUMBER_H
-#define BOOST_PREDEF_VERSION_NUMBER_H
-
-/*`
-[heading `BOOST_VERSION_NUMBER`]
-
-``
-BOOST_VERSION_NUMBER(major,minor,patch)
-``
-
-Defines standard version numbers, with these properties:
-
-* Decimal base whole numbers in the range \[0,1000000000).
-  The number range is designed to allow for a (2,2,5) triplet.
-  Which fits within a 32 bit value.
-* The `major` number can be in the \[0,99\] range.
-* The `minor` number can be in the \[0,99\] range.
-* The `patch` number can be in the \[0,99999\] range.
-* Values can be specified in any base. As the defined value
-  is an constant expression.
-* Value can be directly used in both preprocessor and compiler
-  expressions for comparison to other similarly defined values.
-* The implementation enforces the individual ranges for the
-  major, minor, and patch numbers. And values over the ranges
-  are truncated (modulo).
-
-*/
-#define BOOST_VERSION_NUMBER(major,minor,patch) \
-    ( (((major)%100)*10000000) + (((minor)%100)*100000) + ((patch)%100000) )
-
-#define BOOST_VERSION_NUMBER_MAX \
-    BOOST_VERSION_NUMBER(99,99,99999)
-
-#define BOOST_VERSION_NUMBER_ZERO \
-    BOOST_VERSION_NUMBER(0,0,0)
-
-#define BOOST_VERSION_NUMBER_MIN \
-    BOOST_VERSION_NUMBER(0,0,1)
-
-#define BOOST_VERSION_NUMBER_AVAILABLE \
-    BOOST_VERSION_NUMBER_MIN
-
-#define BOOST_VERSION_NUMBER_NOT_AVAILABLE \
-    BOOST_VERSION_NUMBER_ZERO
-
-/*`
-``
-BOOST_VERSION_NUMBER_MAJOR(N), BOOST_VERSION_NUMBER_MINOR(N), BOOST_VERSION_NUMBER_PATCH(N)
-``
-
-The macros extract the major, minor, and patch portion from a well formed
-version number resulting in a preprocessor expression in the range of
-\[0,99\] or \[0,99999\] for the major and minor, or patch numbers
-respectively.
-*/
-#define BOOST_VERSION_NUMBER_MAJOR(N) \
-    ( ((N)/10000000)%100 )
-
-#define BOOST_VERSION_NUMBER_MINOR(N) \
-    ( ((N)/100000)%100 )
-
-#define BOOST_VERSION_NUMBER_PATCH(N) \
-    ( (N)%100000 )
-
-#endif
diff --git a/third_party/boost/boost/stacktrace.hpp b/third_party/boost/boost/stacktrace.hpp
deleted file mode 100644
index 2d6e6e5..0000000
--- a/third_party/boost/boost/stacktrace.hpp
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright Antony Polukhin, 2016-2019.
-//
-// 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_STACKTRACE_HPP
-#define BOOST_STACKTRACE_HPP
-
-#include <boost/config.hpp>
-#ifdef BOOST_HAS_PRAGMA_ONCE
-#   pragma once
-#endif
-
-#include <boost/stacktrace/frame.hpp>
-#include <boost/stacktrace/stacktrace.hpp>
-#include <boost/stacktrace/safe_dump_to.hpp>
-
-#endif // BOOST_STACKTRACE_HPP
diff --git a/third_party/boost/boost/stacktrace/detail/addr2line_impls.hpp b/third_party/boost/boost/stacktrace/detail/addr2line_impls.hpp
deleted file mode 100644
index 0918fee..0000000
--- a/third_party/boost/boost/stacktrace/detail/addr2line_impls.hpp
+++ /dev/null
@@ -1,226 +0,0 @@
-// Copyright Antony Polukhin, 2016-2019.
-//
-// 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_STACKTRACE_DETAIL_ADDR2LINE_IMPLS_HPP
-#define BOOST_STACKTRACE_DETAIL_ADDR2LINE_IMPLS_HPP
-
-#include <boost/config.hpp>
-#ifdef BOOST_HAS_PRAGMA_ONCE
-#   pragma once
-#endif
-
-#include <boost/stacktrace/detail/to_hex_array.hpp>
-#include <boost/stacktrace/detail/to_dec_array.hpp>
-#include <boost/stacktrace/detail/try_dec_convert.hpp>
-#include <boost/core/demangle.hpp>
-#include <cstdio>
-
-#include <sys/types.h>
-#include <sys/wait.h>
-#include <signal.h>
-
-
-namespace boost { namespace stacktrace { namespace detail {
-
-
-#if defined(BOOST_STACKTRACE_ADDR2LINE_LOCATION) && !defined(BOOST_NO_CXX11_CONSTEXPR)
-
-constexpr bool is_abs_path(const char* path) BOOST_NOEXCEPT {
-    return *path != '\0' && (
-        *path == ':' || *path == '/' || is_abs_path(path + 1)
-    );
-}
-
-#endif
-
-class addr2line_pipe {
-    ::FILE* p;
-    ::pid_t pid;
-
-public:
-    explicit addr2line_pipe(const char *flag, const char* exec_path, const char* addr) BOOST_NOEXCEPT
-        : p(0)
-        , pid(0)
-    {
-        int pdes[2];
-        #ifdef BOOST_STACKTRACE_ADDR2LINE_LOCATION
-        char prog_name[] = BOOST_STRINGIZE( BOOST_STACKTRACE_ADDR2LINE_LOCATION );
-        #if !defined(BOOST_NO_CXX11_CONSTEXPR) && !defined(BOOST_NO_CXX11_STATIC_ASSERT)
-        static_assert(
-            boost::stacktrace::detail::is_abs_path( BOOST_STRINGIZE( BOOST_STACKTRACE_ADDR2LINE_LOCATION ) ),
-            "BOOST_STACKTRACE_ADDR2LINE_LOCATION must be an absolute path"
-        );
-        #endif
-
-        #else
-        char prog_name[] = "/usr/bin/addr2line";
-        #endif
-
-        char* argp[] = {
-            prog_name,
-            const_cast<char*>(flag),
-            const_cast<char*>(exec_path),
-            const_cast<char*>(addr),
-            0
-        };
-
-        if (::pipe(pdes) < 0) {
-            return;
-        }
-
-        pid = ::fork();
-        switch (pid) {
-        case -1:
-            // Failed...
-            ::close(pdes[0]);
-            ::close(pdes[1]);
-            return;
-
-        case 0:
-            // We are the child.
-            ::close(STDERR_FILENO);
-            ::close(pdes[0]);
-            if (pdes[1] != STDOUT_FILENO) {
-                ::dup2(pdes[1], STDOUT_FILENO);
-            }
-
-            // Do not use `execlp()`, `execvp()`, and `execvpe()` here!
-            // `exec*p*` functions are vulnerable to PATH variable evaluation attacks.
-            ::execv(prog_name, argp);
-            ::_exit(127);
-        }
-
-        p = ::fdopen(pdes[0], "r");
-        ::close(pdes[1]);
-    }
-
-    operator ::FILE*() const BOOST_NOEXCEPT {
-        return p;
-    }
-
-    ~addr2line_pipe() BOOST_NOEXCEPT {
-        if (p) {
-            ::fclose(p);
-            int pstat = 0;
-            ::kill(pid, SIGKILL);
-            ::waitpid(pid, &pstat, 0);
-        }
-    }
-};
-
-inline std::string addr2line(const char* flag, const void* addr) {
-    std::string res;
-
-    boost::stacktrace::detail::location_from_symbol loc(addr);
-    if (!loc.empty()) {
-        res = loc.name();
-    } else {
-        res.resize(16);
-        int rlin_size = ::readlink("/proc/self/exe", &res[0], res.size() - 1);
-        while (rlin_size == static_cast<int>(res.size() - 1)) {
-            res.resize(res.size() * 4);
-            rlin_size = ::readlink("/proc/self/exe", &res[0], res.size() - 1);
-        }
-        if (rlin_size == -1) {
-            res.clear();
-            return res;
-        }
-        res.resize(rlin_size);
-    }
-
-    addr2line_pipe p(flag, res.c_str(), to_hex_array(addr).data());
-    res.clear();
-
-    if (!p) {
-        return res;
-    }
-
-    char data[32];
-    while (!::feof(p)) {
-        if (::fgets(data, sizeof(data), p)) {
-            res += data;
-        } else {
-            break;
-        }
-    }
-
-    // Trimming
-    while (!res.empty() && (res[res.size() - 1] == '\n' || res[res.size() - 1] == '\r')) {
-        res.erase(res.size() - 1);
-    }
-
-    return res;
-}
-
-
-struct to_string_using_addr2line {
-    std::string res;
-    void prepare_function_name(const void* addr) {
-        res = boost::stacktrace::frame(addr).name();
-    }
-
-    bool prepare_source_location(const void* addr) {
-        //return addr2line("-Cfipe", addr); // Does not seem to work in all cases
-        std::string source_line = boost::stacktrace::detail::addr2line("-Cpe", addr);
-        if (!source_line.empty() && source_line[0] != '?') {
-            res += " at ";
-            res += source_line;
-            return true;
-        }
-
-        return false;
-    }
-};
-
-template <class Base> class to_string_impl_base;
-typedef to_string_impl_base<to_string_using_addr2line> to_string_impl;
-
-inline std::string name_impl(const void* addr) {
-    std::string res = boost::stacktrace::detail::addr2line("-fe", addr);
-    res = res.substr(0, res.find_last_of('\n'));
-    res = boost::core::demangle(res.c_str());
-
-    if (res == "??") {
-        res.clear();
-    }
-
-    return res;
-}
-
-} // namespace detail
-
-std::string frame::source_file() const {
-    std::string res;
-    res = boost::stacktrace::detail::addr2line("-e", addr_);
-    res = res.substr(0, res.find_last_of(':'));
-    if (res == "??") {
-        res.clear();
-    }
-
-    return res;
-}
-
-
-std::size_t frame::source_line() const {
-    std::size_t line_num = 0;
-    std::string res = boost::stacktrace::detail::addr2line("-e", addr_);
-    const std::size_t last = res.find_last_of(':');
-    if (last == std::string::npos) {
-        return 0;
-    }
-    res = res.substr(last + 1);
-
-    if (!boost::stacktrace::detail::try_dec_convert(res.c_str(), line_num)) {
-        return 0;
-    }
-
-    return line_num;
-}
-
-
-}} // namespace boost::stacktrace
-
-#endif // BOOST_STACKTRACE_DETAIL_ADDR2LINE_IMPLS_HPP
diff --git a/third_party/boost/boost/stacktrace/detail/collect_msvc.ipp b/third_party/boost/boost/stacktrace/detail/collect_msvc.ipp
deleted file mode 100644
index 34c15f6..0000000
--- a/third_party/boost/boost/stacktrace/detail/collect_msvc.ipp
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright Antony Polukhin, 2016-2019.
-//
-// 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_STACKTRACE_DETAIL_COLLECT_MSVC_IPP
-#define BOOST_STACKTRACE_DETAIL_COLLECT_MSVC_IPP
-
-#include <boost/config.hpp>
-#ifdef BOOST_HAS_PRAGMA_ONCE
-#   pragma once
-#endif
-
-#include <boost/stacktrace/safe_dump_to.hpp>
-
-#include <boost/winapi/stack_backtrace.hpp>
-
-namespace boost { namespace stacktrace { namespace detail {
-
-std::size_t this_thread_frames::collect(native_frame_ptr_t* out_frames, std::size_t max_frames_count, std::size_t skip) BOOST_NOEXCEPT {
-    return boost::winapi::RtlCaptureStackBackTrace(
-        static_cast<boost::winapi::ULONG_>(skip),
-        static_cast<boost::winapi::ULONG_>(max_frames_count),
-        const_cast<boost::winapi::PVOID_*>(out_frames),
-        0
-    );
-}
-
-
-}}} // namespace boost::stacktrace
-
-#endif // BOOST_STACKTRACE_DETAIL_COLLECT_MSVC_IPP
diff --git a/third_party/boost/boost/stacktrace/detail/collect_noop.ipp b/third_party/boost/boost/stacktrace/detail/collect_noop.ipp
deleted file mode 100644
index eda44bc..0000000
--- a/third_party/boost/boost/stacktrace/detail/collect_noop.ipp
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright Antony Polukhin, 2016-2019.
-//
-// 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_STACKTRACE_DETAIL_COLLECT_NOOP_IPP
-#define BOOST_STACKTRACE_DETAIL_COLLECT_NOOP_IPP
-
-#include <boost/config.hpp>
-#ifdef BOOST_HAS_PRAGMA_ONCE
-#   pragma once
-#endif
-
-#include <boost/stacktrace/safe_dump_to.hpp>
-
-namespace boost { namespace stacktrace { namespace detail {
-
-std::size_t this_thread_frames::collect(native_frame_ptr_t* /*out_frames*/, std::size_t /*max_frames_count*/, std::size_t /*skip*/) BOOST_NOEXCEPT {
-    return 0;
-}
-
-}}} // namespace boost::stacktrace::detail
-
-#endif // BOOST_STACKTRACE_DETAIL_COLLECT_NOOP_IPP
diff --git a/third_party/boost/boost/stacktrace/detail/collect_unwind.ipp b/third_party/boost/boost/stacktrace/detail/collect_unwind.ipp
deleted file mode 100644
index f03aebf..0000000
--- a/third_party/boost/boost/stacktrace/detail/collect_unwind.ipp
+++ /dev/null
@@ -1,106 +0,0 @@
-// Copyright Antony Polukhin, 2016-2019.
-//
-// 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_STACKTRACE_DETAIL_COLLECT_UNWIND_IPP
-#define BOOST_STACKTRACE_DETAIL_COLLECT_UNWIND_IPP
-
-#include <boost/config.hpp>
-#ifdef BOOST_HAS_PRAGMA_ONCE
-#   pragma once
-#endif
-
-#include <boost/stacktrace/safe_dump_to.hpp>
-
-// On iOS 32-bit ARM architecture _Unwind_Backtrace function doesn't exist, symbol is undefined.
-// Forcing libc backtrace() function usage.
-#include <boost/predef.h>
-#if defined(BOOST_OS_IOS_AVAILABLE) && defined(BOOST_ARCH_ARM_AVAILABLE) && BOOST_VERSION_NUMBER_MAJOR(BOOST_ARCH_ARM) < 8
-#define BOOST_STACKTRACE_USE_LIBC_BACKTRACE_FUNCTION
-#endif
-
-#if defined(BOOST_STACKTRACE_USE_LIBC_BACKTRACE_FUNCTION)
-#include <execinfo.h>
-#include <algorithm>
-#else
-#include <unwind.h>
-#endif
-#include <cstdio>
-
-#if !defined(_GNU_SOURCE) && !defined(BOOST_STACKTRACE_GNU_SOURCE_NOT_REQUIRED) && !defined(BOOST_WINDOWS)
-#error "Boost.Stacktrace requires `_Unwind_Backtrace` function. Define `_GNU_SOURCE` macro or `BOOST_STACKTRACE_GNU_SOURCE_NOT_REQUIRED` if _Unwind_Backtrace is available without `_GNU_SOURCE`."
-#endif
-
-namespace boost { namespace stacktrace { namespace detail {
-
-#if !defined(BOOST_STACKTRACE_USE_LIBC_BACKTRACE_FUNCTION)
-struct unwind_state {
-    std::size_t frames_to_skip;
-    native_frame_ptr_t* current;
-    native_frame_ptr_t* end;
-};
-
-inline _Unwind_Reason_Code unwind_callback(::_Unwind_Context* context, void* arg) {
-    // Note: do not write `::_Unwind_GetIP` because it is a macro on some platforms.
-    // Use `_Unwind_GetIP` instead!
-    unwind_state* const state = static_cast<unwind_state*>(arg);
-    if (state->frames_to_skip) {
-        --state->frames_to_skip;
-        return _Unwind_GetIP(context) ? ::_URC_NO_REASON : ::_URC_END_OF_STACK;
-    }
-
-    *state->current =  reinterpret_cast<native_frame_ptr_t>(
-        _Unwind_GetIP(context)
-    );
-
-    ++state->current;
-    if (!*(state->current - 1) || state->current == state->end) {
-        return ::_URC_END_OF_STACK;
-    }
-    return ::_URC_NO_REASON;
-}
-#endif //!defined(BOOST_STACKTRACE_USE_LIBC_BACKTRACE_FUNCTION)
-
-std::size_t this_thread_frames::collect(native_frame_ptr_t* out_frames, std::size_t max_frames_count, std::size_t skip) BOOST_NOEXCEPT {
-    std::size_t frames_count = 0;
-    if (!max_frames_count) {
-        return frames_count;
-    }
-    skip += 1;
-
-#if defined(BOOST_STACKTRACE_USE_LIBC_BACKTRACE_FUNCTION)
-    // According to https://opensource.apple.com/source/Libc/Libc-1272.200.26/gen/backtrace.c.auto.html
-    // it looks like the `::backtrace` is async signal safe.
-    frames_count = static_cast<size_t>(::backtrace(const_cast<void **>(out_frames), static_cast<int>(max_frames_count)));
-
-    // NOTE: There is no way to pass "skip" count to backtrace function so we need to perform left shift operation.
-    // If number of elements in result backtrace is >= max_frames_count then "skip" elements are wasted.
-    if (frames_count && skip) {
-    	if (skip >= frames_count) {
-    		frames_count = 0;
-    	} else {
-    		std::copy(out_frames + skip, out_frames + frames_count, out_frames);
-    		frames_count -= skip;
-    	}
-    }
-#else
-    boost::stacktrace::detail::unwind_state state = { skip, out_frames, out_frames + max_frames_count };
-    ::_Unwind_Backtrace(&boost::stacktrace::detail::unwind_callback, &state);
-    frames_count = state.current - out_frames;
-#endif //defined(BOOST_STACKTRACE_USE_LIBC_BACKTRACE_FUNCTION)
-
-    if (frames_count && out_frames[frames_count - 1] == 0) {
-        -- frames_count;
-    }
-
-    return frames_count;
-}
-
-
-}}} // namespace boost::stacktrace::detail
-
-#undef BOOST_STACKTRACE_USE_LIBC_BACKTRACE_FUNCTION
-
-#endif // BOOST_STACKTRACE_DETAIL_COLLECT_UNWIND_IPP
diff --git a/third_party/boost/boost/stacktrace/detail/frame_decl.hpp b/third_party/boost/boost/stacktrace/detail/frame_decl.hpp
deleted file mode 100644
index cbec3fd..0000000
--- a/third_party/boost/boost/stacktrace/detail/frame_decl.hpp
+++ /dev/null
@@ -1,159 +0,0 @@
-// Copyright Antony Polukhin, 2016-2019.
-//
-// 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_STACKTRACE_DETAIL_FRAME_DECL_HPP
-#define BOOST_STACKTRACE_DETAIL_FRAME_DECL_HPP
-
-#include <boost/config.hpp>
-#ifdef BOOST_HAS_PRAGMA_ONCE
-#   pragma once
-#endif
-
-#include <iosfwd>
-#include <string>
-
-#include <boost/core/explicit_operator_bool.hpp>
-
-#include <boost/stacktrace/safe_dump_to.hpp> // boost::stacktrace::detail::native_frame_ptr_t
-#include <boost/stacktrace/detail/void_ptr_cast.hpp>
-
-#include <boost/stacktrace/detail/push_options.h>
-
-/// @file boost/stacktrace/detail/frame_decl.hpp
-/// Use <boost/stacktrace/frame.hpp> header instead of this one!
-
-namespace boost { namespace stacktrace {
-
-/// @class boost::stacktrace::frame boost/stacktrace/detail/frame_decl.hpp <boost/stacktrace/frame.hpp>
-/// @brief Class that stores frame/function address and can get information about it at runtime.
-class frame {
-public:
-    typedef boost::stacktrace::detail::native_frame_ptr_t native_frame_ptr_t;
-
-private:
-    /// @cond
-    native_frame_ptr_t addr_;
-    /// @endcond
-
-public:
-    /// @brief Constructs frame that references NULL address.
-    /// Calls to source_file() and source_line() will return empty string.
-    /// Calls to source_line() will return 0.
-    ///
-    /// @b Complexity: O(1).
-    ///
-    /// @b Async-Handler-Safety: Safe.
-    /// @throws Nothing.
-    BOOST_CONSTEXPR frame() BOOST_NOEXCEPT
-        : addr_(0)
-    {}
-
-#ifdef BOOST_STACKTRACE_DOXYGEN_INVOKED
-    /// @brief Copy constructs frame.
-    ///
-    /// @b Complexity: O(1).
-    ///
-    /// @b Async-Handler-Safety: Safe.
-    /// @throws Nothing.
-    constexpr frame(const frame&) = default;
-
-    /// @brief Copy assigns frame.
-    ///
-    /// @b Complexity: O(1).
-    ///
-    /// @b Async-Handler-Safety: Safe.
-    /// @throws Nothing.
-    constexpr frame& operator=(const frame&) = default;
-#endif
-
-    /// @brief Constructs frame that references addr and could later generate information about that address using platform specific features.
-    ///
-    /// @b Complexity: O(1).
-    ///
-    /// @b Async-Handler-Safety: Safe.
-    /// @throws Nothing.
-    BOOST_CONSTEXPR explicit frame(native_frame_ptr_t addr) BOOST_NOEXCEPT
-        : addr_(addr)
-    {}
-
-    /// @brief Constructs frame that references function_addr and could later generate information about that function using platform specific features.
-    ///
-    /// @b Complexity: O(1).
-    ///
-    /// @b Async-Handler-Safety: Safe.
-    /// @throws Nothing.
-    template <class T>
-    explicit frame(T* function_addr) BOOST_NOEXCEPT
-        : addr_(boost::stacktrace::detail::void_ptr_cast<native_frame_ptr_t>(function_addr))
-    {}
-
-    /// @returns Name of the frame (function name in a human readable form).
-    ///
-    /// @b Complexity: unknown (lots of platform specific work).
-    ///
-    /// @b Async-Handler-Safety: Unsafe.
-    /// @throws std::bad_alloc if not enough memory to construct resulting string.
-    BOOST_STACKTRACE_FUNCTION std::string name() const;
-
-    /// @returns Address of the frame function.
-    ///
-    /// @b Complexity: O(1).
-    ///
-    /// @b Async-Handler-Safety: Safe.
-    /// @throws Nothing.
-    BOOST_CONSTEXPR native_frame_ptr_t address() const BOOST_NOEXCEPT {
-        return addr_;
-    }
-
-    /// @returns Path to the source file, were the function of the frame is defined. Returns empty string
-    /// if this->source_line() == 0.
-    /// @throws std::bad_alloc if not enough memory to construct resulting string.
-    ///
-    /// @b Complexity: unknown (lots of platform specific work).
-    ///
-    /// @b Async-Handler-Safety: Unsafe.
-    BOOST_STACKTRACE_FUNCTION std::string source_file() const;
-
-    /// @returns Code line in the source file, were the function of the frame is defined.
-    /// @throws std::bad_alloc if not enough memory to construct string for internal needs.
-    ///
-    /// @b Complexity: unknown (lots of platform specific work).
-    ///
-    /// @b Async-Handler-Safety: Unsafe.
-    BOOST_STACKTRACE_FUNCTION std::size_t source_line() const;
-
-    /// @brief Checks that frame is not references NULL address.
-    /// @returns `true` if `this->address() != 0`
-    ///
-    /// @b Complexity: O(1)
-    ///
-    /// @b Async-Handler-Safety: Safe.
-    BOOST_EXPLICIT_OPERATOR_BOOL()
-
-    /// @brief Checks that frame references NULL address.
-    /// @returns `true` if `this->address() == 0`
-    ///
-    /// @b Complexity: O(1)
-    ///
-    /// @b Async-Handler-Safety: Safe.
-    BOOST_CONSTEXPR bool empty() const BOOST_NOEXCEPT { return !address(); }
-    
-    /// @cond
-    BOOST_CONSTEXPR bool operator!() const BOOST_NOEXCEPT { return !address(); }
-    /// @endcond
-};
-
-
-namespace detail {
-    BOOST_STACKTRACE_FUNCTION std::string to_string(const frame* frames, std::size_t size);
-} // namespace detail
-
-}} // namespace boost::stacktrace
-
-
-#include <boost/stacktrace/detail/pop_options.h>
-
-#endif // BOOST_STACKTRACE_DETAIL_FRAME_DECL_HPP
diff --git a/third_party/boost/boost/stacktrace/detail/frame_msvc.ipp b/third_party/boost/boost/stacktrace/detail/frame_msvc.ipp
deleted file mode 100644
index 3159129..0000000
--- a/third_party/boost/boost/stacktrace/detail/frame_msvc.ipp
+++ /dev/null
@@ -1,390 +0,0 @@
-// Copyright Antony Polukhin, 2016-2019.
-//
-// 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_STACKTRACE_DETAIL_FRAME_MSVC_IPP
-#define BOOST_STACKTRACE_DETAIL_FRAME_MSVC_IPP
-
-#include <boost/config.hpp>
-#ifdef BOOST_HAS_PRAGMA_ONCE
-#   pragma once
-#endif
-
-#include <boost/stacktrace/frame.hpp>
-
-#include <boost/core/demangle.hpp>
-#include <boost/core/noncopyable.hpp>
-#include <boost/stacktrace/detail/to_dec_array.hpp>
-#include <boost/stacktrace/detail/to_hex_array.hpp>
-#include <windows.h>
-#include "dbgeng.h"
-
-#ifdef BOOST_MSVC
-#   pragma comment(lib, "ole32.lib")
-#   pragma comment(lib, "Dbgeng.lib")
-#endif
-
-
-#ifdef __CRT_UUID_DECL // for __MINGW32__
-    __CRT_UUID_DECL(IDebugClient,0x27fe5639,0x8407,0x4f47,0x83,0x64,0xee,0x11,0x8f,0xb0,0x8a,0xc8)
-    __CRT_UUID_DECL(IDebugControl,0x5182e668,0x105e,0x416e,0xad,0x92,0x24,0xef,0x80,0x04,0x24,0xba)
-    __CRT_UUID_DECL(IDebugSymbols,0x8c31e98c,0x983a,0x48a5,0x90,0x16,0x6f,0xe5,0xd6,0x67,0xa9,0x50)
-#elif defined(DEFINE_GUID) && !defined(BOOST_MSVC)
-    DEFINE_GUID(IID_IDebugClient,0x27fe5639,0x8407,0x4f47,0x83,0x64,0xee,0x11,0x8f,0xb0,0x8a,0xc8);
-    DEFINE_GUID(IID_IDebugControl,0x5182e668,0x105e,0x416e,0xad,0x92,0x24,0xef,0x80,0x04,0x24,0xba);
-    DEFINE_GUID(IID_IDebugSymbols,0x8c31e98c,0x983a,0x48a5,0x90,0x16,0x6f,0xe5,0xd6,0x67,0xa9,0x50);
-#endif
-
-
-
-// Testing. Remove later
-//#   define __uuidof(x) ::IID_ ## x
-
-namespace boost { namespace stacktrace { namespace detail {
-
-class com_global_initer: boost::noncopyable {
-    bool ok_;
-
-public:
-    com_global_initer() BOOST_NOEXCEPT
-        : ok_(false)
-    {
-        // COINIT_MULTITHREADED means that we must serialize access to the objects manually.
-        // This is the fastest way to work. If user calls CoInitializeEx before us - we 
-        // can end up with other mode (which is OK for us).
-        //
-        // If we call CoInitializeEx befire user - user may end up with different mode, which is a problem.
-        // So we need to call that initialization function as late as possible.
-        const DWORD res = ::CoInitializeEx(0, COINIT_MULTITHREADED);
-        ok_ = (res == S_OK || res == S_FALSE);
-    }
-
-    ~com_global_initer() BOOST_NOEXCEPT {
-        if (ok_) {
-            ::CoUninitialize();
-        }
-    }
-};
-
-
-template <class T>
-class com_holder: boost::noncopyable {
-    T* holder_;
-
-public:
-    com_holder(const com_global_initer&) BOOST_NOEXCEPT
-        : holder_(0)
-    {}
-
-    T* operator->() const BOOST_NOEXCEPT {
-        return holder_;
-    }
-
-    void** to_void_ptr_ptr() BOOST_NOEXCEPT {
-        return reinterpret_cast<void**>(&holder_);
-    }
-
-    bool is_inited() const BOOST_NOEXCEPT {
-        return !!holder_;
-    }
-
-    ~com_holder() BOOST_NOEXCEPT {
-        if (holder_) {
-            holder_->Release();
-        }
-    }
-};
-
-
-static std::string mingw_demangling_workaround(const std::string& s) {
-#ifdef BOOST_GCC
-    if (s.empty()) {
-        return s;
-    }
-
-    if (s[0] != '_') {
-        return boost::core::demangle(('_' + s).c_str());
-    }
-
-    return boost::core::demangle(s.c_str());
-#else
-    return s;
-#endif
-}
-
-class debugging_symbols: boost::noncopyable {
-    static void try_init_com(com_holder< ::IDebugSymbols>& idebug, const com_global_initer& com) BOOST_NOEXCEPT {
-        com_holder< ::IDebugClient> iclient(com);
-        if (S_OK != ::DebugCreate(__uuidof(IDebugClient), iclient.to_void_ptr_ptr())) {
-            return;
-        }
-
-        com_holder< ::IDebugControl> icontrol(com);
-        const bool res0 = (S_OK == iclient->QueryInterface(
-            __uuidof(IDebugControl),
-            icontrol.to_void_ptr_ptr()
-        ));
-        if (!res0) {
-            return;
-        }
-
-        const bool res1 = (S_OK == iclient->AttachProcess(
-            0,
-            ::GetCurrentProcessId(),
-            DEBUG_ATTACH_NONINVASIVE | DEBUG_ATTACH_NONINVASIVE_NO_SUSPEND
-        ));
-        if (!res1) {
-            return;
-        }
-
-        if (S_OK != icontrol->WaitForEvent(DEBUG_WAIT_DEFAULT, INFINITE)) {
-            return;
-        }
-
-        // No cheking: QueryInterface sets the output parameter to NULL in case of error.
-        iclient->QueryInterface(__uuidof(IDebugSymbols), idebug.to_void_ptr_ptr());
-    }
-
-#ifndef BOOST_STACKTRACE_USE_WINDBG_CACHED
-
-    boost::stacktrace::detail::com_global_initer com_;
-    com_holder< ::IDebugSymbols> idebug_;
-public:
-    debugging_symbols() BOOST_NOEXCEPT
-        : com_()
-        , idebug_(com_)
-    {
-        try_init_com(idebug_, com_);
-    }
-
-#else
-
-#ifdef BOOST_NO_CXX11_THREAD_LOCAL
-#   error Your compiler does not support C++11 thread_local storage. It`s impossible to build with BOOST_STACKTRACE_USE_WINDBG_CACHED.
-#endif
-
-    static com_holder< ::IDebugSymbols>& get_thread_local_debug_inst() BOOST_NOEXCEPT {
-        // [class.mfct]: A static local variable or local type in a member function always refers to the same entity, whether
-        // or not the member function is inline.
-        static thread_local boost::stacktrace::detail::com_global_initer com;
-        static thread_local com_holder< ::IDebugSymbols> idebug(com);
-
-        if (!idebug.is_inited()) {
-            try_init_com(idebug, com);
-        }
-
-        return idebug;
-    }
-
-    com_holder< ::IDebugSymbols>& idebug_;
-public:
-    debugging_symbols() BOOST_NOEXCEPT
-        : idebug_( get_thread_local_debug_inst() )
-    {}
-
-#endif // #ifndef BOOST_STACKTRACE_USE_WINDBG_CACHED
-
-    bool is_inited() const BOOST_NOEXCEPT {
-        return idebug_.is_inited();
-    }
-
-    std::string get_name_impl(const void* addr, std::string* module_name = 0) const {
-        std::string result;
-        if (!is_inited()) {
-            return result;
-        }
-        const ULONG64 offset = reinterpret_cast<ULONG64>(addr);
-
-        char name[256];
-        name[0] = '\0';
-        ULONG size = 0;
-        bool res = (S_OK == idebug_->GetNameByOffset(
-            offset,
-            name,
-            sizeof(name),
-            &size,
-            0
-        ));
-
-        if (!res && size != 0) {
-            result.resize(size);
-            res = (S_OK == idebug_->GetNameByOffset(
-                offset,
-                &result[0],
-                static_cast<ULONG>(result.size()),
-                &size,
-                0
-            ));
-        } else if (res) {
-            result = name;
-        }
-
-        if (!res) {
-            result.clear();
-            return result;
-        }
-
-        const std::size_t delimiter = result.find_first_of('!');
-        if (module_name) {
-            *module_name = result.substr(0, delimiter);
-        }
-
-        if (delimiter == std::string::npos) {
-            // If 'delimiter' is equal to 'std::string::npos' then we have only module name.
-            result.clear();
-            return result;
-        }
-
-        result = mingw_demangling_workaround(
-            result.substr(delimiter + 1)
-        );
-
-        return result;
-    }
-
-    std::size_t get_line_impl(const void* addr) const BOOST_NOEXCEPT {
-        ULONG result = 0;
-        if (!is_inited()) {
-            return result;
-        }
-
-        const bool is_ok = (S_OK == idebug_->GetLineByOffset(
-            reinterpret_cast<ULONG64>(addr),
-            &result,
-            0,
-            0,
-            0,
-            0
-        ));
-
-        return (is_ok ? result : 0);
-    }
-
-    std::pair<std::string, std::size_t> get_source_file_line_impl(const void* addr) const {
-        std::pair<std::string, std::size_t> result;
-        if (!is_inited()) {
-            return result;
-        }
-        const ULONG64 offset = reinterpret_cast<ULONG64>(addr);
-
-        char name[256];
-        name[0] = 0;
-        ULONG size = 0;
-        ULONG line_num = 0;
-        bool res = (S_OK == idebug_->GetLineByOffset(
-            offset,
-            &line_num,
-            name,
-            sizeof(name),
-            &size,
-            0
-        ));
-
-        if (res) {
-            result.first = name;
-            result.second = line_num;
-            return result;
-        }
-
-        if (!res && size == 0) {
-            return result;
-        }
-
-        result.first.resize(size);
-        res = (S_OK == idebug_->GetLineByOffset(
-            offset,
-            &line_num,
-            &result.first[0],
-            static_cast<ULONG>(result.first.size()),
-            &size,
-            0
-        ));
-        result.second = line_num;
-
-        if (!res) {
-            result.first.clear();
-            result.second = 0;
-        }
-
-        return result;
-    }
-
-    void to_string_impl(const void* addr, std::string& res) const {
-        if (!is_inited()) {
-            return;
-        }
-
-        std::string module_name;
-        std::string name = this->get_name_impl(addr, &module_name);
-        if (!name.empty()) {
-            res += name;
-        } else {
-            res += to_hex_array(addr).data();
-        }
-
-        std::pair<std::string, std::size_t> source_line = this->get_source_file_line_impl(addr);
-        if (!source_line.first.empty() && source_line.second) {
-            res += " at ";
-            res += source_line.first;
-            res += ':';
-            res += boost::stacktrace::detail::to_dec_array(source_line.second).data();
-        } else if (!module_name.empty()) {
-            res += " in ";
-            res += module_name;
-        }
-    }
-};
-
-std::string to_string(const frame* frames, std::size_t size) {
-    boost::stacktrace::detail::debugging_symbols idebug;
-    if (!idebug.is_inited()) {
-        return std::string();
-    }
-
-    std::string res;
-    res.reserve(64 * size);
-    for (std::size_t i = 0; i < size; ++i) {
-        if (i < 10) {
-            res += ' ';
-        }
-        res += boost::stacktrace::detail::to_dec_array(i).data();
-        res += '#';
-        res += ' ';
-        idebug.to_string_impl(frames[i].address(), res);
-        res += '\n';
-    }
-
-    return res;
-}
-
-} // namespace detail
-
-std::string frame::name() const {
-    boost::stacktrace::detail::debugging_symbols idebug;
-    return idebug.get_name_impl(addr_);
-}
-
-
-std::string frame::source_file() const {
-    boost::stacktrace::detail::debugging_symbols idebug;
-    return idebug.get_source_file_line_impl(addr_).first;
-}
-
-std::size_t frame::source_line() const {
-    boost::stacktrace::detail::debugging_symbols idebug;
-    return idebug.get_line_impl(addr_);
-}
-
-std::string to_string(const frame& f) {
-    std::string res;
-
-    boost::stacktrace::detail::debugging_symbols idebug;
-    idebug.to_string_impl(f.address(), res);
-    return res;
-}
-
-}} // namespace boost::stacktrace
-
-#endif // BOOST_STACKTRACE_DETAIL_FRAME_MSVC_IPP
diff --git a/third_party/boost/boost/stacktrace/detail/frame_noop.ipp b/third_party/boost/boost/stacktrace/detail/frame_noop.ipp
deleted file mode 100644
index 41075ef..0000000
--- a/third_party/boost/boost/stacktrace/detail/frame_noop.ipp
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright Antony Polukhin, 2016-2019.
-//
-// 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_STACKTRACE_DETAIL_FRAME_NOOP_IPP
-#define BOOST_STACKTRACE_DETAIL_FRAME_NOOP_IPP
-
-#include <boost/config.hpp>
-#ifdef BOOST_HAS_PRAGMA_ONCE
-#   pragma once
-#endif
-
-#include <boost/stacktrace/frame.hpp>
-
-namespace boost { namespace stacktrace { namespace detail {
-
-std::string to_string(const frame* /*frames*/, std::size_t /*count*/) {
-    return std::string();
-}
-
-} // namespace detail
-
-std::string frame::name() const {
-    return std::string();
-}
-
-std::string frame::source_file() const {
-    return std::string();
-}
-
-std::size_t frame::source_line() const {
-    return 0;
-}
-
-std::string to_string(const frame& /*f*/) {
-    return std::string();
-}
-
-
-}} // namespace boost::stacktrace
-
-#endif // BOOST_STACKTRACE_DETAIL_FRAME_NOOP_IPP
diff --git a/third_party/boost/boost/stacktrace/detail/frame_unwind.ipp b/third_party/boost/boost/stacktrace/detail/frame_unwind.ipp
deleted file mode 100644
index a3e99ac..0000000
--- a/third_party/boost/boost/stacktrace/detail/frame_unwind.ipp
+++ /dev/null
@@ -1,103 +0,0 @@
-// Copyright Antony Polukhin, 2016-2019.
-//
-// 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_STACKTRACE_DETAIL_FRAME_UNWIND_IPP
-#define BOOST_STACKTRACE_DETAIL_FRAME_UNWIND_IPP
-
-#include <boost/config.hpp>
-#ifdef BOOST_HAS_PRAGMA_ONCE
-#   pragma once
-#endif
-
-#include <boost/stacktrace/frame.hpp>
-
-#include <boost/stacktrace/detail/to_hex_array.hpp>
-#include <boost/stacktrace/detail/location_from_symbol.hpp>
-#include <boost/stacktrace/detail/to_dec_array.hpp>
-#include <boost/core/demangle.hpp>
-
-#include <cstdio>
-
-#ifdef BOOST_STACKTRACE_USE_BACKTRACE
-#   include <boost/stacktrace/detail/libbacktrace_impls.hpp>
-#elif defined(BOOST_STACKTRACE_USE_ADDR2LINE)
-#   include <boost/stacktrace/detail/addr2line_impls.hpp>
-#else
-#   include <boost/stacktrace/detail/unwind_base_impls.hpp>
-#endif
-
-namespace boost { namespace stacktrace { namespace detail {
-
-template <class Base>
-class to_string_impl_base: private Base {
-public:
-    std::string operator()(boost::stacktrace::detail::native_frame_ptr_t addr) {
-        Base::res.clear();
-        Base::prepare_function_name(addr);
-        if (!Base::res.empty()) {
-            Base::res = boost::core::demangle(Base::res.c_str());
-        } else {
-            Base::res = to_hex_array(addr).data();
-        }
-
-        if (Base::prepare_source_location(addr)) {
-            return Base::res;
-        }
-
-        boost::stacktrace::detail::location_from_symbol loc(addr);
-        if (!loc.empty()) {
-            Base::res += " in ";
-            Base::res += loc.name();
-        }
-
-        return Base::res;
-    }
-};
-
-std::string to_string(const frame* frames, std::size_t size) {
-    std::string res;
-    res.reserve(64 * size);
-
-    to_string_impl impl;
-
-    for (std::size_t i = 0; i < size; ++i) {
-        if (i < 10) {
-            res += ' ';
-        }
-        res += boost::stacktrace::detail::to_dec_array(i).data();
-        res += '#';
-        res += ' ';
-        res += impl(frames[i].address());
-        res += '\n';
-    }
-
-    return res;
-}
-
-
-} // namespace detail
-
-
-std::string frame::name() const {
-#if !defined(BOOST_WINDOWS) && !defined(__CYGWIN__)
-    ::Dl_info dli;
-    const bool dl_ok = !!::dladdr(const_cast<void*>(addr_), &dli); // `dladdr` on Solaris accepts nonconst addresses
-    if (dl_ok && dli.dli_sname) {
-        return boost::core::demangle(dli.dli_sname);
-    }
-#endif
-    return boost::stacktrace::detail::name_impl(addr_);
-}
-
-std::string to_string(const frame& f) {
-    boost::stacktrace::detail::to_string_impl impl;
-    return impl(f.address());
-}
-
-
-}} // namespace boost::stacktrace
-
-#endif // BOOST_STACKTRACE_DETAIL_FRAME_UNWIND_IPP
diff --git a/third_party/boost/boost/stacktrace/detail/libbacktrace_impls.hpp b/third_party/boost/boost/stacktrace/detail/libbacktrace_impls.hpp
deleted file mode 100644
index 52701ec..0000000
--- a/third_party/boost/boost/stacktrace/detail/libbacktrace_impls.hpp
+++ /dev/null
@@ -1,236 +0,0 @@
-// Copyright Antony Polukhin, 2016-2019.
-//
-// 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_STACKTRACE_DETAIL_LIBBACKTRACE_IMPLS_HPP
-#define BOOST_STACKTRACE_DETAIL_LIBBACKTRACE_IMPLS_HPP
-
-#include <boost/config.hpp>
-#ifdef BOOST_HAS_PRAGMA_ONCE
-#   pragma once
-#endif
-
-#include <boost/stacktrace/detail/to_hex_array.hpp>
-#include <boost/stacktrace/detail/to_dec_array.hpp>
-#include <boost/stacktrace/detail/location_from_symbol.hpp>
-#include <boost/core/demangle.hpp>
-
-#ifdef BOOST_STACKTRACE_BACKTRACE_INCLUDE_FILE
-#   include BOOST_STACKTRACE_BACKTRACE_INCLUDE_FILE
-#else
-#   include <backtrace.h>
-#endif
-
-namespace boost { namespace stacktrace { namespace detail {
-
-
-struct pc_data {
-    std::string* function;
-    std::string* filename;
-    std::size_t line;
-};
-
-inline void libbacktrace_syminfo_callback(void *data, uintptr_t /*pc*/, const char *symname, uintptr_t /*symval*/, uintptr_t /*symsize*/) {
-    pc_data& d = *static_cast<pc_data*>(data);
-    if (d.function && symname) {
-        *d.function = symname;
-    }
-}
-
-// Old versions of libbacktrace have different signature for the callback
-inline void libbacktrace_syminfo_callback(void *data, uintptr_t pc, const char *symname, uintptr_t symval) {
-    boost::stacktrace::detail::libbacktrace_syminfo_callback(data, pc, symname, symval, 0);
-}
-
-inline int libbacktrace_full_callback(void *data, uintptr_t /*pc*/, const char *filename, int lineno, const char *function) {
-    pc_data& d = *static_cast<pc_data*>(data);
-    if (d.filename && filename) {
-        *d.filename = filename;
-    }
-    if (d.function && function) {
-        *d.function = function;
-    }
-    d.line = lineno;
-    return 0;
-}
-
-inline void libbacktrace_error_callback(void* /*data*/, const char* /*msg*/, int /*errnum*/) BOOST_NOEXCEPT {
-    // Do nothing, just return.
-}
-
-// Not async-signal-safe, so this method is not called from async-safe functions.
-//
-// This function is not async signal safe because:
-// * Dynamic initialization of a block-scope variable with static storage duration could lock a mutex
-// * No guarantees on `backtrace_create_state` function.
-//
-// Currently `backtrace_create_state` can not detect file name on Windows https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82543
-// That's why we provide a `prog_location` here.
-BOOST_SYMBOL_VISIBLE inline ::backtrace_state* construct_state(const program_location& prog_location) BOOST_NOEXCEPT {
-    // [dcl.inline]: A static local variable in an inline function with external linkage always refers to the same object.
-
-    // TODO: The most obvious solution:
-    //
-    //static ::backtrace_state* state = ::backtrace_create_state(
-    //    prog_location.name(),
-    //    1, // allow safe concurrent usage of the same state
-    //    boost::stacktrace::detail::libbacktrace_error_callback,
-    //    0 // pointer to data that will be passed to callback
-    //);
-    //
-    //
-    // Unfortunately, that solution segfaults when `construct_state()` function is in .so file
-    // and multiple threads concurrently work with state.
-
-
-#ifndef BOOST_HAS_THREADS
-    static
-#else
-
-    // Result of `construct_state()` invocation is not stored by the callers, so `thread_local`
-    // gives a single `state` per thread and that state is not shared between threads in any way.
-
-#   ifndef BOOST_NO_CXX11_THREAD_LOCAL
-    thread_local
-#   elif defined(__GNUC__)
-    static __thread
-#   else
-    /* just a local variable */
-#   endif
-
-#endif
-      ::backtrace_state* state = ::backtrace_create_state(
-        prog_location.name(),
-        0,
-        boost::stacktrace::detail::libbacktrace_error_callback,
-        0
-    );
-    return state;
-}
-
-struct to_string_using_backtrace {
-    std::string res;
-    boost::stacktrace::detail::program_location prog_location;
-    ::backtrace_state* state;
-    std::string filename;
-    std::size_t line;
-
-    void prepare_function_name(const void* addr) {
-        boost::stacktrace::detail::pc_data data = {&res, &filename, 0};
-        if (state) {
-            ::backtrace_pcinfo(
-                state,
-                reinterpret_cast<uintptr_t>(addr),
-                boost::stacktrace::detail::libbacktrace_full_callback,
-                boost::stacktrace::detail::libbacktrace_error_callback,
-                &data
-            ) 
-            ||
-            ::backtrace_syminfo(
-                state,
-                reinterpret_cast<uintptr_t>(addr),
-                boost::stacktrace::detail::libbacktrace_syminfo_callback,
-                boost::stacktrace::detail::libbacktrace_error_callback,
-                &data
-            );
-        }
-        line = data.line;
-    }
-
-    bool prepare_source_location(const void* /*addr*/) {
-        if (filename.empty() || !line) {
-            return false;
-        }
-
-        res += " at ";
-        res += filename;
-        res += ':';
-        res += boost::stacktrace::detail::to_dec_array(line).data();
-        return true;
-    }
-
-    to_string_using_backtrace() BOOST_NOEXCEPT {
-        state = boost::stacktrace::detail::construct_state(prog_location);
-    }
-};
-
-template <class Base> class to_string_impl_base;
-typedef to_string_impl_base<to_string_using_backtrace> to_string_impl;
-
-inline std::string name_impl(const void* addr) {
-    std::string res;
-
-    boost::stacktrace::detail::program_location prog_location;
-    ::backtrace_state* state = boost::stacktrace::detail::construct_state(prog_location);
-
-    boost::stacktrace::detail::pc_data data = {&res, 0, 0};
-    if (state) {
-        ::backtrace_pcinfo(
-            state,
-            reinterpret_cast<uintptr_t>(addr),
-            boost::stacktrace::detail::libbacktrace_full_callback,
-            boost::stacktrace::detail::libbacktrace_error_callback,
-            &data
-        )
-        ||
-        ::backtrace_syminfo(
-            state,
-            reinterpret_cast<uintptr_t>(addr),
-            boost::stacktrace::detail::libbacktrace_syminfo_callback,
-            boost::stacktrace::detail::libbacktrace_error_callback,
-            &data
-        );
-    }
-    if (!res.empty()) {
-        res = boost::core::demangle(res.c_str());
-    }
-
-    return res;
-}
-
-} // namespace detail
-
-std::string frame::source_file() const {
-    std::string res;
-
-    boost::stacktrace::detail::program_location prog_location;
-    ::backtrace_state* state = boost::stacktrace::detail::construct_state(prog_location);
-
-    boost::stacktrace::detail::pc_data data = {0, &res, 0};
-    if (state) {
-        ::backtrace_pcinfo(
-            state,
-            reinterpret_cast<uintptr_t>(addr_),
-            boost::stacktrace::detail::libbacktrace_full_callback,
-            boost::stacktrace::detail::libbacktrace_error_callback,
-            &data
-        );
-    }
-
-    return res;
-}
-
-std::size_t frame::source_line() const {
-    boost::stacktrace::detail::program_location prog_location;
-    ::backtrace_state* state = boost::stacktrace::detail::construct_state(prog_location);
-
-    boost::stacktrace::detail::pc_data data = {0, 0, 0};
-    if (state) {
-        ::backtrace_pcinfo(
-            state,
-            reinterpret_cast<uintptr_t>(addr_),
-            boost::stacktrace::detail::libbacktrace_full_callback,
-            boost::stacktrace::detail::libbacktrace_error_callback,
-            &data
-        );
-    }
-
-    return data.line;
-}
-
-
-}} // namespace boost::stacktrace
-
-#endif // BOOST_STACKTRACE_DETAIL_LIBBACKTRACE_IMPLS_HPP
diff --git a/third_party/boost/boost/stacktrace/detail/location_from_symbol.hpp b/third_party/boost/boost/stacktrace/detail/location_from_symbol.hpp
deleted file mode 100644
index 699049d..0000000
--- a/third_party/boost/boost/stacktrace/detail/location_from_symbol.hpp
+++ /dev/null
@@ -1,105 +0,0 @@
-// Copyright Antony Polukhin, 2016-2019.
-//
-// 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_STACKTRACE_DETAIL_LOCATION_FROM_SYMBOL_HPP
-#define BOOST_STACKTRACE_DETAIL_LOCATION_FROM_SYMBOL_HPP
-
-#include <boost/config.hpp>
-#ifdef BOOST_HAS_PRAGMA_ONCE
-#   pragma once
-#endif
-
-#if !defined(BOOST_WINDOWS) && !defined(__CYGWIN__)
-#   include <dlfcn.h>
-#else
-#   include <boost/winapi/dll.hpp>
-#endif
-
-namespace boost { namespace stacktrace { namespace detail {
-
-#if !defined(BOOST_WINDOWS) && !defined(__CYGWIN__)
-class location_from_symbol {
-    ::Dl_info dli_;
-
-public:
-    explicit location_from_symbol(const void* addr) BOOST_NOEXCEPT
-        : dli_()
-    {
-        if (!::dladdr(const_cast<void*>(addr), &dli_)) { // `dladdr` on Solaris accepts nonconst addresses
-            dli_.dli_fname = 0;
-        }
-    }
-
-    bool empty() const BOOST_NOEXCEPT {
-        return !dli_.dli_fname;
-    }
-
-    const char* name() const BOOST_NOEXCEPT {
-        return dli_.dli_fname;
-    }
-};
-
-class program_location {
-public:
-    const char* name() const BOOST_NOEXCEPT {
-        return 0;
-    }
-};
-
-#else
-
-class location_from_symbol {
-    BOOST_STATIC_CONSTEXPR boost::winapi::DWORD_ DEFAULT_PATH_SIZE_ = 260;
-    char file_name_[DEFAULT_PATH_SIZE_];
-
-public:
-    explicit location_from_symbol(const void* addr) BOOST_NOEXCEPT {
-        file_name_[0] = '\0';
-
-        boost::winapi::MEMORY_BASIC_INFORMATION_ mbi;
-        if (!boost::winapi::VirtualQuery(addr, &mbi, sizeof(mbi))) {
-            return;
-        }
-
-        boost::winapi::HMODULE_ handle = reinterpret_cast<boost::winapi::HMODULE_>(mbi.AllocationBase);
-        if (!boost::winapi::GetModuleFileNameA(handle, file_name_, DEFAULT_PATH_SIZE_)) {
-            file_name_[0] = '\0';
-            return;
-        }
-    }
-
-    bool empty() const BOOST_NOEXCEPT {
-        return file_name_[0] == '\0';
-    }
-
-    const char* name() const BOOST_NOEXCEPT {
-        return file_name_;
-    }
-};
-
-class program_location {
-    BOOST_STATIC_CONSTEXPR boost::winapi::DWORD_ DEFAULT_PATH_SIZE_ = 260;
-    char file_name_[DEFAULT_PATH_SIZE_];
-
-public:
-    program_location() BOOST_NOEXCEPT {
-        file_name_[0] = '\0';
-
-        const boost::winapi::HMODULE_ handle = 0;
-        if (!boost::winapi::GetModuleFileNameA(handle, file_name_, DEFAULT_PATH_SIZE_)) {
-            file_name_[0] = '\0';
-        }
-    }
-
-    const char* name() const BOOST_NOEXCEPT {
-        return file_name_[0] ? file_name_ : 0;
-    }
-};
-#endif
-
-}}} // namespace boost::stacktrace::detail
-
-#endif // BOOST_STACKTRACE_DETAIL_LOCATION_FROM_SYMBOL_HPP
diff --git a/third_party/boost/boost/stacktrace/detail/pop_options.h b/third_party/boost/boost/stacktrace/detail/pop_options.h
deleted file mode 100644
index 0d08c3b..0000000
--- a/third_party/boost/boost/stacktrace/detail/pop_options.h
+++ /dev/null
@@ -1,12 +0,0 @@
-// Copyright Antony Polukhin, 2016-2019.
-//
-// 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)
-
-// No include guards! Intentionally.
-
-#ifdef BOOST_STACKTRACE_FUNCTION
-#   undef BOOST_STACKTRACE_FUNCTION
-#endif
-
diff --git a/third_party/boost/boost/stacktrace/detail/push_options.h b/third_party/boost/boost/stacktrace/detail/push_options.h
deleted file mode 100644
index fc8a332..0000000
--- a/third_party/boost/boost/stacktrace/detail/push_options.h
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright Antony Polukhin, 2016-2019.
-//
-// 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)
-
-// No include guards! Intentionally.
-
-// Link or header only
-#if !defined(BOOST_STACKTRACE_LINK) && defined(BOOST_STACKTRACE_DYN_LINK)
-#   define BOOST_STACKTRACE_LINK
-#endif
-
-#if defined(BOOST_STACKTRACE_LINK) && !defined(BOOST_STACKTRACE_DYN_LINK) && defined(BOOST_ALL_DYN_LINK)
-#   define BOOST_STACKTRACE_DYN_LINK
-#endif
-
-#ifdef BOOST_STACKTRACE_LINK
-#   if defined(BOOST_STACKTRACE_DYN_LINK)
-#       ifdef BOOST_STACKTRACE_INTERNAL_BUILD_LIBS
-#           define BOOST_STACKTRACE_FUNCTION BOOST_SYMBOL_EXPORT
-#       else
-#           define BOOST_STACKTRACE_FUNCTION BOOST_SYMBOL_IMPORT
-#       endif
-#   else
-#       define BOOST_STACKTRACE_FUNCTION
-#   endif
-#elif !defined(BOOST_STACKTRACE_DOXYGEN_INVOKED)
-#   define BOOST_STACKTRACE_FUNCTION inline
-#endif
-
diff --git a/third_party/boost/boost/stacktrace/detail/safe_dump_noop.ipp b/third_party/boost/boost/stacktrace/detail/safe_dump_noop.ipp
deleted file mode 100644
index f8ef58b..0000000
--- a/third_party/boost/boost/stacktrace/detail/safe_dump_noop.ipp
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright Antony Polukhin, 2016-2019.
-//
-// 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_STACKTRACE_DETAIL_SAFE_DUMP_NOOP_IPP
-#define BOOST_STACKTRACE_DETAIL_SAFE_DUMP_NOOP_IPP
-
-#include <boost/config.hpp>
-#ifdef BOOST_HAS_PRAGMA_ONCE
-#   pragma once
-#endif
-
-#include <boost/stacktrace/safe_dump_to.hpp>
-
-namespace boost { namespace stacktrace { namespace detail {
-
-
-#if defined(BOOST_WINDOWS)
-std::size_t dump(void* /*fd*/, const native_frame_ptr_t* /*frames*/, std::size_t /*frames_count*/) BOOST_NOEXCEPT {
-    return 0;
-}
-#else
-std::size_t dump(int /*fd*/, const native_frame_ptr_t* /*frames*/, std::size_t /*frames_count*/) BOOST_NOEXCEPT {
-    return 0;
-}
-#endif
-
-
-std::size_t dump(const char* /*file*/, const native_frame_ptr_t* /*frames*/, std::size_t /*frames_count*/) BOOST_NOEXCEPT {
-    return 0;
-}
-
-}}} // namespace boost::stacktrace::detail
-
-#endif // BOOST_STACKTRACE_DETAIL_SAFE_DUMP_NOOP_IPP
diff --git a/third_party/boost/boost/stacktrace/detail/safe_dump_posix.ipp b/third_party/boost/boost/stacktrace/detail/safe_dump_posix.ipp
deleted file mode 100644
index 5c934be..0000000
--- a/third_party/boost/boost/stacktrace/detail/safe_dump_posix.ipp
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright Antony Polukhin, 2016-2019.
-//
-// 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_STACKTRACE_DETAIL_SAFE_DUMP_POSIX_IPP
-#define BOOST_STACKTRACE_DETAIL_SAFE_DUMP_POSIX_IPP
-
-#include <boost/config.hpp>
-#ifdef BOOST_HAS_PRAGMA_ONCE
-#   pragma once
-#endif
-
-#include <boost/stacktrace/safe_dump_to.hpp>
-
-#include <unistd.h>     // ::write
-#include <fcntl.h>      // ::open
-#include <sys/stat.h>   // S_IWUSR and friends
-
-
-namespace boost { namespace stacktrace { namespace detail {
-
-std::size_t dump(int fd, const native_frame_ptr_t* frames, std::size_t frames_count) BOOST_NOEXCEPT {
-    // We do not retry, because this function must be typically called from signal handler so it's:
-    //  * to scary to continue in case of EINTR
-    //  * EAGAIN or EWOULDBLOCK may occur only in case of O_NONBLOCK is set for fd,
-    // so it seems that user does not want to block
-    if (::write(fd, frames, sizeof(native_frame_ptr_t) * frames_count) == -1) {
-        return 0;
-    }
-
-    return frames_count;
-}
-
-std::size_t dump(const char* file, const native_frame_ptr_t* frames, std::size_t frames_count) BOOST_NOEXCEPT {
-    const int fd = ::open(
-        file,
-        O_CREAT | O_WRONLY | O_TRUNC,
-#if defined(S_IWUSR) && defined(S_IRUSR)    // Workarounds for some Android OSes
-        S_IWUSR | S_IRUSR
-#elif defined(S_IWRITE) && defined(S_IREAD)
-        S_IWRITE | S_IREAD
-#else
-        0
-#endif
-    );
-    if (fd == -1) {
-        return 0;
-    }
-
-    const std::size_t size = boost::stacktrace::detail::dump(fd, frames, frames_count);
-    ::close(fd);
-    return size;
-}
-
-}}} // namespace boost::stacktrace::detail
-
-#endif // BOOST_STACKTRACE_DETAIL_SAFE_DUMP_POSIX_IPP
diff --git a/third_party/boost/boost/stacktrace/detail/safe_dump_win.ipp b/third_party/boost/boost/stacktrace/detail/safe_dump_win.ipp
deleted file mode 100644
index cfb2f03..0000000
--- a/third_party/boost/boost/stacktrace/detail/safe_dump_win.ipp
+++ /dev/null
@@ -1,66 +0,0 @@
-// Copyright Antony Polukhin, 2016-2019.
-//
-// 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_STACKTRACE_DETAIL_SAFE_DUMP_WIN_IPP
-#define BOOST_STACKTRACE_DETAIL_SAFE_DUMP_WIN_IPP
-
-#include <boost/config.hpp>
-#ifdef BOOST_HAS_PRAGMA_ONCE
-#   pragma once
-#endif
-
-#include <boost/stacktrace/safe_dump_to.hpp>
-
-#include <boost/core/noncopyable.hpp>
-
-#include <boost/winapi/get_current_process.hpp>
-#include <boost/winapi/file_management.hpp>
-#include <boost/winapi/handles.hpp>
-#include <boost/winapi/access_rights.hpp>
-
-namespace boost { namespace stacktrace { namespace detail {
-
-std::size_t dump(void* /*fd*/, const native_frame_ptr_t* /*frames*/, std::size_t /*frames_count*/) BOOST_NOEXCEPT {
-#if 0 // This code potentially could cause deadlocks (according to the MSDN). Disabled
-    boost::winapi::DWORD_ written;
-    const boost::winapi::DWORD_ bytes_to_write = static_cast<boost::winapi::DWORD_>(
-        sizeof(native_frame_ptr_t) * frames_count
-    );
-    if (!boost::winapi::WriteFile(fd, frames, bytes_to_write, &written, 0)) {
-        return 0;
-    }
-
-    return frames_count;
-#endif
-    return 0;
-}
-
-std::size_t dump(const char* /*file*/, const native_frame_ptr_t* /*frames*/, std::size_t /*frames_count*/) BOOST_NOEXCEPT {
-#if 0 // This code causing deadlocks on some platforms. Disabled
-    void* const fd = boost::winapi::CreateFileA(
-        file,
-        boost::winapi::GENERIC_WRITE_,
-        0,
-        0,
-        boost::winapi::CREATE_ALWAYS_,
-        boost::winapi::FILE_ATTRIBUTE_NORMAL_,
-        0
-    );
-
-    if (fd == boost::winapi::invalid_handle_value) {
-        return 0;
-    }
-
-    const std::size_t size = boost::stacktrace::detail::dump(fd, frames, frames_count);
-    boost::winapi::CloseHandle(fd);
-    return size;
-#endif
-    return 0;
-}
-
-}}} // namespace boost::stacktrace::detail
-
-#endif // BOOST_STACKTRACE_DETAIL_SAFE_DUMP_WIN_IPP
diff --git a/third_party/boost/boost/stacktrace/detail/to_dec_array.hpp b/third_party/boost/boost/stacktrace/detail/to_dec_array.hpp
deleted file mode 100644
index 23071f2..0000000
--- a/third_party/boost/boost/stacktrace/detail/to_dec_array.hpp
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright Antony Polukhin, 2016-2019.
-//
-// 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_STACKTRACE_DETAIL_TO_DEC_ARRAY_HPP
-#define BOOST_STACKTRACE_DETAIL_TO_DEC_ARRAY_HPP
-
-#include <boost/config.hpp>
-#ifdef BOOST_HAS_PRAGMA_ONCE
-#   pragma once
-#endif
-
-#include <boost/array.hpp>
-
-namespace boost { namespace stacktrace { namespace detail {
-
-// We do not use boost::lexical_cast in this function to reduce module dependencies
-inline boost::array<char, 40> to_dec_array(std::size_t value) BOOST_NOEXCEPT {
-    boost::array<char, 40> ret;
-    if (!value) {
-        ret[0] = '0';
-        ret[1] = '\0';
-        return ret;
-    }
-
-    std::size_t digits = 0;
-    for (std::size_t value_copy = value; value_copy; value_copy /= 10) {
-        ++ digits;
-    }
-
-    for (std::size_t i = 1; i <= digits; ++i) {
-        ret[digits - i] = static_cast<char>('0' + (value % 10));
-        value /= 10;
-    }
-
-    ret[digits] = '\0';
-
-    return ret;
-}
-
-
-}}} // namespace boost::stacktrace::detail
-
-#endif // BOOST_STACKTRACE_DETAIL_TO_DEC_ARRAY_HPP
diff --git a/third_party/boost/boost/stacktrace/detail/to_hex_array.hpp b/third_party/boost/boost/stacktrace/detail/to_hex_array.hpp
deleted file mode 100644
index da10a06..0000000
--- a/third_party/boost/boost/stacktrace/detail/to_hex_array.hpp
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright Antony Polukhin, 2016-2019.
-//
-// 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_STACKTRACE_DETAIL_TO_HEX_ARRAY_HPP
-#define BOOST_STACKTRACE_DETAIL_TO_HEX_ARRAY_HPP
-
-#include <boost/config.hpp>
-#ifdef BOOST_HAS_PRAGMA_ONCE
-#   pragma once
-#endif
-
-#include <boost/array.hpp>
-#include <boost/static_assert.hpp>
-#include <boost/type_traits/is_pointer.hpp>
-#include <boost/type_traits/make_unsigned.hpp>
-
-namespace boost { namespace stacktrace { namespace detail {
-
-BOOST_STATIC_CONSTEXPR char to_hex_array_bytes[] = "0123456789ABCDEF";
-
-template <class T>
-inline boost::array<char, 2 + sizeof(void*) * 2 + 1> to_hex_array(T addr) BOOST_NOEXCEPT {
-    boost::array<char, 2 + sizeof(void*) * 2 + 1> ret = {"0x"};
-    ret.back() = '\0';
-    BOOST_STATIC_ASSERT_MSG(!boost::is_pointer<T>::value, "");
-
-    const std::size_t s = sizeof(T);
-
-    char* out = ret.data() + s * 2 + 1;
-
-    for (std::size_t i = 0; i < s; ++i) {
-        const unsigned char tmp_addr = (addr & 0xFFu);
-        *out = to_hex_array_bytes[tmp_addr & 0xF];
-        -- out;
-        *out = to_hex_array_bytes[tmp_addr >> 4];
-        -- out;
-        addr >>= 8;
-    }
-
-    return ret;
-}
-
-inline boost::array<char, 2 + sizeof(void*) * 2 + 1> to_hex_array(const void* addr) BOOST_NOEXCEPT {
-    return to_hex_array(
-        reinterpret_cast< boost::make_unsigned<std::ptrdiff_t>::type >(addr)
-    );
-}
-
-}}} // namespace boost::stacktrace::detail
-
-#endif // BOOST_STACKTRACE_DETAIL_TO_HEX_ARRAY_HPP
diff --git a/third_party/boost/boost/stacktrace/detail/try_dec_convert.hpp b/third_party/boost/boost/stacktrace/detail/try_dec_convert.hpp
deleted file mode 100644
index 3ec53ea..0000000
--- a/third_party/boost/boost/stacktrace/detail/try_dec_convert.hpp
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright Antony Polukhin, 2016-2019.
-//
-// 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_STACKTRACE_DETAIL_TRY_DEC_CONVERT_HPP
-#define BOOST_STACKTRACE_DETAIL_TRY_DEC_CONVERT_HPP
-
-#include <boost/config.hpp>
-#ifdef BOOST_HAS_PRAGMA_ONCE
-#   pragma once
-#endif
-
-#include <cstdlib>
-
-namespace boost { namespace stacktrace { namespace detail {
-
-// We do not use boost::lexical_cast in this function to reduce module dependencies
-inline bool try_dec_convert(const char* s, std::size_t& res) BOOST_NOEXCEPT {
-    char* end_ptr = 0;
-    res = std::strtoul(s, &end_ptr, 10);
-    return *end_ptr == '\0';
-}
-
-
-}}} // namespace boost::stacktrace::detail
-
-#endif // BOOST_STACKTRACE_DETAIL_TRY_DEC_CONVERT_HPP
diff --git a/third_party/boost/boost/stacktrace/detail/unwind_base_impls.hpp b/third_party/boost/boost/stacktrace/detail/unwind_base_impls.hpp
deleted file mode 100644
index 9d7b7a2..0000000
--- a/third_party/boost/boost/stacktrace/detail/unwind_base_impls.hpp
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright Antony Polukhin, 2016-2019.
-//
-// 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_STACKTRACE_DETAIL_UNWIND_BASE_IMPLS_HPP
-#define BOOST_STACKTRACE_DETAIL_UNWIND_BASE_IMPLS_HPP
-
-#include <boost/config.hpp>
-#ifdef BOOST_HAS_PRAGMA_ONCE
-#   pragma once
-#endif
-
-#include <boost/stacktrace/frame.hpp>
-
-namespace boost { namespace stacktrace { namespace detail {
-
-struct to_string_using_nothing {
-    std::string res;
-
-    void prepare_function_name(const void* addr) {
-        res = boost::stacktrace::frame(addr).name();
-    }
-
-    bool prepare_source_location(const void* /*addr*/) const BOOST_NOEXCEPT {
-        return false;
-    }
-};
-
-template <class Base> class to_string_impl_base;
-typedef to_string_impl_base<to_string_using_nothing> to_string_impl;
-
-inline std::string name_impl(const void* /*addr*/) {
-    return std::string();
-}
-
-} // namespace detail
-
-std::string frame::source_file() const {
-    return std::string();
-}
-
-std::size_t frame::source_line() const {
-    return 0;
-}
-
-}} // namespace boost::stacktrace
-
-#endif // BOOST_STACKTRACE_DETAIL_UNWIND_BASE_IMPLS_HPP
diff --git a/third_party/boost/boost/stacktrace/detail/void_ptr_cast.hpp b/third_party/boost/boost/stacktrace/detail/void_ptr_cast.hpp
deleted file mode 100644
index f8c43bd..0000000
--- a/third_party/boost/boost/stacktrace/detail/void_ptr_cast.hpp
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright 2014 Renato Tegon Forti, Antony Polukhin.
-// Copyright 2015-2019 Antony Polukhin.
-//
-// 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_STACKTRACE_DETAIL_VOID_PTR_CAST_HPP
-#define BOOST_STACKTRACE_DETAIL_VOID_PTR_CAST_HPP
-
-#include <boost/config.hpp>
-#ifdef BOOST_HAS_PRAGMA_ONCE
-#   pragma once
-#endif
-
-#include <boost/static_assert.hpp>
-#include <boost/type_traits/is_pointer.hpp>
-
-#if defined(__GNUC__) && defined(__GNUC_MINOR__) && (__GNUC__ * 100 + __GNUC_MINOR__ > 301)
-#   pragma GCC system_header
-#endif
-
-namespace boost { namespace stacktrace { namespace detail {
-
-// GCC warns when reinterpret_cast between function pointer and object pointer occur.
-// This functionsuppress the warnings and ensures that such casts are safe.
-template <class To, class From>
-To void_ptr_cast(From* v) BOOST_NOEXCEPT {
-    BOOST_STATIC_ASSERT_MSG(
-        boost::is_pointer<To>::value,
-        "`void_ptr_cast` function must be used only for casting to or from void pointers."
-    );
-
-    BOOST_STATIC_ASSERT_MSG(
-        sizeof(From*) == sizeof(To),
-        "Pointer to function and pointer to object differ in size on your platform."
-    );
-
-    return reinterpret_cast<To>(v);
-}
-
-
-}}} // boost::stacktrace::detail
-
-#endif // BOOST_STACKTRACE_DETAIL_VOID_PTR_CAST_HPP
-
diff --git a/third_party/boost/boost/stacktrace/frame.hpp b/third_party/boost/boost/stacktrace/frame.hpp
deleted file mode 100644
index 4de93be..0000000
--- a/third_party/boost/boost/stacktrace/frame.hpp
+++ /dev/null
@@ -1,67 +0,0 @@
-// Copyright Antony Polukhin, 2016-2019.
-//
-// 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_STACKTRACE_FRAME_HPP
-#define BOOST_STACKTRACE_FRAME_HPP
-
-#include <boost/config.hpp>
-#ifdef BOOST_HAS_PRAGMA_ONCE
-#   pragma once
-#endif
-
-#include <iosfwd>
-#include <string>
-
-#include <boost/core/explicit_operator_bool.hpp>
-
-#include <boost/stacktrace/safe_dump_to.hpp> // boost::stacktrace::detail::native_frame_ptr_t
-
-#include <boost/stacktrace/detail/frame_decl.hpp>
-#include <boost/stacktrace/detail/push_options.h>
-
-namespace boost { namespace stacktrace {
-
-/// Comparison operators that provide platform dependant ordering and have O(1) complexity; are Async-Handler-Safe.
-BOOST_CONSTEXPR inline bool operator< (const frame& lhs, const frame& rhs) BOOST_NOEXCEPT { return lhs.address() < rhs.address(); }
-BOOST_CONSTEXPR inline bool operator> (const frame& lhs, const frame& rhs) BOOST_NOEXCEPT { return rhs < lhs; }
-BOOST_CONSTEXPR inline bool operator<=(const frame& lhs, const frame& rhs) BOOST_NOEXCEPT { return !(lhs > rhs); }
-BOOST_CONSTEXPR inline bool operator>=(const frame& lhs, const frame& rhs) BOOST_NOEXCEPT { return !(lhs < rhs); }
-BOOST_CONSTEXPR inline bool operator==(const frame& lhs, const frame& rhs) BOOST_NOEXCEPT { return lhs.address() == rhs.address(); }
-BOOST_CONSTEXPR inline bool operator!=(const frame& lhs, const frame& rhs) BOOST_NOEXCEPT { return !(lhs == rhs); }
-
-/// Fast hashing support, O(1) complexity; Async-Handler-Safe.
-inline std::size_t hash_value(const frame& f) BOOST_NOEXCEPT {
-    return reinterpret_cast<std::size_t>(f.address());
-}
-
-/// Outputs stacktrace::frame in a human readable format to string; unsafe to use in async handlers.
-BOOST_STACKTRACE_FUNCTION std::string to_string(const frame& f);
-
-/// Outputs stacktrace::frame in a human readable format to output stream; unsafe to use in async handlers.
-template <class CharT, class TraitsT>
-std::basic_ostream<CharT, TraitsT>& operator<<(std::basic_ostream<CharT, TraitsT>& os, const frame& f) {
-    return os << boost::stacktrace::to_string(f);
-}
-
-}} // namespace boost::stacktrace
-
-/// @cond
-
-#include <boost/stacktrace/detail/pop_options.h>
-
-#ifndef BOOST_STACKTRACE_LINK
-#   if defined(BOOST_STACKTRACE_USE_NOOP)
-#       include <boost/stacktrace/detail/frame_noop.ipp>
-#   elif defined(BOOST_MSVC) || defined(BOOST_STACKTRACE_USE_WINDBG) || defined(BOOST_STACKTRACE_USE_WINDBG_CACHED)
-#       include <boost/stacktrace/detail/frame_msvc.ipp>
-#   else
-#       include <boost/stacktrace/detail/frame_unwind.ipp>
-#   endif
-#endif
-/// @endcond
-
-
-#endif // BOOST_STACKTRACE_FRAME_HPP
diff --git a/third_party/boost/boost/stacktrace/safe_dump_to.hpp b/third_party/boost/boost/stacktrace/safe_dump_to.hpp
deleted file mode 100644
index bc078b5..0000000
--- a/third_party/boost/boost/stacktrace/safe_dump_to.hpp
+++ /dev/null
@@ -1,222 +0,0 @@
-// Copyright Antony Polukhin, 2016-2019.
-//
-// 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_STACKTRACE_SAFE_DUMP_TO_HPP
-#define BOOST_STACKTRACE_SAFE_DUMP_TO_HPP
-
-#include <boost/config.hpp>
-#ifdef BOOST_HAS_PRAGMA_ONCE
-#   pragma once
-#endif
-
-#if defined(BOOST_WINDOWS)
-#include <boost/winapi/config.hpp>
-#endif
-
-#include <boost/stacktrace/detail/push_options.h>
-
-#ifdef BOOST_INTEL
-#   pragma warning(push)
-#   pragma warning(disable:2196) // warning #2196: routine is both "inline" and "noinline"
-#endif
-
-/// @file safe_dump_to.hpp This header contains low-level async-signal-safe functions for dumping call stacks. Dumps are binary serialized arrays of `void*`,
-/// so you could read them by using 'od -tx8 -An stacktrace_dump_failename' Linux command or using boost::stacktrace::stacktrace::from_dump functions.
-
-namespace boost { namespace stacktrace {
-
-/// @cond
-namespace detail {
-
-    typedef const void* native_frame_ptr_t; // TODO: change to `typedef void(*native_frame_ptr_t)();`
-    enum helper{ max_frames_dump = 128 };
-
-    BOOST_STACKTRACE_FUNCTION std::size_t from_dump(const char* filename, native_frame_ptr_t* out_frames);
-    BOOST_STACKTRACE_FUNCTION std::size_t dump(const char* file, const native_frame_ptr_t* frames, std::size_t frames_count) BOOST_NOEXCEPT;
-#if defined(BOOST_WINDOWS)
-    BOOST_STACKTRACE_FUNCTION std::size_t dump(void* fd, const native_frame_ptr_t* frames, std::size_t frames_count) BOOST_NOEXCEPT;
-#else
-    // POSIX
-    BOOST_STACKTRACE_FUNCTION std::size_t dump(int fd, const native_frame_ptr_t* frames, std::size_t frames_count) BOOST_NOEXCEPT;
-#endif
-
-
-struct this_thread_frames { // struct is required to avoid warning about usage of inline+BOOST_NOINLINE
-    BOOST_NOINLINE BOOST_STACKTRACE_FUNCTION static std::size_t collect(native_frame_ptr_t* out_frames, std::size_t max_frames_count, std::size_t skip) BOOST_NOEXCEPT;
-
-    BOOST_NOINLINE static std::size_t safe_dump_to_impl(void* memory, std::size_t size, std::size_t skip) BOOST_NOEXCEPT {
-        typedef boost::stacktrace::detail::native_frame_ptr_t native_frame_ptr_t;
-
-        if (size < sizeof(native_frame_ptr_t)) {
-            return 0;
-        }
-
-        native_frame_ptr_t* mem = static_cast<native_frame_ptr_t*>(memory);
-        const std::size_t frames_count = boost::stacktrace::detail::this_thread_frames::collect(mem, size / sizeof(native_frame_ptr_t) - 1, skip + 1);
-        mem[frames_count] = 0;
-        return frames_count + 1;
-    }
-
-    template <class T>
-    BOOST_NOINLINE static std::size_t safe_dump_to_impl(T file, std::size_t skip, std::size_t max_depth) BOOST_NOEXCEPT {
-        typedef boost::stacktrace::detail::native_frame_ptr_t native_frame_ptr_t;
-
-        native_frame_ptr_t buffer[boost::stacktrace::detail::max_frames_dump + 1];
-        if (max_depth > boost::stacktrace::detail::max_frames_dump) {
-            max_depth = boost::stacktrace::detail::max_frames_dump;
-        }
-
-        const std::size_t frames_count = boost::stacktrace::detail::this_thread_frames::collect(buffer, max_depth, skip + 1);
-        buffer[frames_count] = 0;
-        return boost::stacktrace::detail::dump(file, buffer, frames_count + 1);
-    }
-};
-
-} // namespace detail
-/// @endcond
-
-/// @brief Stores current function call sequence into the memory.
-///
-/// @b Complexity: O(N) where N is call sequence length, O(1) if BOOST_STACKTRACE_USE_NOOP is defined.
-///
-/// @b Async-Handler-Safety: Safe.
-///
-/// @returns Stored call sequence depth including terminating zero frame. To get the actually consumed bytes multiply this value by the sizeof(boost::stacktrace::frame::native_frame_ptr_t)
-///
-/// @param memory Preallocated buffer to store current function call sequence into.
-///
-/// @param size Size of the preallocated buffer.
-BOOST_FORCEINLINE std::size_t safe_dump_to(void* memory, std::size_t size) BOOST_NOEXCEPT {
-    return  boost::stacktrace::detail::this_thread_frames::safe_dump_to_impl(memory, size, 0);
-}
-
-/// @brief Stores current function call sequence into the memory.
-///
-/// @b Complexity: O(N) where N is call sequence length, O(1) if BOOST_STACKTRACE_USE_NOOP is defined.
-///
-/// @b Async-Handler-Safety: Safe.
-///
-/// @returns Stored call sequence depth including terminating zero frame.  To get the actually consumed bytes multiply this value by the sizeof(boost::stacktrace::frame::native_frame_ptr_t)
-///
-/// @param skip How many top calls to skip and do not store.
-///
-/// @param memory Preallocated buffer to store current function call sequence into.
-///
-/// @param size Size of the preallocated buffer.
-BOOST_FORCEINLINE std::size_t safe_dump_to(std::size_t skip, void* memory, std::size_t size) BOOST_NOEXCEPT {
-    return  boost::stacktrace::detail::this_thread_frames::safe_dump_to_impl(memory, size, skip);
-}
-
-
-/// @brief Opens a file and rewrites its content with current function call sequence if such operations are async signal safe.
-///
-/// @b Complexity: O(N) where N is call sequence length, O(1) if BOOST_STACKTRACE_USE_NOOP is defined.
-///
-/// @b Async-Handler-Safety: Safe.
-///
-/// @returns Stored call sequence depth including terminating zero frame.
-///
-/// @param file File to store current function call sequence.
-BOOST_FORCEINLINE std::size_t safe_dump_to(const char* file) BOOST_NOEXCEPT {
-    return boost::stacktrace::detail::this_thread_frames::safe_dump_to_impl(file, 0, boost::stacktrace::detail::max_frames_dump);
-}
-
-/// @brief Opens a file and rewrites its content with current function call sequence if such operations are async signal safe.
-///
-/// @b Complexity: O(N) where N is call sequence length, O(1) if BOOST_STACKTRACE_USE_NOOP is defined.
-///
-/// @b Async-Handler-Safety: Safe.
-///
-/// @returns Stored call sequence depth including terminating zero frame.
-///
-/// @param skip How many top calls to skip and do not store.
-///
-/// @param max_depth Max call sequence depth to collect.
-///
-/// @param file File to store current function call sequence.
-BOOST_FORCEINLINE std::size_t safe_dump_to(std::size_t skip, std::size_t max_depth, const char* file) BOOST_NOEXCEPT {
-    return boost::stacktrace::detail::this_thread_frames::safe_dump_to_impl(file, skip, max_depth);
-}
-
-#ifdef BOOST_STACKTRACE_DOXYGEN_INVOKED
-
-/// @brief Writes into the provided file descriptor the current function call sequence if such operation is async signal safe.
-///
-/// @b Complexity: O(N) where N is call sequence length, O(1) if BOOST_STACKTRACE_USE_NOOP is defined.
-///
-/// @b Async-Handler-Safety: Safe.
-///
-/// @returns Stored call sequence depth including terminating zero frame.
-///
-/// @param file File to store current function call sequence.
-BOOST_FORCEINLINE std::size_t safe_dump_to(platform_specific_descriptor fd) BOOST_NOEXCEPT;
-
-/// @brief Writes into the provided file descriptor the current function call sequence if such operation is async signal safe.
-///
-/// @b Complexity: O(N) where N is call sequence length, O(1) if BOOST_STACKTRACE_USE_NOOP is defined.
-///
-/// @b Async-Handler-Safety: Safe.
-///
-/// @returns Stored call sequence depth including terminating zero frame.
-///
-/// @param skip How many top calls to skip and do not store.
-///
-/// @param max_depth Max call sequence depth to collect.
-///
-/// @param file File to store current function call sequence.
-BOOST_FORCEINLINE std::size_t safe_dump_to(std::size_t skip, std::size_t max_depth, platform_specific_descriptor fd) BOOST_NOEXCEPT;
-
-#elif defined(BOOST_WINDOWS)
-
-BOOST_FORCEINLINE std::size_t safe_dump_to(void* fd) BOOST_NOEXCEPT {
-    return boost::stacktrace::detail::this_thread_frames::safe_dump_to_impl(fd, 0, boost::stacktrace::detail::max_frames_dump);
-}
-
-BOOST_FORCEINLINE std::size_t safe_dump_to(std::size_t skip, std::size_t max_depth, void* fd) BOOST_NOEXCEPT {
-    return boost::stacktrace::detail::this_thread_frames::safe_dump_to_impl(fd, skip, max_depth);
-}
-
-#else
-
-// POSIX
-BOOST_FORCEINLINE std::size_t safe_dump_to(int fd) BOOST_NOEXCEPT {
-    return boost::stacktrace::detail::this_thread_frames::safe_dump_to_impl(fd, 0, boost::stacktrace::detail::max_frames_dump);
-}
-
-BOOST_FORCEINLINE std::size_t safe_dump_to(std::size_t skip, std::size_t max_depth, int fd) BOOST_NOEXCEPT {
-    return boost::stacktrace::detail::this_thread_frames::safe_dump_to_impl(fd, skip, max_depth);
-}
-
-#endif
-
-
-}} // namespace boost::stacktrace
-
-#ifdef BOOST_INTEL
-#   pragma warning(pop)
-#endif
-
-#include <boost/stacktrace/detail/pop_options.h>
-
-#if !defined(BOOST_STACKTRACE_LINK) || defined(BOOST_STACKTRACE_INTERNAL_BUILD_LIBS)
-#   if defined(BOOST_STACKTRACE_USE_NOOP)
-#       include <boost/stacktrace/detail/safe_dump_noop.ipp>
-#       include <boost/stacktrace/detail/collect_noop.ipp>
-#   else
-#       if defined(BOOST_WINDOWS)
-#           include <boost/stacktrace/detail/safe_dump_win.ipp>
-#       else
-#           include <boost/stacktrace/detail/safe_dump_posix.ipp>
-#       endif
-#       if defined(BOOST_WINDOWS) && !defined(BOOST_WINAPI_IS_MINGW) // MinGW does not provide RtlCaptureStackBackTrace. MinGW-w64 does.
-#           include <boost/stacktrace/detail/collect_msvc.ipp>
-#       else
-#           include <boost/stacktrace/detail/collect_unwind.ipp>
-#       endif
-#   endif
-#endif
-
-#endif // BOOST_STACKTRACE_SAFE_DUMP_TO_HPP
diff --git a/third_party/boost/boost/stacktrace/stacktrace.hpp b/third_party/boost/boost/stacktrace/stacktrace.hpp
deleted file mode 100644
index 38c403d..0000000
--- a/third_party/boost/boost/stacktrace/stacktrace.hpp
+++ /dev/null
@@ -1,420 +0,0 @@
-// Copyright Antony Polukhin, 2016-2019.
-//
-// 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_STACKTRACE_STACKTRACE_HPP
-#define BOOST_STACKTRACE_STACKTRACE_HPP
-
-#include <boost/config.hpp>
-#ifdef BOOST_HAS_PRAGMA_ONCE
-#   pragma once
-#endif
-
-#include <boost/core/explicit_operator_bool.hpp>
-#include <boost/container_hash/hash_fwd.hpp>
-
-#include <iosfwd>
-#include <string>
-#include <vector>
-
-#ifndef BOOST_NO_CXX11_HDR_TYPE_TRAITS
-#   include <type_traits>
-#endif
-
-#include <boost/stacktrace/stacktrace_fwd.hpp>
-#include <boost/stacktrace/safe_dump_to.hpp>
-#include <boost/stacktrace/detail/frame_decl.hpp>
-
-#ifdef BOOST_INTEL
-#   pragma warning(push)
-#   pragma warning(disable:2196) // warning #2196: routine is both "inline" and "noinline"
-#endif
-
-namespace boost { namespace stacktrace {
-
-/// Class that on construction copies minimal information about call stack into its internals and provides access to that information.
-/// @tparam Allocator Allocator to use during stack capture.
-template <class Allocator>
-class basic_stacktrace {
-    std::vector<boost::stacktrace::frame, Allocator> impl_;
-    typedef boost::stacktrace::detail::native_frame_ptr_t native_frame_ptr_t;
-
-    /// @cond
-    void fill(native_frame_ptr_t* begin, std::size_t size) {
-        if (!size) {
-            return;
-        }
-
-        impl_.reserve(static_cast<std::size_t>(size));
-        for (std::size_t i = 0; i < size; ++i) {
-            if (!begin[i]) {
-                return;
-            }
-            impl_.push_back(
-                frame(begin[i])
-            );
-        }
-    }
-
-    static std::size_t frames_count_from_buffer_size(std::size_t buffer_size) BOOST_NOEXCEPT {
-        const std::size_t ret = (buffer_size > sizeof(native_frame_ptr_t) ? buffer_size / sizeof(native_frame_ptr_t) : 0);
-        return (ret > 1024 ? 1024 : ret); // Dealing with suspiciously big sizes
-    }
-
-    BOOST_NOINLINE void init(std::size_t frames_to_skip, std::size_t max_depth) {
-        BOOST_CONSTEXPR_OR_CONST std::size_t buffer_size = 128;
-        if (!max_depth) {
-            return;
-        }
-
-        try {
-            {   // Fast path without additional allocations
-                native_frame_ptr_t buffer[buffer_size];
-                const std::size_t frames_count = boost::stacktrace::detail::this_thread_frames::collect(buffer, buffer_size < max_depth ? buffer_size : max_depth, frames_to_skip + 1);
-                if (buffer_size > frames_count || frames_count == max_depth) {
-                    fill(buffer, frames_count);
-                    return;
-                }
-            }
-
-            // Failed to fit in `buffer_size`. Allocating memory:
-#ifdef BOOST_NO_CXX11_ALLOCATOR
-            typedef typename Allocator::template rebind<native_frame_ptr_t>::other allocator_void_t;
-#else
-            typedef typename std::allocator_traits<Allocator>::template rebind_alloc<native_frame_ptr_t> allocator_void_t;
-#endif
-            std::vector<native_frame_ptr_t, allocator_void_t> buf(buffer_size * 2, 0, impl_.get_allocator());
-            do {
-                const std::size_t frames_count = boost::stacktrace::detail::this_thread_frames::collect(&buf[0], buf.size() < max_depth ? buf.size() : max_depth, frames_to_skip + 1);
-                if (buf.size() > frames_count || frames_count == max_depth) {
-                    fill(&buf[0], frames_count);
-                    return;
-                }
-
-                buf.resize(buf.size() * 2);
-            } while (buf.size() < buf.max_size()); // close to `true`, but suppresses `C4127: conditional expression is constant`.
-        } catch (...) {
-            // ignore exception
-        }
-    }
-    /// @endcond
-
-public:
-    typedef typename std::vector<boost::stacktrace::frame, Allocator>::value_type             value_type;
-    typedef typename std::vector<boost::stacktrace::frame, Allocator>::allocator_type         allocator_type;
-    typedef typename std::vector<boost::stacktrace::frame, Allocator>::const_pointer          pointer;
-    typedef typename std::vector<boost::stacktrace::frame, Allocator>::const_pointer          const_pointer;
-    typedef typename std::vector<boost::stacktrace::frame, Allocator>::const_reference        reference;
-    typedef typename std::vector<boost::stacktrace::frame, Allocator>::const_reference        const_reference;
-    typedef typename std::vector<boost::stacktrace::frame, Allocator>::size_type              size_type;
-    typedef typename std::vector<boost::stacktrace::frame, Allocator>::difference_type        difference_type;
-    typedef typename std::vector<boost::stacktrace::frame, Allocator>::const_iterator         iterator;
-    typedef typename std::vector<boost::stacktrace::frame, Allocator>::const_iterator         const_iterator;
-    typedef typename std::vector<boost::stacktrace::frame, Allocator>::const_reverse_iterator reverse_iterator;
-    typedef typename std::vector<boost::stacktrace::frame, Allocator>::const_reverse_iterator const_reverse_iterator;
-
-    /// @brief Stores the current function call sequence inside *this without any decoding or any other heavy platform specific operations.
-    ///
-    /// @b Complexity: O(N) where N is call sequence length, O(1) if BOOST_STACKTRACE_USE_NOOP is defined.
-    ///
-    /// @b Async-Handler-Safety: Safe if Allocator construction, copying, Allocator::allocate and Allocator::deallocate are async signal safe.
-    BOOST_FORCEINLINE basic_stacktrace() BOOST_NOEXCEPT
-        : impl_()
-    {
-        init(0 , static_cast<std::size_t>(-1));
-    }
-
-    /// @brief Stores the current function call sequence inside *this without any decoding or any other heavy platform specific operations.
-    ///
-    /// @b Complexity: O(N) where N is call sequence length, O(1) if BOOST_STACKTRACE_USE_NOOP is defined.
-    ///
-    /// @b Async-Handler-Safety: Safe if Allocator construction, copying, Allocator::allocate and Allocator::deallocate are async signal safe.
-    ///
-    /// @param a Allocator that would be passed to underlying storeage.
-    BOOST_FORCEINLINE explicit basic_stacktrace(const allocator_type& a) BOOST_NOEXCEPT
-        : impl_(a)
-    {
-        init(0 , static_cast<std::size_t>(-1));
-    }
-
-    /// @brief Stores [skip, skip + max_depth) of the current function call sequence inside *this without any decoding or any other heavy platform specific operations.
-    ///
-    /// @b Complexity: O(N) where N is call sequence length, O(1) if BOOST_STACKTRACE_USE_NOOP is defined.
-    ///
-    /// @b Async-Handler-Safety: Safe if Allocator construction, copying, Allocator::allocate and Allocator::deallocate are async signal safe.
-    ///
-    /// @param skip How many top calls to skip and do not store in *this.
-    ///
-    /// @param max_depth Max call sequence depth to collect.
-    ///
-    /// @param a Allocator that would be passed to underlying storeage.
-    ///
-    /// @throws Nothing. Note that default construction of allocator may throw, however it is
-    /// performed outside the constructor and exception in `allocator_type()` would not result in calling `std::terminate`.
-    BOOST_FORCEINLINE basic_stacktrace(std::size_t skip, std::size_t max_depth, const allocator_type& a = allocator_type()) BOOST_NOEXCEPT
-        : impl_(a)
-    {
-        init(skip , max_depth);
-    }
-
-    /// @b Complexity: O(st.size())
-    ///
-    /// @b Async-Handler-Safety: Safe if Allocator construction, copying, Allocator::allocate and Allocator::deallocate are async signal safe.
-    basic_stacktrace(const basic_stacktrace& st)
-        : impl_(st.impl_)
-    {}
-
-    /// @b Complexity: O(st.size())
-    ///
-    /// @b Async-Handler-Safety: Safe if Allocator construction, copying, Allocator::allocate and Allocator::deallocate are async signal safe.
-    basic_stacktrace& operator=(const basic_stacktrace& st) {
-        impl_ = st.impl_;
-        return *this;
-    }
-
-#ifdef BOOST_STACKTRACE_DOXYGEN_INVOKED
-    /// @b Complexity: O(1)
-    ///
-    /// @b Async-Handler-Safety: Safe if Allocator::deallocate is async signal safe.
-    ~basic_stacktrace() BOOST_NOEXCEPT = default;
-#endif
-
-#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
-    /// @b Complexity: O(1)
-    ///
-    /// @b Async-Handler-Safety: Safe if Allocator construction and copying are async signal safe.
-    basic_stacktrace(basic_stacktrace&& st) BOOST_NOEXCEPT
-        : impl_(std::move(st.impl_))
-    {}
-
-    /// @b Complexity: O(st.size())
-    ///
-    /// @b Async-Handler-Safety: Safe if Allocator construction and copying are async signal safe.
-    basic_stacktrace& operator=(basic_stacktrace&& st)
-#ifndef BOOST_NO_CXX11_HDR_TYPE_TRAITS
-        BOOST_NOEXCEPT_IF(( std::is_nothrow_move_assignable< std::vector<boost::stacktrace::frame, Allocator> >::value ))
-#else
-        BOOST_NOEXCEPT
-#endif
-    {
-        impl_ = std::move(st.impl_);
-        return *this;
-    }
-#endif
-
-    /// @returns Number of function names stored inside the class.
-    ///
-    /// @b Complexity: O(1)
-    ///
-    /// @b Async-Handler-Safety: Safe.
-    size_type size() const BOOST_NOEXCEPT {
-        return impl_.size();
-    }
-
-    /// @param frame_no Zero based index of frame to return. 0
-    /// is the function index where stacktrace was constructed and
-    /// index close to this->size() contains function `main()`.
-    /// @returns frame that references the actual frame info, stored inside *this.
-    ///
-    /// @b Complexity: O(1).
-    ///
-    /// @b Async-Handler-Safety: Safe.
-    const_reference operator[](std::size_t frame_no) const BOOST_NOEXCEPT {
-        return impl_[frame_no];
-    }
-
-    /// @b Complexity: O(1)
-    ///
-    /// @b Async-Handler-Safety: Safe.
-    const_iterator begin() const BOOST_NOEXCEPT { return impl_.begin(); }
-    /// @b Complexity: O(1)
-    ///
-    /// @b Async-Handler-Safety: Safe.
-    const_iterator cbegin() const BOOST_NOEXCEPT { return impl_.begin(); }
-    /// @b Complexity: O(1)
-    ///
-    /// @b Async-Handler-Safety: Safe.
-    const_iterator end() const BOOST_NOEXCEPT { return impl_.end(); }
-    /// @b Complexity: O(1)
-    ///
-    /// @b Async-Handler-Safety: Safe.
-    const_iterator cend() const BOOST_NOEXCEPT { return impl_.end(); }
-
-    /// @b Complexity: O(1)
-    ///
-    /// @b Async-Handler-Safety: Safe.
-    const_reverse_iterator rbegin() const BOOST_NOEXCEPT { return impl_.rbegin(); }
-    /// @b Complexity: O(1)
-    ///
-    /// @b Async-Handler-Safety: Safe.
-    const_reverse_iterator crbegin() const BOOST_NOEXCEPT { return impl_.rbegin(); }
-    /// @b Complexity: O(1)
-    ///
-    /// @b Async-Handler-Safety: Safe.
-    const_reverse_iterator rend() const BOOST_NOEXCEPT { return impl_.rend(); }
-    /// @b Complexity: O(1)
-    ///
-    /// @b Async-Handler-Safety: Safe.
-    const_reverse_iterator crend() const BOOST_NOEXCEPT { return impl_.rend(); }
-
-
-    /// @brief Allows to check that stack trace capturing was successful.
-    /// @returns `true` if `this->size() != 0`
-    ///
-    /// @b Complexity: O(1)
-    ///
-    /// @b Async-Handler-Safety: Safe.
-    BOOST_EXPLICIT_OPERATOR_BOOL_NOEXCEPT()
-
-    /// @brief Allows to check that stack trace failed.
-    /// @returns `true` if `this->size() == 0`
-    ///
-    /// @b Complexity: O(1)
-    ///
-    /// @b Async-Handler-Safety: Safe.
-    bool empty() const BOOST_NOEXCEPT { return !size(); }
-
-    /// @cond
-    bool operator!() const BOOST_NOEXCEPT { return !size(); }
-    /// @endcond
-
-    const std::vector<boost::stacktrace::frame, Allocator>& as_vector() const BOOST_NOEXCEPT {
-        return impl_;
-    }
-
-    /// Constructs stacktrace from basic_istreamable that references the dumped stacktrace. Terminating zero frame is discarded.
-    ///
-    /// @b Complexity: O(N)
-    template <class Char, class Trait>
-    static basic_stacktrace from_dump(std::basic_istream<Char, Trait>& in, const allocator_type& a = allocator_type()) {
-        typedef typename std::basic_istream<Char, Trait>::pos_type pos_type;
-        basic_stacktrace ret(0, 0, a);
-
-        // reserving space
-        const pos_type pos = in.tellg();
-        in.seekg(0, in.end);
-        const std::size_t frames_count = frames_count_from_buffer_size(static_cast<std::size_t>(in.tellg()));
-        in.seekg(pos);
-        
-        if (!frames_count) {
-            return ret;
-        }
-
-        native_frame_ptr_t ptr = 0;
-        ret.impl_.reserve(frames_count);
-        while (in.read(reinterpret_cast<Char*>(&ptr), sizeof(ptr))) {
-            if (!ptr) {
-                break;
-            }
-
-            ret.impl_.push_back(frame(ptr));
-        }
-
-        return ret;
-    }
-
-    /// Constructs stacktrace from raw memory dump. Terminating zero frame is discarded.
-    ///
-    /// @param begin Begining of the memory where the stacktrace was saved using the boost::stacktrace::safe_dump_to
-    ///
-    /// @param buffer_size_in_bytes Size of the memory. Usually the same value that was passed to the boost::stacktrace::safe_dump_to
-    ///
-    /// @b Complexity: O(size) in worst case
-    static basic_stacktrace from_dump(const void* begin, std::size_t buffer_size_in_bytes, const allocator_type& a = allocator_type()) {
-        basic_stacktrace ret(0, 0, a);
-        const native_frame_ptr_t* first = static_cast<const native_frame_ptr_t*>(begin);
-        const std::size_t frames_count = frames_count_from_buffer_size(buffer_size_in_bytes);
-        if (!frames_count) {
-            return ret;
-        }
-
-        const native_frame_ptr_t* const last = first + frames_count;
-        ret.impl_.reserve(frames_count);
-        for (; first != last; ++first) {
-            if (!*first) {
-                break;
-            }
-
-            ret.impl_.push_back(frame(*first));
-        }
-
-        return ret;
-    }
-};
-
-/// @brief Compares stacktraces for less, order is platform dependent.
-///
-/// @b Complexity: Amortized O(1); worst case O(size())
-///
-/// @b Async-Handler-Safety: Safe.
-template <class Allocator1, class Allocator2>
-bool operator< (const basic_stacktrace<Allocator1>& lhs, const basic_stacktrace<Allocator2>& rhs) BOOST_NOEXCEPT {
-    return lhs.size() < rhs.size() || (lhs.size() == rhs.size() && lhs.as_vector() < rhs.as_vector());
-}
-
-/// @brief Compares stacktraces for equality.
-///
-/// @b Complexity: Amortized O(1); worst case O(size())
-///
-/// @b Async-Handler-Safety: Safe.
-template <class Allocator1, class Allocator2>
-bool operator==(const basic_stacktrace<Allocator1>& lhs, const basic_stacktrace<Allocator2>& rhs) BOOST_NOEXCEPT {
-    return lhs.as_vector() == rhs.as_vector();
-}
-
-
-/// Comparison operators that provide platform dependant ordering and have amortized O(1) complexity; O(size()) worst case complexity; are Async-Handler-Safe.
-template <class Allocator1, class Allocator2>
-bool operator> (const basic_stacktrace<Allocator1>& lhs, const basic_stacktrace<Allocator2>& rhs) BOOST_NOEXCEPT {
-    return rhs < lhs;
-}
-
-template <class Allocator1, class Allocator2>
-bool operator<=(const basic_stacktrace<Allocator1>& lhs, const basic_stacktrace<Allocator2>& rhs) BOOST_NOEXCEPT {
-    return !(lhs > rhs);
-}
-
-template <class Allocator1, class Allocator2>
-bool operator>=(const basic_stacktrace<Allocator1>& lhs, const basic_stacktrace<Allocator2>& rhs) BOOST_NOEXCEPT {
-    return !(lhs < rhs);
-}
-
-template <class Allocator1, class Allocator2>
-bool operator!=(const basic_stacktrace<Allocator1>& lhs, const basic_stacktrace<Allocator2>& rhs) BOOST_NOEXCEPT {
-    return !(lhs == rhs);
-}
-
-/// Fast hashing support, O(st.size()) complexity; Async-Handler-Safe.
-template <class Allocator>
-std::size_t hash_value(const basic_stacktrace<Allocator>& st) BOOST_NOEXCEPT {
-    return boost::hash_range(st.as_vector().begin(), st.as_vector().end());
-}
-
-/// Returns std::string with the stacktrace in a human readable format; unsafe to use in async handlers.
-template <class Allocator>
-std::string to_string(const basic_stacktrace<Allocator>& bt) {
-    if (!bt) {
-        return std::string();
-    }
-
-    return boost::stacktrace::detail::to_string(&bt.as_vector()[0], bt.size());
-}
-
-/// Outputs stacktrace in a human readable format to the output stream `os`; unsafe to use in async handlers.
-template <class CharT, class TraitsT, class Allocator>
-std::basic_ostream<CharT, TraitsT>& operator<<(std::basic_ostream<CharT, TraitsT>& os, const basic_stacktrace<Allocator>& bt) {
-    return os << boost::stacktrace::to_string(bt);
-}
-
-/// This is the typedef to use unless you'd like to provide a specific allocator to boost::stacktrace::basic_stacktrace.
-typedef basic_stacktrace<> stacktrace;
-
-}} // namespace boost::stacktrace
-
-#ifdef BOOST_INTEL
-#   pragma warning(pop)
-#endif
-
-#endif // BOOST_STACKTRACE_STACKTRACE_HPP
diff --git a/third_party/boost/boost/stacktrace/stacktrace_fwd.hpp b/third_party/boost/boost/stacktrace/stacktrace_fwd.hpp
deleted file mode 100644
index 2947e94..0000000
--- a/third_party/boost/boost/stacktrace/stacktrace_fwd.hpp
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright Antony Polukhin, 2016-2019.
-//
-// 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_STACKTRACE_STACKTRACE_FWD_HPP
-#define BOOST_STACKTRACE_STACKTRACE_FWD_HPP
-
-#include <cstddef>
-#include <memory>
-
-/// @file stacktrace_fwd.hpp This header contains only forward declarations of
-/// boost::stacktrace::frame, boost::stacktrace::basic_stacktrace, boost::stacktrace::stacktrace
-/// and does not include any other Boost headers.
-
-/// @cond
-namespace boost { namespace stacktrace {
-
-class frame;
-template <class Allocator = std::allocator<frame> > class basic_stacktrace;
-typedef basic_stacktrace<> stacktrace;
-
-}} // namespace boost::stacktrace
-/// @endcond
-
-
-#endif // BOOST_STACKTRACE_STACKTRACE_FWD_HPP
diff --git a/third_party/boost/boost/static_assert.hpp b/third_party/boost/boost/static_assert.hpp
deleted file mode 100644
index fd7b224..0000000
--- a/third_party/boost/boost/static_assert.hpp
+++ /dev/null
@@ -1,180 +0,0 @@
-//  (C) Copyright John Maddock 2000.
-//  Use, modification and distribution are subject to the 
-//  Boost Software License, Version 1.0. (See accompanying file 
-//  LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-//  See http://www.boost.org/libs/static_assert for documentation.
-
-/*
- Revision history:
-   02 August 2000
-      Initial version.
-*/
-
-#ifndef BOOST_STATIC_ASSERT_HPP
-#define BOOST_STATIC_ASSERT_HPP
-
-#include <boost/config.hpp>
-#include <boost/detail/workaround.hpp>
-
-#if defined(__GNUC__) && !defined(__GXX_EXPERIMENTAL_CXX0X__)
-//
-// This is horrible, but it seems to be the only we can shut up the
-// "anonymous variadic macros were introduced in C99 [-Wvariadic-macros]"
-// warning that get spewed out otherwise in non-C++11 mode.
-//
-#pragma GCC system_header
-#endif
-
-#ifndef BOOST_NO_CXX11_STATIC_ASSERT
-#  ifndef BOOST_NO_CXX11_VARIADIC_MACROS
-#     define BOOST_STATIC_ASSERT_MSG( ... ) static_assert(__VA_ARGS__)
-#  else
-#     define BOOST_STATIC_ASSERT_MSG( B, Msg ) static_assert( B, Msg )
-#  endif
-#else
-#     define BOOST_STATIC_ASSERT_MSG( B, Msg ) BOOST_STATIC_ASSERT( B )
-#endif
-
-#ifdef __BORLANDC__
-//
-// workaround for buggy integral-constant expression support:
-#define BOOST_BUGGY_INTEGRAL_CONSTANT_EXPRESSIONS
-#endif
-
-#if defined(__GNUC__) && (__GNUC__ == 3) && ((__GNUC_MINOR__ == 3) || (__GNUC_MINOR__ == 4))
-// gcc 3.3 and 3.4 don't produce good error messages with the default version:
-#  define BOOST_SA_GCC_WORKAROUND
-#endif
-
-//
-// If the compiler issues warnings about old C style casts,
-// then enable this:
-//
-#if defined(__GNUC__) && ((__GNUC__ > 3) || ((__GNUC__ == 3) && (__GNUC_MINOR__ >= 4)))
-#  ifndef BOOST_NO_CXX11_VARIADIC_MACROS
-#     define BOOST_STATIC_ASSERT_BOOL_CAST( ... ) ((__VA_ARGS__) != 0)
-#  else
-#     define BOOST_STATIC_ASSERT_BOOL_CAST( x ) ((x) != 0)
-#  endif
-#else
-#  ifndef BOOST_NO_CXX11_VARIADIC_MACROS
-#     define BOOST_STATIC_ASSERT_BOOL_CAST( ... ) (bool)(__VA_ARGS__)
-#  else
-#     define BOOST_STATIC_ASSERT_BOOL_CAST(x) (bool)(x)
-#  endif
-#endif
-
-#ifndef BOOST_NO_CXX11_STATIC_ASSERT
-#  ifndef BOOST_NO_CXX11_VARIADIC_MACROS
-#     define BOOST_STATIC_ASSERT( ... ) static_assert(__VA_ARGS__, #__VA_ARGS__)
-#  else
-#     define BOOST_STATIC_ASSERT( B ) static_assert(B, #B)
-#  endif
-#else
-
-namespace boost{
-
-// HP aCC cannot deal with missing names for template value parameters
-template <bool x> struct STATIC_ASSERTION_FAILURE;
-
-template <> struct STATIC_ASSERTION_FAILURE<true> { enum { value = 1 }; };
-
-// HP aCC cannot deal with missing names for template value parameters
-template<int x> struct static_assert_test{};
-
-}
-
-//
-// Implicit instantiation requires that all member declarations be
-// instantiated, but that the definitions are *not* instantiated.
-//
-// It's not particularly clear how this applies to enum's or typedefs;
-// both are described as declarations [7.1.3] and [7.2] in the standard,
-// however some compilers use "delayed evaluation" of one or more of
-// these when implicitly instantiating templates.  We use typedef declarations
-// by default, but try defining BOOST_USE_ENUM_STATIC_ASSERT if the enum
-// version gets better results from your compiler...
-//
-// Implementation:
-// Both of these versions rely on sizeof(incomplete_type) generating an error
-// message containing the name of the incomplete type.  We use
-// "STATIC_ASSERTION_FAILURE" as the type name here to generate
-// an eye catching error message.  The result of the sizeof expression is either
-// used as an enum initialiser, or as a template argument depending which version
-// is in use...
-// Note that the argument to the assert is explicitly cast to bool using old-
-// style casts: too many compilers currently have problems with static_cast
-// when used inside integral constant expressions.
-//
-#if !defined(BOOST_BUGGY_INTEGRAL_CONSTANT_EXPRESSIONS)
-
-#if defined(BOOST_MSVC) && defined(BOOST_NO_CXX11_VARIADIC_MACROS)
-#define BOOST_STATIC_ASSERT( B ) \
-   typedef ::boost::static_assert_test<\
-      sizeof(::boost::STATIC_ASSERTION_FAILURE< BOOST_STATIC_ASSERT_BOOL_CAST ( B ) >)>\
-         BOOST_JOIN(boost_static_assert_typedef_, __COUNTER__)
-#elif defined(BOOST_MSVC)
-#define BOOST_STATIC_ASSERT(...) \
-   typedef ::boost::static_assert_test<\
-      sizeof(::boost::STATIC_ASSERTION_FAILURE< BOOST_STATIC_ASSERT_BOOL_CAST (__VA_ARGS__) >)>\
-         BOOST_JOIN(boost_static_assert_typedef_, __COUNTER__)
-#elif (defined(BOOST_INTEL_CXX_VERSION) || defined(BOOST_SA_GCC_WORKAROUND))  && defined(BOOST_NO_CXX11_VARIADIC_MACROS)
-// agurt 15/sep/02: a special care is needed to force Intel C++ issue an error 
-// instead of warning in case of failure
-# define BOOST_STATIC_ASSERT( B ) \
-    typedef char BOOST_JOIN(boost_static_assert_typedef_, __LINE__) \
-        [ ::boost::STATIC_ASSERTION_FAILURE< BOOST_STATIC_ASSERT_BOOL_CAST( B ) >::value ]
-#elif (defined(BOOST_INTEL_CXX_VERSION) || defined(BOOST_SA_GCC_WORKAROUND))  && !defined(BOOST_NO_CXX11_VARIADIC_MACROS)
-// agurt 15/sep/02: a special care is needed to force Intel C++ issue an error 
-// instead of warning in case of failure
-# define BOOST_STATIC_ASSERT(...) \
-    typedef char BOOST_JOIN(boost_static_assert_typedef_, __LINE__) \
-        [ ::boost::STATIC_ASSERTION_FAILURE< BOOST_STATIC_ASSERT_BOOL_CAST( __VA_ARGS__ ) >::value ]
-#elif defined(__sgi)
-// special version for SGI MIPSpro compiler
-#define BOOST_STATIC_ASSERT( B ) \
-   BOOST_STATIC_CONSTANT(bool, \
-     BOOST_JOIN(boost_static_assert_test_, __LINE__) = ( B )); \
-   typedef ::boost::static_assert_test<\
-     sizeof(::boost::STATIC_ASSERTION_FAILURE< \
-       BOOST_JOIN(boost_static_assert_test_, __LINE__) >)>\
-         BOOST_JOIN(boost_static_assert_typedef_, __LINE__)
-#elif BOOST_WORKAROUND(__MWERKS__, <= 0x3003)
-// special version for CodeWarrior <= 8.x
-#define BOOST_STATIC_ASSERT( B ) \
-   BOOST_STATIC_CONSTANT(int, \
-     BOOST_JOIN(boost_static_assert_test_, __LINE__) = \
-       sizeof(::boost::STATIC_ASSERTION_FAILURE< BOOST_STATIC_ASSERT_BOOL_CAST( B ) >) )
-#else
-// generic version
-#  ifndef BOOST_NO_CXX11_VARIADIC_MACROS
-#     define BOOST_STATIC_ASSERT( ... ) \
-         typedef ::boost::static_assert_test<\
-            sizeof(::boost::STATIC_ASSERTION_FAILURE< BOOST_STATIC_ASSERT_BOOL_CAST( __VA_ARGS__ ) >)>\
-               BOOST_JOIN(boost_static_assert_typedef_, __LINE__) BOOST_ATTRIBUTE_UNUSED
-#  else
-#     define BOOST_STATIC_ASSERT( B ) \
-         typedef ::boost::static_assert_test<\
-            sizeof(::boost::STATIC_ASSERTION_FAILURE< BOOST_STATIC_ASSERT_BOOL_CAST( B ) >)>\
-               BOOST_JOIN(boost_static_assert_typedef_, __LINE__) BOOST_ATTRIBUTE_UNUSED
-#  endif
-#endif
-
-#else
-// alternative enum based implementation:
-#  ifndef BOOST_NO_CXX11_VARIADIC_MACROS
-#    define BOOST_STATIC_ASSERT( ... ) \
-         enum { BOOST_JOIN(boost_static_assert_enum_, __LINE__) \
-            = sizeof(::boost::STATIC_ASSERTION_FAILURE< (bool)( __VA_ARGS__ ) >) }
-#  else
-#    define BOOST_STATIC_ASSERT(B) \
-         enum { BOOST_JOIN(boost_static_assert_enum_, __LINE__) \
-            = sizeof(::boost::STATIC_ASSERTION_FAILURE< (bool)( B ) >) }
-#  endif
-#endif
-#endif // defined(BOOST_NO_CXX11_STATIC_ASSERT)
-
-#endif // BOOST_STATIC_ASSERT_HPP
-
-
diff --git a/third_party/boost/boost/swap.hpp b/third_party/boost/boost/swap.hpp
deleted file mode 100644
index 55cafa4..0000000
--- a/third_party/boost/boost/swap.hpp
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
- * Copyright (c) 2014 Glen Fernandes
- *
- * 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_SWAP_HPP
-#define BOOST_SWAP_HPP
-
-// The header file at this path is deprecated;
-// use boost/core/swap.hpp instead.
-
-#include <boost/core/swap.hpp>
-
-#endif
diff --git a/third_party/boost/boost/throw_exception.hpp b/third_party/boost/boost/throw_exception.hpp
deleted file mode 100644
index c6623e1..0000000
--- a/third_party/boost/boost/throw_exception.hpp
+++ /dev/null
@@ -1,103 +0,0 @@
-#ifndef UUID_AA15E74A856F11E08B8D93F24824019B
-#define UUID_AA15E74A856F11E08B8D93F24824019B
-
-// MS compatible compilers support #pragma once
-
-#if defined(_MSC_VER) && (_MSC_VER >= 1020)
-# pragma once
-#endif
-
-//
-//  boost/throw_exception.hpp
-//
-//  Copyright (c) 2002 Peter Dimov and Multi Media Ltd.
-//  Copyright (c) 2008-2009 Emil Dotchevski and Reverge Studios, Inc.
-//
-//  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)
-//
-//  http://www.boost.org/libs/utility/throw_exception.html
-//
-
-#include <boost/config.hpp>
-#include <boost/detail/workaround.hpp>
-#include <exception>
-
-#if !defined( BOOST_EXCEPTION_DISABLE ) && defined( __BORLANDC__ ) && BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT(0x593) )
-# define BOOST_EXCEPTION_DISABLE
-#endif
-
-#if !defined( BOOST_EXCEPTION_DISABLE ) && defined( BOOST_MSVC ) && BOOST_WORKAROUND( BOOST_MSVC, < 1310 )
-# define BOOST_EXCEPTION_DISABLE
-#endif
-
-#if !defined( BOOST_EXCEPTION_DISABLE )
-# include <boost/exception/exception.hpp>
-#if !defined(BOOST_THROW_EXCEPTION_CURRENT_FUNCTION)
-# include <boost/current_function.hpp>
-# define BOOST_THROW_EXCEPTION_CURRENT_FUNCTION BOOST_CURRENT_FUNCTION
-#endif
-# define BOOST_THROW_EXCEPTION(x) ::boost::exception_detail::throw_exception_(x,BOOST_THROW_EXCEPTION_CURRENT_FUNCTION,__FILE__,__LINE__)
-#else
-# define BOOST_THROW_EXCEPTION(x) ::boost::throw_exception(x)
-#endif
-
-#if defined(__GNUC__) && (__GNUC__*100+__GNUC_MINOR__>301) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
-#pragma GCC system_header
-#endif
-#if defined(_MSC_VER) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
-#pragma warning(push,1)
-#endif
-
-namespace boost
-{
-#ifdef BOOST_NO_EXCEPTIONS
-
-void throw_exception( std::exception const & e ); // user defined
-
-#else
-
-inline void throw_exception_assert_compatibility( std::exception const & ) { }
-
-template<class E> BOOST_NORETURN inline void throw_exception( E const & e )
-{
-    //All boost exceptions are required to derive from std::exception,
-    //to ensure compatibility with BOOST_NO_EXCEPTIONS.
-    throw_exception_assert_compatibility(e);
-
-#ifndef BOOST_EXCEPTION_DISABLE
-    throw exception_detail::enable_both( e );
-#else
-    throw e;
-#endif
-}
-
-#endif
-
-#if !defined( BOOST_EXCEPTION_DISABLE )
-    namespace
-    exception_detail
-    {
-        template <class E>
-        BOOST_NORETURN
-        void
-        throw_exception_( E const & x, char const * current_function, char const * file, int line )
-        {
-            boost::throw_exception(
-                set_info(
-                    set_info(
-                        set_info(
-                            enable_error_info(x),
-                            throw_function(current_function)),
-                        throw_file(file)),
-                    throw_line(line)));
-        }
-    }
-#endif
-} // namespace boost
-
-#if defined(_MSC_VER) && !defined(BOOST_EXCEPTION_ENABLE_WARNINGS)
-#pragma warning(pop)
-#endif
-#endif
diff --git a/third_party/boost/boost/type_traits/add_const.hpp b/third_party/boost/boost/type_traits/add_const.hpp
deleted file mode 100644
index 2d60118..0000000
--- a/third_party/boost/boost/type_traits/add_const.hpp
+++ /dev/null
@@ -1,52 +0,0 @@
-
-//  (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, Howard
-//  Hinnant & John Maddock 2000.
-//  Use, modification and distribution are subject to the Boost Software License,
-//  Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-//  http://www.boost.org/LICENSE_1_0.txt).
-//
-//  See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-#ifndef BOOST_TT_ADD_CONST_HPP_INCLUDED
-#define BOOST_TT_ADD_CONST_HPP_INCLUDED
-
-#include <boost/type_traits/detail/config.hpp>
-
-namespace boost {
-
-// * convert a type T to const type - add_const<T>
-// this is not required since the result is always
-// the same as "T const", but it does suppress warnings
-// from some compilers:
-
-#if defined(BOOST_MSVC)
-// This bogus warning will appear when add_const is applied to a
-// const volatile reference because we can't detect const volatile
-// references with MSVC6.
-#   pragma warning(push)
-#   pragma warning(disable:4181) // warning C4181: qualifier applied to reference type ignored
-#endif 
-
-   template <class T> struct add_const
-   {
-      typedef T const type;
-   };
-
-#if defined(BOOST_MSVC)
-#   pragma warning(pop)
-#endif 
-
-   template <class T> struct add_const<T&>
-   {
-      typedef T& type;
-   };
-
-#if !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES)
-
-   template <class T> using add_const_t = typename add_const<T>::type;
-
-#endif
-
-} // namespace boost
-
-#endif // BOOST_TT_ADD_CONST_HPP_INCLUDED
diff --git a/third_party/boost/boost/type_traits/add_lvalue_reference.hpp b/third_party/boost/boost/type_traits/add_lvalue_reference.hpp
deleted file mode 100644
index 26b74e6..0000000
--- a/third_party/boost/boost/type_traits/add_lvalue_reference.hpp
+++ /dev/null
@@ -1,33 +0,0 @@
-//  Copyright 2010 John Maddock
-
-//  Distributed under the Boost Software License, Version 1.0.
-//  See http://www.boost.org/LICENSE_1_0.txt
-
-#ifndef BOOST_TYPE_TRAITS_EXT_ADD_LVALUE_REFERENCE__HPP
-#define BOOST_TYPE_TRAITS_EXT_ADD_LVALUE_REFERENCE__HPP
-
-#include <boost/type_traits/add_reference.hpp>
-
-namespace boost{
-
-template <class T> struct add_lvalue_reference
-{
-   typedef typename boost::add_reference<T>::type type; 
-};
-
-#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
-template <class T> struct add_lvalue_reference<T&&>
-{
-   typedef T& type;
-};
-#endif
-
-#if !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES)
-
-   template <class T> using add_lvalue_reference_t = typename add_lvalue_reference<T>::type;
-
-#endif
-
-}
-
-#endif  // BOOST_TYPE_TRAITS_EXT_ADD_LVALUE_REFERENCE__HPP
diff --git a/third_party/boost/boost/type_traits/add_reference.hpp b/third_party/boost/boost/type_traits/add_reference.hpp
deleted file mode 100644
index 33e9bc7..0000000
--- a/third_party/boost/boost/type_traits/add_reference.hpp
+++ /dev/null
@@ -1,66 +0,0 @@
-
-//  (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
-//  Use, modification and distribution are subject to the Boost Software License,
-//  Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-//  http://www.boost.org/LICENSE_1_0.txt).
-//
-//  See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-#ifndef BOOST_TT_ADD_REFERENCE_HPP_INCLUDED
-#define BOOST_TT_ADD_REFERENCE_HPP_INCLUDED
-
-#include <boost/detail/workaround.hpp>
-#include <boost/config.hpp>
-
-namespace boost {
-
-namespace detail {
-
-//
-// We can't filter out rvalue_references at the same level as
-// references or we get ambiguities from msvc:
-//
-
-template <typename T>
-struct add_reference_impl
-{
-    typedef T& type;
-};
-
-#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
-template <typename T>
-struct add_reference_impl<T&&>
-{
-    typedef T&& type;
-};
-#endif
-
-} // namespace detail
-
-template <class T> struct add_reference
-{
-   typedef typename boost::detail::add_reference_impl<T>::type type;
-};
-template <class T> struct add_reference<T&>
-{
-   typedef T& type;
-};
-
-// these full specialisations are always required:
-template <> struct add_reference<void> { typedef void type; };
-#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
-template <> struct add_reference<const void> { typedef const void type; };
-template <> struct add_reference<const volatile void> { typedef const volatile void type; };
-template <> struct add_reference<volatile void> { typedef volatile void type; };
-#endif
-
-#if !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES)
-
-template <class T> using add_reference_t = typename add_reference<T>::type;
-
-#endif
-
-
-} // namespace boost
-
-#endif // BOOST_TT_ADD_REFERENCE_HPP_INCLUDED
diff --git a/third_party/boost/boost/type_traits/add_rvalue_reference.hpp b/third_party/boost/boost/type_traits/add_rvalue_reference.hpp
deleted file mode 100644
index ad64894..0000000
--- a/third_party/boost/boost/type_traits/add_rvalue_reference.hpp
+++ /dev/null
@@ -1,70 +0,0 @@
-//  add_rvalue_reference.hpp  ---------------------------------------------------------//
-
-//  Copyright 2010 Vicente J. Botet Escriba
-
-//  Distributed under the Boost Software License, Version 1.0.
-//  See http://www.boost.org/LICENSE_1_0.txt
-
-#ifndef BOOST_TYPE_TRAITS_EXT_ADD_RVALUE_REFERENCE__HPP
-#define BOOST_TYPE_TRAITS_EXT_ADD_RVALUE_REFERENCE__HPP
-
-#include <boost/config.hpp>
-
-//----------------------------------------------------------------------------//
-
-#include <boost/type_traits/is_void.hpp>
-#include <boost/type_traits/is_reference.hpp>
-
-//----------------------------------------------------------------------------//
-//                                                                            //
-//                           C++03 implementation of                          //
-//             20.9.7.2 Reference modifications [meta.trans.ref]              //
-//                          Written by Vicente J. Botet Escriba               //
-//                                                                            //
-// If T names an object or function type then the member typedef type
-// shall name T&&; otherwise, type shall name T. [ Note: This rule reflects
-// the semantics of reference collapsing. For example, when a type T names
-// a type T1&, the type add_rvalue_reference<T>::type is not an rvalue
-// reference. -end note ]
-//----------------------------------------------------------------------------//
-
-namespace boost {
-
-namespace type_traits_detail {
-
-    template <typename T, bool b>
-    struct add_rvalue_reference_helper
-    { typedef T   type; };
-
-#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
-    template <typename T>
-    struct add_rvalue_reference_helper<T, true>
-    {
-        typedef T&&   type;
-    };
-#endif
-
-    template <typename T>
-    struct add_rvalue_reference_imp
-    {
-       typedef typename boost::type_traits_detail::add_rvalue_reference_helper
-                  <T, (is_void<T>::value == false && is_reference<T>::value == false) >::type type;
-    };
-
-}
-
-template <class T> struct add_rvalue_reference
-{
-   typedef typename boost::type_traits_detail::add_rvalue_reference_imp<T>::type type;
-};
-
-#if !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES)
-
-   template <class T> using add_rvalue_reference_t = typename add_rvalue_reference<T>::type;
-
-#endif
-
-}  // namespace boost
-
-#endif  // BOOST_TYPE_TRAITS_EXT_ADD_RVALUE_REFERENCE__HPP
-
diff --git a/third_party/boost/boost/type_traits/add_volatile.hpp b/third_party/boost/boost/type_traits/add_volatile.hpp
deleted file mode 100644
index 253751a..0000000
--- a/third_party/boost/boost/type_traits/add_volatile.hpp
+++ /dev/null
@@ -1,46 +0,0 @@
-
-//  (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, Howard
-//  Hinnant & John Maddock 2000.
-//  Use, modification and distribution are subject to the Boost Software License,
-//  Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-//  http://www.boost.org/LICENSE_1_0.txt).
-//
-//  See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-#ifndef BOOST_TT_ADD_VOLATILE_HPP_INCLUDED
-#define BOOST_TT_ADD_VOLATILE_HPP_INCLUDED
-
-#include <boost/config.hpp>
-
-namespace boost {
-
-// * convert a type T to volatile type - add_volatile<T>
-// this is not required since the result is always
-// the same as "T volatile", but it does suppress warnings
-// from some compilers:
-
-#if defined(BOOST_MSVC)
-// This bogus warning will appear when add_volatile is applied to a
-// const volatile reference because we can't detect const volatile
-// references with MSVC6.
-#   pragma warning(push)
-#   pragma warning(disable:4181) // warning C4181: qualifier applied to reference type ignored
-#endif 
-
-template <class T> struct add_volatile{ typedef T volatile type; };
-
-#if defined(BOOST_MSVC)
-#   pragma warning(pop)
-#endif 
-
-template <class T> struct add_volatile<T&>{ typedef T& type; };
-
-#if !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES)
-
-   template <class T> using add_volatile_t = typename add_volatile<T>::type;
-
-#endif
-
-} // namespace boost
-
-#endif // BOOST_TT_ADD_VOLATILE_HPP_INCLUDED
diff --git a/third_party/boost/boost/type_traits/conditional.hpp b/third_party/boost/boost/type_traits/conditional.hpp
deleted file mode 100644
index ec31d8b..0000000
--- a/third_party/boost/boost/type_traits/conditional.hpp
+++ /dev/null
@@ -1,28 +0,0 @@
-//  (C) Copyright John Maddock 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/type_traits for most recent version including documentation.
-
-
-#ifndef BOOST_TT_CONDITIONAL_HPP_INCLUDED
-#define BOOST_TT_CONDITIONAL_HPP_INCLUDED
-
-#include <boost/config.hpp>
-
-namespace boost {
-
-template <bool b, class T, class U> struct conditional { typedef T type; };
-template <class T, class U> struct conditional<false, T, U> { typedef U type; };
-
-#if !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES)
-
-   template <bool b, class T, class U> using conditional_t = typename conditional<b, T, U>::type;
-
-#endif
-
-} // namespace boost
-
-
-#endif // BOOST_TT_CONDITIONAL_HPP_INCLUDED
diff --git a/third_party/boost/boost/type_traits/declval.hpp b/third_party/boost/boost/type_traits/declval.hpp
deleted file mode 100644
index a050012..0000000
--- a/third_party/boost/boost/type_traits/declval.hpp
+++ /dev/null
@@ -1,44 +0,0 @@
-//  declval.hpp  -------------------------------------------------------------//
-
-//  Copyright 2010 Vicente J. Botet Escriba
-
-//  Distributed under the Boost Software License, Version 1.0.
-//  See http://www.boost.org/LICENSE_1_0.txt
-
-#ifndef BOOST_TYPE_TRAITS_DECLVAL_HPP_INCLUDED
-#define BOOST_TYPE_TRAITS_DECLVAL_HPP_INCLUDED
-
-#include <boost/config.hpp>
-
-//----------------------------------------------------------------------------//
-
-#include <boost/type_traits/add_rvalue_reference.hpp>
-
-//----------------------------------------------------------------------------//
-//                                                                            //
-//                           C++03 implementation of                          //
-//                   20.2.4 Function template declval [declval]               //
-//                          Written by Vicente J. Botet Escriba               //
-//                                                                            //
-// 1 The library provides the function template declval to simplify the
-// definition of expressions which occur as unevaluated operands.
-// 2 Remarks: If this function is used, the program is ill-formed.
-// 3 Remarks: The template parameter T of declval may be an incomplete type.
-// [ Example:
-//
-// template <class To, class From>
-// decltype(static_cast<To>(declval<From>())) convert(From&&);
-//
-// declares a function template convert which only participates in overloading
-// if the type From can be explicitly converted to type To. For another example
-// see class template common_type (20.9.7.6). -end example ]
-//----------------------------------------------------------------------------//
-
-namespace boost {
-
-    template <typename T>
-    typename add_rvalue_reference<T>::type declval() BOOST_NOEXCEPT; // as unevaluated operand
-
-}  // namespace boost
-
-#endif  // BOOST_TYPE_TRAITS_DECLVAL_HPP_INCLUDED
diff --git a/third_party/boost/boost/type_traits/detail/config.hpp b/third_party/boost/boost/type_traits/detail/config.hpp
deleted file mode 100644
index 00970f2..0000000
--- a/third_party/boost/boost/type_traits/detail/config.hpp
+++ /dev/null
@@ -1,99 +0,0 @@
-
-//  (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
-//  Use, modification and distribution are subject to the Boost Software License,
-//  Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-//  http://www.boost.org/LICENSE_1_0.txt).
-//
-//  See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-#ifndef BOOST_TT_CONFIG_HPP_INCLUDED
-#define BOOST_TT_CONFIG_HPP_INCLUDED
-
-#ifndef BOOST_CONFIG_HPP
-#include <boost/config.hpp>
-#endif
-#include <boost/version.hpp>
-#include <boost/config/workaround.hpp>
-
-//
-// whenever we have a conversion function with ellipses
-// it needs to be declared __cdecl to suppress compiler
-// warnings from MS and Borland compilers (this *must*
-// appear before we include is_same.hpp below):
-#if defined(BOOST_MSVC) || (defined(__BORLANDC__) && !defined(BOOST_DISABLE_WIN32))
-#   define BOOST_TT_DECL __cdecl
-#else
-#   define BOOST_TT_DECL /**/
-#endif
-
-# if (BOOST_WORKAROUND(__MWERKS__, < 0x3000)                         \
-    || BOOST_WORKAROUND(__IBMCPP__, < 600 )                         \
-    || BOOST_WORKAROUND(__BORLANDC__, < 0x5A0)                      \
-    || defined(__ghs)                                               \
-    || BOOST_WORKAROUND(__HP_aCC, < 60700)           \
-    || BOOST_WORKAROUND(MPW_CPLUS, BOOST_TESTED_AT(0x890))          \
-    || BOOST_WORKAROUND(__SUNPRO_CC, BOOST_TESTED_AT(0x580)))       \
-    && defined(BOOST_NO_IS_ABSTRACT)
-
-#   define BOOST_TT_NO_CONFORMING_IS_CLASS_IMPLEMENTATION 1
-
-#endif
-
-#ifndef BOOST_TT_NO_CONFORMING_IS_CLASS_IMPLEMENTATION
-# define BOOST_TT_HAS_CONFORMING_IS_CLASS_IMPLEMENTATION 1
-#endif
-
-//
-// define BOOST_TT_TEST_MS_FUNC_SIGS
-// when we want to test __stdcall etc function types with is_function etc
-// (Note, does not work with Borland, even though it does support __stdcall etc):
-//
-#if defined(_MSC_EXTENSIONS) && !defined(__BORLANDC__)
-#  define BOOST_TT_TEST_MS_FUNC_SIGS
-#endif
-
-//
-// define BOOST_TT_NO_CV_FUNC_TEST
-// if tests for cv-qualified member functions don't 
-// work in is_member_function_pointer
-//
-#if BOOST_WORKAROUND(__MWERKS__, < 0x3000) || BOOST_WORKAROUND(__IBMCPP__, <= 600)
-#  define BOOST_TT_NO_CV_FUNC_TEST
-#endif
-
-//
-// Macros that have been deprecated, defined here for backwards compatibility:
-//
-#define BOOST_BROKEN_COMPILER_TYPE_TRAITS_SPECIALIZATION(x)
-#define BOOST_TT_BROKEN_COMPILER_SPEC(x)
-
-//
-// Can we implement "accurate" binary operator detection:
-//
-#if !defined(BOOST_NO_SFINAE_EXPR) && !defined(BOOST_NO_CXX11_DECLTYPE) && !BOOST_WORKAROUND(BOOST_MSVC, < 1900) && !BOOST_WORKAROUND(BOOST_GCC, < 40900)
-#  define BOOST_TT_HAS_ACCURATE_BINARY_OPERATOR_DETECTION
-#endif
-
-#if defined(__clang__) && (__clang_major__ == 3) && (__clang_minor__ < 2) && defined(BOOST_TT_HAS_ACCURATE_BINARY_OPERATOR_DETECTION)
-#undef BOOST_TT_HAS_ACCURATE_BINARY_OPERATOR_DETECTION
-#endif
-
-//
-// Can we implement accurate is_function/is_member_function_pointer (post C++03)?
-//
-#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && !BOOST_WORKAROUND(BOOST_GCC, < 40805)\
-      && !BOOST_WORKAROUND(BOOST_MSVC, < 1900) && !BOOST_WORKAROUND(__clang_major__, <= 4)
-#  define BOOST_TT_HAS_ASCCURATE_IS_FUNCTION
-#endif
-
-#if defined(_MSVC_LANG) && (_MSVC_LANG >= 201703) 
-#  define BOOST_TT_NO_DEDUCED_NOEXCEPT_PARAM
-#endif
-#if defined(__APPLE_CC__) && defined(__clang_major__) && (__clang_major__ == 9) && (__clang_minor__ == 0)
-#  define BOOST_TT_NO_DEDUCED_NOEXCEPT_PARAM
-#  define BOOST_TT_NO_NOEXCEPT_SEPARATE_TYPE
-#endif
-
-#endif // BOOST_TT_CONFIG_HPP_INCLUDED
-
-
diff --git a/third_party/boost/boost/type_traits/detail/is_function_cxx_03.hpp b/third_party/boost/boost/type_traits/detail/is_function_cxx_03.hpp
deleted file mode 100644
index d3e4f93..0000000
--- a/third_party/boost/boost/type_traits/detail/is_function_cxx_03.hpp
+++ /dev/null
@@ -1,108 +0,0 @@
-
-//  Copyright 2000 John Maddock (john@johnmaddock.co.uk)
-//  Copyright 2002 Aleksey Gurtovoy (agurtovoy@meta-comm.com)
-//
-//  Use, modification and distribution are subject to the Boost Software License,
-//  Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-//  http://www.boost.org/LICENSE_1_0.txt).
-//
-//  See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-#ifndef BOOST_TT_IS_FUNCTION_CXX_03_HPP_INCLUDED
-#define BOOST_TT_IS_FUNCTION_CXX_03_HPP_INCLUDED
-
-#include <boost/type_traits/is_reference.hpp>
-
-#if !defined(BOOST_TT_TEST_MS_FUNC_SIGS)
-#   include <boost/type_traits/detail/is_function_ptr_helper.hpp>
-#else
-#   include <boost/type_traits/detail/is_function_ptr_tester.hpp>
-#   include <boost/type_traits/detail/yes_no_type.hpp>
-#endif
-
-// is a type a function?
-// Please note that this implementation is unnecessarily complex:
-// we could just use !is_convertible<T*, const volatile void*>::value,
-// except that some compilers erroneously allow conversions from
-// function pointers to void*.
-
-namespace boost {
-
-#if !defined( __CODEGEARC__ )
-
-namespace detail {
-
-#if !defined(BOOST_TT_TEST_MS_FUNC_SIGS)
-template<bool is_ref = true>
-struct is_function_chooser
-{
-   template< typename T > struct result_
-      : public false_type {};
-};
-
-template <>
-struct is_function_chooser<false>
-{
-    template< typename T > struct result_
-        : public ::boost::type_traits::is_function_ptr_helper<T*> {};
-};
-
-template <typename T>
-struct is_function_impl
-    : public is_function_chooser< ::boost::is_reference<T>::value >
-        ::BOOST_NESTED_TEMPLATE result_<T>
-{
-};
-
-#else
-
-template <typename T>
-struct is_function_impl
-{
-#if BOOST_WORKAROUND(BOOST_MSVC_FULL_VER, >= 140050000)
-#pragma warning(push)
-#pragma warning(disable:6334)
-#endif
-    static T* t;
-    BOOST_STATIC_CONSTANT(
-        bool, value = sizeof(::boost::type_traits::is_function_ptr_tester(t))
-        == sizeof(::boost::type_traits::yes_type)
-        );
-#if BOOST_WORKAROUND(BOOST_MSVC_FULL_VER, >= 140050000)
-#pragma warning(pop)
-#endif
-};
-
-template <typename T>
-struct is_function_impl<T&> : public false_type
-{};
-#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
-template <typename T>
-struct is_function_impl<T&&> : public false_type
-{};
-#endif
-
-#endif
-
-} // namespace detail
-
-#endif // !defined( __CODEGEARC__ )
-
-#if defined( __CODEGEARC__ )
-template <class T> struct is_function : integral_constant<bool, __is_function(T)> {};
-#else
-template <class T> struct is_function : integral_constant<bool, ::boost::detail::is_function_impl<T>::value> {};
-#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
-template <class T> struct is_function<T&&> : public false_type {};
-#endif
-#if !BOOST_WORKAROUND(BOOST_MSVC, <= 1600)
-template <class T> struct is_function<T&> : public false_type {};
-#endif
-#endif
-} // namespace boost
-
-#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && defined(BOOST_MSVC) && BOOST_WORKAROUND(BOOST_MSVC, <= 1700)
-#include <boost/type_traits/detail/is_function_msvc10_fix.hpp>
-#endif
-
-#endif // BOOST_TT_IS_FUNCTION_CXX_03_HPP_INCLUDED
diff --git a/third_party/boost/boost/type_traits/detail/is_function_cxx_11.hpp b/third_party/boost/boost/type_traits/detail/is_function_cxx_11.hpp
deleted file mode 100644
index 432af4e..0000000
--- a/third_party/boost/boost/type_traits/detail/is_function_cxx_11.hpp
+++ /dev/null
@@ -1,573 +0,0 @@
-
-//  Copyright 2000 John Maddock (john@johnmaddock.co.uk)
-//  Copyright 2002 Aleksey Gurtovoy (agurtovoy@meta-comm.com)
-//
-//  Use, modification and distribution are subject to the Boost Software License,
-//  Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-//  http://www.boost.org/LICENSE_1_0.txt).
-//
-//  See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-#ifndef BOOST_TT_IS_FUNCTION_CXX_11_HPP_INCLUDED
-#define BOOST_TT_IS_FUNCTION_CXX_11_HPP_INCLUDED
-
-#include <boost/type_traits/integral_constant.hpp>
-
-namespace boost {
-
-   template <class T>
-   struct is_function : public false_type {};
-
-#if defined(__cpp_noexcept_function_type) && !defined(BOOST_TT_NO_DEDUCED_NOEXCEPT_PARAM)
-#define BOOST_TT_NOEXCEPT_PARAM , bool NE
-#define BOOST_TT_NOEXCEPT_DECL noexcept(NE)
-#else
-#define BOOST_TT_NOEXCEPT_PARAM
-#define BOOST_TT_NOEXCEPT_DECL
-#endif
-
-#ifdef _MSC_VER
-#define BOOST_TT_DEF_CALL __cdecl
-#else
-#define BOOST_TT_DEF_CALL
-#endif
-   
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret BOOST_TT_DEF_CALL(Args...)BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   template <class Ret, class ...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret(Args..., ...)BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   // const qualified:
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret BOOST_TT_DEF_CALL(Args...)const BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   template <class Ret, class ...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret(Args..., ...)const BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   // volatile:
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret BOOST_TT_DEF_CALL(Args...)volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   template <class Ret, class ...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret(Args..., ...)volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   // const volatile
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret BOOST_TT_DEF_CALL(Args...)const volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   template <class Ret, class ...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret(Args..., ...)const volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-
-   // Reference qualified:
-
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret BOOST_TT_DEF_CALL(Args...)& BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   template <class Ret, class ...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret(Args..., ...)& BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   // const qualified:
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret BOOST_TT_DEF_CALL(Args...)const & BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   template <class Ret, class ...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret(Args..., ...)const & BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   // volatile:
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret BOOST_TT_DEF_CALL(Args...)volatile & BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   template <class Ret, class ...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret(Args..., ...)volatile & BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   // const volatile
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret BOOST_TT_DEF_CALL(Args...)const volatile & BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   template <class Ret, class ...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret(Args..., ...)const volatile & BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-
-   // rvalue reference qualified:
-
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret BOOST_TT_DEF_CALL(Args...)&& BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   template <class Ret, class ...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret(Args..., ...)&& BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   // const qualified:
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret BOOST_TT_DEF_CALL(Args...)const && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   template <class Ret, class ...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret(Args..., ...)const && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   // volatile:
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret BOOST_TT_DEF_CALL(Args...)volatile && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   template <class Ret, class ...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret(Args..., ...)volatile && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   // const volatile
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret BOOST_TT_DEF_CALL(Args...)const volatile && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   template <class Ret, class ...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret(Args..., ...)const volatile && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-
-#if defined(_MSC_VER) && !defined(_M_ARM) && !defined(_M_ARM64)
-#ifdef __CLR_VER
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __clrcall(Args...)BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#ifndef _M_AMD64
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __stdcall(Args...)BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#ifndef __CLR_VER
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __fastcall(Args...)BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#endif
-#if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __vectorcall(Args...)BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-   // const:
-#ifdef __CLR_VER
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __clrcall(Args...)const BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#ifndef _M_AMD64
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __stdcall(Args...)const BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#ifndef __CLR_VER
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __fastcall(Args...)const BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#endif
-#if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __vectorcall(Args...)const BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-   // volatile:
-#ifdef __CLR_VER
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __clrcall(Args...)volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#ifndef _M_AMD64
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __stdcall(Args...)volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#ifndef __CLR_VER
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __fastcall(Args...)volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#endif
-#if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __vectorcall(Args...)volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-   // const volatile:
-#ifdef __CLR_VER
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __clrcall(Args...)const volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#ifndef _M_AMD64
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __stdcall(Args...)const volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#ifndef __CLR_VER
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __fastcall(Args...)const volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#endif
-#if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __vectorcall(Args...)const volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-
-   // reference qualified:
-#ifdef __CLR_VER
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __clrcall(Args...)&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#ifndef _M_AMD64
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __stdcall(Args...)&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#ifndef __CLR_VER
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __fastcall(Args...)&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#endif
-#if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __vectorcall(Args...)&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-   // const:
-#ifdef __CLR_VER
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __clrcall(Args...)const &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#ifndef _M_AMD64
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __stdcall(Args...)const &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#ifndef __CLR_VER
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __fastcall(Args...)const &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#endif
-#if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __vectorcall(Args...)const &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-   // volatile:
-#ifdef __CLR_VER
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __clrcall(Args...)volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#ifndef _M_AMD64
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __stdcall(Args...)volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#ifndef __CLR_VER
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __fastcall(Args...)volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#endif
-#if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __vectorcall(Args...)volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-   // const volatile:
-#ifdef __CLR_VER
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __clrcall(Args...)const volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#ifndef _M_AMD64
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __stdcall(Args...)const volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#ifndef __CLR_VER
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __fastcall(Args...)const volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#endif
-#if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __vectorcall(Args...)const volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-
-   // rvalue reference qualified:
-#ifdef __CLR_VER
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __clrcall(Args...)&&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#ifndef _M_AMD64
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __stdcall(Args...) && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#ifndef __CLR_VER
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __fastcall(Args...)&&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#endif
-#if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __vectorcall(Args...)&&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-   // const:
-#ifdef __CLR_VER
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __clrcall(Args...)const &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#ifndef _M_AMD64
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __stdcall(Args...)const &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#ifndef __CLR_VER
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __fastcall(Args...)const &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#endif
-#if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __vectorcall(Args...)const &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-   // volatile:
-#ifdef __CLR_VER
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __clrcall(Args...)volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#ifndef _M_AMD64
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __stdcall(Args...)volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#ifndef __CLR_VER
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __fastcall(Args...)volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#endif
-#if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __vectorcall(Args...)volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-   // const volatile:
-#ifdef __CLR_VER
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __clrcall(Args...)const volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#ifndef _M_AMD64
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __stdcall(Args...)const volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#ifndef __CLR_VER
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __fastcall(Args...)const volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#endif
-#if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __vectorcall(Args...)const volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-
-#endif // _MSC_VER
-
-   // All over again for msvc with noexcept:
-
-#if defined(BOOST_TT_NO_DEDUCED_NOEXCEPT_PARAM) && !defined(BOOST_TT_NO_NOEXCEPT_SEPARATE_TYPE)
-
-#undef BOOST_TT_NOEXCEPT_DECL
-#define BOOST_TT_NOEXCEPT_DECL noexcept
-
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret BOOST_TT_DEF_CALL(Args...)BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   template <class Ret, class ...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret(Args..., ...)BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   // const qualified:
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret BOOST_TT_DEF_CALL(Args...)const BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   template <class Ret, class ...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret(Args..., ...)const BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   // volatile:
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret BOOST_TT_DEF_CALL(Args...)volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   template <class Ret, class ...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret(Args..., ...)volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   // const volatile
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret BOOST_TT_DEF_CALL(Args...)const volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   template <class Ret, class ...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret(Args..., ...)const volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-
-   // Reference qualified:
-
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret BOOST_TT_DEF_CALL(Args...)& BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   template <class Ret, class ...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret(Args..., ...)& BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   // const qualified:
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret BOOST_TT_DEF_CALL(Args...)const & BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   template <class Ret, class ...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret(Args..., ...)const & BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   // volatile:
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret BOOST_TT_DEF_CALL(Args...)volatile & BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   template <class Ret, class ...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret(Args..., ...)volatile & BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   // const volatile
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret BOOST_TT_DEF_CALL(Args...)const volatile & BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   template <class Ret, class ...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret(Args..., ...)const volatile & BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-
-   // rvalue reference qualified:
-
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret BOOST_TT_DEF_CALL(Args...) && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   template <class Ret, class ...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret(Args..., ...) && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   // const qualified:
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret BOOST_TT_DEF_CALL(Args...)const && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   template <class Ret, class ...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret(Args..., ...)const && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   // volatile:
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret BOOST_TT_DEF_CALL(Args...)volatile && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   template <class Ret, class ...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret(Args..., ...)volatile && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   // const volatile
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret BOOST_TT_DEF_CALL(Args...)const volatile && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   template <class Ret, class ...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret(Args..., ...)const volatile && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-
-#ifdef _MSC_VER
-#ifdef __CLR_VER
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __clrcall(Args...)BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#ifndef _M_AMD64
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __stdcall(Args...)BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __fastcall(Args...)BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __vectorcall(Args...)BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-   // const:
-#ifdef __CLR_VER
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __clrcall(Args...)const BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#ifndef _M_AMD64
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __stdcall(Args...)const BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __fastcall(Args...)const BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __vectorcall(Args...)const BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-   // volatile:
-#ifdef __CLR_VER
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __clrcall(Args...)volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#ifndef _M_AMD64
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __stdcall(Args...)volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __fastcall(Args...)volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __vectorcall(Args...)volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-   // const volatile:
-#ifdef __CLR_VER
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __clrcall(Args...)const volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#ifndef _M_AMD64
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __stdcall(Args...)const volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __fastcall(Args...)const volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __vectorcall(Args...)const volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-
-   // reference qualified:
-#ifdef __CLR_VER
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __clrcall(Args...)&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#ifndef _M_AMD64
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __stdcall(Args...)&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __fastcall(Args...)&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __vectorcall(Args...)&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-   // const:
-#ifdef __CLR_VER
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __clrcall(Args...)const &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#ifndef _M_AMD64
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __stdcall(Args...)const &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __fastcall(Args...)const &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __vectorcall(Args...)const &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-   // volatile:
-#ifdef __CLR_VER
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __clrcall(Args...)volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#ifndef _M_AMD64
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __stdcall(Args...)volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __fastcall(Args...)volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __vectorcall(Args...)volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-   // const volatile:
-#ifdef __CLR_VER
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __clrcall(Args...)const volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#ifndef _M_AMD64
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __stdcall(Args...)const volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __fastcall(Args...)const volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __vectorcall(Args...)const volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-
-   // rvalue reference qualified:
-#ifdef __CLR_VER
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __clrcall(Args...) && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#ifndef _M_AMD64
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __stdcall(Args...) && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __fastcall(Args...) && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __vectorcall(Args...) && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-   // const:
-#ifdef __CLR_VER
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __clrcall(Args...)const &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#ifndef _M_AMD64
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __stdcall(Args...)const &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __fastcall(Args...)const &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __vectorcall(Args...)const &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-   // volatile:
-#ifdef __CLR_VER
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __clrcall(Args...)volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#ifndef _M_AMD64
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __stdcall(Args...)volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __fastcall(Args...)volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __vectorcall(Args...)volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-   // const volatile:
-#ifdef __CLR_VER
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __clrcall(Args...)const volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#ifndef _M_AMD64
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __stdcall(Args...)const volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __fastcall(Args...)const volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-   template <class Ret, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_function<Ret __vectorcall(Args...)const volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-
-#endif // _MSC_VER
-
-#endif
-
-}
-
-#undef BOOST_TT_NOEXCEPT_DECL
-#undef BOOST_TT_NOEXCEPT_PARAM
-#undef BOOST_TT_DEF_CALL
-
-#endif // BOOST_TT_IS_FUNCTION_CXX_11_HPP_INCLUDED
-
diff --git a/third_party/boost/boost/type_traits/detail/is_function_msvc10_fix.hpp b/third_party/boost/boost/type_traits/detail/is_function_msvc10_fix.hpp
deleted file mode 100644
index ec8ba9a..0000000
--- a/third_party/boost/boost/type_traits/detail/is_function_msvc10_fix.hpp
+++ /dev/null
@@ -1,30 +0,0 @@
-
-//  (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/type_traits for most recent version including documentation.
-
-#ifndef BOOST_TT_IS_FUNCTION_MSVC10_FIX_HPP_INCLUDED
-#define BOOST_TT_IS_FUNCTION_MSVC10_FIX_HPP_INCLUDED
-
-namespace boost {
-
-template <class R> struct is_function<R(&&)()> : public false_type {};
-template <class R> struct is_function<R(&&)(...)> : public false_type {};
-template <class R, class Arg1> struct is_function<R(&&)(Arg1)> : public false_type {};
-template <class R, class Arg1> struct is_function<R(&&)(Arg1, ...)> : public false_type {};
-template <class R, class Arg1, class Arg2> struct is_function<R(&&)(Arg1, Arg2)> : public false_type {};
-template <class R, class Arg1, class Arg2> struct is_function<R(&&)(Arg1, Arg2, ...)> : public false_type {};
-template <class R, class Arg1, class Arg2, class Arg3> struct is_function<R(&&)(Arg1, Arg2, Arg3)> : public false_type {};
-template <class R, class Arg1, class Arg2, class Arg3> struct is_function<R(&&)(Arg1, Arg2, Arg3, ...)> : public false_type {};
-template <class R, class Arg1, class Arg2, class Arg3, class Arg4> struct is_function<R(&&)(Arg1, Arg2, Arg3, Arg4)> : public false_type {};
-template <class R, class Arg1, class Arg2, class Arg3, class Arg4> struct is_function<R(&&)(Arg1, Arg2, Arg3, Arg4, ...)> : public false_type {};
-template <class R, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5> struct is_function<R(&&)(Arg1, Arg2, Arg3, Arg4, Arg5)> : public false_type {};
-template <class R, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5> struct is_function<R(&&)(Arg1, Arg2, Arg3, Arg4, Arg5, ...)> : public false_type {};
-
-} // namespace boost
-
-#endif // BOOST_TT_IS_REFERENCE_HPP_INCLUDED
-
diff --git a/third_party/boost/boost/type_traits/detail/is_function_ptr_helper.hpp b/third_party/boost/boost/type_traits/detail/is_function_ptr_helper.hpp
deleted file mode 100644
index 73a705c..0000000
--- a/third_party/boost/boost/type_traits/detail/is_function_ptr_helper.hpp
+++ /dev/null
@@ -1,444 +0,0 @@
-
-//  Copyright 2000 John Maddock (john@johnmaddock.co.uk)
-//  Copyright 2002 Aleksey Gurtovoy (agurtovoy@meta-comm.com)
-//
-//  Use, modification and distribution are subject to the Boost Software License,
-//  Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-//  http://www.boost.org/LICENSE_1_0.txt).
-//
-//  See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-#if !defined(BOOST_PP_IS_ITERATING)
-
-///// header body
-
-#ifndef BOOST_TT_DETAIL_IS_FUNCTION_PTR_HELPER_HPP_INCLUDED
-#define BOOST_TT_DETAIL_IS_FUNCTION_PTR_HELPER_HPP_INCLUDED
-
-#if defined(BOOST_TT_PREPROCESSING_MODE)
-//
-// Hide these #include from dependency analysers as
-// these are required in maintenance mode only:
-//
-#define PP1 <boost/preprocessor/iterate.hpp>
-#include PP1
-#undef PP1
-#define PP1 <boost/preprocessor/enum_params.hpp>
-#include PP1
-#undef PP1
-#define PP1 <boost/preprocessor/comma_if.hpp>
-#include PP1
-#undef PP1
-#endif
-
-namespace boost {
-namespace type_traits {
-
-template <class R>
-struct is_function_ptr_helper
-{
-    BOOST_STATIC_CONSTANT(bool, value = false);
-};
-
-#if !defined(BOOST_TT_PREPROCESSING_MODE)
-// preprocessor-generated part, don't edit by hand!
-
-template <class R >
-struct is_function_ptr_helper<R(*)()> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R >
-struct is_function_ptr_helper<R(*)(...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if __cpp_noexcept_function_type
-template <class R >
-struct is_function_ptr_helper<R(*)()noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R >
-struct is_function_ptr_helper<R(*)(...)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-template <class R, class T0>
-struct is_function_ptr_helper<R(*)(T0)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0>
-struct is_function_ptr_helper<R(*)(T0 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if __cpp_noexcept_function_type
-template <class R, class T0>
-struct is_function_ptr_helper<R(*)(T0)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0>
-struct is_function_ptr_helper<R(*)(T0 ...)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-template <class R, class T0, class T1>
-struct is_function_ptr_helper<R(*)(T0, T1)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1>
-struct is_function_ptr_helper<R(*)(T0, T1 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if __cpp_noexcept_function_type
-template <class R, class T0, class T1>
-struct is_function_ptr_helper<R(*)(T0, T1)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1>
-struct is_function_ptr_helper<R(*)(T0, T1 ...)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-template <class R, class T0, class T1, class T2>
-struct is_function_ptr_helper<R(*)(T0, T1, T2)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2>
-struct is_function_ptr_helper<R(*)(T0, T1, T2 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if __cpp_noexcept_function_type
-template <class R, class T0, class T1, class T2>
-struct is_function_ptr_helper<R(*)(T0, T1, T2)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2>
-struct is_function_ptr_helper<R(*)(T0, T1, T2 ...)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-template <class R, class T0, class T1, class T2, class T3>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if __cpp_noexcept_function_type
-template <class R, class T0, class T1, class T2, class T3>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3 ...)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-template <class R, class T0, class T1, class T2, class T3, class T4>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3, class T4>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if __cpp_noexcept_function_type
-template <class R, class T0, class T1, class T2, class T3, class T4>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3, class T4>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4 ...)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if __cpp_noexcept_function_type
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5 ...)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if __cpp_noexcept_function_type
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6 ...)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if __cpp_noexcept_function_type
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7 ...)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if __cpp_noexcept_function_type
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8 ...)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if __cpp_noexcept_function_type
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 ...)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if __cpp_noexcept_function_type
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 ...)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if __cpp_noexcept_function_type
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 ...)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if __cpp_noexcept_function_type
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 ...)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if __cpp_noexcept_function_type
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 ...)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if __cpp_noexcept_function_type
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 ...)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if __cpp_noexcept_function_type
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 ...)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if __cpp_noexcept_function_type
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 ...)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if __cpp_noexcept_function_type
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 ...)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if __cpp_noexcept_function_type
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 ...)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if __cpp_noexcept_function_type
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 ...)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if __cpp_noexcept_function_type
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20 ...)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if __cpp_noexcept_function_type
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21 ...)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if __cpp_noexcept_function_type
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22 ...)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if __cpp_noexcept_function_type
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23 ...)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23, class T24>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23, class T24>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if __cpp_noexcept_function_type
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23, class T24>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23, class T24>
-struct is_function_ptr_helper<R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24 ...)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-#else
-
-#undef BOOST_STATIC_CONSTANT
-#define BOOST_PP_ITERATION_PARAMS_1 \
-    (3, (0, 25, "boost/type_traits/detail/is_function_ptr_helper.hpp"))
-#include BOOST_PP_ITERATE()
-
-#endif // BOOST_TT_PREPROCESSING_MODE
-
-} // namespace type_traits
-} // namespace boost
-
-#endif // BOOST_TT_DETAIL_IS_FUNCTION_PTR_HELPER_HPP_INCLUDED
-
-///// iteration
-
-#else
-#define BOOST_PP_COUNTER BOOST_PP_FRAME_ITERATION(1)
-
-template <class R BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T)>
-struct is_function_ptr_helper<R (*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T))> { BOOST_STATIC_CONSTANT(bool, value = true); };
-@#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T)>
-struct is_function_ptr_helper<R (*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T) ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-@#endif
-@#if __cpp_noexcept_function_type
-template <class R BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER, class T)>
-struct is_function_ptr_helper<R(*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER, T))noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-@#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER, class T)>
-struct is_function_ptr_helper<R(*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER, T) ...)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-@#endif
-@#endif
-#undef BOOST_PP_COUNTER
-#endif // BOOST_PP_IS_ITERATING
diff --git a/third_party/boost/boost/type_traits/detail/is_function_ptr_tester.hpp b/third_party/boost/boost/type_traits/detail/is_function_ptr_tester.hpp
deleted file mode 100644
index 41ddd22..0000000
--- a/third_party/boost/boost/type_traits/detail/is_function_ptr_tester.hpp
+++ /dev/null
@@ -1,609 +0,0 @@
-
-//  (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, 
-//  Aleksey Gurtovoy, Howard Hinnant & John Maddock 2000.  
-//  Use, modification and distribution are subject to the Boost Software License,
-//  Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-//  http://www.boost.org/LICENSE_1_0.txt).
-//
-//  See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-#if !defined(BOOST_PP_IS_ITERATING)
-
-///// header body
-
-#ifndef BOOST_TT_DETAIL_IS_FUNCTION_PTR_TESTER_HPP_INCLUDED
-#define BOOST_TT_DETAIL_IS_FUNCTION_PTR_TESTER_HPP_INCLUDED
-
-#include <boost/type_traits/detail/yes_no_type.hpp>
-
-#if defined(BOOST_TT_PREPROCESSING_MODE)
-//
-// Hide include dependencies from analysers since they're
-// only require in maintenance mode:
-//
-#define PP1 <boost/preprocessor/iterate.hpp>
-#define PP2 <boost/preprocessor/enum_params.hpp>
-#define PP3 <boost/preprocessor/comma_if.hpp>
-#include PP1
-#include PP2
-#include PP3
-#undef PP1
-#undef PP2
-#undef PP3
-#endif
-
-namespace boost {
-namespace type_traits {
-
-// Note it is acceptable to use ellipsis here, since the argument will
-// always be a pointer type of some sort (JM 2005/06/04):
-no_type BOOST_TT_DECL is_function_ptr_tester(...);
-
-#if !defined(BOOST_TT_PREPROCESSING_MODE)
-// pre-processed code, don't edit, try GNU cpp with 
-// cpp -I../../../ -DBOOST_TT_PREPROCESSING_MODE -x c++ -P filename
-
-template <class R >
-yes_type is_function_ptr_tester(R(*)());
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R >
-yes_type is_function_ptr_tester(R(*)(...));
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R >
-yes_type is_function_ptr_tester(R(__stdcall*)());
-#if (_MSC_VER >= 1800) && !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-template <class R >
-yes_type is_function_ptr_tester(R(__vectorcall*)());
-#endif
-#ifndef _MANAGED
-template <class R >
-yes_type is_function_ptr_tester(R(__fastcall*)());
-#endif
-template <class R >
-yes_type is_function_ptr_tester(R(__cdecl*)());
-#endif
-template <class R, class T0 >
-yes_type is_function_ptr_tester(R(*)(T0));
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0 >
-yes_type is_function_ptr_tester(R(*)(T0 ...));
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T0 >
-yes_type is_function_ptr_tester(R(__stdcall*)(T0));
-#if (_MSC_VER >= 1800) && !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-template <class R, class T0 >
-yes_type is_function_ptr_tester(R(__vectorcall*)(T0));
-#endif
-#ifndef _MANAGED
-template <class R, class T0 >
-yes_type is_function_ptr_tester(R(__fastcall*)(T0));
-#endif
-template <class R, class T0 >
-yes_type is_function_ptr_tester(R(__cdecl*)(T0));
-#endif
-template <class R, class T0, class T1 >
-yes_type is_function_ptr_tester(R(*)(T0, T1));
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1 >
-yes_type is_function_ptr_tester(R(*)(T0, T1 ...));
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T0, class T1 >
-yes_type is_function_ptr_tester(R(__stdcall*)(T0, T1));
-#if (_MSC_VER >= 1800) && !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-template <class R, class T0, class T1 >
-yes_type is_function_ptr_tester(R(__vectorcall*)(T0, T1));
-#endif
-#ifndef _MANAGED
-template <class R, class T0, class T1 >
-yes_type is_function_ptr_tester(R(__fastcall*)(T0, T1));
-#endif
-template <class R, class T0, class T1 >
-yes_type is_function_ptr_tester(R(__cdecl*)(T0, T1));
-#endif
-template <class R, class T0, class T1, class T2 >
-yes_type is_function_ptr_tester(R(*)(T0, T1, T2));
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2 >
-yes_type is_function_ptr_tester(R(*)(T0, T1, T2 ...));
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T0, class T1, class T2 >
-yes_type is_function_ptr_tester(R(__stdcall*)(T0, T1, T2));
-#if (_MSC_VER >= 1800) && !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-template <class R, class T0, class T1, class T2 >
-yes_type is_function_ptr_tester(R(__vectorcall*)(T0, T1, T2));
-#endif
-#ifndef _MANAGED
-template <class R, class T0, class T1, class T2 >
-yes_type is_function_ptr_tester(R(__fastcall*)(T0, T1, T2));
-#endif
-template <class R, class T0, class T1, class T2 >
-yes_type is_function_ptr_tester(R(__cdecl*)(T0, T1, T2));
-#endif
-template <class R, class T0, class T1, class T2, class T3 >
-yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3));
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3 >
-yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3 ...));
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T0, class T1, class T2, class T3 >
-yes_type is_function_ptr_tester(R(__stdcall*)(T0, T1, T2, T3));
-#if (_MSC_VER >= 1800) && !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-template <class R, class T0, class T1, class T2, class T3 >
-yes_type is_function_ptr_tester(R(__vectorcall*)(T0, T1, T2, T3));
-#endif
-#ifndef _MANAGED
-template <class R, class T0, class T1, class T2, class T3 >
-yes_type is_function_ptr_tester(R(__fastcall*)(T0, T1, T2, T3));
-#endif
-template <class R, class T0, class T1, class T2, class T3 >
-yes_type is_function_ptr_tester(R(__cdecl*)(T0, T1, T2, T3));
-#endif
-template <class R, class T0, class T1, class T2, class T3, class T4 >
-yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4));
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3, class T4 >
-yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4 ...));
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T0, class T1, class T2, class T3, class T4 >
-yes_type is_function_ptr_tester(R(__stdcall*)(T0, T1, T2, T3, T4));
-#if (_MSC_VER >= 1800) && !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-template <class R, class T0, class T1, class T2, class T3, class T4 >
-yes_type is_function_ptr_tester(R(__vectorcall*)(T0, T1, T2, T3, T4));
-#endif
-#ifndef _MANAGED
-template <class R, class T0, class T1, class T2, class T3, class T4 >
-yes_type is_function_ptr_tester(R(__fastcall*)(T0, T1, T2, T3, T4));
-#endif
-template <class R, class T0, class T1, class T2, class T3, class T4 >
-yes_type is_function_ptr_tester(R(__cdecl*)(T0, T1, T2, T3, T4));
-#endif
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5 >
-yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5));
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5 >
-yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5 ...));
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5 >
-yes_type is_function_ptr_tester(R(__stdcall*)(T0, T1, T2, T3, T4, T5));
-#if (_MSC_VER >= 1800) && !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5 >
-yes_type is_function_ptr_tester(R(__vectorcall*)(T0, T1, T2, T3, T4, T5));
-#endif
-#ifndef _MANAGED
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5 >
-yes_type is_function_ptr_tester(R(__fastcall*)(T0, T1, T2, T3, T4, T5));
-#endif
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5 >
-yes_type is_function_ptr_tester(R(__cdecl*)(T0, T1, T2, T3, T4, T5));
-#endif
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6 >
-yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6));
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6 >
-yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6 ...));
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6 >
-yes_type is_function_ptr_tester(R(__stdcall*)(T0, T1, T2, T3, T4, T5, T6));
-#if (_MSC_VER >= 1800) && !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6 >
-yes_type is_function_ptr_tester(R(__vectorcall*)(T0, T1, T2, T3, T4, T5, T6));
-#endif
-#ifndef _MANAGED
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6 >
-yes_type is_function_ptr_tester(R(__fastcall*)(T0, T1, T2, T3, T4, T5, T6));
-#endif
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6 >
-yes_type is_function_ptr_tester(R(__cdecl*)(T0, T1, T2, T3, T4, T5, T6));
-#endif
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7 >
-yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7));
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7 >
-yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7 ...));
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7 >
-yes_type is_function_ptr_tester(R(__stdcall*)(T0, T1, T2, T3, T4, T5, T6, T7));
-#if (_MSC_VER >= 1800) && !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7 >
-yes_type is_function_ptr_tester(R(__vectorcall*)(T0, T1, T2, T3, T4, T5, T6, T7));
-#endif
-#ifndef _MANAGED
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7 >
-yes_type is_function_ptr_tester(R(__fastcall*)(T0, T1, T2, T3, T4, T5, T6, T7));
-#endif
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7 >
-yes_type is_function_ptr_tester(R(__cdecl*)(T0, T1, T2, T3, T4, T5, T6, T7));
-#endif
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8 >
-yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8));
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8 >
-yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8 ...));
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8 >
-yes_type is_function_ptr_tester(R(__stdcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8));
-#if (_MSC_VER >= 1800) && !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8 >
-yes_type is_function_ptr_tester(R(__vectorcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8));
-#endif
-#ifndef _MANAGED
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8 >
-yes_type is_function_ptr_tester(R(__fastcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8));
-#endif
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8 >
-yes_type is_function_ptr_tester(R(__cdecl*)(T0, T1, T2, T3, T4, T5, T6, T7, T8));
-#endif
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9 >
-yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9));
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9 >
-yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 ...));
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9 >
-yes_type is_function_ptr_tester(R(__stdcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9));
-#if (_MSC_VER >= 1800) && !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9 >
-yes_type is_function_ptr_tester(R(__vectorcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9));
-#endif
-#ifndef _MANAGED
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9 >
-yes_type is_function_ptr_tester(R(__fastcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9));
-#endif
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9 >
-yes_type is_function_ptr_tester(R(__cdecl*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9));
-#endif
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10 >
-yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10));
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10 >
-yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 ...));
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10 >
-yes_type is_function_ptr_tester(R(__stdcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10));
-#if (_MSC_VER >= 1800) && !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10 >
-yes_type is_function_ptr_tester(R(__vectorcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10));
-#endif
-#ifndef _MANAGED
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10 >
-yes_type is_function_ptr_tester(R(__fastcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10));
-#endif
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10 >
-yes_type is_function_ptr_tester(R(__cdecl*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10));
-#endif
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11 >
-yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11));
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11 >
-yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 ...));
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11 >
-yes_type is_function_ptr_tester(R(__stdcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11));
-#if (_MSC_VER >= 1800) && !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11 >
-yes_type is_function_ptr_tester(R(__vectorcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11));
-#endif
-#ifndef _MANAGED
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11 >
-yes_type is_function_ptr_tester(R(__fastcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11));
-#endif
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11 >
-yes_type is_function_ptr_tester(R(__cdecl*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11));
-#endif
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12 >
-yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12));
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12 >
-yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 ...));
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12 >
-yes_type is_function_ptr_tester(R(__stdcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12));
-#if (_MSC_VER >= 1800) && !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12 >
-yes_type is_function_ptr_tester(R(__vectorcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12));
-#endif
-#ifndef _MANAGED
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12 >
-yes_type is_function_ptr_tester(R(__fastcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12));
-#endif
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12 >
-yes_type is_function_ptr_tester(R(__cdecl*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12));
-#endif
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13 >
-yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13));
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13 >
-yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 ...));
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13 >
-yes_type is_function_ptr_tester(R(__stdcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13));
-#if (_MSC_VER >= 1800) && !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13 >
-yes_type is_function_ptr_tester(R(__vectorcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13));
-#endif
-#ifndef _MANAGED
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13 >
-yes_type is_function_ptr_tester(R(__fastcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13));
-#endif
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13 >
-yes_type is_function_ptr_tester(R(__cdecl*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13));
-#endif
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14 >
-yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14));
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14 >
-yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 ...));
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14 >
-yes_type is_function_ptr_tester(R(__stdcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14));
-#if (_MSC_VER >= 1800) && !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14 >
-yes_type is_function_ptr_tester(R(__vectorcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14));
-#endif
-#ifndef _MANAGED
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14 >
-yes_type is_function_ptr_tester(R(__fastcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14));
-#endif
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14 >
-yes_type is_function_ptr_tester(R(__cdecl*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14));
-#endif
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15 >
-yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15));
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15 >
-yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 ...));
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15 >
-yes_type is_function_ptr_tester(R(__stdcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15));
-#if (_MSC_VER >= 1800) && !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15 >
-yes_type is_function_ptr_tester(R(__vectorcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15));
-#endif
-#ifndef _MANAGED
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15 >
-yes_type is_function_ptr_tester(R(__fastcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15));
-#endif
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15 >
-yes_type is_function_ptr_tester(R(__cdecl*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15));
-#endif
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16 >
-yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16));
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16 >
-yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 ...));
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16 >
-yes_type is_function_ptr_tester(R(__stdcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16));
-#if (_MSC_VER >= 1800) && !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16 >
-yes_type is_function_ptr_tester(R(__vectorcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16));
-#endif
-#ifndef _MANAGED
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16 >
-yes_type is_function_ptr_tester(R(__fastcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16));
-#endif
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16 >
-yes_type is_function_ptr_tester(R(__cdecl*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16));
-#endif
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17 >
-yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17));
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17 >
-yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 ...));
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17 >
-yes_type is_function_ptr_tester(R(__stdcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17));
-#if (_MSC_VER >= 1800) && !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17 >
-yes_type is_function_ptr_tester(R(__vectorcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17));
-#endif
-#ifndef _MANAGED
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17 >
-yes_type is_function_ptr_tester(R(__fastcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17));
-#endif
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17 >
-yes_type is_function_ptr_tester(R(__cdecl*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17));
-#endif
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18 >
-yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18));
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18 >
-yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 ...));
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18 >
-yes_type is_function_ptr_tester(R(__stdcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18));
-#if (_MSC_VER >= 1800) && !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18 >
-yes_type is_function_ptr_tester(R(__vectorcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18));
-#endif
-#ifndef _MANAGED
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18 >
-yes_type is_function_ptr_tester(R(__fastcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18));
-#endif
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18 >
-yes_type is_function_ptr_tester(R(__cdecl*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18));
-#endif
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19 >
-yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19));
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19 >
-yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 ...));
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19 >
-yes_type is_function_ptr_tester(R(__stdcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19));
-#if (_MSC_VER >= 1800) && !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19 >
-yes_type is_function_ptr_tester(R(__vectorcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19));
-#endif
-#ifndef _MANAGED
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19 >
-yes_type is_function_ptr_tester(R(__fastcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19));
-#endif
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19 >
-yes_type is_function_ptr_tester(R(__cdecl*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19));
-#endif
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20 >
-yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20));
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20 >
-yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20 ...));
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20 >
-yes_type is_function_ptr_tester(R(__stdcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20));
-#if (_MSC_VER >= 1800) && !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20 >
-yes_type is_function_ptr_tester(R(__vectorcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20));
-#endif
-#ifndef _MANAGED
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20 >
-yes_type is_function_ptr_tester(R(__fastcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20));
-#endif
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20 >
-yes_type is_function_ptr_tester(R(__cdecl*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20));
-#endif
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21 >
-yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21));
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21 >
-yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21 ...));
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21 >
-yes_type is_function_ptr_tester(R(__stdcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21));
-#if (_MSC_VER >= 1800) && !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21 >
-yes_type is_function_ptr_tester(R(__vectorcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21));
-#endif
-#ifndef _MANAGED
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21 >
-yes_type is_function_ptr_tester(R(__fastcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21));
-#endif
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21 >
-yes_type is_function_ptr_tester(R(__cdecl*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21));
-#endif
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22 >
-yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22));
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22 >
-yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22 ...));
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22 >
-yes_type is_function_ptr_tester(R(__stdcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22));
-#if (_MSC_VER >= 1800) && !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22 >
-yes_type is_function_ptr_tester(R(__vectorcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22));
-#endif
-#ifndef _MANAGED
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22 >
-yes_type is_function_ptr_tester(R(__fastcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22));
-#endif
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22 >
-yes_type is_function_ptr_tester(R(__cdecl*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22));
-#endif
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23 >
-yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23));
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23 >
-yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23 ...));
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23 >
-yes_type is_function_ptr_tester(R(__stdcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23));
-#if (_MSC_VER >= 1800) && !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23 >
-yes_type is_function_ptr_tester(R(__vectorcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23));
-#endif
-#ifndef _MANAGED
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23 >
-yes_type is_function_ptr_tester(R(__fastcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23));
-#endif
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23 >
-yes_type is_function_ptr_tester(R(__cdecl*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23));
-#endif
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23, class T24 >
-yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24));
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23, class T24 >
-yes_type is_function_ptr_tester(R(*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24 ...));
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23, class T24 >
-yes_type is_function_ptr_tester(R(__stdcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24));
-#if (_MSC_VER >= 1800) && !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23, class T24 >
-yes_type is_function_ptr_tester(R(__vectorcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24));
-#endif
-#ifndef _MANAGED
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23, class T24 >
-yes_type is_function_ptr_tester(R(__fastcall*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24));
-#endif
-template <class R, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23, class T24 >
-yes_type is_function_ptr_tester(R(__cdecl*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24));
-#endif
-#else
-
-#define BOOST_PP_ITERATION_PARAMS_1 \
-    (3, (0, 25, "boost/type_traits/detail/is_function_ptr_tester.hpp"))
-#include BOOST_PP_ITERATE()
-
-#endif // BOOST_TT_PREPROCESSING_MODE
-
-} // namespace type_traits
-} // namespace boost
-
-#endif // BOOST_TT_DETAIL_IS_FUNCTION_PTR_TESTER_HPP_INCLUDED
-
-///// iteration
-
-#else
-#define BOOST_PP_COUNTER BOOST_PP_FRAME_ITERATION(1)
-#undef __stdcall
-#undef __fastcall
-#undef __cdecl
-
-template <class R BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_function_ptr_tester(R (*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)));
-@#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_function_ptr_tester(R (*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T) ...));
-@#endif
-@#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_function_ptr_tester(R (__stdcall*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)));
-@#if (_MSC_VER >= 1800) && !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-template <class R BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER, class T) >
-yes_type is_function_ptr_tester(R(__vectorcall*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER, T)));
-@#endif
-@#ifndef _MANAGED
-template <class R BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_function_ptr_tester(R (__fastcall*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)));
-@#endif
-template <class R BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_function_ptr_tester(R (__cdecl*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)));
-@#endif
-
-#undef BOOST_PP_COUNTER
-#endif // BOOST_PP_IS_ITERATING
diff --git a/third_party/boost/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp b/third_party/boost/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp
deleted file mode 100644
index dcc6e2a..0000000
--- a/third_party/boost/boost/type_traits/detail/is_mem_fun_pointer_impl.hpp
+++ /dev/null
@@ -1,1328 +0,0 @@
-
-//  (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, 
-//  Aleksey Gurtovoy, Howard Hinnant & John Maddock 2000.  
-//  Use, modification and distribution are subject to the Boost Software License,
-//  Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-//  http://www.boost.org/LICENSE_1_0.txt).
-//
-//  See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-#if !defined(BOOST_PP_IS_ITERATING)
-
-///// header body
-
-#ifndef BOOST_TT_DETAIL_IS_MEM_FUN_POINTER_IMPL_HPP_INCLUDED
-#define BOOST_TT_DETAIL_IS_MEM_FUN_POINTER_IMPL_HPP_INCLUDED
-
-#include <boost/config.hpp>
-
-#if defined(BOOST_TT_PREPROCESSING_MODE)
-//
-// Maintenance mode, hide include dependencies
-// from trackers:
-//
-#define PPI <boost/preprocessor/iterate.hpp>
-#include PPI
-#undef PPI
-#define PPI <boost/preprocessor/enum_params.hpp>
-#include PPI
-#undef PPI
-#define PPI <boost/preprocessor/comma_if.hpp>
-#include PPI
-#undef PPI
-#endif
-
-namespace boost {
-namespace type_traits {
-
-template <typename T>
-struct is_mem_fun_pointer_impl
-{
-    BOOST_STATIC_CONSTANT(bool, value = false);
-};
-
-#if !defined(BOOST_TT_PREPROCESSING_MODE)
-// pre-processed code, don't edit, try GNU cpp with 
-// cpp -I../../../ -DBOOST_TT_PREPROCESSING_MODE -x c++ -P filename
-
-template <class R, class T >
-struct is_mem_fun_pointer_impl<R(T::*)()> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T >
-struct is_mem_fun_pointer_impl<R(T::*)(...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T >
-struct is_mem_fun_pointer_impl<R(T::*)() const> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T >
-struct is_mem_fun_pointer_impl<R(T::*)() volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T >
-struct is_mem_fun_pointer_impl<R(T::*)() const volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T >
-struct is_mem_fun_pointer_impl<R(T::*)(...) const> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T >
-struct is_mem_fun_pointer_impl<R(T::*)(...) volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T >
-struct is_mem_fun_pointer_impl<R(T::*)(...) const volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-#if __cpp_noexcept_function_type
-template <class R, class T >
-struct is_mem_fun_pointer_impl<R(T::*)()noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T >
-struct is_mem_fun_pointer_impl<R(T::*)(...)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T >
-struct is_mem_fun_pointer_impl<R(T::*)() const noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T >
-struct is_mem_fun_pointer_impl<R(T::*)() volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T >
-struct is_mem_fun_pointer_impl<R(T::*)() const volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T >
-struct is_mem_fun_pointer_impl<R(T::*)(...) const noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T >
-struct is_mem_fun_pointer_impl<R(T::*)(...) volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T >
-struct is_mem_fun_pointer_impl<R(T::*)(...) const volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-#endif
-template <class R, class T, class T0>
-struct is_mem_fun_pointer_impl<R(T::*)(T0)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0>
-struct is_mem_fun_pointer_impl<R(T::*)(T0 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T, class T0>
-struct is_mem_fun_pointer_impl<R(T::*)(T0) const> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0>
-struct is_mem_fun_pointer_impl<R(T::*)(T0) volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0>
-struct is_mem_fun_pointer_impl<R(T::*)(T0) const volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0>
-struct is_mem_fun_pointer_impl<R(T::*)(T0 ...) const> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0>
-struct is_mem_fun_pointer_impl<R(T::*)(T0 ...) volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0>
-struct is_mem_fun_pointer_impl<R(T::*)(T0 ...) const volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-#if __cpp_noexcept_function_type
-template <class R, class T, class T0>
-struct is_mem_fun_pointer_impl<R(T::*)(T0)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0>
-struct is_mem_fun_pointer_impl<R(T::*)(T0 ...)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T, class T0>
-struct is_mem_fun_pointer_impl<R(T::*)(T0) const noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0>
-struct is_mem_fun_pointer_impl<R(T::*)(T0) volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0>
-struct is_mem_fun_pointer_impl<R(T::*)(T0) const volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0>
-struct is_mem_fun_pointer_impl<R(T::*)(T0 ...) const noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0>
-struct is_mem_fun_pointer_impl<R(T::*)(T0 ...) volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0>
-struct is_mem_fun_pointer_impl<R(T::*)(T0 ...) const volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-#endif
-template <class R, class T, class T0, class T1>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T, class T0, class T1>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1) const> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1) volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1) const volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1 ...) const> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1 ...) volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1 ...) const volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-#if __cpp_noexcept_function_type
-template <class R, class T, class T0, class T1>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1 ...)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T, class T0, class T1>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1) const noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1) volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1) const volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1 ...) const noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1 ...) volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1 ...) const volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-#endif
-template <class R, class T, class T0, class T1, class T2>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T, class T0, class T1, class T2>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2) const> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2) volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2) const volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2 ...) const> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2 ...) volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2 ...) const volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-#if __cpp_noexcept_function_type
-template <class R, class T, class T0, class T1, class T2>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2 ...)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T, class T0, class T1, class T2>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2) const noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2) volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2) const volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2 ...) const noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2 ...) volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2 ...) const volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T, class T0, class T1, class T2, class T3>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3) const> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3) volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3) const volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3 ...) const> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3 ...) volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3 ...) const volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-#if __cpp_noexcept_function_type
-template <class R, class T, class T0, class T1, class T2, class T3>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3 ...)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T, class T0, class T1, class T2, class T3>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3) const noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3) volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3) const volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3 ...) const noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3 ...) volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3 ...) const volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3, class T4>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T, class T0, class T1, class T2, class T3, class T4>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4) const> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4) volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4) const volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4 ...) const> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4 ...) volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4 ...) const volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-#if __cpp_noexcept_function_type
-template <class R, class T, class T0, class T1, class T2, class T3, class T4>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4 ...)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T, class T0, class T1, class T2, class T3, class T4>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4) const noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4) volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4) const volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4 ...) const noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4 ...) volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4 ...) const volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5) const> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5) volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5) const volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5 ...) const> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5 ...) volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5 ...) const volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-#if __cpp_noexcept_function_type
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5 ...)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5) const noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5) volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5) const volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5 ...) const noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5 ...) volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5 ...) const volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6) const> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6) volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6) const volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6 ...) const> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6 ...) volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6 ...) const volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-#if __cpp_noexcept_function_type
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6 ...)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6) const noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6) volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6) const volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6 ...) const noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6 ...) volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6 ...) const volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7) const> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7) volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7) const volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7 ...) const> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7 ...) volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7 ...) const volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-#if __cpp_noexcept_function_type
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7 ...)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7) const noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7) volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7) const volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7 ...) const noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7 ...) volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7 ...) const volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8) const> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8) volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8) const volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8 ...) const> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8 ...) volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8 ...) const volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-#if __cpp_noexcept_function_type
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8 ...)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8) const noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8) volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8) const volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8 ...) const noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8 ...) volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8 ...) const volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) const> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) const volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 ...) const> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 ...) volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 ...) const volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-#if __cpp_noexcept_function_type
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 ...)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) const noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) const volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 ...) const noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 ...) volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 ...) const volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) const> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) const volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 ...) const> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 ...) volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 ...) const volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-#if __cpp_noexcept_function_type
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 ...)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) const noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) const volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 ...) const noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 ...) volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 ...) const volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) const> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) const volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 ...) const> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 ...) volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 ...) const volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-#if __cpp_noexcept_function_type
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 ...)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) const noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) const volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 ...) const noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 ...) volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 ...) const volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) const> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) const volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 ...) const> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 ...) volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 ...) const volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-#if __cpp_noexcept_function_type
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 ...)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) const noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) const volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 ...) const noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 ...) volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 ...) const volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) const> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) const volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 ...) const> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 ...) volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 ...) const volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-#if __cpp_noexcept_function_type
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 ...)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) const noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) const volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 ...) const noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 ...) volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 ...) const volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) const> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) const volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 ...) const> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 ...) volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 ...) const volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-#if __cpp_noexcept_function_type
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 ...)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) const noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) const volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 ...) const noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 ...) volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 ...) const volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) const> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) const volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 ...) const> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 ...) volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 ...) const volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-#if __cpp_noexcept_function_type
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 ...)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) const noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) const volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 ...) const noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 ...) volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 ...) const volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16) const> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16) volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16) const volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 ...) const> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 ...) volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 ...) const volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-#if __cpp_noexcept_function_type
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 ...)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16) const noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16) volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16) const volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 ...) const noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 ...) volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 ...) const volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17) const> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17) volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17) const volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 ...) const> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 ...) volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 ...) const volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-#if __cpp_noexcept_function_type
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 ...)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17) const noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17) volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17) const volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 ...) const noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 ...) volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 ...) const volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18) const> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18) volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18) const volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 ...) const> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 ...) volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 ...) const volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-#if __cpp_noexcept_function_type
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 ...)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18) const noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18) volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18) const volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 ...) const noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 ...) volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 ...) const volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19) const> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19) volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19) const volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 ...) const> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 ...) volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 ...) const volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-#if __cpp_noexcept_function_type
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 ...)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19) const noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19) volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19) const volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 ...) const noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 ...) volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 ...) const volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) const> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) const volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20 ...) const> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20 ...) volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20 ...) const volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-#if __cpp_noexcept_function_type
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20 ...)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) const noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) const volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20 ...) const noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20 ...) volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20 ...) const volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21) const> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21) volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21) const volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21 ...) const> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21 ...) volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21 ...) const volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-#if __cpp_noexcept_function_type
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21 ...)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21) const noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21) volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21) const volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21 ...) const noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21 ...) volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21 ...) const volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22) const> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22) volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22) const volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22 ...) const> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22 ...) volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22 ...) const volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-#if __cpp_noexcept_function_type
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22 ...)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22) const noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22) volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22) const volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22 ...) const noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22 ...) volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22 ...) const volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23) const> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23) volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23) const volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23 ...) const> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23 ...) volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23 ...) const volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-#if __cpp_noexcept_function_type
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23 ...)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23) const noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23) volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23) const volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23 ...) const noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23 ...) volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23 ...) const volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23, class T24>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23, class T24>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24 ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23, class T24>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24) const> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23, class T24>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24) volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23, class T24>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24) const volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23, class T24>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24 ...) const> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23, class T24>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24 ...) volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23, class T24>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24 ...) const volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-#if __cpp_noexcept_function_type
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23, class T24>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23, class T24>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24 ...)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23, class T24>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24) const noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23, class T24>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24) volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23, class T24>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24) const volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23, class T24>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24 ...) const noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23, class T24>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24 ...) volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23, class T24>
-struct is_mem_fun_pointer_impl<R(T::*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24 ...) const volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-#endif
-#endif
-#endif
-
-#else
-
-#undef BOOST_STATIC_CONSTANT
-#define BOOST_PP_ITERATION_PARAMS_1 \
-    (3, (0, 25, "boost/type_traits/detail/is_mem_fun_pointer_impl.hpp"))
-#include BOOST_PP_ITERATE()
-
-#endif // BOOST_TT_PREPROCESSING_MODE
-
-} // namespace type_traits
-} // namespace boost
-
-#endif // BOOST_TT_DETAIL_IS_MEM_FUN_POINTER_IMPL_HPP_INCLUDED
-
-///// iteration
-
-#else
-#define BOOST_PP_COUNTER BOOST_PP_FRAME_ITERATION(1)
-
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T)>
-struct is_mem_fun_pointer_impl<R (T::*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T))> { BOOST_STATIC_CONSTANT(bool, value = true); };
-@#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T)>
-struct is_mem_fun_pointer_impl<R (T::*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T) ...)> { BOOST_STATIC_CONSTANT(bool, value = true); };
-@#endif
-
-@#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T)>
-struct is_mem_fun_pointer_impl<R (T::*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)) const> { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T)>
-struct is_mem_fun_pointer_impl<R (T::*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)) volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T)>
-struct is_mem_fun_pointer_impl<R (T::*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)) const volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-@#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T)>
-struct is_mem_fun_pointer_impl<R (T::*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T) ...) const> { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T)>
-struct is_mem_fun_pointer_impl<R (T::*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T) ...) volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T)>
-struct is_mem_fun_pointer_impl<R (T::*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T) ...) const volatile> { BOOST_STATIC_CONSTANT(bool, value = true); };
-@#endif
-@#endif
-
-@#if __cpp_noexcept_function_type
-
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER, class T)>
-struct is_mem_fun_pointer_impl<R(T::*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER, T))noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-@#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER, class T)>
-struct is_mem_fun_pointer_impl<R(T::*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER, T) ...)noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-@#endif
-
-@#if !defined(BOOST_TT_NO_CV_FUNC_TEST)
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER, class T)>
-struct is_mem_fun_pointer_impl<R(T::*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER, T)) const noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER, class T)>
-struct is_mem_fun_pointer_impl<R(T::*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER, T)) volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER, class T)>
-struct is_mem_fun_pointer_impl<R(T::*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER, T)) const volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-@#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER, class T)>
-struct is_mem_fun_pointer_impl<R(T::*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER, T) ...) const noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER, class T)>
-struct is_mem_fun_pointer_impl<R(T::*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER, T) ...) volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER, class T)>
-struct is_mem_fun_pointer_impl<R(T::*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER, T) ...) const volatile noexcept> { BOOST_STATIC_CONSTANT(bool, value = true); };
-@#endif
-@#endif
-
-@#endif
-
-#undef BOOST_PP_COUNTER
-#endif // BOOST_PP_IS_ITERATING
-
diff --git a/third_party/boost/boost/type_traits/detail/is_mem_fun_pointer_tester.hpp b/third_party/boost/boost/type_traits/detail/is_mem_fun_pointer_tester.hpp
deleted file mode 100644
index 2de883f..0000000
--- a/third_party/boost/boost/type_traits/detail/is_mem_fun_pointer_tester.hpp
+++ /dev/null
@@ -1,1603 +0,0 @@
-
-//  (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, 
-//  Aleksey Gurtovoy, Howard Hinnant & John Maddock 2000.  
-//  Use, modification and distribution are subject to the Boost Software License,
-//  Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-//  http://www.boost.org/LICENSE_1_0.txt).
-//
-//  See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-#if !defined(BOOST_PP_IS_ITERATING)
-
-///// header body
-
-#ifndef BOOST_TT_DETAIL_IS_MEM_FUN_POINTER_TESTER_HPP_INCLUDED
-#define BOOST_TT_DETAIL_IS_MEM_FUN_POINTER_TESTER_HPP_INCLUDED
-
-#include <boost/type_traits/detail/yes_no_type.hpp>
-#include <boost/type_traits/detail/config.hpp>
-
-#if defined(BOOST_TT_PREPROCESSING_MODE)
-//
-// Maintentance mode, hide include dependencies
-// from dependency trackers:
-//
-#define PPI <boost/preprocessor/iterate.hpp>
-#include PPI
-#undef PPI
-#define PPI <boost/preprocessor/enum_params.hpp>
-#include PPI
-#undef PPI
-#define PPI <boost/preprocessor/comma_if.hpp>
-#include PPI
-#undef PPI
-#endif
-
-namespace boost {
-namespace type_traits {
-
-no_type BOOST_TT_DECL is_mem_fun_pointer_tester(...);
-
-#if !defined(BOOST_TT_PREPROCESSING_MODE)
-// pre-processed code, don't edit, try GNU cpp with 
-// cpp -I../../../ -DBOOST_TT_PREPROCESSING_MODE -x c++ -P filename
-
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)());
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)() const);
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)() volatile);
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)() const volatile);
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(...));
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(...) const);
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(...) volatile);
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(...) const volatile);
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)());
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)() const);
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)() volatile);
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)() const volatile);
-#if (_MSC_VER >= 1800) && !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)());
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)() const);
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)() volatile);
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)() const volatile);
-#endif
-#ifndef _MANAGED
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)());
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)() const);
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)() volatile);
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)() const volatile);
-#endif
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)());
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)() const);
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)() volatile);
-template <class R, class T >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)() const volatile);
-#endif
-template <class R, class T, class T0 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0));
-template <class R, class T, class T0 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0) const);
-template <class R, class T, class T0 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0) volatile);
-template <class R, class T, class T0 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0) const volatile);
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0 ...));
-template <class R, class T, class T0 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0 ...) const);
-template <class R, class T, class T0 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0 ...) volatile);
-template <class R, class T, class T0 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0 ...) const volatile);
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T, class T0 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0));
-template <class R, class T, class T0 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0) const);
-template <class R, class T, class T0 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0) volatile);
-template <class R, class T, class T0 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0) const volatile);
-#if (_MSC_VER >= 1800) && !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-template <class R, class T, class T0 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0));
-template <class R, class T, class T0 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0) const);
-template <class R, class T, class T0 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0) volatile);
-template <class R, class T, class T0 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0) const volatile);
-#endif
-#ifndef _MANAGED
-template <class R, class T, class T0 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0));
-template <class R, class T, class T0 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0) const);
-template <class R, class T, class T0 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0) volatile);
-template <class R, class T, class T0 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0) const volatile);
-#endif
-template <class R, class T, class T0 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0));
-template <class R, class T, class T0 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0) const);
-template <class R, class T, class T0 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0) volatile);
-template <class R, class T, class T0 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0) const volatile);
-#endif
-template <class R, class T, class T0, class T1 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1));
-template <class R, class T, class T0, class T1 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1) const);
-template <class R, class T, class T0, class T1 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1) volatile);
-template <class R, class T, class T0, class T1 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1) const volatile);
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1 ...));
-template <class R, class T, class T0, class T1 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1 ...) const);
-template <class R, class T, class T0, class T1 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1 ...) volatile);
-template <class R, class T, class T0, class T1 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1 ...) const volatile);
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T, class T0, class T1 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1));
-template <class R, class T, class T0, class T1 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1) const);
-template <class R, class T, class T0, class T1 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1) volatile);
-template <class R, class T, class T0, class T1 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1) const volatile);
-#if (_MSC_VER >= 1800) && !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-template <class R, class T, class T0, class T1 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1));
-template <class R, class T, class T0, class T1 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1) const);
-template <class R, class T, class T0, class T1 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1) volatile);
-template <class R, class T, class T0, class T1 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1) const volatile);
-#endif
-#ifndef _MANAGED
-template <class R, class T, class T0, class T1 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1));
-template <class R, class T, class T0, class T1 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1) const);
-template <class R, class T, class T0, class T1 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1) volatile);
-template <class R, class T, class T0, class T1 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1) const volatile);
-#endif
-template <class R, class T, class T0, class T1 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1));
-template <class R, class T, class T0, class T1 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1) const);
-template <class R, class T, class T0, class T1 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1) volatile);
-template <class R, class T, class T0, class T1 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1) const volatile);
-#endif
-template <class R, class T, class T0, class T1, class T2 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2));
-template <class R, class T, class T0, class T1, class T2 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2) const);
-template <class R, class T, class T0, class T1, class T2 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2) volatile);
-template <class R, class T, class T0, class T1, class T2 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2) const volatile);
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2 ...));
-template <class R, class T, class T0, class T1, class T2 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2 ...) const);
-template <class R, class T, class T0, class T1, class T2 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2 ...) volatile);
-template <class R, class T, class T0, class T1, class T2 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2 ...) const volatile);
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T, class T0, class T1, class T2 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2));
-template <class R, class T, class T0, class T1, class T2 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2) const);
-template <class R, class T, class T0, class T1, class T2 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2) volatile);
-template <class R, class T, class T0, class T1, class T2 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2) const volatile);
-#if (_MSC_VER >= 1800) && !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-template <class R, class T, class T0, class T1, class T2 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2));
-template <class R, class T, class T0, class T1, class T2 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2) const);
-template <class R, class T, class T0, class T1, class T2 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2) volatile);
-template <class R, class T, class T0, class T1, class T2 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2) const volatile);
-#endif
-#ifndef _MANAGED
-template <class R, class T, class T0, class T1, class T2 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2));
-template <class R, class T, class T0, class T1, class T2 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2) const);
-template <class R, class T, class T0, class T1, class T2 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2) volatile);
-template <class R, class T, class T0, class T1, class T2 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2) const volatile);
-#endif
-template <class R, class T, class T0, class T1, class T2 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2));
-template <class R, class T, class T0, class T1, class T2 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2) const);
-template <class R, class T, class T0, class T1, class T2 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2) volatile);
-template <class R, class T, class T0, class T1, class T2 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2) const volatile);
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3));
-template <class R, class T, class T0, class T1, class T2, class T3 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3) const);
-template <class R, class T, class T0, class T1, class T2, class T3 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3) const volatile);
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3 ...));
-template <class R, class T, class T0, class T1, class T2, class T3 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3 ...) const);
-template <class R, class T, class T0, class T1, class T2, class T3 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3 ...) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3 ...) const volatile);
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T, class T0, class T1, class T2, class T3 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3));
-template <class R, class T, class T0, class T1, class T2, class T3 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3) const);
-template <class R, class T, class T0, class T1, class T2, class T3 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3) const volatile);
-#if (_MSC_VER >= 1800) && !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-template <class R, class T, class T0, class T1, class T2, class T3 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3));
-template <class R, class T, class T0, class T1, class T2, class T3 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3) const);
-template <class R, class T, class T0, class T1, class T2, class T3 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3) const volatile);
-#endif
-#ifndef _MANAGED
-template <class R, class T, class T0, class T1, class T2, class T3 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3));
-template <class R, class T, class T0, class T1, class T2, class T3 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3) const);
-template <class R, class T, class T0, class T1, class T2, class T3 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3) const volatile);
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3));
-template <class R, class T, class T0, class T1, class T2, class T3 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3) const);
-template <class R, class T, class T0, class T1, class T2, class T3 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3) const volatile);
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3, class T4 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4) const volatile);
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4 ...));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4 ...) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4 ...) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4 ...) const volatile);
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T, class T0, class T1, class T2, class T3, class T4 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4) const volatile);
-#if (_MSC_VER >= 1800) && !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-template <class R, class T, class T0, class T1, class T2, class T3, class T4 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4) const volatile);
-#endif
-#ifndef _MANAGED
-template <class R, class T, class T0, class T1, class T2, class T3, class T4 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4) const volatile);
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3, class T4 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4) const volatile);
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5) const volatile);
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5 ...));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5 ...) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5 ...) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5 ...) const volatile);
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5) const volatile);
-#if (_MSC_VER >= 1800) && !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5) const volatile);
-#endif
-#ifndef _MANAGED
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5) const volatile);
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5) const volatile);
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6) const volatile);
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6 ...));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6 ...) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6 ...) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6 ...) const volatile);
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6) const volatile);
-#if (_MSC_VER >= 1800) && !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6) const volatile);
-#endif
-#ifndef _MANAGED
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6) const volatile);
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6) const volatile);
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7) const volatile);
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7 ...));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7 ...) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7 ...) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7 ...) const volatile);
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7) const volatile);
-#if (_MSC_VER >= 1800) && !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7) const volatile);
-#endif
-#ifndef _MANAGED
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7) const volatile);
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7) const volatile);
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8) const volatile);
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8 ...));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8 ...) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8 ...) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8 ...) const volatile);
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8) const volatile);
-#if (_MSC_VER >= 1800) && !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8) const volatile);
-#endif
-#ifndef _MANAGED
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8) const volatile);
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8) const volatile);
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) const volatile);
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 ...));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 ...) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 ...) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9 ...) const volatile);
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) const volatile);
-#if (_MSC_VER >= 1800) && !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) const volatile);
-#endif
-#ifndef _MANAGED
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) const volatile);
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9) const volatile);
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) const volatile);
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 ...));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 ...) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 ...) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10 ...) const volatile);
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) const volatile);
-#if (_MSC_VER >= 1800) && !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) const volatile);
-#endif
-#ifndef _MANAGED
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) const volatile);
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10) const volatile);
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) const volatile);
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 ...));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 ...) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 ...) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11 ...) const volatile);
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) const volatile);
-#if (_MSC_VER >= 1800) && !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) const volatile);
-#endif
-#ifndef _MANAGED
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) const volatile);
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11) const volatile);
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) const volatile);
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 ...));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 ...) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 ...) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12 ...) const volatile);
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) const volatile);
-#if (_MSC_VER >= 1800) && !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) const volatile);
-#endif
-#ifndef _MANAGED
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) const volatile);
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12) const volatile);
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) const volatile);
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 ...));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 ...) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 ...) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13 ...) const volatile);
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) const volatile);
-#if (_MSC_VER >= 1800) && !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) const volatile);
-#endif
-#ifndef _MANAGED
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) const volatile);
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13) const volatile);
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) const volatile);
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 ...));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 ...) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 ...) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14 ...) const volatile);
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) const volatile);
-#if (_MSC_VER >= 1800) && !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) const volatile);
-#endif
-#ifndef _MANAGED
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) const volatile);
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14) const volatile);
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) const volatile);
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 ...));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 ...) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 ...) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15 ...) const volatile);
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) const volatile);
-#if (_MSC_VER >= 1800) && !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) const volatile);
-#endif
-#ifndef _MANAGED
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) const volatile);
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15) const volatile);
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16) const volatile);
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 ...));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 ...) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 ...) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16 ...) const volatile);
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16) const volatile);
-#if (_MSC_VER >= 1800) && !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16) const volatile);
-#endif
-#ifndef _MANAGED
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16) const volatile);
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16) const volatile);
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17) const volatile);
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 ...));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 ...) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 ...) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17 ...) const volatile);
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17) const volatile);
-#if (_MSC_VER >= 1800) && !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17) const volatile);
-#endif
-#ifndef _MANAGED
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17) const volatile);
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17) const volatile);
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18) const volatile);
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 ...));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 ...) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 ...) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18 ...) const volatile);
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18) const volatile);
-#if (_MSC_VER >= 1800) && !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18) const volatile);
-#endif
-#ifndef _MANAGED
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18) const volatile);
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18) const volatile);
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19) const volatile);
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 ...));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 ...) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 ...) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19 ...) const volatile);
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19) const volatile);
-#if (_MSC_VER >= 1800) && !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19) const volatile);
-#endif
-#ifndef _MANAGED
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19) const volatile);
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19) const volatile);
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) const volatile);
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20 ...));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20 ...) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20 ...) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20 ...) const volatile);
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) const volatile);
-#if (_MSC_VER >= 1800) && !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) const volatile);
-#endif
-#ifndef _MANAGED
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) const volatile);
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20) const volatile);
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21) const volatile);
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21 ...));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21 ...) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21 ...) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21 ...) const volatile);
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21) const volatile);
-#if (_MSC_VER >= 1800) && !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21) const volatile);
-#endif
-#ifndef _MANAGED
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21) const volatile);
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21) const volatile);
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22) const volatile);
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22 ...));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22 ...) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22 ...) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22 ...) const volatile);
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22) const volatile);
-#if (_MSC_VER >= 1800) && !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22) const volatile);
-#endif
-#ifndef _MANAGED
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22) const volatile);
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22) const volatile);
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23) const volatile);
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23 ...));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23 ...) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23 ...) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23 ...) const volatile);
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23) const volatile);
-#if (_MSC_VER >= 1800) && !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23) const volatile);
-#endif
-#ifndef _MANAGED
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23) const volatile);
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23) const volatile);
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23, class T24 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23, class T24 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23, class T24 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23, class T24 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24) const volatile);
-#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23, class T24 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24 ...));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23, class T24 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24 ...) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23, class T24 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24 ...) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23, class T24 >
-yes_type is_mem_fun_pointer_tester(R(T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24 ...) const volatile);
-#endif
-#ifdef BOOST_TT_TEST_MS_FUNC_SIGS
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23, class T24 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23, class T24 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23, class T24 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23, class T24 >
-yes_type is_mem_fun_pointer_tester(R(__stdcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24) const volatile);
-#if (_MSC_VER >= 1800) && !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23, class T24 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23, class T24 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23, class T24 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23, class T24 >
-yes_type is_mem_fun_pointer_tester(R(__vectorcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24) const volatile);
-#endif
-#ifndef _MANAGED
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23, class T24 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23, class T24 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23, class T24 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23, class T24 >
-yes_type is_mem_fun_pointer_tester(R(__fastcall T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24) const volatile);
-#endif
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23, class T24 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24));
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23, class T24 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24) const);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23, class T24 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24) volatile);
-template <class R, class T, class T0, class T1, class T2, class T3, class T4, class T5, class T6, class T7, class T8, class T9, class T10, class T11, class T12, class T13, class T14, class T15, class T16, class T17, class T18, class T19, class T20, class T21, class T22, class T23, class T24 >
-yes_type is_mem_fun_pointer_tester(R(__cdecl T::*const volatile*)(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24) const volatile);
-#endif
-
-#else
-
-#define BOOST_PP_ITERATION_PARAMS_1 \
-    (3, (0, 25, "boost/type_traits/detail/is_mem_fun_pointer_tester.hpp"))
-#include BOOST_PP_ITERATE()
-
-#endif // BOOST_TT_PREPROCESSING_MODE
-
-} // namespace type_traits
-} // namespace boost
-
-#endif // BOOST_TT_DETAIL_IS_MEM_FUN_POINTER_TESTER_HPP_INCLUDED
-
-///// iteration
-
-#else
-#define BOOST_PP_COUNTER BOOST_PP_FRAME_ITERATION(1)
-#undef __stdcall
-#undef __fastcall
-#undef __cdecl
-
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)));
-
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)) const);
-
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)) volatile);
-
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)) const volatile);
-
-@#ifndef BOOST_TT_NO_ELLIPSIS_IN_FUNC_TESTING
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T) ...));
-
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T) ...) const);
-
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T) ...) volatile);
-
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_mem_fun_pointer_tester(R (T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T) ...) const volatile);
-@#endif
-@#ifdef BOOST_TT_TEST_MS_FUNC_SIGS // Other calling conventions used by MS compatible compilers:
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)));
-
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)) const);
-
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)) volatile);
-
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_mem_fun_pointer_tester(R (__stdcall T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)) const volatile);
-@#if (_MSC_VER >= 1800) && !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_mem_fun_pointer_tester(R (__vectorcall T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)));
-
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_mem_fun_pointer_tester(R (__vectorcall T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)) const);
-
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_mem_fun_pointer_tester(R (__vectorcall T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)) volatile);
-
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_mem_fun_pointer_tester(R (__vectorcall T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)) const volatile);
-@#endif
-@#ifndef _MANAGED
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)));
-
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)) const);
-
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)) volatile);
-
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_mem_fun_pointer_tester(R (__fastcall T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)) const volatile);
-
-@#endif
-
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)));
-
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)) const);
-
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)) volatile);
-
-template <class R, class T BOOST_PP_COMMA_IF(BOOST_PP_COUNTER) BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,class T) >
-yes_type is_mem_fun_pointer_tester(R (__cdecl T::*const volatile*)(BOOST_PP_ENUM_PARAMS(BOOST_PP_COUNTER,T)) const volatile);
-
-@#endif
-
-#undef BOOST_PP_COUNTER
-#endif // BOOST_PP_IS_ITERATING
diff --git a/third_party/boost/boost/type_traits/detail/is_member_function_pointer_cxx_03.hpp b/third_party/boost/boost/type_traits/detail/is_member_function_pointer_cxx_03.hpp
deleted file mode 100644
index 3df5b4e..0000000
--- a/third_party/boost/boost/type_traits/detail/is_member_function_pointer_cxx_03.hpp
+++ /dev/null
@@ -1,117 +0,0 @@
-
-//  (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, Howard
-//  Hinnant & John Maddock 2000.  
-//  Use, modification and distribution are subject to the Boost Software License,
-//  Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-//  http://www.boost.org/LICENSE_1_0.txt).
-//
-//  See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-
-#ifndef BOOST_TT_IS_MEMBER_FUNCTION_POINTER_CXX_03_HPP_INCLUDED
-#define BOOST_TT_IS_MEMBER_FUNCTION_POINTER_CXX_03_HPP_INCLUDED
-
-#if !BOOST_WORKAROUND(__BORLANDC__, < 0x600) && !defined(BOOST_TT_TEST_MS_FUNC_SIGS)
-   //
-   // Note: we use the "workaround" version for MSVC because it works for 
-   // __stdcall etc function types, where as the partial specialisation
-   // version does not do so.
-   //
-#   include <boost/type_traits/detail/is_mem_fun_pointer_impl.hpp>
-#   include <boost/type_traits/remove_cv.hpp>
-#   include <boost/type_traits/integral_constant.hpp>
-#else
-#   include <boost/type_traits/is_reference.hpp>
-#   include <boost/type_traits/is_array.hpp>
-#   include <boost/type_traits/detail/yes_no_type.hpp>
-#   include <boost/type_traits/detail/is_mem_fun_pointer_tester.hpp>
-#endif
-
-namespace boost {
-
-#if defined( __CODEGEARC__ )
-template <class T> struct is_member_function_pointer : public integral_constant<bool, __is_member_function_pointer( T )> {};
-#elif !BOOST_WORKAROUND(__BORLANDC__, < 0x600) && !defined(BOOST_TT_TEST_MS_FUNC_SIGS)
-
-template <class T> struct is_member_function_pointer 
-   : public ::boost::integral_constant<bool, ::boost::type_traits::is_mem_fun_pointer_impl<typename remove_cv<T>::type>::value>{};
-
-#else
-
-namespace detail {
-
-#ifndef __BORLANDC__
-
-template <bool>
-struct is_mem_fun_pointer_select
-{
-   template <class T> struct result_ : public false_type{};
-};
-
-template <>
-struct is_mem_fun_pointer_select<false>
-{
-    template <typename T> struct result_
-    {
-#if BOOST_WORKAROUND(BOOST_MSVC_FULL_VER, >= 140050000)
-#pragma warning(push)
-#pragma warning(disable:6334)
-#endif
-        static T* make_t;
-        typedef result_<T> self_type;
-
-        BOOST_STATIC_CONSTANT(
-            bool, value = (
-                1 == sizeof(::boost::type_traits::is_mem_fun_pointer_tester(self_type::make_t))
-            ));
-#if BOOST_WORKAROUND(BOOST_MSVC_FULL_VER, >= 140050000)
-#pragma warning(pop)
-#endif
-    };
-};
-
-template <typename T>
-struct is_member_function_pointer_impl
-    : public is_mem_fun_pointer_select< 
-      ::boost::is_reference<T>::value || ::boost::is_array<T>::value>::template result_<T>{};
-
-template <typename T>
-struct is_member_function_pointer_impl<T&> : public false_type{};
-
-#else // Borland C++
-
-template <typename T>
-struct is_member_function_pointer_impl
-{
-   static T* m_t;
-   BOOST_STATIC_CONSTANT(
-              bool, value =
-               (1 == sizeof(type_traits::is_mem_fun_pointer_tester(m_t))) );
-};
-
-template <typename T>
-struct is_member_function_pointer_impl<T&>
-{
-   BOOST_STATIC_CONSTANT(bool, value = false);
-};
-
-#endif
-
-template<> struct is_member_function_pointer_impl<void> : public false_type{};
-#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
-template<> struct is_member_function_pointer_impl<void const> : public false_type{};
-template<> struct is_member_function_pointer_impl<void const volatile> : public false_type{};
-template<> struct is_member_function_pointer_impl<void volatile> : public false_type{};
-#endif
-
-} // namespace detail
-
-template <class T>
-struct is_member_function_pointer
-   : public integral_constant<bool, ::boost::detail::is_member_function_pointer_impl<T>::value>{};
-
-#endif
-
-} // namespace boost
-
-#endif // BOOST_TT_IS_MEMBER_FUNCTION_POINTER_HPP_INCLUDED
diff --git a/third_party/boost/boost/type_traits/detail/is_member_function_pointer_cxx_11.hpp b/third_party/boost/boost/type_traits/detail/is_member_function_pointer_cxx_11.hpp
deleted file mode 100644
index d88a004..0000000
--- a/third_party/boost/boost/type_traits/detail/is_member_function_pointer_cxx_11.hpp
+++ /dev/null
@@ -1,672 +0,0 @@
-
-//  (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, Howard
-//  Hinnant & John Maddock 2000.  
-//  Use, modification and distribution are subject to the Boost Software License,
-//  Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-//  http://www.boost.org/LICENSE_1_0.txt).
-//
-//  See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-
-#ifndef BOOST_TT_IS_MEMBER_FUNCTION_POINTER_CXX_11_HPP_INCLUDED
-#define BOOST_TT_IS_MEMBER_FUNCTION_POINTER_CXX_11_HPP_INCLUDED
-
-#include <boost/type_traits/integral_constant.hpp>
-
-namespace boost {
-
-#ifdef _MSC_VER
-#define BOOST_TT_DEF_CALL __thiscall
-#else
-#define BOOST_TT_DEF_CALL
-#endif
-
-
-   template <class T>
-   struct is_member_function_pointer : public false_type {};
-   template <class T>
-   struct is_member_function_pointer<T const> : public is_member_function_pointer<T> {};
-   template <class T>
-   struct is_member_function_pointer<T volatile> : public is_member_function_pointer<T> {};
-   template <class T>
-   struct is_member_function_pointer<T const volatile> : public is_member_function_pointer<T> {};
-
-#if defined(BOOST_TT_NO_DEDUCED_NOEXCEPT_PARAM)
-   // MSVC can't handle noexcept(b) as a deduced template parameter 
-   // so we will have to write everything out :(
-#define BOOST_TT_NOEXCEPT_PARAM
-#define BOOST_TT_NOEXCEPT_DECL
-#elif defined(__cpp_noexcept_function_type)
-#define BOOST_TT_NOEXCEPT_PARAM , bool NE
-#define BOOST_TT_NOEXCEPT_DECL noexcept(NE)
-#else
-#define BOOST_TT_NOEXCEPT_PARAM
-#define BOOST_TT_NOEXCEPT_DECL
-#endif
-
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret (BOOST_TT_DEF_CALL C::*)(Args...)BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   template <class Ret, class C, class ...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret (C::*)(Args..., ...)BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   // const qualified:
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret (BOOST_TT_DEF_CALL C::*)(Args...)const BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   template <class Ret, class C, class ...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(C::*)(Args..., ...)const BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   // volatile:
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret (BOOST_TT_DEF_CALL C::*)(Args...)volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   template <class Ret, class C, class ...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(C::*)(Args..., ...)volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   // const volatile
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret (BOOST_TT_DEF_CALL C::*)(Args...)const volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   template <class Ret, class C, class ...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(C::*)(Args..., ...)const volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-
-   // Reference qualified:
-
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret (BOOST_TT_DEF_CALL C::*)(Args...)& BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   template <class Ret, class C, class ...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(C::*)(Args..., ...)& BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   // const qualified:
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret (BOOST_TT_DEF_CALL C::*)(Args...)const & BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   template <class Ret, class C, class ...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(C::*)(Args..., ...)const & BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   // volatile:
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret (BOOST_TT_DEF_CALL C::*)(Args...)volatile & BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   template <class Ret, class C, class ...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(C::*)(Args..., ...)volatile & BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   // const volatile
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret (BOOST_TT_DEF_CALL C::*)(Args...)const volatile & BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   template <class Ret, class C, class ...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(C::*)(Args..., ...)const volatile & BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-
-   // rvalue reference qualified:
-
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret (BOOST_TT_DEF_CALL C::*)(Args...) && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   template <class Ret, class C, class ...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(C::*)(Args..., ...) && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   // const qualified:
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret (BOOST_TT_DEF_CALL C::*)(Args...)const && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   template <class Ret, class C, class ...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(C::*)(Args..., ...)const && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   // volatile:
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret (BOOST_TT_DEF_CALL C::*)(Args...)volatile && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   template <class Ret, class C, class ...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(C::*)(Args..., ...)volatile && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   // const volatile
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret (BOOST_TT_DEF_CALL C::*)(Args...)const volatile && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   template <class Ret, class C, class ...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(C::*)(Args..., ...)const volatile && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-
-#if defined(_MSC_VER) && !defined(_M_ARM) && !defined(_M_ARM64)
-#ifdef __CLR_VER
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret (__clrcall C::*)(Args...)BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#ifndef _M_AMD64
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret (__stdcall C::*)(Args...)BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#ifndef __CLR_VER
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret (__fastcall C::*)(Args...)BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret (__vectorcall C::*)(Args...)BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-
-   // const:
-#ifdef __CLR_VER
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__clrcall C::*)(Args...)const BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#ifndef _M_AMD64
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret (__stdcall C::*)(Args...)const BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#ifndef __CLR_VER
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret (__fastcall C::*)(Args...)const BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)const BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret (__vectorcall C::*)(Args...)const BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-
-   // volatile:
-#ifdef __CLR_VER
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__clrcall C::*)(Args...)volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#ifndef _M_AMD64
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret (__stdcall C::*)(Args...)volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#ifndef __CLR_VER
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret (__fastcall C::*)(Args...)volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret (__vectorcall C::*)(Args...)volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-
-   // const volatile:
-#ifdef __CLR_VER
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__clrcall C::*)(Args...)const volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#ifndef _M_AMD64
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret (__stdcall C::*)(Args...)const volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#ifndef __CLR_VER
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret (__fastcall C::*)(Args...)const volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)const volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret (__vectorcall C::*)(Args...)const volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-
-   // reference qualified:
-#ifdef __CLR_VER
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__clrcall C::*)(Args...)&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#ifndef _M_AMD64
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret (__stdcall C::*)(Args...)&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#ifndef __CLR_VER
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret (__fastcall C::*)(Args...)&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret (__vectorcall C::*)(Args...)&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-
-   // const:
-#ifdef __CLR_VER
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__clrcall C::*)(Args...)const &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#ifndef _M_AMD64
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret (__stdcall C::*)(Args...)const &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#ifndef __CLR_VER
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret (__fastcall C::*)(Args...)const &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)const &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret (__vectorcall C::*)(Args...)const &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
- 
-   // volatile:
-#ifdef __CLR_VER
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__clrcall C::*)(Args...)volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#ifndef _M_AMD64
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret (__stdcall C::*)(Args...)volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#ifndef __CLR_VER
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret (__fastcall C::*)(Args...)volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret (__vectorcall C::*)(Args...)volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-
-   // const volatile:
-#ifdef __CLR_VER
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__clrcall C::*)(Args...)const volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#ifndef _M_AMD64
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret (__stdcall C::*)(Args...)const volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#ifndef __CLR_VER
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret (__fastcall C::*)(Args...)const volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)const volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret (__vectorcall C::*)(Args...)const volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-
-   // rvalue reference qualified:
-#ifdef __CLR_VER
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__clrcall C::*)(Args...) && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#ifndef _M_AMD64
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret (__stdcall C::*)(Args...) && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#ifndef __CLR_VER
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret (__fastcall C::*)(Args...) && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__cdecl C::*)(Args...) && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret (__vectorcall C::*)(Args...) && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-
-   // const:
-#ifdef __CLR_VER
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__clrcall C::*)(Args...)const &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#ifndef _M_AMD64
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret (__stdcall C::*)(Args...)const &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#ifndef __CLR_VER
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret (__fastcall C::*)(Args...)const &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)const &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret (__vectorcall C::*)(Args...)const &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-
-   // volatile:
-#ifdef __CLR_VER
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__clrcall C::*)(Args...)volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#ifndef _M_AMD64
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret (__stdcall C::*)(Args...)volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#ifndef __CLR_VER
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret (__fastcall C::*)(Args...)volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret (__vectorcall C::*)(Args...)volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
- 
-   // const volatile:
-#ifdef __CLR_VER
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__clrcall C::*)(Args...)const volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#ifndef _M_AMD64
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret (__stdcall C::*)(Args...)const volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#ifndef __CLR_VER
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret (__fastcall C::*)(Args...)const volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)const volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret (__vectorcall C::*)(Args...)const volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#endif
-
-
-#if defined(BOOST_TT_NO_DEDUCED_NOEXCEPT_PARAM)  && !defined(BOOST_TT_NO_NOEXCEPT_SEPARATE_TYPE)
-
-#undef BOOST_TT_NOEXCEPT_DECL
-#define BOOST_TT_NOEXCEPT_DECL noexcept
-
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(BOOST_TT_DEF_CALL C::*)(Args...)BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   template <class Ret, class C, class ...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(C::*)(Args..., ...)BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   // const qualified:
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(BOOST_TT_DEF_CALL C::*)(Args...)const BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   template <class Ret, class C, class ...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(C::*)(Args..., ...)const BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   // volatile:
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(BOOST_TT_DEF_CALL C::*)(Args...)volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   template <class Ret, class C, class ...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(C::*)(Args..., ...)volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   // const volatile
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(BOOST_TT_DEF_CALL C::*)(Args...)const volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   template <class Ret, class C, class ...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(C::*)(Args..., ...)const volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-
-   // Reference qualified:
-
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(BOOST_TT_DEF_CALL C::*)(Args...)& BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   template <class Ret, class C, class ...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(C::*)(Args..., ...)& BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   // const qualified:
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(BOOST_TT_DEF_CALL C::*)(Args...)const & BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   template <class Ret, class C, class ...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(C::*)(Args..., ...)const & BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   // volatile:
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(BOOST_TT_DEF_CALL C::*)(Args...)volatile & BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   template <class Ret, class C, class ...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(C::*)(Args..., ...)volatile & BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   // const volatile
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(BOOST_TT_DEF_CALL C::*)(Args...)const volatile & BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   template <class Ret, class C, class ...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(C::*)(Args..., ...)const volatile & BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-
-   // rvalue reference qualified:
-
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(BOOST_TT_DEF_CALL C::*)(Args...) && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   template <class Ret, class C, class ...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(C::*)(Args..., ...) && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   // const qualified:
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(BOOST_TT_DEF_CALL C::*)(Args...)const && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   template <class Ret, class C, class ...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(C::*)(Args..., ...)const && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   // volatile:
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(BOOST_TT_DEF_CALL C::*)(Args...)volatile && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   template <class Ret, class C, class ...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(C::*)(Args..., ...)volatile && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   // const volatile
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(BOOST_TT_DEF_CALL C::*)(Args...)const volatile && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-   template <class Ret, class C, class ...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(C::*)(Args..., ...)const volatile && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-
-#ifdef _MSC_VER
-#ifdef __CLR_VER
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__clrcall C::*)(Args...)BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#ifndef _M_AMD64
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__stdcall C::*)(Args...)BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#ifndef __CLR_VER
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__fastcall C::*)(Args...)BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__vectorcall C::*)(Args...)BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-
-   // const:
-#ifdef __CLR_VER
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__clrcall C::*)(Args...)const BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#ifndef _M_AMD64
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__stdcall C::*)(Args...)const BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#ifndef __CLR_VER
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__fastcall C::*)(Args...)const BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)const BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__vectorcall C::*)(Args...)const BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-
-   // volatile:
-#ifdef __CLR_VER
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__clrcall C::*)(Args...)volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#ifndef _M_AMD64
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__stdcall C::*)(Args...)volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#ifndef __CLR_VER
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__fastcall C::*)(Args...)volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__vectorcall C::*)(Args...)volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-
-   // const volatile:
-#ifdef __CLR_VER
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__clrcall C::*)(Args...)const volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#ifndef _M_AMD64
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__stdcall C::*)(Args...)const volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#ifndef __CLR_VER
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__fastcall C::*)(Args...)const volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)const volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__vectorcall C::*)(Args...)const volatile BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-
-   // reference qualified:
-#ifdef __CLR_VER
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__clrcall C::*)(Args...)&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#ifndef _M_AMD64
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__stdcall C::*)(Args...)&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#ifndef __CLR_VER
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__fastcall C::*)(Args...)&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__vectorcall C::*)(Args...)&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-
-   // const:
-#ifdef __CLR_VER
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__clrcall C::*)(Args...)const &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#ifndef _M_AMD64
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__stdcall C::*)(Args...)const &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#ifndef __CLR_VER
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__fastcall C::*)(Args...)const &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)const &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__vectorcall C::*)(Args...)const &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-
-   // volatile:
-#ifdef __CLR_VER
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__clrcall C::*)(Args...)volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#ifndef _M_AMD64
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__stdcall C::*)(Args...)volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#ifndef __CLR_VER
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__fastcall C::*)(Args...)volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__vectorcall C::*)(Args...)volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-
-   // const volatile:
-#ifdef __CLR_VER
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__clrcall C::*)(Args...)const volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#ifndef _M_AMD64
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__stdcall C::*)(Args...)const volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#ifndef __CLR_VER
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__fastcall C::*)(Args...)const volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)const volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__vectorcall C::*)(Args...)const volatile &BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-
-   // rvalue reference qualified:
-#ifdef __CLR_VER
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__clrcall C::*)(Args...) && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#ifndef _M_AMD64
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__stdcall C::*)(Args...) && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#ifndef __CLR_VER
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__fastcall C::*)(Args...) && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__cdecl C::*)(Args...) && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__vectorcall C::*)(Args...) && BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-
-   // const:
-#ifdef __CLR_VER
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__clrcall C::*)(Args...)const &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#ifndef _M_AMD64
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__stdcall C::*)(Args...)const &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#ifndef __CLR_VER
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__fastcall C::*)(Args...)const &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)const &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__vectorcall C::*)(Args...)const &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-
-   // volatile:
-#ifdef __CLR_VER
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__clrcall C::*)(Args...)volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#ifndef _M_AMD64
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__stdcall C::*)(Args...)volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#ifndef __CLR_VER
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__fastcall C::*)(Args...)volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__vectorcall C::*)(Args...)volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-
-   // const volatile:
-#ifdef __CLR_VER
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__clrcall C::*)(Args...)const volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-
-#endif
-#ifndef _M_AMD64
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__stdcall C::*)(Args...)const volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#ifndef __CLR_VER
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__fastcall C::*)(Args...)const volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__cdecl C::*)(Args...)const volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#if !defined(__CLR_VER) && (defined(_M_IX86_FP) && (_M_IX86_FP >= 2) || defined(_M_X64))
-   template <class Ret, class C, class...Args BOOST_TT_NOEXCEPT_PARAM>
-   struct is_member_function_pointer<Ret(__vectorcall C::*)(Args...)const volatile &&BOOST_TT_NOEXCEPT_DECL> : public true_type {};
-#endif
-#endif
-
-
-#endif
-
-#undef BOOST_TT_NOEXCEPT_DECL
-#undef BOOST_TT_NOEXCEPT_PARAM
-#undef BOOST_TT_DEF_CALL
-}
-
-#endif // BOOST_TT_IS_MEMBER_FUNCTION_POINTER_CXX_11_HPP_INCLUDED
diff --git a/third_party/boost/boost/type_traits/detail/is_rvalue_reference_msvc10_fix.hpp b/third_party/boost/boost/type_traits/detail/is_rvalue_reference_msvc10_fix.hpp
deleted file mode 100644
index d570735..0000000
--- a/third_party/boost/boost/type_traits/detail/is_rvalue_reference_msvc10_fix.hpp
+++ /dev/null
@@ -1,43 +0,0 @@
-
-//  (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/type_traits for most recent version including documentation.
-
-#ifndef BOOST_TT_IS_RVALUE_REFERENCE_MSVC10_FIX_HPP_INCLUDED
-#define BOOST_TT_IS_RVALUE_REFERENCE_MSVC10_FIX_HPP_INCLUDED
-
-namespace boost {
-
-template <class R> struct is_rvalue_reference<R(&&)()> : public true_type {};
-template <class R> struct is_rvalue_reference<R(&&)(...)> : public true_type {};
-template <class R, class Arg1> struct is_rvalue_reference<R(&&)(Arg1)> : public true_type {};
-template <class R, class Arg1> struct is_rvalue_reference<R(&&)(Arg1, ...)> : public true_type {};
-template <class R, class Arg1, class Arg2> struct is_rvalue_reference<R(&&)(Arg1, Arg2)> : public true_type {};
-template <class R, class Arg1, class Arg2> struct is_rvalue_reference<R(&&)(Arg1, Arg2, ...)> : public true_type {};
-template <class R, class Arg1, class Arg2, class Arg3> struct is_rvalue_reference<R(&&)(Arg1, Arg2, Arg3)> : public true_type {};
-template <class R, class Arg1, class Arg2, class Arg3> struct is_rvalue_reference<R(&&)(Arg1, Arg2, Arg3, ...)> : public true_type {};
-template <class R, class Arg1, class Arg2, class Arg3, class Arg4> struct is_rvalue_reference<R(&&)(Arg1, Arg2, Arg3, Arg4)> : public true_type {};
-template <class R, class Arg1, class Arg2, class Arg3, class Arg4> struct is_rvalue_reference<R(&&)(Arg1, Arg2, Arg3, Arg4, ...)> : public true_type {};
-template <class R, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5> struct is_rvalue_reference<R(&&)(Arg1, Arg2, Arg3, Arg4, Arg5)> : public true_type {};
-template <class R, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5> struct is_rvalue_reference<R(&&)(Arg1, Arg2, Arg3, Arg4, Arg5, ...)> : public true_type {};
-
-template <class R> struct is_rvalue_reference<R(&)()> : public false_type {};
-template <class R> struct is_rvalue_reference<R(&)(...)> : public false_type {};
-template <class R, class Arg1> struct is_rvalue_reference<R(&)(Arg1)> : public false_type {};
-template <class R, class Arg1> struct is_rvalue_reference<R(&)(Arg1, ...)> : public false_type {};
-template <class R, class Arg1, class Arg2> struct is_rvalue_reference<R(&)(Arg1, Arg2)> : public false_type {};
-template <class R, class Arg1, class Arg2> struct is_rvalue_reference<R(&)(Arg1, Arg2, ...)> : public false_type {};
-template <class R, class Arg1, class Arg2, class Arg3> struct is_rvalue_reference<R(&)(Arg1, Arg2, Arg3)> : public false_type {};
-template <class R, class Arg1, class Arg2, class Arg3> struct is_rvalue_reference<R(&)(Arg1, Arg2, Arg3, ...)> : public false_type {};
-template <class R, class Arg1, class Arg2, class Arg3, class Arg4> struct is_rvalue_reference<R(&)(Arg1, Arg2, Arg3, Arg4)> : public false_type {};
-template <class R, class Arg1, class Arg2, class Arg3, class Arg4> struct is_rvalue_reference<R(&)(Arg1, Arg2, Arg3, Arg4, ...)> : public false_type {};
-template <class R, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5> struct is_rvalue_reference<R(&)(Arg1, Arg2, Arg3, Arg4, Arg5)> : public false_type {};
-template <class R, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5> struct is_rvalue_reference<R(&)(Arg1, Arg2, Arg3, Arg4, Arg5, ...)> : public false_type {};
-
-} // namespace boost
-
-#endif // BOOST_TT_IS_REFERENCE_HPP_INCLUDED
-
diff --git a/third_party/boost/boost/type_traits/detail/yes_no_type.hpp b/third_party/boost/boost/type_traits/detail/yes_no_type.hpp
deleted file mode 100644
index f583730..0000000
--- a/third_party/boost/boost/type_traits/detail/yes_no_type.hpp
+++ /dev/null
@@ -1,26 +0,0 @@
-
-//  (C) Copyright John Maddock and Steve Cleary 2000.
-//  Use, modification and distribution are subject to the Boost Software License,
-//  Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-//  http://www.boost.org/LICENSE_1_0.txt).
-//
-//  See http://www.boost.org/libs/type_traits for most recent version including documentation.
-//
-//  macros and helpers for working with integral-constant-expressions.
-
-#ifndef BOOST_TT_DETAIL_YES_NO_TYPE_HPP_INCLUDED
-#define BOOST_TT_DETAIL_YES_NO_TYPE_HPP_INCLUDED
-
-namespace boost {
-namespace type_traits {
-
-typedef char yes_type;
-struct no_type
-{
-   char padding[8];
-};
-
-} // namespace type_traits
-} // namespace boost
-
-#endif // BOOST_TT_DETAIL_YES_NO_TYPE_HPP_INCLUDED
diff --git a/third_party/boost/boost/type_traits/integral_constant.hpp b/third_party/boost/boost/type_traits/integral_constant.hpp
deleted file mode 100644
index 1b36dbd..0000000
--- a/third_party/boost/boost/type_traits/integral_constant.hpp
+++ /dev/null
@@ -1,97 +0,0 @@
-//  (C) Copyright John Maddock 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)
-
-#ifndef BOOST_TYPE_TRAITS_INTEGRAL_CONSTANT_HPP
-#define BOOST_TYPE_TRAITS_INTEGRAL_CONSTANT_HPP
-
-#include <boost/config.hpp>
-#include <boost/detail/workaround.hpp>
-
-#if (BOOST_WORKAROUND(BOOST_MSVC, BOOST_TESTED_AT(1400)) \
-   || BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) \
-   || BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840)) \
-   || BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3202)) \
-   || BOOST_WORKAROUND(BOOST_INTEL_CXX_VERSION, BOOST_TESTED_AT(810)) )\
-   || defined(BOOST_MPL_CFG_NO_ADL_BARRIER_NAMESPACE)
-
-
-namespace boost{
-   namespace mpl
-   {
-      template <bool B> struct bool_;
-      template <class I, I val> struct integral_c;
-      struct integral_c_tag;
-   }
-}
-
-#else
-
-namespace mpl_{
-
-   template <bool B> struct bool_;
-   template <class I, I val> struct integral_c;
-   struct integral_c_tag;
-}
-
-namespace boost
-{
-   namespace mpl
-   {
-      using ::mpl_::bool_;
-      using ::mpl_::integral_c;
-      using ::mpl_::integral_c_tag;
-   }
-}
-
-#endif
-
-namespace boost{
-
-   template <class T, T val>
-   struct integral_constant
-   {
-      typedef mpl::integral_c_tag tag;
-      typedef T value_type;
-      typedef integral_constant<T, val> type;
-      static const T value = val;
-
-      operator const mpl::integral_c<T, val>& ()const
-      {
-         static const char data[sizeof(long)] = { 0 };
-         static const void* pdata = data;
-         return *(reinterpret_cast<const mpl::integral_c<T, val>*>(pdata));
-      }
-      BOOST_CONSTEXPR operator T()const { return val; }
-   };
-
-   template <class T, T val>
-   T const integral_constant<T, val>::value;
-      
-   template <bool val>
-   struct integral_constant<bool, val>
-   {
-      typedef mpl::integral_c_tag tag;
-      typedef bool value_type;
-      typedef integral_constant<bool, val> type;
-      static const bool value = val;
-
-      operator const mpl::bool_<val>& ()const
-      {
-         static const char data[sizeof(long)] = { 0 };
-         static const void* pdata = data;
-         return *(reinterpret_cast<const mpl::bool_<val>*>(pdata));
-      }
-      BOOST_CONSTEXPR operator bool()const { return val; }
-   };
-
-   template <bool val>
-   bool const integral_constant<bool, val>::value;
-
-   typedef integral_constant<bool, true> true_type;
-   typedef integral_constant<bool, false> false_type;
-
-}
-
-#endif
diff --git a/third_party/boost/boost/type_traits/intrinsics.hpp b/third_party/boost/boost/type_traits/intrinsics.hpp
deleted file mode 100644
index d41a61e..0000000
--- a/third_party/boost/boost/type_traits/intrinsics.hpp
+++ /dev/null
@@ -1,391 +0,0 @@
-//  (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
-//  Use, modification and distribution are subject to the Boost Software License,
-//  Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-//  http://www.boost.org/LICENSE_1_0.txt).
-//
-//  See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-#ifndef BOOST_TT_INTRINSICS_HPP_INCLUDED
-#define BOOST_TT_INTRINSICS_HPP_INCLUDED
-
-#ifndef BOOST_TT_DISABLE_INTRINSICS
-
-#include <boost/config.hpp>
-
-#ifndef BOOST_TT_CONFIG_HPP_INCLUDED
-#include <boost/type_traits/detail/config.hpp>
-#endif
-
-//
-// Helper macros for builtin compiler support.
-// If your compiler has builtin support for any of the following
-// traits concepts, then redefine the appropriate macros to pick
-// up on the compiler support:
-//
-// (these should largely ignore cv-qualifiers)
-// BOOST_IS_UNION(T) should evaluate to true if T is a union type
-// BOOST_IS_POD(T) should evaluate to true if T is a POD type
-// BOOST_IS_EMPTY(T) should evaluate to true if T is an empty class type (and not a union)
-// BOOST_HAS_TRIVIAL_CONSTRUCTOR(T) should evaluate to true if "T x;" has no effect
-// BOOST_HAS_TRIVIAL_COPY(T) should evaluate to true if T(t) <==> memcpy
-// BOOST_HAS_TRIVIAL_MOVE_CONSTRUCTOR(T) should evaluate to true if T(boost::move(t)) <==> memcpy
-// BOOST_HAS_TRIVIAL_ASSIGN(T) should evaluate to true if t = u <==> memcpy
-// BOOST_HAS_TRIVIAL_MOVE_ASSIGN(T) should evaluate to true if t = boost::move(u) <==> memcpy
-// BOOST_HAS_TRIVIAL_DESTRUCTOR(T) should evaluate to true if ~T() has no effect
-// BOOST_HAS_NOTHROW_CONSTRUCTOR(T) should evaluate to true if "T x;" can not throw
-// BOOST_HAS_NOTHROW_COPY(T) should evaluate to true if T(t) can not throw
-// BOOST_HAS_NOTHROW_ASSIGN(T) should evaluate to true if t = u can not throw
-// BOOST_HAS_VIRTUAL_DESTRUCTOR(T) should evaluate to true T has a virtual destructor
-// BOOST_IS_NOTHROW_MOVE_CONSTRUCT(T) should evaluate to true if T has a non-throwing move constructor.
-// BOOST_IS_NOTHROW_MOVE_ASSIGN(T) should evaluate to true if T has a non-throwing move assignment operator.
-//
-// The following can also be defined: when detected our implementation is greatly simplified.
-//
-// BOOST_IS_ABSTRACT(T) true if T is an abstract type
-// BOOST_IS_BASE_OF(T,U) true if T is a base class of U
-// BOOST_IS_CLASS(T) true if T is a class type (and not a union)
-// BOOST_IS_CONVERTIBLE(T,U) true if T is convertible to U
-// BOOST_IS_ENUM(T) true is T is an enum
-// BOOST_IS_POLYMORPHIC(T) true if T is a polymorphic type
-// BOOST_ALIGNMENT_OF(T) should evaluate to the alignment requirements of type T.
-//
-// define BOOST_TT_DISABLE_INTRINSICS to prevent any intrinsics being used (mostly used when testing)
-//
-
-#ifdef BOOST_HAS_SGI_TYPE_TRAITS
-    // Hook into SGI's __type_traits class, this will pick up user supplied
-    // specializations as well as SGI - compiler supplied specializations.
-#   include <boost/type_traits/is_same.hpp>
-#   ifdef __NetBSD__
-      // There are two different versions of type_traits.h on NetBSD on Spark
-      // use an implicit include via algorithm instead, to make sure we get
-      // the same version as the std lib:
-#     include <algorithm>
-#   else
-#    include <type_traits.h>
-#   endif
-#   define BOOST_IS_POD(T) ::boost::is_same< typename ::__type_traits<T>::is_POD_type, ::__true_type>::value
-#   define BOOST_HAS_TRIVIAL_CONSTRUCTOR(T) ::boost::is_same< typename ::__type_traits<T>::has_trivial_default_constructor, ::__true_type>::value
-#   define BOOST_HAS_TRIVIAL_COPY(T) ::boost::is_same< typename ::__type_traits<T>::has_trivial_copy_constructor, ::__true_type>::value
-#   define BOOST_HAS_TRIVIAL_ASSIGN(T) ::boost::is_same< typename ::__type_traits<T>::has_trivial_assignment_operator, ::__true_type>::value
-#   define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) ::boost::is_same< typename ::__type_traits<T>::has_trivial_destructor, ::__true_type>::value
-
-#   ifdef __sgi
-#      define BOOST_HAS_TYPE_TRAITS_INTRINSICS
-#   endif
-#endif
-
-#if defined(__MSL_CPP__) && (__MSL_CPP__ >= 0x8000)
-    // Metrowerks compiler is acquiring intrinsic type traits support
-    // post version 8.  We hook into the published interface to pick up
-    // user defined specializations as well as compiler intrinsics as 
-    // and when they become available:
-#   include <msl_utility>
-#   define BOOST_IS_UNION(T) BOOST_STD_EXTENSION_NAMESPACE::is_union<T>::value
-#   define BOOST_IS_POD(T) BOOST_STD_EXTENSION_NAMESPACE::is_POD<T>::value
-#   define BOOST_HAS_TRIVIAL_CONSTRUCTOR(T) BOOST_STD_EXTENSION_NAMESPACE::has_trivial_default_ctor<T>::value
-#   define BOOST_HAS_TRIVIAL_COPY(T) BOOST_STD_EXTENSION_NAMESPACE::has_trivial_copy_ctor<T>::value
-#   define BOOST_HAS_TRIVIAL_ASSIGN(T) BOOST_STD_EXTENSION_NAMESPACE::has_trivial_assignment<T>::value
-#   define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) BOOST_STD_EXTENSION_NAMESPACE::has_trivial_dtor<T>::value
-#   define BOOST_HAS_TYPE_TRAITS_INTRINSICS
-#endif
-
-#if (defined(BOOST_MSVC) && defined(BOOST_MSVC_FULL_VER) && (BOOST_MSVC_FULL_VER >=140050215))\
-         || (defined(BOOST_INTEL) && defined(_MSC_VER) && (_MSC_VER >= 1500))
-//
-// Note that even though these intrinsics rely on other type traits classes
-// we do not #include those here as it produces cyclic dependencies and
-// can cause the intrinsics to not even be used at all!
-//
-#   define BOOST_IS_UNION(T) __is_union(T)
-#   define BOOST_IS_POD(T) (__is_pod(T) && __has_trivial_constructor(T))
-#   define BOOST_IS_EMPTY(T) __is_empty(T)
-#   define BOOST_HAS_TRIVIAL_CONSTRUCTOR(T) __has_trivial_constructor(T)
-#   define BOOST_HAS_TRIVIAL_ASSIGN(T) (__has_trivial_assign(T) || ( ::boost::is_pod<T>::value && ! ::boost::is_const<T>::value && !::boost::is_volatile<T>::value))
-#   define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) (__has_trivial_destructor(T) || ::boost::is_pod<T>::value)
-#   define BOOST_HAS_NOTHROW_CONSTRUCTOR(T) (__has_nothrow_constructor(T) || ::boost::has_trivial_constructor<T>::value)
-#if !defined(BOOST_INTEL)
-#   define BOOST_HAS_NOTHROW_COPY(T) ((__has_nothrow_copy(T) || ::boost::has_trivial_copy<T>::value) && !is_array<T>::value)
-#   define BOOST_HAS_TRIVIAL_COPY(T) (__has_trivial_copy(T) || ::boost::is_pod<T>::value)
-#elif (_MSC_VER >= 1900)
-#   define BOOST_HAS_NOTHROW_COPY(T) ((__is_nothrow_constructible(T, typename add_lvalue_reference<typename add_const<T>::type>::type)) && !is_array<T>::value)
-#   define BOOST_HAS_TRIVIAL_COPY(T) (__is_trivially_constructible(T, typename add_lvalue_reference<typename add_const<T>::type>::type))
-#endif
-#   define BOOST_HAS_NOTHROW_ASSIGN(T) (__has_nothrow_assign(T) || ::boost::has_trivial_assign<T>::value)
-#   define BOOST_HAS_VIRTUAL_DESTRUCTOR(T) __has_virtual_destructor(T)
-
-#   define BOOST_IS_ABSTRACT(T) __is_abstract(T)
-#   define BOOST_IS_BASE_OF(T,U) (__is_base_of(T,U) && !is_same<T,U>::value)
-#   define BOOST_IS_CLASS(T) __is_class(T)
-#   define BOOST_IS_CONVERTIBLE(T,U) ((__is_convertible_to(T,U) || (is_same<T,U>::value && !is_function<U>::value)) && !__is_abstract(U))
-#   define BOOST_IS_ENUM(T) __is_enum(T)
-//  This one fails if the default alignment has been changed with /Zp:
-//  #   define BOOST_ALIGNMENT_OF(T) __alignof(T)
-
-#   if defined(_MSC_VER) && (_MSC_VER >= 1800)
-#       define BOOST_HAS_TRIVIAL_MOVE_CONSTRUCTOR(T) ((__is_trivially_constructible(T, T&&) || boost::is_pod<T>::value) && ! ::boost::is_volatile<T>::value && ! ::boost::is_reference<T>::value)
-#       define BOOST_HAS_TRIVIAL_MOVE_ASSIGN(T) ((__is_trivially_assignable(T, T&&) || boost::is_pod<T>::value) && ! ::boost::is_const<T>::value && !::boost::is_volatile<T>::value && ! ::boost::is_reference<T>::value)
-#   elif defined(_MSC_VER) && (_MSC_VER >= 1700)
-#       define BOOST_HAS_TRIVIAL_MOVE_CONSTRUCTOR(T) ((__has_trivial_move_constructor(T) || boost::is_pod<T>::value) && ! ::boost::is_volatile<T>::value && ! ::boost::is_reference<T>::value)
-#       define BOOST_HAS_TRIVIAL_MOVE_ASSIGN(T) ((__has_trivial_move_assign(T) || boost::is_pod<T>::value) && ! ::boost::is_const<T>::value && !::boost::is_volatile<T>::value && ! ::boost::is_reference<T>::value)
-#   endif
-#ifndef BOOST_NO_CXX11_FINAL
-//  This one doesn't quite always do the right thing on older VC++ versions
-//  we really need it when the final keyword is supported though:
-#   define BOOST_IS_POLYMORPHIC(T) __is_polymorphic(T)
-#endif
-#if _MSC_FULL_VER >= 180020827
-#   define BOOST_IS_NOTHROW_MOVE_ASSIGN(T) (__is_nothrow_assignable(T&, T&&))
-#   define BOOST_IS_NOTHROW_MOVE_CONSTRUCT(T) (__is_nothrow_constructible(T, T&&))
-#endif
-#if _MSC_VER >= 1800
-#   define BOOST_IS_FINAL(T) __is_final(T)
-#endif
-#   define BOOST_HAS_TYPE_TRAITS_INTRINSICS
-#endif
-
-#if defined(__DMC__) && (__DMC__ >= 0x848)
-// For Digital Mars C++, www.digitalmars.com
-#   define BOOST_IS_UNION(T) (__typeinfo(T) & 0x400)
-#   define BOOST_IS_POD(T) (__typeinfo(T) & 0x800)
-#   define BOOST_IS_EMPTY(T) (__typeinfo(T) & 0x1000)
-#   define BOOST_HAS_TRIVIAL_CONSTRUCTOR(T) (__typeinfo(T) & 0x10)
-#   define BOOST_HAS_TRIVIAL_COPY(T) (__typeinfo(T) & 0x20)
-#   define BOOST_HAS_TRIVIAL_ASSIGN(T) (__typeinfo(T) & 0x40)
-#   define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) (__typeinfo(T) & 0x8)
-#   define BOOST_HAS_NOTHROW_CONSTRUCTOR(T) (__typeinfo(T) & 0x80)
-#   define BOOST_HAS_NOTHROW_COPY(T) (__typeinfo(T) & 0x100)
-#   define BOOST_HAS_NOTHROW_ASSIGN(T) (__typeinfo(T) & 0x200)
-#   define BOOST_HAS_VIRTUAL_DESTRUCTOR(T) (__typeinfo(T) & 0x4)
-#   define BOOST_HAS_TYPE_TRAITS_INTRINSICS
-#endif
-
-#if defined(BOOST_CLANG) && defined(__has_feature) && !defined(__CUDACC__)
-//
-// Note that these intrinsics are disabled for the CUDA meta-compiler as it appears
-// to not support them, even though the underlying clang compiler does so.
-// This is a rubbish fix as it basically stops type traits from working correctly, 
-// but maybe the best we can do for now.  See https://svn.boost.org/trac/boost/ticket/10694
-//
-//
-// Note that even though these intrinsics rely on other type traits classes
-// we do not #include those here as it produces cyclic dependencies and
-// can cause the intrinsics to not even be used at all!
-//
-#   include <cstddef>
-
-#   if __has_feature(is_union)
-#     define BOOST_IS_UNION(T) __is_union(T)
-#   endif
-#   if (!defined(__GLIBCXX__) || (__GLIBCXX__ >= 20080306 && __GLIBCXX__ != 20080519)) && __has_feature(is_pod)
-#     define BOOST_IS_POD(T) __is_pod(T)
-#   endif
-#   if (!defined(__GLIBCXX__) || (__GLIBCXX__ >= 20080306 && __GLIBCXX__ != 20080519)) && __has_feature(is_empty)
-#     define BOOST_IS_EMPTY(T) __is_empty(T)
-#   endif
-#   if __has_feature(has_trivial_constructor)
-#     define BOOST_HAS_TRIVIAL_CONSTRUCTOR(T) __has_trivial_constructor(T)
-#   endif
-#   if __has_feature(has_trivial_copy)
-#     define BOOST_HAS_TRIVIAL_COPY(T) (__has_trivial_copy(T) && !is_reference<T>::value)
-#   endif
-#   if __has_feature(has_trivial_assign)
-#     define BOOST_HAS_TRIVIAL_ASSIGN(T) (__has_trivial_assign(T) && !is_volatile<T>::value && is_assignable<T&, const T&>::value)
-#   endif
-#   if __has_feature(has_trivial_destructor)
-#     define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) (__has_trivial_destructor(T)  && is_destructible<T>::value)
-#   endif
-#   if __has_feature(has_nothrow_constructor)
-#     define BOOST_HAS_NOTHROW_CONSTRUCTOR(T) (__has_nothrow_constructor(T) && is_default_constructible<T>::value)
-#   endif
-#   if __has_feature(has_nothrow_copy)
-#     define BOOST_HAS_NOTHROW_COPY(T) (__has_nothrow_copy(T) && !is_volatile<T>::value && !is_reference<T>::value && is_copy_constructible<T>::value)
-#   endif
-#   if __has_feature(has_nothrow_assign)
-#     define BOOST_HAS_NOTHROW_ASSIGN(T) (__has_nothrow_assign(T) && !is_volatile<T>::value && is_assignable<T&, const T&>::value)
-#   endif
-#   if __has_feature(has_virtual_destructor)
-#     define BOOST_HAS_VIRTUAL_DESTRUCTOR(T) __has_virtual_destructor(T)
-#   endif
-#   if __has_feature(is_abstract)
-#     define BOOST_IS_ABSTRACT(T) __is_abstract(T)
-#   endif
-#   if __has_feature(is_base_of)
-#     define BOOST_IS_BASE_OF(T,U) (__is_base_of(T,U) && !is_same<T,U>::value)
-#   endif
-#   if __has_feature(is_class)
-#     define BOOST_IS_CLASS(T) __is_class(T)
-#   endif
-#   if __has_feature(is_convertible_to)
-#     define BOOST_IS_CONVERTIBLE(T,U) __is_convertible_to(T,U)
-#   endif
-#   if __has_feature(is_enum)
-#     define BOOST_IS_ENUM(T) __is_enum(T)
-#   endif
-#   if __has_feature(is_polymorphic)
-#     define BOOST_IS_POLYMORPHIC(T) __is_polymorphic(T)
-#   endif
-#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
-#   if __has_extension(is_trivially_constructible)
-#     define BOOST_HAS_TRIVIAL_MOVE_CONSTRUCTOR(T) (__is_trivially_constructible(T, T&&) && is_constructible<T, T&&>::value && !::boost::is_volatile<T>::value)
-#   endif
-#   if __has_extension(is_trivially_assignable)
-#     define BOOST_HAS_TRIVIAL_MOVE_ASSIGN(T) (__is_trivially_assignable(T&, T&&) && is_assignable<T&, T&&>::value && !::boost::is_volatile<T>::value)
-#   endif
-#endif
-#   if (!defined(unix) && !defined(__unix__)) || defined(__LP64__) || !defined(__GNUC__)
-// GCC sometimes lies about alignment requirements
-// of type double on 32-bit unix platforms, use the
-// old implementation instead in that case:
-#     define BOOST_ALIGNMENT_OF(T) __alignof(T)
-#   endif
-#   if __has_feature(is_final)
-#     define BOOST_IS_FINAL(T) __is_final(T)
-#   endif
-
-#   define BOOST_HAS_TYPE_TRAITS_INTRINSICS
-#endif
-
-#if defined(__GNUC__) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 3) && !defined(__GCCXML__))) && !defined(BOOST_CLANG)
-//
-// Note that even though these intrinsics rely on other type traits classes
-// we do not #include those here as it produces cyclic dependencies and
-// can cause the intrinsics to not even be used at all!
-//
-
-#ifdef BOOST_INTEL
-#  define BOOST_INTEL_TT_OPTS || is_pod<T>::value
-#else
-#  define BOOST_INTEL_TT_OPTS
-#endif
-
-#   define BOOST_IS_UNION(T) __is_union(T)
-#   define BOOST_IS_POD(T) __is_pod(T)
-#   define BOOST_IS_EMPTY(T) __is_empty(T)
-#   define BOOST_HAS_TRIVIAL_CONSTRUCTOR(T) ((__has_trivial_constructor(T) BOOST_INTEL_TT_OPTS) && ! ::boost::is_volatile<T>::value)
-#   define BOOST_HAS_TRIVIAL_COPY(T) ((__has_trivial_copy(T) BOOST_INTEL_TT_OPTS) && !is_reference<T>::value)
-#if (__GNUC__ * 100 + __GNUC_MINOR__) >= 409
-#   define BOOST_HAS_TRIVIAL_ASSIGN(T) ((__has_trivial_assign(T) BOOST_INTEL_TT_OPTS) && ! ::boost::is_volatile<T>::value && ! ::boost::is_const<T>::value && is_assignable<T&, const T&>::value)
-#   define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) (__has_trivial_destructor(T) BOOST_INTEL_TT_OPTS && is_destructible<T>::value)
-#   define BOOST_HAS_NOTHROW_CONSTRUCTOR(T) (__has_nothrow_constructor(T) && is_default_constructible<T>::value BOOST_INTEL_TT_OPTS)
-#   define BOOST_HAS_NOTHROW_COPY(T) ((__has_nothrow_copy(T) BOOST_INTEL_TT_OPTS) && !is_volatile<T>::value && !is_reference<T>::value && is_copy_constructible<T>::value)
-#   define BOOST_HAS_NOTHROW_ASSIGN(T) ((__has_nothrow_assign(T) BOOST_INTEL_TT_OPTS) && !is_volatile<T>::value && !is_const<T>::value && is_assignable<T&, const T&>::value)
-#else
-#   define BOOST_HAS_TRIVIAL_ASSIGN(T) ((__has_trivial_assign(T) BOOST_INTEL_TT_OPTS) && ! ::boost::is_volatile<T>::value && ! ::boost::is_const<T>::value)
-#   define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) (__has_trivial_destructor(T) BOOST_INTEL_TT_OPTS)
-#   define BOOST_HAS_NOTHROW_CONSTRUCTOR(T) (__has_nothrow_constructor(T) BOOST_INTEL_TT_OPTS)
-#if ((__GNUC__ * 100 + __GNUC_MINOR__) != 407) && ((__GNUC__ * 100 + __GNUC_MINOR__) != 408)
-#   define BOOST_HAS_NOTHROW_COPY(T) ((__has_nothrow_copy(T) BOOST_INTEL_TT_OPTS) && !is_volatile<T>::value && !is_reference<T>::value && !is_array<T>::value)
-#endif
-#   define BOOST_HAS_NOTHROW_ASSIGN(T) ((__has_nothrow_assign(T) BOOST_INTEL_TT_OPTS) && !is_volatile<T>::value && !is_const<T>::value && !is_array<T>::value)
-#endif
-#   define BOOST_HAS_VIRTUAL_DESTRUCTOR(T) __has_virtual_destructor(T)
-
-#   define BOOST_IS_ABSTRACT(T) __is_abstract(T)
-#   define BOOST_IS_BASE_OF(T,U) (__is_base_of(T,U) && !is_same<T,U>::value)
-#   define BOOST_IS_CLASS(T) __is_class(T)
-#   define BOOST_IS_ENUM(T) __is_enum(T)
-#   define BOOST_IS_POLYMORPHIC(T) __is_polymorphic(T)
-#   if (!defined(unix) && !defined(__unix__) && \
-       !(defined(__VXWORKS__) && defined(__i386__)))  || defined(__LP64__)
-      // GCC sometimes lies about alignment requirements
-      // of type double on 32-bit unix platforms, use the
-      // old implementation instead in that case:
-#     define BOOST_ALIGNMENT_OF(T) __alignof__(T)
-#   endif
-#   if (__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ >= 7))
-#     define BOOST_IS_FINAL(T) __is_final(T)
-#   endif
-
-#   if (__GNUC__ >= 5) && (__cplusplus >= 201103)
-#     define BOOST_HAS_TRIVIAL_MOVE_ASSIGN(T) (__is_trivially_assignable(T&, T&&) && is_assignable<T&, T&&>::value && !::boost::is_volatile<T>::value)
-#     define BOOST_HAS_TRIVIAL_MOVE_CONSTRUCTOR(T) (__is_trivially_constructible(T, T&&) && is_constructible<T, T&&>::value && !::boost::is_volatile<T>::value)
-#   endif
-
-#   define BOOST_HAS_TYPE_TRAITS_INTRINSICS
-#endif
-
-#if defined(__SUNPRO_CC) && (__SUNPRO_CC >= 0x5130)
-#   define BOOST_IS_UNION(T) __oracle_is_union(T)
-#   define BOOST_IS_POD(T) (__oracle_is_pod(T) && !is_function<T>::value)
-#   define BOOST_IS_EMPTY(T) __oracle_is_empty(T)
-#   define BOOST_HAS_TRIVIAL_CONSTRUCTOR(T) (__oracle_has_trivial_constructor(T) && ! ::boost::is_volatile<T>::value)
-#   define BOOST_HAS_TRIVIAL_COPY(T) (__oracle_has_trivial_copy(T) && !is_reference<T>::value)
-#   define BOOST_HAS_TRIVIAL_ASSIGN(T) ((__oracle_has_trivial_assign(T) || __oracle_is_trivial(T)) && ! ::boost::is_volatile<T>::value && ! ::boost::is_const<T>::value && is_assignable<T&, const T&>::value)
-#   define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) (__oracle_has_trivial_destructor(T) && is_destructible<T>::value)
-#   define BOOST_HAS_NOTHROW_CONSTRUCTOR(T) ((__oracle_has_nothrow_constructor(T) || __oracle_has_trivial_constructor(T) || __oracle_is_trivial(T)) && is_default_constructible<T>::value)
-//  __oracle_has_nothrow_copy appears to behave the same as __oracle_has_nothrow_assign, disabled for now:
-//#   define BOOST_HAS_NOTHROW_COPY(T) ((__oracle_has_nothrow_copy(T) || __oracle_has_trivial_copy(T) || __oracle_is_trivial(T)) && !is_volatile<T>::value && !is_reference<T>::value && is_copy_constructible<T>::value)
-#   define BOOST_HAS_NOTHROW_ASSIGN(T) ((__oracle_has_nothrow_assign(T) || __oracle_has_trivial_assign(T) || __oracle_is_trivial(T)) && !is_volatile<T>::value && !is_const<T>::value && is_assignable<T&, const T&>::value)
-#   define BOOST_HAS_VIRTUAL_DESTRUCTOR(T) __oracle_has_virtual_destructor(T)
-
-#   define BOOST_IS_ABSTRACT(T) __oracle_is_abstract(T)
-//#   define BOOST_IS_BASE_OF(T,U) (__is_base_of(T,U) && !is_same<T,U>::value)
-#   define BOOST_IS_CLASS(T) __oracle_is_class(T)
-#   define BOOST_IS_ENUM(T) __oracle_is_enum(T)
-#   define BOOST_IS_POLYMORPHIC(T) __oracle_is_polymorphic(T)
-#   define BOOST_ALIGNMENT_OF(T) __alignof__(T)
-#   define BOOST_IS_FINAL(T) __oracle_is_final(T)
-
-#   define BOOST_HAS_TYPE_TRAITS_INTRINSICS
-#endif
-
-#if defined(__ghs__) && (__GHS_VERSION_NUMBER >= 600)
-#   include <boost/type_traits/is_same.hpp>
-#   include <boost/type_traits/is_reference.hpp>
-#   include <boost/type_traits/is_volatile.hpp>
-
-#   define BOOST_IS_UNION(T) __is_union(T)
-#   define BOOST_IS_POD(T) __is_pod(T)
-#   define BOOST_IS_EMPTY(T) __is_empty(T)
-#   define BOOST_HAS_TRIVIAL_CONSTRUCTOR(T) __has_trivial_constructor(T)
-#   define BOOST_HAS_TRIVIAL_COPY(T) (__has_trivial_copy(T) && !is_reference<T>::value)
-#   define BOOST_HAS_TRIVIAL_ASSIGN(T) (__has_trivial_assign(T) && !is_volatile<T>::value)
-#   define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) __has_trivial_destructor(T)
-#   define BOOST_HAS_NOTHROW_CONSTRUCTOR(T) __has_nothrow_constructor(T)
-#   define BOOST_HAS_NOTHROW_COPY(T) (__has_nothrow_copy(T) && !is_volatile<T>::value && !is_reference<T>::value)
-#   define BOOST_HAS_NOTHROW_ASSIGN(T) (__has_nothrow_assign(T) && !is_volatile<T>::value)
-#   define BOOST_HAS_VIRTUAL_DESTRUCTOR(T) __has_virtual_destructor(T)
-
-#   define BOOST_IS_ABSTRACT(T) __is_abstract(T)
-#   define BOOST_IS_BASE_OF(T,U) (__is_base_of(T,U) && !is_same<T,U>::value)
-#   define BOOST_IS_CLASS(T) __is_class(T)
-#   define BOOST_IS_ENUM(T) __is_enum(T)
-#   define BOOST_IS_POLYMORPHIC(T) __is_polymorphic(T)
-#   define BOOST_ALIGNMENT_OF(T) __alignof__(T)
-#   define BOOST_HAS_TYPE_TRAITS_INTRINSICS
-#endif
-
-# if defined(__CODEGEARC__)
-#   include <boost/type_traits/is_same.hpp>
-#   include <boost/type_traits/is_reference.hpp>
-#   include <boost/type_traits/is_volatile.hpp>
-#   include <boost/type_traits/is_void.hpp>
-
-#   define BOOST_IS_UNION(T) __is_union(T)
-#   define BOOST_IS_POD(T) __is_pod(T)
-#   define BOOST_IS_EMPTY(T) __is_empty(T)
-#   define BOOST_HAS_TRIVIAL_CONSTRUCTOR(T) (__has_trivial_default_constructor(T))
-#   define BOOST_HAS_TRIVIAL_COPY(T) (__has_trivial_copy_constructor(T) && !is_reference<T>::value)
-#   define BOOST_HAS_TRIVIAL_ASSIGN(T) (__has_trivial_assign(T) && !is_volatile<T>::value)
-#   define BOOST_HAS_TRIVIAL_DESTRUCTOR(T) (__has_trivial_destructor(T))
-#   define BOOST_HAS_NOTHROW_CONSTRUCTOR(T) (__has_nothrow_default_constructor(T))
-#   define BOOST_HAS_NOTHROW_COPY(T) (__has_nothrow_copy_constructor(T) && !is_volatile<T>::value && !is_reference<T>::value)
-#   define BOOST_HAS_NOTHROW_ASSIGN(T) (__has_nothrow_assign(T) && !is_volatile<T>::value)
-#   define BOOST_HAS_VIRTUAL_DESTRUCTOR(T) __has_virtual_destructor(T)
-
-#   define BOOST_IS_ABSTRACT(T) __is_abstract(T)
-#   define BOOST_IS_BASE_OF(T,U) (__is_base_of(T,U) && !is_void<T>::value && !is_void<U>::value)
-#   define BOOST_IS_CLASS(T) __is_class(T)
-#   define BOOST_IS_CONVERTIBLE(T,U) (__is_convertible(T,U) || is_void<U>::value)
-#   define BOOST_IS_ENUM(T) __is_enum(T)
-#   define BOOST_IS_POLYMORPHIC(T) __is_polymorphic(T)
-#   define BOOST_ALIGNMENT_OF(T) alignof(T)
-
-#   define BOOST_HAS_TYPE_TRAITS_INTRINSICS
-#endif
-
-#endif // BOOST_TT_DISABLE_INTRINSICS
-
-#endif // BOOST_TT_INTRINSICS_HPP_INCLUDED
-
diff --git a/third_party/boost/boost/type_traits/is_abstract.hpp b/third_party/boost/boost/type_traits/is_abstract.hpp
deleted file mode 100644
index 781d94a..0000000
--- a/third_party/boost/boost/type_traits/is_abstract.hpp
+++ /dev/null
@@ -1,150 +0,0 @@
-#ifndef BOOST_TT_IS_ABSTRACT_CLASS_HPP
-#define BOOST_TT_IS_ABSTRACT_CLASS_HPP
-
-#if defined(_MSC_VER)
-# pragma once
-#endif
-
-/////////1/////////2/////////3/////////4/////////5/////////6/////////7/////////8
-// is_abstract_class.hpp:
-//
-//  (C) Copyright 2002 Rani Sharoni (rani_sharoni@hotmail.com) and Robert Ramey
-//  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)
-//  
-//  See http://www.boost.org for updates, documentation, and revision history.
-//
-
-// Compile type discovery whether given type is abstract class or not.
-//
-//   Requires DR 337 to be supported by compiler
-//   (http://www.open-std.org/jtc1/sc22/wg21/docs/cwg_active.html#337).
-//
-//
-// Believed (Jan 2004) to work on:
-//  - GCC 3.4
-//  - VC++ 7.1
-//  - compilers with new EDG frontend (Intel C++ 7, Comeau 4.3.2)
-//
-// Doesn't work on:
-//  - VC++6, VC++7.0 and less
-//  - GCC 3.3.X and less
-//  - Borland C++ 6 and less
-//      
-//
-// History:
-//  - Originally written by Rani Sharoni, see
-//    http://groups.google.com/groups?selm=df893da6.0207110613.75b2fe90%40posting.google.com
-//    At this time supported by EDG (Intel C++ 7, Comeau 4.3.2) and VC7.1.
-//  - Adapted and added into Boost.Serialization library by Robert Ramey 
-//    (starting with submission #10).
-//  - Jan 2004: GCC 3.4 fixed to support DR337 (Giovanni Bajo).
-//  - Jan 2004: modified to be part of Boost.TypeTraits (Pavel Vozenilek).
-//  - Nov 2004: Christoph Ludwig found that the implementation did not work with
-//              template types and gcc-3.4 or VC7.1, fix due to Christoph Ludwig
-//              and John Maddock.
-//  - Dec 2004: Added new config macro BOOST_NO_IS_ABSTRACT which causes the template
-//              to degrade gracefully, rather than trash the compiler (John Maddock).
-//
-
-#include <cstddef> // size_t
-#include <boost/type_traits/intrinsics.hpp>
-#include <boost/type_traits/integral_constant.hpp>
-#ifndef BOOST_IS_ABSTRACT
-#include <boost/static_assert.hpp>
-#include <boost/type_traits/detail/yes_no_type.hpp>
-#include <boost/type_traits/is_class.hpp>
-#ifdef BOOST_NO_IS_ABSTRACT
-#include <boost/type_traits/is_polymorphic.hpp>
-#endif
-#endif
-
-namespace boost {
-
-namespace detail{
-
-#ifdef BOOST_IS_ABSTRACT
-template <class T>
-struct is_abstract_imp
-{
-   BOOST_STATIC_CONSTANT(bool, value = BOOST_IS_ABSTRACT(T));
-};
-#elif !defined(BOOST_NO_IS_ABSTRACT)
-template<class T>
-struct is_abstract_imp2
-{
-   // 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 type_traits::no_type check_sig(U (*)[1]);
-   template<class U>
-   static type_traits::yes_type check_sig(...);
-   //
-   // T must be a complete type, further if T is a template then
-   // it must be instantiated in order for us to get the right answer:
-   //
-   BOOST_STATIC_ASSERT(sizeof(T) != 0);
-
-   // GCC2 won't even parse this template if we embed the computation
-   // of s1 in the computation of value.
-#ifdef __GNUC__
-   BOOST_STATIC_CONSTANT(std::size_t, s1 = sizeof(is_abstract_imp2<T>::template check_sig<T>(0)));
-#else
-#if BOOST_WORKAROUND(BOOST_MSVC_FULL_VER, >= 140050000)
-#pragma warning(push)
-#pragma warning(disable:6334)
-#endif
-   BOOST_STATIC_CONSTANT(std::size_t, s1 = sizeof(check_sig<T>(0)));
-#if BOOST_WORKAROUND(BOOST_MSVC_FULL_VER, >= 140050000)
-#pragma warning(pop)
-#endif
-#endif
-    
-   BOOST_STATIC_CONSTANT(bool, value = 
-      (s1 == sizeof(type_traits::yes_type)));
-};
-
-template <bool v>
-struct is_abstract_select
-{
-   template <class T>
-   struct rebind
-   {
-      typedef is_abstract_imp2<T> type;
-   };
-};
-template <>
-struct is_abstract_select<false>
-{
-   template <class T>
-   struct rebind
-   {
-      typedef false_type type;
-   };
-};
-
-template <class T>
-struct is_abstract_imp
-{
-   typedef is_abstract_select< ::boost::is_class<T>::value> selector;
-   typedef typename selector::template rebind<T> binder;
-   typedef typename binder::type type;
-
-   BOOST_STATIC_CONSTANT(bool, value = type::value);
-};
-
-#endif
-}
-
-#ifndef BOOST_NO_IS_ABSTRACT
-template <class T> struct is_abstract : public integral_constant<bool, ::boost::detail::is_abstract_imp<T>::value> {};
-#else
-template <class T> struct is_abstract : public integral_constant<bool, ::boost::detail::is_polymorphic_imp<T>::value> {};
-#endif
-
-} // namespace boost
-
-#endif //BOOST_TT_IS_ABSTRACT_CLASS_HPP
diff --git a/third_party/boost/boost/type_traits/is_arithmetic.hpp b/third_party/boost/boost/type_traits/is_arithmetic.hpp
deleted file mode 100644
index c23811e..0000000
--- a/third_party/boost/boost/type_traits/is_arithmetic.hpp
+++ /dev/null
@@ -1,22 +0,0 @@
-
-//  (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
-//  Use, modification and distribution are subject to the Boost Software License,
-//  Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-//  http://www.boost.org/LICENSE_1_0.txt).
-//
-//  See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-#ifndef BOOST_TT_IS_ARITHMETIC_HPP_INCLUDED
-#define BOOST_TT_IS_ARITHMETIC_HPP_INCLUDED
-
-#include <boost/type_traits/is_integral.hpp>
-#include <boost/type_traits/is_floating_point.hpp>
-
-namespace boost {
-
-template <class T>
-struct is_arithmetic : public integral_constant<bool, is_integral<T>::value || is_floating_point<T>::value> {};
-
-} // namespace boost
-
-#endif // BOOST_TT_IS_ARITHMETIC_HPP_INCLUDED
diff --git a/third_party/boost/boost/type_traits/is_array.hpp b/third_party/boost/boost/type_traits/is_array.hpp
deleted file mode 100644
index 53e1613..0000000
--- a/third_party/boost/boost/type_traits/is_array.hpp
+++ /dev/null
@@ -1,43 +0,0 @@
-
-//  (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, Howard
-//  Hinnant & John Maddock 2000.  
-//  Use, modification and distribution are subject to the Boost Software License,
-//  Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-//  http://www.boost.org/LICENSE_1_0.txt).
-//
-//  See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-
-// Some fixes for is_array are based on a newsgroup posting by Jonathan Lundquist.
-
-
-#ifndef BOOST_TT_IS_ARRAY_HPP_INCLUDED
-#define BOOST_TT_IS_ARRAY_HPP_INCLUDED
-
-#include <boost/type_traits/integral_constant.hpp>
-#include <cstddef> // size_t
-
-namespace boost {
-
-#if defined( __CODEGEARC__ )
-   template <class T> struct is_array : public integral_constant<bool, __is_array(T)> {};
-#else
-   template <class T> struct is_array : public false_type {};
-#if !defined(BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS)
-   template <class T, std::size_t N> struct is_array<T[N]> : public true_type {};
-   template <class T, std::size_t N> struct is_array<T const[N]> : public true_type{};
-   template <class T, std::size_t N> struct is_array<T volatile[N]> : public true_type{};
-   template <class T, std::size_t N> struct is_array<T const volatile[N]> : public true_type{};
-#if !BOOST_WORKAROUND(__BORLANDC__, < 0x600) && !defined(__IBMCPP__) &&  !BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840))
-   template <class T> struct is_array<T[]> : public true_type{};
-   template <class T> struct is_array<T const[]> : public true_type{};
-   template <class T> struct is_array<T const volatile[]> : public true_type{};
-   template <class T> struct is_array<T volatile[]> : public true_type{};
-#endif
-#endif
-
-#endif
-
-} // namespace boost
-
-#endif // BOOST_TT_IS_ARRAY_HPP_INCLUDED
diff --git a/third_party/boost/boost/type_traits/is_class.hpp b/third_party/boost/boost/type_traits/is_class.hpp
deleted file mode 100644
index e3a22d2..0000000
--- a/third_party/boost/boost/type_traits/is_class.hpp
+++ /dev/null
@@ -1,114 +0,0 @@
-//  (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, Howard
-//  Hinnant & John Maddock 2000-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/type_traits for most recent version including documentation.
-
-
-#ifndef BOOST_TT_IS_CLASS_HPP_INCLUDED
-#define BOOST_TT_IS_CLASS_HPP_INCLUDED
-
-#include <boost/type_traits/detail/config.hpp>
-#include <boost/type_traits/intrinsics.hpp>
-#include <boost/type_traits/integral_constant.hpp>
-#ifndef BOOST_IS_CLASS
-#   include <boost/type_traits/is_union.hpp>
-
-#ifdef BOOST_TT_HAS_CONFORMING_IS_CLASS_IMPLEMENTATION
-#   include <boost/type_traits/detail/yes_no_type.hpp>
-#else
-#   include <boost/type_traits/is_scalar.hpp>
-#   include <boost/type_traits/is_array.hpp>
-#   include <boost/type_traits/is_reference.hpp>
-#   include <boost/type_traits/is_void.hpp>
-#   include <boost/type_traits/is_function.hpp>
-#endif
-
-#endif // BOOST_IS_CLASS
-
-namespace boost {
-
-namespace detail {
-
-#ifndef BOOST_IS_CLASS
-#ifdef BOOST_TT_HAS_CONFORMING_IS_CLASS_IMPLEMENTATION
-
-// This is actually the conforming implementation which works with
-// abstract classes.  However, enough compilers have trouble with
-// it that most will use the one in
-// boost/type_traits/object_traits.hpp. This implementation
-// actually works with VC7.0, but other interactions seem to fail
-// when we use it.
-
-// is_class<> metafunction due to Paul Mensonides
-// (leavings@attbi.com). For more details:
-// http://groups.google.com/groups?hl=en&selm=000001c1cc83%24e154d5e0%247772e50c%40c161550a&rnum=1
-#if defined(__GNUC__)  && !defined(__EDG_VERSION__)
-
-template <class U> ::boost::type_traits::yes_type is_class_tester(void(U::*)(void));
-template <class U> ::boost::type_traits::no_type is_class_tester(...);
-
-template <typename T>
-struct is_class_impl
-{
-
-    BOOST_STATIC_CONSTANT(bool, value =
-            sizeof(is_class_tester<T>(0)) == sizeof(::boost::type_traits::yes_type)
-            && ! ::boost::is_union<T>::value
-        );
-};
-
-#else
-
-template <typename T>
-struct is_class_impl
-{
-    template <class U> static ::boost::type_traits::yes_type is_class_tester(void(U::*)(void));
-    template <class U> static ::boost::type_traits::no_type is_class_tester(...);
-
-    BOOST_STATIC_CONSTANT(bool, value =
-            sizeof(is_class_tester<T>(0)) == sizeof(::boost::type_traits::yes_type)
-            && ! ::boost::is_union<T>::value
-        );
-};
-
-#endif
-
-#else
-
-template <typename T>
-struct is_class_impl
-{
-    BOOST_STATIC_CONSTANT(bool, value =
-        ! ::boost::is_union<T>::value >::value
-        && ! ::boost::is_scalar<T>::value
-        && ! ::boost::is_array<T>::value
-        && ! ::boost::is_reference<T>::value
-        && ! ::boost::is_void<T>::value
-        && ! ::boost::is_function<T>::value
-        );
-};
-
-# endif // BOOST_TT_HAS_CONFORMING_IS_CLASS_IMPLEMENTATION
-# else // BOOST_IS_CLASS
-template <typename T>
-struct is_class_impl
-{
-    BOOST_STATIC_CONSTANT(bool, value = BOOST_IS_CLASS(T));
-};
-# endif // BOOST_IS_CLASS
-
-} // namespace detail
-
-template <class T> struct is_class : public integral_constant<bool, ::boost::detail::is_class_impl<T>::value> {};
-# ifdef __EDG_VERSION__
-template <class T> struct is_class<const T> : public is_class<T>{};
-template <class T> struct is_class<const volatile T> : public is_class<T>{};
-template <class T> struct is_class<volatile T> : public is_class<T>{};
-# endif
-    
-} // namespace boost
-
-#endif // BOOST_TT_IS_CLASS_HPP_INCLUDED
diff --git a/third_party/boost/boost/type_traits/is_complete.hpp b/third_party/boost/boost/type_traits/is_complete.hpp
deleted file mode 100644
index 07cb897..0000000
--- a/third_party/boost/boost/type_traits/is_complete.hpp
+++ /dev/null
@@ -1,92 +0,0 @@
-
-//  (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/type_traits for most recent version including documentation.
- 
-#ifndef BOOST_TT_IS_COMPLETE_HPP_INCLUDED
-#define BOOST_TT_IS_COMPLETE_HPP_INCLUDED
-
-#include <boost/type_traits/declval.hpp>
-#include <boost/type_traits/integral_constant.hpp>
-#include <boost/type_traits/remove_reference.hpp>
-#include <boost/type_traits/is_function.hpp>
-#include <boost/type_traits/detail/yes_no_type.hpp>
-#include <boost/config/workaround.hpp>
-
-/*
- * CAUTION:
- * ~~~~~~~~
- *
- * THIS TRAIT EXISTS SOLELY TO GENERATE HARD ERRORS WHEN A ANOTHER TRAIT
- * WHICH REQUIRES COMPLETE TYPES AS ARGUMENTS IS PASSED AN INCOMPLETE TYPE
- *
- * DO NOT MAKE GENERAL USE OF THIS TRAIT, AS THE COMPLETENESS OF A TYPE
- * VARIES ACROSS TRANSLATION UNITS AS WELL AS WITHIN A SINGLE UNIT.
- *
-*/
-
-namespace boost {
-
-
-//
-// We will undef this if the trait isn't fully functional:
-//
-#define BOOST_TT_HAS_WORKING_IS_COMPLETE
-
-#if !defined(BOOST_NO_SFINAE_EXPR) && !BOOST_WORKAROUND(BOOST_MSVC, <= 1900) && !BOOST_WORKAROUND(BOOST_GCC_VERSION, < 40600)
-
-   namespace detail{
-
-      template <unsigned N>
-      struct ok_tag { double d; char c[N]; };
-
-      template <class T>
-      ok_tag<sizeof(T)> check_is_complete(int);
-      template <class T>
-      char check_is_complete(...);
-   }
-
-   template <class T> struct is_complete
-      : public integral_constant<bool, ::boost::is_function<typename boost::remove_reference<T>::type>::value || (sizeof(boost::detail::check_is_complete<T>(0)) != sizeof(char))> {};
-
-#elif !defined(BOOST_NO_SFINAE) && !defined(BOOST_NO_CXX11_FUNCTION_TEMPLATE_DEFAULT_ARGS) && !BOOST_WORKAROUND(BOOST_GCC_VERSION, < 40500)
-
-   namespace detail
-   {
-
-      template <class T>
-      struct is_complete_imp
-      {
-         template <class U, class = decltype(sizeof(boost::declval< U >())) >
-         static type_traits::yes_type check(U*);
-
-         template <class U>
-         static type_traits::no_type check(...);
-
-         static const bool value = sizeof(check<T>(0)) == sizeof(type_traits::yes_type);
-      };
-
-} // namespace detail
-
-
-   template <class T>
-   struct is_complete : boost::integral_constant<bool, ::boost::is_function<typename boost::remove_reference<T>::type>::value || ::boost::detail::is_complete_imp<T>::value>
-   {};
-   template <class T>
-   struct is_complete<T&> : boost::is_complete<T> {};
-   
-#else
-
-      template <class T> struct is_complete
-         : public boost::integral_constant<bool, true> {};
-
-#undef BOOST_TT_HAS_WORKING_IS_COMPLETE
-
-#endif
-
-} // namespace boost
-
-#endif // BOOST_TT_IS_COMPLETE_HPP_INCLUDED
diff --git a/third_party/boost/boost/type_traits/is_const.hpp b/third_party/boost/boost/type_traits/is_const.hpp
deleted file mode 100644
index e0ed88a..0000000
--- a/third_party/boost/boost/type_traits/is_const.hpp
+++ /dev/null
@@ -1,47 +0,0 @@
-
-//  (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, 
-//      Howard Hinnant and John Maddock 2000. 
-//  (C) Copyright Mat Marcus, Jesse Jones and Adobe Systems Inc 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/type_traits for most recent version including documentation.
-
-//    Fixed is_pointer, is_reference, is_const, is_volatile, is_same, 
-//    is_member_pointer based on the Simulated Partial Specialization work 
-//    of Mat Marcus and Jesse Jones. See  http://opensource.adobe.com or 
-//    http://groups.yahoo.com/group/boost/message/5441 
-//    Some workarounds in here use ideas suggested from "Generic<Programming>: 
-//    Mappings between Types and Values" 
-//    by Andrei Alexandrescu (see http://www.cuj.com/experts/1810/alexandr.html).
-
-
-#ifndef BOOST_TT_IS_CONST_HPP_INCLUDED
-#define BOOST_TT_IS_CONST_HPP_INCLUDED
-
-#include <cstddef> // size_t
-#include <boost/type_traits/integral_constant.hpp>
-
-namespace boost {
-
-#if defined( __CODEGEARC__ )
-
-   template <class T>
-   struct is_const : public integral_constant<bool, __is_const(T)> {};
-
-#else
-
-   template <class T>
-   struct is_const : public false_type {};
-   template <class T> struct is_const<T const> : public true_type{};
-   template <class T, std::size_t N> struct is_const<T const[N]> : public true_type{};
-   template <class T> struct is_const<T const[]> : public true_type{};
-
-#endif
-
-} // namespace boost
-
-#endif // BOOST_TT_IS_CONST_HPP_INCLUDED
-
diff --git a/third_party/boost/boost/type_traits/is_convertible.hpp b/third_party/boost/boost/type_traits/is_convertible.hpp
deleted file mode 100644
index bf648fc..0000000
--- a/third_party/boost/boost/type_traits/is_convertible.hpp
+++ /dev/null
@@ -1,506 +0,0 @@
-
-// Copyright 2000 John Maddock (john@johnmaddock.co.uk)
-// Copyright 2000 Jeremy Siek (jsiek@lsc.nd.edu)
-// Copyright 1999, 2000 Jaakko Jarvi (jaakko.jarvi@cs.utu.fi)
-//
-//  Use, modification and distribution are subject to the Boost Software License,
-//  Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-//  http://www.boost.org/LICENSE_1_0.txt).
-//
-//  See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-#ifndef BOOST_TT_IS_CONVERTIBLE_HPP_INCLUDED
-#define BOOST_TT_IS_CONVERTIBLE_HPP_INCLUDED
-
-#include <boost/type_traits/intrinsics.hpp>
-#include <boost/type_traits/integral_constant.hpp>
-#include <boost/type_traits/is_complete.hpp>
-#include <boost/type_traits/is_void.hpp>
-#include <boost/type_traits/is_array.hpp>
-#include <boost/static_assert.hpp>
-#ifndef BOOST_IS_CONVERTIBLE
-#include <boost/type_traits/detail/yes_no_type.hpp>
-#include <boost/type_traits/detail/config.hpp>
-#include <boost/type_traits/is_array.hpp>
-#include <boost/type_traits/is_arithmetic.hpp>
-#include <boost/type_traits/is_void.hpp>
-#if !defined(BOOST_NO_IS_ABSTRACT)
-#include <boost/type_traits/is_abstract.hpp>
-#endif
-#include <boost/type_traits/add_lvalue_reference.hpp>
-#include <boost/type_traits/add_rvalue_reference.hpp>
-#include <boost/type_traits/is_function.hpp>
-
-#if defined(__MWERKS__)
-#include <boost/type_traits/remove_reference.hpp>
-#endif
-#if !defined(BOOST_NO_SFINAE_EXPR) && !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
-#  include <boost/type_traits/declval.hpp>
-#endif
-#elif defined(BOOST_MSVC) || defined(BOOST_INTEL)
-#include <boost/type_traits/is_function.hpp>
-#include <boost/type_traits/is_same.hpp>
-#endif // BOOST_IS_CONVERTIBLE
-
-namespace boost {
-
-#ifndef BOOST_IS_CONVERTIBLE
-
-// is one type convertible to another?
-//
-// there are multiple versions of the is_convertible
-// template, almost every compiler seems to require its
-// own version.
-//
-// Thanks to Andrei Alexandrescu for the original version of the
-// conversion detection technique!
-//
-
-namespace detail {
-
-#if !defined(BOOST_NO_SFINAE_EXPR) && !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && !(defined(BOOST_GCC) && (BOOST_GCC < 40700))
-
-   // This is a C++11 conforming version, place this first and use it wherever possible:
-
-#  define BOOST_TT_CXX11_IS_CONVERTIBLE
-
-   template <class A, class B, class C>
-   struct or_helper
-   {
-      static const bool value = (A::value || B::value || C::value);
-   };
-
-   template<typename From, typename To, bool b = or_helper<boost::is_void<From>, boost::is_function<To>, boost::is_array<To> >::value>
-   struct is_convertible_basic_impl
-   {
-      // Nothing converts to function or array, but void converts to void:
-      static const bool value = is_void<To>::value; 
-   };
-
-   template<typename From, typename To>
-   class is_convertible_basic_impl<From, To, false>
-   {
-      typedef char one;
-      typedef int  two;
-
-      template<typename To1>
-      static void test_aux(To1);
-
-      template<typename From1, typename To1>
-      static decltype(test_aux<To1>(boost::declval<From1>()), one()) test(int);
-
-      template<typename, typename>
-      static two test(...);
-
-   public:
-      static const bool value = sizeof(test<From, To>(0)) == 1;
-   };
-
-#elif defined(__BORLANDC__) && (__BORLANDC__ < 0x560)
-//
-// special version for Borland compilers
-// this version breaks when used for some
-// UDT conversions:
-//
-template <typename From, typename To>
-struct is_convertible_impl
-{
-#pragma option push -w-8074
-    // This workaround for Borland breaks the EDG C++ frontend,
-    // so we only use it for Borland.
-    template <typename T> struct checker
-    {
-        static ::boost::type_traits::no_type BOOST_TT_DECL _m_check(...);
-        static ::boost::type_traits::yes_type BOOST_TT_DECL _m_check(T);
-    };
-
-    static typename add_lvalue_reference<From>::type  _m_from;
-    static bool const value = sizeof( checker<To>::_m_check(_m_from) )
-        == sizeof(::boost::type_traits::yes_type);
-#pragma option pop
-};
-
-#elif defined(__GNUC__) || defined(__BORLANDC__) && (__BORLANDC__ < 0x600)
-// special version for gcc compiler + recent Borland versions
-// note that this does not pass UDT's through (...)
-
-struct any_conversion
-{
-    template <typename T> any_conversion(const volatile T&);
-    template <typename T> any_conversion(const T&);
-    template <typename T> any_conversion(volatile T&);
-    template <typename T> any_conversion(T&);
-};
-
-template <typename T> struct checker
-{
-    static boost::type_traits::no_type _m_check(any_conversion ...);
-    static boost::type_traits::yes_type _m_check(T, int);
-};
-
-template <typename From, typename To>
-struct is_convertible_basic_impl
-{
-    typedef typename add_lvalue_reference<From>::type lvalue_type;
-    typedef typename add_rvalue_reference<From>::type rvalue_type;
-    static lvalue_type _m_from;
-#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && ((__GNUC__ > 4) || ((__GNUC__ == 4) && (__GNUC_MINOR__ > 6)))
-    static bool const value =
-        sizeof( boost::detail::checker<To>::_m_check(static_cast<rvalue_type>(_m_from), 0) )
-        == sizeof(::boost::type_traits::yes_type);
-#else
-    static bool const value =
-        sizeof( boost::detail::checker<To>::_m_check(_m_from, 0) )
-        == sizeof(::boost::type_traits::yes_type);
-#endif
-};
-
-#elif (defined(__EDG_VERSION__) && (__EDG_VERSION__ >= 245) && !defined(__ICL)) \
-      || defined(__IBMCPP__) || defined(__HP_aCC)
-//
-// This is *almost* an ideal world implementation as it doesn't rely
-// on undefined behaviour by passing UDT's through (...).
-// Unfortunately it doesn't quite pass all the tests for most compilers (sigh...)
-// Enable this for your compiler if is_convertible_test.cpp will compile it...
-//
-// Note we do not enable this for VC7.1, because even though it passes all the
-// type_traits tests it is known to cause problems when instantiation occurs
-// deep within the instantiation tree :-(
-//
-struct any_conversion
-{
-    template <typename T> any_conversion(const volatile T&);
-    template <typename T> any_conversion(const T&);
-    template <typename T> any_conversion(volatile T&);
-    // we need this constructor to catch references to functions
-    // (which can not be cv-qualified):
-    template <typename T> any_conversion(T&);
-};
-
-template <typename From, typename To>
-struct is_convertible_basic_impl
-{
-    static ::boost::type_traits::no_type BOOST_TT_DECL _m_check(any_conversion ...);
-    static ::boost::type_traits::yes_type BOOST_TT_DECL _m_check(To, int);
-    typedef typename add_lvalue_reference<From>::type lvalue_type;
-    typedef typename add_rvalue_reference<From>::type rvalue_type; 
-    static lvalue_type _m_from;
-
-#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
-    BOOST_STATIC_CONSTANT(bool, value =
-        sizeof( _m_check(static_cast<rvalue_type>(_m_from), 0) ) == sizeof(::boost::type_traits::yes_type)
-        );
-#else
-    BOOST_STATIC_CONSTANT(bool, value =
-        sizeof( _m_check(_m_from, 0) ) == sizeof(::boost::type_traits::yes_type)
-        );
-#endif
-};
-
-#elif defined(__DMC__)
-
-struct any_conversion
-{
-    template <typename T> any_conversion(const volatile T&);
-    template <typename T> any_conversion(const T&);
-    template <typename T> any_conversion(volatile T&);
-    // we need this constructor to catch references to functions
-    // (which can not be cv-qualified):
-    template <typename T> any_conversion(T&);
-};
-
-template <typename From, typename To>
-struct is_convertible_basic_impl
-{
-    // Using '...' doesn't always work on Digital Mars. This version seems to.
-    template <class T>
-    static ::boost::type_traits::no_type BOOST_TT_DECL _m_check(any_conversion,  float, T);
-    static ::boost::type_traits::yes_type BOOST_TT_DECL _m_check(To, int, int);
-    typedef typename add_lvalue_reference<From>::type lvalue_type;
-    typedef typename add_rvalue_reference<From>::type rvalue_type;
-    static lvalue_type _m_from;
-
-    // Static constants sometime cause the conversion of _m_from to To to be
-    // called. This doesn't happen with an enum.
-#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
-    enum { value =
-        sizeof( _m_check(static_cast<rvalue_type>(_m_from), 0, 0) ) == sizeof(::boost::type_traits::yes_type)
-        };
-#else
-    enum { value =
-        sizeof( _m_check(_m_from, 0, 0) ) == sizeof(::boost::type_traits::yes_type)
-        };
-#endif
-};
-
-#elif defined(__MWERKS__)
-// 
-// CW works with the technique implemented above for EDG, except when From
-// is a function type (or a reference to such a type), in which case
-// any_conversion won't be accepted as a valid conversion. We detect this
-// exceptional situation and channel it through an alternative algorithm.
-//
-
-template <typename From, typename To,bool FromIsFunctionRef>
-struct is_convertible_basic_impl_aux;
-
-struct any_conversion
-{
-    template <typename T> any_conversion(const volatile T&);
-    template <typename T> any_conversion(const T&);
-    template <typename T> any_conversion(volatile T&);
-    template <typename T> any_conversion(T&);
-};
-
-template <typename From, typename To>
-struct is_convertible_basic_impl_aux<From,To,false /*FromIsFunctionRef*/>
-{
-    static ::boost::type_traits::no_type BOOST_TT_DECL _m_check(any_conversion ...);
-    static ::boost::type_traits::yes_type BOOST_TT_DECL _m_check(To, int);
-    typedef typename add_lvalue_reference<From>::type lvalue_type;
-    typedef typename add_rvalue_reference<From>::type rvalue_type; 
-    static lvalue_type _m_from;
-
-#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
-    BOOST_STATIC_CONSTANT(bool, value =
-        sizeof( _m_check(static_cast<rvalue_type>(_m_from), 0) ) == sizeof(::boost::type_traits::yes_type)
-        );
-#else
-    BOOST_STATIC_CONSTANT(bool, value =
-        sizeof( _m_check(_m_from, 0) ) == sizeof(::boost::type_traits::yes_type)
-        );
-#endif
-};
-
-template <typename From, typename To>
-struct is_convertible_basic_impl_aux<From,To,true /*FromIsFunctionRef*/>
-{
-    static ::boost::type_traits::no_type BOOST_TT_DECL _m_check(...);
-    static ::boost::type_traits::yes_type BOOST_TT_DECL _m_check(To);
-    typedef typename add_lvalue_reference<From>::type lvalue_type;
-    typedef typename add_rvalue_reference<From>::type rvalue_type;
-    static lvalue_type _m_from;
-#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
-    BOOST_STATIC_CONSTANT(bool, value =
-        sizeof( _m_check(static_cast<rvalue_type>(_m_from)) ) == sizeof(::boost::type_traits::yes_type)
-        );
-#else
-    BOOST_STATIC_CONSTANT(bool, value =
-        sizeof( _m_check(_m_from) ) == sizeof(::boost::type_traits::yes_type)
-        );
-#endif
-};
-
-template <typename From, typename To>
-struct is_convertible_basic_impl:
-  is_convertible_basic_impl_aux<
-    From,To,
-    ::boost::is_function<typename ::boost::remove_reference<From>::type>::value
-  >
-{};
-
-#else
-//
-// This version seems to work pretty well for a wide spectrum of compilers,
-// however it does rely on undefined behaviour by passing UDT's through (...).
-//
-
-//Workaround for old compilers like MSVC 7.1 to avoid
-//forming a reference to an array of unknown bound
-template <typename From>
-struct is_convertible_basic_impl_add_lvalue_reference
-   : add_lvalue_reference<From>
-{};
-
-template <typename From>
-struct is_convertible_basic_impl_add_lvalue_reference<From[]>
-{
-    typedef From type [];
-};
-
-template <typename From, typename To>
-struct is_convertible_basic_impl
-{
-    static ::boost::type_traits::no_type BOOST_TT_DECL _m_check(...);
-    static ::boost::type_traits::yes_type BOOST_TT_DECL _m_check(To);
-    typedef typename is_convertible_basic_impl_add_lvalue_reference<From>::type lvalue_type;
-    static lvalue_type _m_from;
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable:4244)
-#if BOOST_WORKAROUND(BOOST_MSVC_FULL_VER, >= 140050000)
-#pragma warning(disable:6334)
-#endif
-#endif
-#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
-    typedef typename add_rvalue_reference<From>::type rvalue_type; 
-    BOOST_STATIC_CONSTANT(bool, value =
-        sizeof( _m_check(static_cast<rvalue_type>(_m_from)) ) == sizeof(::boost::type_traits::yes_type)
-        );
-#else
-    BOOST_STATIC_CONSTANT(bool, value =
-        sizeof( _m_check(_m_from) ) == sizeof(::boost::type_traits::yes_type)
-        );
-#endif
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-};
-
-#endif // is_convertible_impl
-
-#if defined(__DMC__)
-// As before, a static constant sometimes causes errors on Digital Mars.
-template <typename From, typename To>
-struct is_convertible_impl
-{
-    enum { 
-       value = ( ::boost::detail::is_convertible_basic_impl<From,To>::value && ! ::boost::is_array<To>::value && ! ::boost::is_function<To>::value) 
-    };
-};
-#elif !defined(__BORLANDC__) || __BORLANDC__ > 0x551
-template <typename From, typename To>
-struct is_convertible_impl
-{
-   BOOST_STATIC_CONSTANT(bool, value = ( ::boost::detail::is_convertible_basic_impl<From, To>::value && !::boost::is_array<To>::value && !::boost::is_function<To>::value));
-};
-#endif
-
-template <bool trivial1, bool trivial2, bool abstract_target>
-struct is_convertible_impl_select
-{
-   template <class From, class To>
-   struct rebind
-   {
-      typedef is_convertible_impl<From, To> type;
-   };
-};
-
-template <>
-struct is_convertible_impl_select<true, true, false>
-{
-   template <class From, class To>
-   struct rebind
-   {
-      typedef true_type type;
-   };
-};
-
-template <>
-struct is_convertible_impl_select<false, false, true>
-{
-   template <class From, class To>
-   struct rebind
-   {
-      typedef false_type type;
-   };
-};
-
-template <>
-struct is_convertible_impl_select<true, false, true>
-{
-   template <class From, class To>
-   struct rebind
-   {
-      typedef false_type type;
-   };
-};
-
-template <typename From, typename To>
-struct is_convertible_impl_dispatch_base
-{
-#if !BOOST_WORKAROUND(__HP_aCC, < 60700)
-   typedef is_convertible_impl_select< 
-      ::boost::is_arithmetic<From>::value, 
-      ::boost::is_arithmetic<To>::value,
-#if !defined(BOOST_NO_IS_ABSTRACT) && !defined(BOOST_TT_CXX11_IS_CONVERTIBLE)
-      // We need to filter out abstract types, only if we don't have a strictly conforming C++11 version:
-      ::boost::is_abstract<To>::value
-#else
-      false
-#endif
-   > selector;
-#else
-   typedef is_convertible_impl_select<false, false, false> selector;
-#endif
-   typedef typename selector::template rebind<From, To> isc_binder;
-   typedef typename isc_binder::type type;
-};
-
-template <typename From, typename To>
-struct is_convertible_impl_dispatch 
-   : public is_convertible_impl_dispatch_base<From, To>::type
-{};
-
-//
-// Now add the full and partial specialisations
-// for void types, these are common to all the
-// implementation above:
-//
-#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
-
-template <> struct is_convertible_impl_dispatch<void, void> : public true_type{};
-template <> struct is_convertible_impl_dispatch<void, void const> : public true_type{};
-template <> struct is_convertible_impl_dispatch<void, void const volatile> : public true_type{};
-template <> struct is_convertible_impl_dispatch<void, void volatile> : public true_type{};
-
-template <> struct is_convertible_impl_dispatch<void const, void> : public true_type{};
-template <> struct is_convertible_impl_dispatch<void const, void const> : public true_type{};
-template <> struct is_convertible_impl_dispatch<void const, void const volatile> : public true_type{};
-template <> struct is_convertible_impl_dispatch<void const, void volatile> : public true_type{};
-
-template <> struct is_convertible_impl_dispatch<void const volatile, void> : public true_type{};
-template <> struct is_convertible_impl_dispatch<void const volatile, void const> : public true_type{};
-template <> struct is_convertible_impl_dispatch<void const volatile, void const volatile> : public true_type{};
-template <> struct is_convertible_impl_dispatch<void const volatile, void volatile> : public true_type{};
-
-template <> struct is_convertible_impl_dispatch<void volatile, void> : public true_type{};
-template <> struct is_convertible_impl_dispatch<void volatile, void const> : public true_type{};
-template <> struct is_convertible_impl_dispatch<void volatile, void const volatile> : public true_type{};
-template <> struct is_convertible_impl_dispatch<void volatile, void volatile> : public true_type{};
-
-#else
-template <> struct is_convertible_impl_dispatch<void, void> : public true_type{};
-#endif // BOOST_NO_CV_VOID_SPECIALIZATIONS
-
-template <class To> struct is_convertible_impl_dispatch<void, To> : public false_type{};
-template <class From> struct is_convertible_impl_dispatch<From, void> : public false_type{};
-
-#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
-template <class To> struct is_convertible_impl_dispatch<void const, To> : public false_type{};
-template <class From> struct is_convertible_impl_dispatch<From, void const> : public false_type{};
-template <class To> struct is_convertible_impl_dispatch<void const volatile, To> : public false_type{};
-template <class From> struct is_convertible_impl_dispatch<From, void const volatile> : public false_type{};
-template <class To> struct is_convertible_impl_dispatch<void volatile, To> : public false_type{};
-template <class From> struct is_convertible_impl_dispatch<From, void volatile> : public false_type{};
-#endif
-
-} // namespace detail
-
-template <class From, class To> 
-struct is_convertible : public integral_constant<bool, ::boost::detail::is_convertible_impl_dispatch<From, To>::value> 
-{
-   BOOST_STATIC_ASSERT_MSG(boost::is_complete<To>::value || boost::is_void<To>::value || boost::is_array<To>::value, "Destination argument type to is_convertible must be a complete type");
-   BOOST_STATIC_ASSERT_MSG(boost::is_complete<From>::value || boost::is_void<From>::value || boost::is_array<From>::value, "From argument type to is_convertible must be a complete type");
-};
-
-#else
-
-template <class From, class To>
-struct is_convertible : public integral_constant<bool, BOOST_IS_CONVERTIBLE(From, To)> 
-{
-#if BOOST_WORKAROUND(BOOST_MSVC, <= 1900)
-   BOOST_STATIC_ASSERT_MSG(boost::is_complete<From>::value || boost::is_void<From>::value || boost::is_array<From>::value || boost::is_reference<From>::value, "From argument type to is_convertible must be a complete type");
-#endif
-#if defined(__clang__)
-   // clang's intrinsic doesn't assert on incomplete types:
-   BOOST_STATIC_ASSERT_MSG(boost::is_complete<To>::value || boost::is_void<To>::value || boost::is_array<To>::value, "Destination argument type to is_convertible must be a complete type");
-   BOOST_STATIC_ASSERT_MSG(boost::is_complete<From>::value || boost::is_void<From>::value || boost::is_array<From>::value, "From argument type to is_convertible must be a complete type");
-#endif
-};
-
-#endif
-
-} // namespace boost
-
-#endif // BOOST_TT_IS_CONVERTIBLE_HPP_INCLUDED
diff --git a/third_party/boost/boost/type_traits/is_enum.hpp b/third_party/boost/boost/type_traits/is_enum.hpp
deleted file mode 100644
index eada480..0000000
--- a/third_party/boost/boost/type_traits/is_enum.hpp
+++ /dev/null
@@ -1,166 +0,0 @@
-
-//  (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, Howard
-//  Hinnant & John Maddock 2000.  
-//  Use, modification and distribution are subject to the Boost Software License,
-//  Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-//  http://www.boost.org/LICENSE_1_0.txt).
-//
-//  See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-
-#ifndef BOOST_TT_IS_ENUM_HPP_INCLUDED
-#define BOOST_TT_IS_ENUM_HPP_INCLUDED
-
-#include <boost/type_traits/intrinsics.hpp>
-#include <boost/type_traits/integral_constant.hpp>
-#ifndef BOOST_IS_ENUM
-#include <boost/type_traits/add_reference.hpp>
-#include <boost/type_traits/is_arithmetic.hpp>
-#include <boost/type_traits/is_reference.hpp>
-#include <boost/type_traits/is_convertible.hpp>
-#include <boost/type_traits/is_array.hpp>
-#ifdef __GNUC__
-#include <boost/type_traits/is_function.hpp>
-#endif
-#include <boost/type_traits/detail/config.hpp>
-#if defined(BOOST_TT_HAS_CONFORMING_IS_CLASS_IMPLEMENTATION) 
-#  include <boost/type_traits/is_class.hpp>
-#  include <boost/type_traits/is_union.hpp>
-#endif
-#endif
-
-namespace boost {
-
-#ifndef BOOST_IS_ENUM
-#if !(defined(__BORLANDC__) && (__BORLANDC__ <= 0x551))
-
-namespace detail {
-
-#if defined(BOOST_TT_HAS_CONFORMING_IS_CLASS_IMPLEMENTATION) 
-
-template <typename T>
-struct is_class_or_union
-{
-   BOOST_STATIC_CONSTANT(bool, value = ::boost::is_class<T>::value || ::boost::is_union<T>::value);
-};
-
-#else
-
-template <typename T>
-struct is_class_or_union
-{
-# if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x581))// we simply can't detect it this way.
-    BOOST_STATIC_CONSTANT(bool, value = false);
-# else
-    template <class U> static ::boost::type_traits::yes_type is_class_or_union_tester(void(U::*)(void));
-
-#  if BOOST_WORKAROUND(__MWERKS__, <= 0x3000) // no SFINAE
-    static ::boost::type_traits::no_type is_class_or_union_tester(...);
-    BOOST_STATIC_CONSTANT(
-        bool, value = sizeof(is_class_or_union_tester(0)) == sizeof(::boost::type_traits::yes_type));
-#  else
-    template <class U>
-    static ::boost::type_traits::no_type is_class_or_union_tester(...);
-    BOOST_STATIC_CONSTANT(
-        bool, value = sizeof(is_class_or_union_tester<T>(0)) == sizeof(::boost::type_traits::yes_type));
-#  endif
-# endif
-};
-#endif
-
-struct int_convertible
-{
-    int_convertible(int);
-};
-
-// Don't evaluate convertibility to int_convertible unless the type
-// is non-arithmetic. This suppresses warnings with GCC.
-template <bool is_typename_arithmetic_or_reference = true>
-struct is_enum_helper
-{
-    template <typename T> struct type
-    {
-        BOOST_STATIC_CONSTANT(bool, value = false);
-    };
-};
-
-template <>
-struct is_enum_helper<false>
-{
-    template <typename T> struct type
-    {
-       static const bool value = ::boost::is_convertible<typename boost::add_reference<T>::type, ::boost::detail::int_convertible>::value;
-    };
-};
-
-template <typename T> struct is_enum_impl
-{
-   //typedef ::boost::add_reference<T> ar_t;
-   //typedef typename ar_t::type r_type;
-
-#if defined(__GNUC__)
-
-#ifdef BOOST_TT_HAS_CONFORMING_IS_CLASS_IMPLEMENTATION
-    
-   // We MUST check for is_class_or_union on conforming compilers in
-   // order to correctly deduce that noncopyable types are not enums
-   // (dwa 2002/04/15)...
-   BOOST_STATIC_CONSTANT(bool, selector =
-           ::boost::is_arithmetic<T>::value
-         || ::boost::is_reference<T>::value
-         || ::boost::is_function<T>::value
-         || is_class_or_union<T>::value
-         || is_array<T>::value);
-#else
-   // ...however, not checking is_class_or_union on non-conforming
-   // compilers prevents a dependency recursion.
-   BOOST_STATIC_CONSTANT(bool, selector =
-           ::boost::is_arithmetic<T>::value
-         || ::boost::is_reference<T>::value
-         || ::boost::is_function<T>::value
-         || is_array<T>::value);
-#endif // BOOST_TT_HAS_CONFORMING_IS_CLASS_IMPLEMENTATION
-
-#else // !defined(__GNUC__):
-    
-   BOOST_STATIC_CONSTANT(bool, selector =
-           ::boost::is_arithmetic<T>::value
-         || ::boost::is_reference<T>::value
-         || is_class_or_union<T>::value
-         || is_array<T>::value);
-    
-#endif
-
-#if BOOST_WORKAROUND(__BORLANDC__, < 0x600)
-    typedef ::boost::detail::is_enum_helper<
-          ::boost::detail::is_enum_impl<T>::selector
-        > se_t;
-#else
-    typedef ::boost::detail::is_enum_helper<selector> se_t;
-#endif
-
-    typedef typename se_t::template type<T> helper;
-    BOOST_STATIC_CONSTANT(bool, value = helper::value);
-};
-
-} // namespace detail
-
-template <class T> struct is_enum : public integral_constant<bool, ::boost::detail::is_enum_impl<T>::value> {};
-
-#else // __BORLANDC__
-//
-// buggy is_convertible prevents working
-// implementation of is_enum:
-template <class T> struct is_enum : public integral_constant<bool, false> {};
-
-#endif
-
-#else // BOOST_IS_ENUM
-
-template <class T> struct is_enum : public integral_constant<bool, BOOST_IS_ENUM(T)> {};
-
-#endif
-
-} // namespace boost
-
-#endif // BOOST_TT_IS_ENUM_HPP_INCLUDED
diff --git a/third_party/boost/boost/type_traits/is_floating_point.hpp b/third_party/boost/boost/type_traits/is_floating_point.hpp
deleted file mode 100644
index 196c900..0000000
--- a/third_party/boost/boost/type_traits/is_floating_point.hpp
+++ /dev/null
@@ -1,30 +0,0 @@
-//  (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000-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/type_traits for most recent version including documentation.
-
-#ifndef BOOST_TYPE_TRAITS_IS_FLOATING_HPP_INCLUDED
-#define BOOST_TYPE_TRAITS_IS_FLOATING_HPP_INCLUDED
-
-#include <boost/type_traits/integral_constant.hpp>
-
-namespace boost {
-
-//* is a type T a floating-point type described in the standard (3.9.1p8)
-   template <class T> struct is_floating_point : public false_type{};
-   template <class T> struct is_floating_point<const T> : public is_floating_point<T>{};
-   template <class T> struct is_floating_point<volatile const T> : public is_floating_point<T>{};
-   template <class T> struct is_floating_point<volatile T> : public is_floating_point<T>{};
-   template<> struct is_floating_point<float> : public true_type{};
-   template<> struct is_floating_point<double> : public true_type{};
-   template<> struct is_floating_point<long double> : public true_type{};
-   
-#if defined(BOOST_HAS_FLOAT128)
-   template<> struct is_floating_point<__float128> : public true_type{};
-#endif
-
-} // namespace boost
-
-#endif // BOOST_TYPE_TRAITS_IS_FLOAT_HPP_INCLUDED
diff --git a/third_party/boost/boost/type_traits/is_function.hpp b/third_party/boost/boost/type_traits/is_function.hpp
deleted file mode 100644
index 8556235..0000000
--- a/third_party/boost/boost/type_traits/is_function.hpp
+++ /dev/null
@@ -1,27 +0,0 @@
-
-//  Copyright 2000 John Maddock (john@johnmaddock.co.uk)
-//  Copyright 2002 Aleksey Gurtovoy (agurtovoy@meta-comm.com)
-//
-//  Use, modification and distribution are subject to the Boost Software License,
-//  Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-//  http://www.boost.org/LICENSE_1_0.txt).
-//
-//  See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-#ifndef BOOST_TT_IS_FUNCTION_HPP_INCLUDED
-#define BOOST_TT_IS_FUNCTION_HPP_INCLUDED
-
-#include <boost/type_traits/detail/config.hpp>
-#include <boost/config/workaround.hpp>
-
-#ifdef BOOST_TT_HAS_ASCCURATE_IS_FUNCTION
-
-#include <boost/type_traits/detail/is_function_cxx_11.hpp>
-
-#else
-
-#include <boost/type_traits/detail/is_function_cxx_03.hpp>
-
-#endif
-
-#endif // BOOST_TT_IS_FUNCTION_HPP_INCLUDED
diff --git a/third_party/boost/boost/type_traits/is_integral.hpp b/third_party/boost/boost/type_traits/is_integral.hpp
deleted file mode 100644
index 7a7e54b..0000000
--- a/third_party/boost/boost/type_traits/is_integral.hpp
+++ /dev/null
@@ -1,89 +0,0 @@
-
-//  (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
-//  Use, modification and distribution are subject to the Boost Software License,
-//  Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-//  http://www.boost.org/LICENSE_1_0.txt).
-//
-//  See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-#ifndef BOOST_TT_IS_INTEGRAL_HPP_INCLUDED
-#define BOOST_TT_IS_INTEGRAL_HPP_INCLUDED
-
-#include <boost/config.hpp>
-#include <boost/type_traits/integral_constant.hpp>
-
-namespace boost {
-
-#if defined( __CODEGEARC__ )
-   template <class T>
-   struct is_integral : public integral_constant<bool, __is_integral(T)> {};
-#else
-
-template <class T> struct is_integral : public false_type {};
-template <class T> struct is_integral<const T> : public is_integral<T> {};
-template <class T> struct is_integral<volatile const T> : public is_integral<T>{};
-template <class T> struct is_integral<volatile T> : public is_integral<T>{};
-
-//* is a type T an [cv-qualified-] integral type described in the standard (3.9.1p3)
-// as an extension we include long long, as this is likely to be added to the
-// standard at a later date
-template<> struct is_integral<unsigned char> : public true_type {};
-template<> struct is_integral<unsigned short> : public true_type{};
-template<> struct is_integral<unsigned int> : public true_type{};
-template<> struct is_integral<unsigned long> : public true_type{};
-
-template<> struct is_integral<signed char> : public true_type{};
-template<> struct is_integral<short> : public true_type{};
-template<> struct is_integral<int> : public true_type{};
-template<> struct is_integral<long> : public true_type{};
-
-template<> struct is_integral<char> : public true_type{};
-template<> struct is_integral<bool> : public true_type{};
-
-#ifndef BOOST_NO_INTRINSIC_WCHAR_T
-// If the following line fails to compile and you're using the Intel
-// compiler, see http://lists.boost.org/MailArchives/boost-users/msg06567.php,
-// and define BOOST_NO_INTRINSIC_WCHAR_T on the command line.
-template<> struct is_integral<wchar_t> : public true_type{};
-#endif
-
-// Same set of integral types as in boost/type_traits/integral_promotion.hpp.
-// Please, keep in sync. -- Alexander Nasonov
-#if (defined(BOOST_INTEL_CXX_VERSION) && defined(_MSC_VER) && (BOOST_INTEL_CXX_VERSION <= 600)) \
-    || (defined(__BORLANDC__) && (__BORLANDC__ == 0x600) && (_MSC_VER < 1300))
-template<> struct is_integral<unsigned __int8> : public true_type{};
-template<> struct is_integral<unsigned __int16> : public true_type{};
-template<> struct is_integral<unsigned __int32> : public true_type{};
-template<> struct is_integral<__int8> : public true_type{};
-template<> struct is_integral<__int16> : public true_type{};
-template<> struct is_integral<__int32> : public true_type{};
-#ifdef __BORLANDC__
-template<> struct is_integral<unsigned __int64> : public true_type{};
-template<> struct is_integral<__int64> : public true_type{};
-#endif
-#endif
-
-# if defined(BOOST_HAS_LONG_LONG)
-template<> struct is_integral< ::boost::ulong_long_type> : public true_type{};
-template<> struct is_integral< ::boost::long_long_type> : public true_type{};
-#elif defined(BOOST_HAS_MS_INT64)
-template<> struct is_integral<unsigned __int64> : public true_type{};
-template<> struct is_integral<__int64> : public true_type{};
-#endif
-        
-#ifdef BOOST_HAS_INT128
-template<> struct is_integral<boost::int128_type> : public true_type{};
-template<> struct is_integral<boost::uint128_type> : public true_type{};
-#endif
-#ifndef BOOST_NO_CXX11_CHAR16_T
-template<> struct is_integral<char16_t> : public true_type{};
-#endif
-#ifndef BOOST_NO_CXX11_CHAR32_T
-template<> struct is_integral<char32_t> : public true_type{};
-#endif
-
-#endif  // non-CodeGear implementation
-
-} // namespace boost
-
-#endif // BOOST_TT_IS_INTEGRAL_HPP_INCLUDED
diff --git a/third_party/boost/boost/type_traits/is_lvalue_reference.hpp b/third_party/boost/boost/type_traits/is_lvalue_reference.hpp
deleted file mode 100644
index e94d787..0000000
--- a/third_party/boost/boost/type_traits/is_lvalue_reference.hpp
+++ /dev/null
@@ -1,50 +0,0 @@
-
-//  (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, 
-//      Howard Hinnant and John Maddock 2000. 
-//  (C) Copyright Mat Marcus, Jesse Jones and Adobe Systems Inc 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/type_traits for most recent version including documentation.
-
-//    Fixed is_pointer, is_lvalue_reference, is_const, is_volatile, is_same, 
-//    is_member_pointer based on the Simulated Partial Specialization work 
-//    of Mat Marcus and Jesse Jones. See  http://opensource.adobe.com or 
-//    http://groups.yahoo.com/group/boost/message/5441 
-//    Some workarounds in here use ideas suggested from "Generic<Programming>: 
-//    Mappings between Types and Values" 
-//    by Andrei Alexandrescu (see http://www.cuj.com/experts/1810/alexandr.html).
-
-
-#ifndef BOOST_TT_IS_LVALUE_REFERENCE_HPP_INCLUDED
-#define BOOST_TT_IS_LVALUE_REFERENCE_HPP_INCLUDED
-
-#include <boost/type_traits/integral_constant.hpp>
-
-namespace boost {
-
-#if defined( __CODEGEARC__ )
-   template <class T> struct is_lvalue_reference : public integral_constant<bool, __is_reference(T)>{};
-#else
-
-   template <class T> struct is_lvalue_reference : public false_type{};
-   template <class T> struct is_lvalue_reference<T&> : public true_type{};
-
-#if  defined(BOOST_ILLEGAL_CV_REFERENCES)
-// these are illegal specialisations; cv-qualifies applied to
-// references have no effect according to [8.3.2p1],
-// C++ Builder requires them though as it treats cv-qualified
-// references as distinct types...
-   template <class T> struct is_lvalue_reference<T&const> : public true_type{};
-   template <class T> struct is_lvalue_reference<T&volatile> : public true_type{};
-   template <class T> struct is_lvalue_reference<T&const volatile> : public true_type{};
-#endif
-
-#endif
-
-} // namespace boost
-
-#endif // BOOST_TT_IS_REFERENCE_HPP_INCLUDED
-
diff --git a/third_party/boost/boost/type_traits/is_member_function_pointer.hpp b/third_party/boost/boost/type_traits/is_member_function_pointer.hpp
deleted file mode 100644
index 9b5dbbf..0000000
--- a/third_party/boost/boost/type_traits/is_member_function_pointer.hpp
+++ /dev/null
@@ -1,26 +0,0 @@
-
-//  (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, Howard
-//  Hinnant & John Maddock 2000.  
-//  Use, modification and distribution are subject to the Boost Software License,
-//  Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-//  http://www.boost.org/LICENSE_1_0.txt).
-//
-//  See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-
-#ifndef BOOST_TT_IS_MEMBER_FUNCTION_POINTER_HPP_INCLUDED
-#define BOOST_TT_IS_MEMBER_FUNCTION_POINTER_HPP_INCLUDED
-
-#include <boost/type_traits/detail/config.hpp>
-
-#ifdef BOOST_TT_HAS_ASCCURATE_IS_FUNCTION
-
-#include <boost/type_traits/detail/is_member_function_pointer_cxx_11.hpp>
-
-#else
-
-#include <boost/type_traits/detail/is_member_function_pointer_cxx_03.hpp>
-
-#endif
-
-#endif // BOOST_TT_IS_MEMBER_FUNCTION_POINTER_HPP_INCLUDED
diff --git a/third_party/boost/boost/type_traits/is_member_pointer.hpp b/third_party/boost/boost/type_traits/is_member_pointer.hpp
deleted file mode 100644
index 9757afc..0000000
--- a/third_party/boost/boost/type_traits/is_member_pointer.hpp
+++ /dev/null
@@ -1,45 +0,0 @@
-
-//  (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, 
-//      Howard Hinnant and John Maddock 2000. 
-//  (C) Copyright Mat Marcus, Jesse Jones and Adobe Systems Inc 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/type_traits for most recent version including documentation.
-
-//    Fixed is_pointer, is_reference, is_const, is_volatile, is_same, 
-//    is_member_pointer based on the Simulated Partial Specialization work 
-//    of Mat Marcus and Jesse Jones. See  http://opensource.adobe.com or 
-//    http://groups.yahoo.com/group/boost/message/5441 
-//    Some workarounds in here use ideas suggested from "Generic<Programming>: 
-//    Mappings between Types and Values" 
-//    by Andrei Alexandrescu (see http://www.cuj.com/experts/1810/alexandr.html).
-
-
-#ifndef BOOST_TT_IS_MEMBER_POINTER_HPP_INCLUDED
-#define BOOST_TT_IS_MEMBER_POINTER_HPP_INCLUDED
-
-#include <boost/detail/workaround.hpp>
-#include <boost/type_traits/is_member_function_pointer.hpp>
-
-namespace boost {
-
-#if defined( __CODEGEARC__ )
-template <class T> struct is_member_pointer : public integral_constant<bool, __is_member_pointer(T)>{};
-#else
-template <class T> struct is_member_pointer : public integral_constant<bool, ::boost::is_member_function_pointer<T>::value>{};
-template <class T, class U> struct is_member_pointer<U T::* > : public true_type{};
-
-#if !BOOST_WORKAROUND(__MWERKS__,<=0x3003) && !BOOST_WORKAROUND(__IBMCPP__, <=600)
-template <class T, class U> struct is_member_pointer<U T::*const> : public true_type{};
-template <class T, class U> struct is_member_pointer<U T::*const volatile> : public true_type{};
-template <class T, class U> struct is_member_pointer<U T::*volatile> : public true_type{};
-#endif
-
-#endif
-
-} // namespace boost
-
-#endif // BOOST_TT_IS_MEMBER_POINTER_HPP_INCLUDED
diff --git a/third_party/boost/boost/type_traits/is_pointer.hpp b/third_party/boost/boost/type_traits/is_pointer.hpp
deleted file mode 100644
index 44b06c2..0000000
--- a/third_party/boost/boost/type_traits/is_pointer.hpp
+++ /dev/null
@@ -1,47 +0,0 @@
-
-//  (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, 
-//      Howard Hinnant and John Maddock 2000. 
-//  (C) Copyright Mat Marcus, Jesse Jones and Adobe Systems Inc 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/type_traits for most recent version including documentation.
-
-//    Fixed is_pointer, is_reference, is_const, is_volatile, is_same, 
-//    is_member_pointer based on the Simulated Partial Specialization work 
-//    of Mat Marcus and Jesse Jones. See  http://opensource.adobe.com or 
-//    http://groups.yahoo.com/group/boost/message/5441 
-//    Some workarounds in here use ideas suggested from "Generic<Programming>: 
-//    Mappings between Types and Values" 
-//    by Andrei Alexandrescu (see http://www.cuj.com/experts/1810/alexandr.html).
-
-
-#ifndef BOOST_TT_IS_POINTER_HPP_INCLUDED
-#define BOOST_TT_IS_POINTER_HPP_INCLUDED
-
-#include <boost/type_traits/integral_constant.hpp>
-
-namespace boost {
-
-#if defined( __CODEGEARC__ )
-template <class T> struct is_pointer : public integral_constant<bool, __is_pointer(T)>{};
-#else
-template <class T> struct is_pointer : public false_type{};
-template <class T> struct is_pointer<T*> : public true_type{};
-template <class T> struct is_pointer<T*const> : public true_type{};
-template <class T> struct is_pointer<T*const volatile> : public true_type{};
-template <class T> struct is_pointer<T*volatile> : public true_type{};
-
-#ifdef BOOST_MSVC
-template <class T> struct is_pointer<T const> : public is_pointer<T>{};
-template <class T> struct is_pointer<T const volatile> : public is_pointer<T>{};
-template <class T> struct is_pointer<T volatile> : public is_pointer<T>{};
-#endif
-
-#endif
-
-} // namespace boost
-
-#endif // BOOST_TT_IS_POINTER_HPP_INCLUDED
diff --git a/third_party/boost/boost/type_traits/is_polymorphic.hpp b/third_party/boost/boost/type_traits/is_polymorphic.hpp
deleted file mode 100644
index 722d8b4..0000000
--- a/third_party/boost/boost/type_traits/is_polymorphic.hpp
+++ /dev/null
@@ -1,122 +0,0 @@
-//  (C) Copyright John Maddock 2000. 
-//  Use, modification and distribution are subject to the Boost Software License,
-//  Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-//  http://www.boost.org/LICENSE_1_0.txt).
-//
-//  See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-#ifndef BOOST_TT_IS_POLYMORPHIC_HPP
-#define BOOST_TT_IS_POLYMORPHIC_HPP
-
-#include <boost/type_traits/intrinsics.hpp>
-#include <boost/type_traits/integral_constant.hpp>
-#ifndef BOOST_IS_POLYMORPHIC
-#include <boost/type_traits/is_class.hpp>
-#endif
-#include <boost/detail/workaround.hpp>
-
-#if defined(BOOST_MSVC) && (BOOST_MSVC >= 1700)
-#pragma warning(push)
-#pragma warning(disable:4250)
-#endif
-
-namespace boost{
-
-#ifndef BOOST_IS_POLYMORPHIC
-
-namespace detail{
-
-template <class T>
-struct is_polymorphic_imp1
-{
-# if BOOST_WORKAROUND(__MWERKS__, <= 0x2407) // CWPro7 should return false always.
-    typedef char d1, (&d2)[2];
-# else 
-   struct d1 : public T
-   {
-      d1();
-#  if !defined(__GNUC__) // this raises warnings with some classes, and buys nothing with GCC
-      ~d1()throw();
-#  endif 
-      char padding[256];
-   private:
-      // keep some picky compilers happy:
-      d1(const d1&);
-      d1& operator=(const d1&);
-   };
-   struct d2 : public T
-   {
-      d2();
-      virtual ~d2()throw();
-#  if !defined(BOOST_MSVC) && !defined(__ICL)
-      // for some reason this messes up VC++ when T has virtual bases,
-      // probably likewise for compilers that use the same ABI:
-      struct unique{};
-      virtual void unique_name_to_boost5487629(unique*);
-#  endif
-      char padding[256];
-   private:
-      // keep some picky compilers happy:
-      d2(const d2&);
-      d2& operator=(const d2&);
-   };
-# endif 
-   BOOST_STATIC_CONSTANT(bool, value = (sizeof(d2) == sizeof(d1)));
-};
-
-template <class T> struct is_polymorphic_imp1<T const> : public is_polymorphic_imp1<T>{};
-template <class T> struct is_polymorphic_imp1<T const volatile> : public is_polymorphic_imp1<T>{};
-template <class T> struct is_polymorphic_imp1<T volatile> : public is_polymorphic_imp1<T>{};
-
-template <class T>
-struct is_polymorphic_imp2
-{
-   BOOST_STATIC_CONSTANT(bool, value = false);
-};
-
-template <bool is_class>
-struct is_polymorphic_selector
-{
-   template <class T>
-   struct rebind
-   {
-      typedef is_polymorphic_imp2<T> type;
-   };
-};
-
-template <>
-struct is_polymorphic_selector<true>
-{
-   template <class T>
-   struct rebind
-   {
-      typedef is_polymorphic_imp1<T> type;
-   };
-};
-
-template <class T>
-struct is_polymorphic_imp
-{
-   typedef is_polymorphic_selector< ::boost::is_class<T>::value> selector;
-   typedef typename selector::template rebind<T> binder;
-   typedef typename binder::type imp_type;
-   BOOST_STATIC_CONSTANT(bool, value = imp_type::value);
-};
-
-} // namespace detail
-
-template <class T> struct is_polymorphic : public integral_constant<bool, ::boost::detail::is_polymorphic_imp<T>::value> {};
-
-#else // BOOST_IS_POLYMORPHIC
-
-template <class T> struct is_polymorphic : public integral_constant<bool, BOOST_IS_POLYMORPHIC(T)> {};
-
-#endif
-
-} // namespace boost
-
-#if defined(BOOST_MSVC) && (BOOST_MSVC >= 1700)
-#pragma warning(pop)
-#endif
-
-#endif
diff --git a/third_party/boost/boost/type_traits/is_reference.hpp b/third_party/boost/boost/type_traits/is_reference.hpp
deleted file mode 100644
index 85f0a63..0000000
--- a/third_party/boost/boost/type_traits/is_reference.hpp
+++ /dev/null
@@ -1,30 +0,0 @@
-
-//  (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, 
-//      Howard Hinnant and John Maddock 2000, 2010. 
-//  (C) Copyright Mat Marcus, Jesse Jones and Adobe Systems Inc 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/type_traits for most recent version including documentation.
-
-#ifndef BOOST_TT_IS_REFERENCE_HPP_INCLUDED
-#define BOOST_TT_IS_REFERENCE_HPP_INCLUDED
-
-#include <boost/type_traits/is_lvalue_reference.hpp>
-#include <boost/type_traits/is_rvalue_reference.hpp>
-
-namespace boost {
-
-template <class T> struct is_reference 
-   : public 
-   integral_constant<
-      bool, 
-      ::boost::is_lvalue_reference<T>::value || ::boost::is_rvalue_reference<T>::value>
-{};
-
-} // namespace boost
-
-#endif // BOOST_TT_IS_REFERENCE_HPP_INCLUDED
-
diff --git a/third_party/boost/boost/type_traits/is_rvalue_reference.hpp b/third_party/boost/boost/type_traits/is_rvalue_reference.hpp
deleted file mode 100644
index 37d33c9..0000000
--- a/third_party/boost/boost/type_traits/is_rvalue_reference.hpp
+++ /dev/null
@@ -1,29 +0,0 @@
-
-//  (C) Copyright John Maddock 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/type_traits for most recent version including documentation.
-
-#ifndef BOOST_TT_IS_RVALUE_REFERENCE_HPP_INCLUDED
-#define BOOST_TT_IS_RVALUE_REFERENCE_HPP_INCLUDED
-
-#include <boost/config.hpp>
-#include <boost/type_traits/integral_constant.hpp>
-
-namespace boost {
-
-template <class T> struct is_rvalue_reference : public false_type {};
-#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
-template <class T> struct is_rvalue_reference<T&&> : public true_type {};
-#endif
-
-} // namespace boost
-
-#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && defined(BOOST_MSVC) && BOOST_WORKAROUND(BOOST_MSVC, <= 1700)
-#include <boost/type_traits/detail/is_rvalue_reference_msvc10_fix.hpp>
-#endif
-
-#endif // BOOST_TT_IS_REFERENCE_HPP_INCLUDED
-
diff --git a/third_party/boost/boost/type_traits/is_same.hpp b/third_party/boost/boost/type_traits/is_same.hpp
deleted file mode 100644
index d16f4b2..0000000
--- a/third_party/boost/boost/type_traits/is_same.hpp
+++ /dev/null
@@ -1,41 +0,0 @@
-
-//  (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, 
-//      Howard Hinnant and John Maddock 2000. 
-//  (C) Copyright Mat Marcus, Jesse Jones and Adobe Systems Inc 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/type_traits for most recent version including documentation.
-
-//    Fixed is_pointer, is_reference, is_const, is_volatile, is_same, 
-//    is_member_pointer based on the Simulated Partial Specialization work 
-//    of Mat Marcus and Jesse Jones. See  http://opensource.adobe.com or 
-//    http://groups.yahoo.com/group/boost/message/5441 
-//    Some workarounds in here use ideas suggested from "Generic<Programming>: 
-//    Mappings between Types and Values" 
-//    by Andrei Alexandrescu (see http://www.cuj.com/experts/1810/alexandr.html).
-
-
-#ifndef BOOST_TT_IS_SAME_HPP_INCLUDED
-#define BOOST_TT_IS_SAME_HPP_INCLUDED
-
-#include <boost/type_traits/integral_constant.hpp>
-
-namespace boost {
-
-
-   template <class T, class U> struct is_same : public false_type {};
-   template <class T> struct is_same<T,T> : public true_type {};
-#if BOOST_WORKAROUND(__BORLANDC__, < 0x600)
-// without this, Borland's compiler gives the wrong answer for
-// references to arrays:
-   template <class T> struct is_same<T&, T&> : public true_type{};
-#endif
-
-
-} // namespace boost
-
-#endif  // BOOST_TT_IS_SAME_HPP_INCLUDED
-
diff --git a/third_party/boost/boost/type_traits/is_scalar.hpp b/third_party/boost/boost/type_traits/is_scalar.hpp
deleted file mode 100644
index 3031440..0000000
--- a/third_party/boost/boost/type_traits/is_scalar.hpp
+++ /dev/null
@@ -1,27 +0,0 @@
-
-//  (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
-//  Use, modification and distribution are subject to the Boost Software License,
-//  Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-//  http://www.boost.org/LICENSE_1_0.txt).
-//
-//  See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-#ifndef BOOST_TT_IS_SCALAR_HPP_INCLUDED
-#define BOOST_TT_IS_SCALAR_HPP_INCLUDED
-
-#include <boost/type_traits/is_arithmetic.hpp>
-#include <boost/type_traits/is_enum.hpp>
-#include <boost/type_traits/is_pointer.hpp>
-#include <boost/type_traits/is_member_pointer.hpp>
-#include <boost/config.hpp>
-
-namespace boost {
-
-template <typename T>
-struct is_scalar
-   : public integral_constant<bool, ::boost::is_arithmetic<T>::value || ::boost::is_enum<T>::value || ::boost::is_pointer<T>::value || ::boost::is_member_pointer<T>::value>
-{};
-
-} // namespace boost
-
-#endif // BOOST_TT_IS_SCALAR_HPP_INCLUDED
diff --git a/third_party/boost/boost/type_traits/is_signed.hpp b/third_party/boost/boost/type_traits/is_signed.hpp
deleted file mode 100644
index 70ca2e4..0000000
--- a/third_party/boost/boost/type_traits/is_signed.hpp
+++ /dev/null
@@ -1,163 +0,0 @@
-
-//  (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/type_traits for most recent version including documentation.
-
-
-#ifndef BOOST_TT_IS_SIGNED_HPP_INCLUDED
-#define BOOST_TT_IS_SIGNED_HPP_INCLUDED
-
-#include <boost/type_traits/is_integral.hpp>
-#include <boost/type_traits/remove_cv.hpp>
-#include <boost/type_traits/is_enum.hpp>
-#include <climits>
-
-namespace boost {
-
-#if !defined( __CODEGEARC__ )
-
-#if !(defined(BOOST_MSVC) && BOOST_MSVC <= 1310) && \
-    !(defined(__EDG_VERSION__) && __EDG_VERSION__ <= 238) &&\
-    !defined(BOOST_NO_INCLASS_MEMBER_INITIALIZATION)
-
-namespace detail{
-
-template <class T>
-struct is_signed_values
-{
-   //
-   // Note that we cannot use BOOST_STATIC_CONSTANT here, using enum's
-   // rather than "real" static constants simply doesn't work or give
-   // the correct answer.
-   //
-   typedef typename remove_cv<T>::type no_cv_t;
-   static const no_cv_t minus_one = (static_cast<no_cv_t>(-1));
-   static const no_cv_t zero = (static_cast<no_cv_t>(0));
-};
-
-template <class T>
-struct is_signed_helper
-{
-   typedef typename remove_cv<T>::type no_cv_t;
-   BOOST_STATIC_CONSTANT(bool, value = (!(::boost::detail::is_signed_values<T>::minus_one  > boost::detail::is_signed_values<T>::zero)));
-};
-
-template <bool integral_type>
-struct is_signed_select_helper
-{
-   template <class T>
-   struct rebind
-   {
-      typedef is_signed_helper<T> type;
-   };
-};
-
-template <>
-struct is_signed_select_helper<false>
-{
-   template <class T>
-   struct rebind
-   {
-      typedef false_type type;
-   };
-};
-
-template <class T>
-struct is_signed_impl
-{
-   typedef ::boost::detail::is_signed_select_helper< ::boost::is_integral<T>::value || ::boost::is_enum<T>::value> selector;
-   typedef typename selector::template rebind<T> binder;
-   typedef typename binder::type type;
-   BOOST_STATIC_CONSTANT(bool, value = type::value);
-};
-
-}
-
-template <class T> struct is_signed : public integral_constant<bool, boost::detail::is_signed_impl<T>::value> {};
-
-#else
-
-template <class T> struct is_signed : public false_type{};
-
-#endif
-
-#else //defined( __CODEGEARC__ )
-   template <class T> struct is_signed : public integral_constant<bool, __is_signed(T)>{};
-#endif
-
-template <> struct is_signed<signed char> : public true_type{};
-template <> struct is_signed<const signed char> : public true_type{};
-template <> struct is_signed<volatile signed char> : public true_type{};
-template <> struct is_signed<const volatile signed char> : public true_type{};
-template <> struct is_signed<short> : public true_type{};
-template <> struct is_signed<const short> : public true_type{};
-template <> struct is_signed<volatile short> : public true_type{};
-template <> struct is_signed<const volatile short> : public true_type{};
-template <> struct is_signed<int> : public true_type{};
-template <> struct is_signed<const int> : public true_type{};
-template <> struct is_signed<volatile int> : public true_type{};
-template <> struct is_signed<const volatile int> : public true_type{};
-template <> struct is_signed<long> : public true_type{};
-template <> struct is_signed<const long> : public true_type{};
-template <> struct is_signed<volatile long> : public true_type{};
-template <> struct is_signed<const volatile long> : public true_type{};
-
-template <> struct is_signed<unsigned char> : public false_type{};
-template <> struct is_signed<const unsigned char> : public false_type{};
-template <> struct is_signed<volatile unsigned char> : public false_type{};
-template <> struct is_signed<const volatile unsigned char> : public false_type{};
-template <> struct is_signed<unsigned short> : public false_type{};
-template <> struct is_signed<const unsigned short> : public false_type{};
-template <> struct is_signed<volatile unsigned short> : public false_type{};
-template <> struct is_signed<const volatile unsigned short> : public false_type{};
-template <> struct is_signed<unsigned int> : public false_type{};
-template <> struct is_signed<const unsigned int> : public false_type{};
-template <> struct is_signed<volatile unsigned int> : public false_type{};
-template <> struct is_signed<const volatile unsigned int> : public false_type{};
-template <> struct is_signed<unsigned long> : public false_type{};
-template <> struct is_signed<const unsigned long> : public false_type{};
-template <> struct is_signed<volatile unsigned long> : public false_type{};
-template <> struct is_signed<const volatile unsigned long> : public false_type{};
-#ifdef BOOST_HAS_LONG_LONG
-template <> struct is_signed< ::boost::long_long_type> : public true_type{};
-template <> struct is_signed<const ::boost::long_long_type> : public true_type{};
-template <> struct is_signed<volatile ::boost::long_long_type> : public true_type{};
-template <> struct is_signed<const volatile ::boost::long_long_type> : public true_type{};
-
-template <> struct is_signed< ::boost::ulong_long_type> : public false_type{};
-template <> struct is_signed<const ::boost::ulong_long_type> : public false_type{};
-template <> struct is_signed<volatile ::boost::ulong_long_type> : public false_type{};
-template <> struct is_signed<const volatile ::boost::ulong_long_type> : public false_type{};
-#endif
-#if defined(CHAR_MIN) 
-#if CHAR_MIN != 0
-template <> struct is_signed<char> : public true_type{};
-template <> struct is_signed<const char> : public true_type{};
-template <> struct is_signed<volatile char> : public true_type{};
-template <> struct is_signed<const volatile char> : public true_type{};
-#else
-template <> struct is_signed<char> : public false_type{};
-template <> struct is_signed<const char> : public false_type{};
-template <> struct is_signed<volatile char> : public false_type{};
-template <> struct is_signed<const volatile char> : public false_type{};
-#endif
-#endif
-#if defined(WCHAR_MIN) && !defined(BOOST_NO_INTRINSIC_WCHAR_T)
-#if WCHAR_MIN != 0
-template <> struct is_signed<wchar_t> : public true_type{};
-template <> struct is_signed<const wchar_t> : public true_type{};
-template <> struct is_signed<volatile wchar_t> : public true_type{};
-template <> struct is_signed<const volatile wchar_t> : public true_type{};
-#else
-template <> struct is_signed<wchar_t> : public false_type{};
-template <> struct is_signed<const wchar_t> : public false_type{};
-template <> struct is_signed<volatile wchar_t> : public false_type{};
-template <> struct is_signed<const volatile wchar_t> : public false_type{};
-#endif
-#endif
-} // namespace boost
-
-#endif // BOOST_TT_IS_MEMBER_FUNCTION_POINTER_HPP_INCLUDED
diff --git a/third_party/boost/boost/type_traits/is_union.hpp b/third_party/boost/boost/type_traits/is_union.hpp
deleted file mode 100644
index c5e1a96..0000000
--- a/third_party/boost/boost/type_traits/is_union.hpp
+++ /dev/null
@@ -1,31 +0,0 @@
-
-//  (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, Howard
-//  Hinnant & John Maddock 2000.  
-//  Use, modification and distribution are subject to the Boost Software License,
-//  Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-//  http://www.boost.org/LICENSE_1_0.txt).
-//
-//  See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-
-#ifndef BOOST_TT_IS_UNION_HPP_INCLUDED
-#define BOOST_TT_IS_UNION_HPP_INCLUDED
-
-#include <boost/type_traits/intrinsics.hpp>
-#include <boost/type_traits/integral_constant.hpp>
-
-namespace boost {
-
-#ifdef BOOST_IS_UNION
-template <class T> struct is_union : public integral_constant<bool, BOOST_IS_UNION(T)> {};
-#else
-template <class T> struct is_union : public integral_constant<bool, false> {};
-#endif
-
-template <class T> struct is_union<T const> : public is_union<T>{};
-template <class T> struct is_union<T volatile const> : public is_union<T>{};
-template <class T> struct is_union<T volatile> : public is_union<T>{};
-
-} // namespace boost
-
-#endif // BOOST_TT_IS_UNION_HPP_INCLUDED
diff --git a/third_party/boost/boost/type_traits/is_unsigned.hpp b/third_party/boost/boost/type_traits/is_unsigned.hpp
deleted file mode 100644
index c4c54af..0000000
--- a/third_party/boost/boost/type_traits/is_unsigned.hpp
+++ /dev/null
@@ -1,163 +0,0 @@
-
-//  (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/type_traits for most recent version including documentation.
-
-
-#ifndef BOOST_TT_IS_UNSIGNED_HPP_INCLUDED
-#define BOOST_TT_IS_UNSIGNED_HPP_INCLUDED
-
-#include <boost/type_traits/is_integral.hpp>
-#include <boost/type_traits/is_enum.hpp>
-#include <boost/type_traits/remove_cv.hpp>
-
-#include <climits>
-
-namespace boost {
-
-#if !defined( __CODEGEARC__ )
-
-#if !(defined(BOOST_MSVC) && BOOST_MSVC <= 1310) &&\
-    !(defined(__EDG_VERSION__) && __EDG_VERSION__ <= 238) &&\
-    !defined(BOOST_NO_INCLASS_MEMBER_INITIALIZATION)
-
-namespace detail{
-
-template <class T>
-struct is_unsigned_values
-{
-   //
-   // Note that we cannot use BOOST_STATIC_CONSTANT here, using enum's
-   // rather than "real" static constants simply doesn't work or give
-   // the correct answer.
-   //
-   typedef typename remove_cv<T>::type no_cv_t;
-   static const no_cv_t minus_one = (static_cast<no_cv_t>(-1));
-   static const no_cv_t zero = (static_cast<no_cv_t>(0));
-};
-
-template <class T>
-struct is_ununsigned_helper
-{
-   BOOST_STATIC_CONSTANT(bool, value = (::boost::detail::is_unsigned_values<T>::minus_one > ::boost::detail::is_unsigned_values<T>::zero));
-};
-
-template <bool integral_type>
-struct is_unsigned_select_helper
-{
-   template <class T>
-   struct rebind
-   {
-      typedef is_ununsigned_helper<T> type;
-   };
-};
-
-template <>
-struct is_unsigned_select_helper<false>
-{
-   template <class T>
-   struct rebind
-   {
-      typedef false_type type;
-   };
-};
-
-template <class T>
-struct is_unsigned
-{
-   typedef ::boost::detail::is_unsigned_select_helper< ::boost::is_integral<T>::value || ::boost::is_enum<T>::value > selector;
-   typedef typename selector::template rebind<T> binder;
-   typedef typename binder::type type;
-   BOOST_STATIC_CONSTANT(bool, value = type::value);
-};
-
-} // namespace detail
-
-template <class T> struct is_unsigned : public integral_constant<bool, boost::detail::is_unsigned<T>::value> {};
-
-#else
-
-template <class T> struct is_unsigned : public false_type{};
-
-#endif
-
-#else // defined( __CODEGEARC__ )
-template <class T> struct is_unsigned : public integral_constant<bool, __is_unsigned(T)> {};
-#endif
-
-template <> struct is_unsigned<unsigned char> : public true_type{};
-template <> struct is_unsigned<const unsigned char> : public true_type{};
-template <> struct is_unsigned<volatile unsigned char> : public true_type{};
-template <> struct is_unsigned<const volatile unsigned char> : public true_type{};
-template <> struct is_unsigned<unsigned short> : public true_type{};
-template <> struct is_unsigned<const unsigned short> : public true_type{};
-template <> struct is_unsigned<volatile unsigned short> : public true_type{};
-template <> struct is_unsigned<const volatile unsigned short> : public true_type{};
-template <> struct is_unsigned<unsigned int> : public true_type{};
-template <> struct is_unsigned<const unsigned int> : public true_type{};
-template <> struct is_unsigned<volatile unsigned int> : public true_type{};
-template <> struct is_unsigned<const volatile unsigned int> : public true_type{};
-template <> struct is_unsigned<unsigned long> : public true_type{};
-template <> struct is_unsigned<const unsigned long> : public true_type{};
-template <> struct is_unsigned<volatile unsigned long> : public true_type{};
-template <> struct is_unsigned<const volatile unsigned long> : public true_type{};
-
-template <> struct is_unsigned<signed char> : public false_type{};
-template <> struct is_unsigned<const signed char> : public false_type{};
-template <> struct is_unsigned<volatile signed char> : public false_type{};
-template <> struct is_unsigned<const volatile signed char> : public false_type{};
-template <> struct is_unsigned< short> : public false_type{};
-template <> struct is_unsigned<const  short> : public false_type{};
-template <> struct is_unsigned<volatile  short> : public false_type{};
-template <> struct is_unsigned<const volatile  short> : public false_type{};
-template <> struct is_unsigned< int> : public false_type{};
-template <> struct is_unsigned<const  int> : public false_type{};
-template <> struct is_unsigned<volatile  int> : public false_type{};
-template <> struct is_unsigned<const volatile  int> : public false_type{};
-template <> struct is_unsigned< long> : public false_type{};
-template <> struct is_unsigned<const  long> : public false_type{};
-template <> struct is_unsigned<volatile  long> : public false_type{};
-template <> struct is_unsigned<const volatile  long> : public false_type{};
-#ifdef BOOST_HAS_LONG_LONG
-template <> struct is_unsigned< ::boost::ulong_long_type> : public true_type{};
-template <> struct is_unsigned<const ::boost::ulong_long_type> : public true_type{};
-template <> struct is_unsigned<volatile ::boost::ulong_long_type> : public true_type{};
-template <> struct is_unsigned<const volatile ::boost::ulong_long_type> : public true_type{};
-
-template <> struct is_unsigned< ::boost::long_long_type> : public false_type{};
-template <> struct is_unsigned<const ::boost::long_long_type> : public false_type{};
-template <> struct is_unsigned<volatile ::boost::long_long_type> : public false_type{};
-template <> struct is_unsigned<const volatile ::boost::long_long_type> : public false_type{};
-#endif
-#if defined(CHAR_MIN) 
-#if CHAR_MIN == 0
-template <> struct is_unsigned<char> : public true_type{};
-template <> struct is_unsigned<const char> : public true_type{};
-template <> struct is_unsigned<volatile char> : public true_type{};
-template <> struct is_unsigned<const volatile char> : public true_type{};
-#else
-template <> struct is_unsigned<char> : public false_type{};
-template <> struct is_unsigned<const char> : public false_type{};
-template <> struct is_unsigned<volatile char> : public false_type{};
-template <> struct is_unsigned<const volatile char> : public false_type{};
-#endif
-#endif
-#if !defined(BOOST_NO_INTRINSIC_WCHAR_T) && defined(WCHAR_MIN)
-#if WCHAR_MIN == 0
-template <> struct is_unsigned<wchar_t> : public true_type{};
-template <> struct is_unsigned<const wchar_t> : public true_type{};
-template <> struct is_unsigned<volatile wchar_t> : public true_type{};
-template <> struct is_unsigned<const volatile wchar_t> : public true_type{};
-#else
-template <> struct is_unsigned<wchar_t> : public false_type{};
-template <> struct is_unsigned<const wchar_t> : public false_type{};
-template <> struct is_unsigned<volatile wchar_t> : public false_type{};
-template <> struct is_unsigned<const volatile wchar_t> : public false_type{};
-#endif
-#endif
-} // namespace boost
-
-#endif // BOOST_TT_IS_MEMBER_FUNCTION_POINTER_HPP_INCLUDED
diff --git a/third_party/boost/boost/type_traits/is_void.hpp b/third_party/boost/boost/type_traits/is_void.hpp
deleted file mode 100644
index 183f8ab..0000000
--- a/third_party/boost/boost/type_traits/is_void.hpp
+++ /dev/null
@@ -1,26 +0,0 @@
-
-//  (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
-//  Use, modification and distribution are subject to the Boost Software License,
-//  Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-//  http://www.boost.org/LICENSE_1_0.txt).
-//
-//  See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-#ifndef BOOST_TT_IS_VOID_HPP_INCLUDED
-#define BOOST_TT_IS_VOID_HPP_INCLUDED
-
-#include <boost/type_traits/integral_constant.hpp>
-
-namespace boost {
-
-template <class T>
-struct is_void : public false_type {};
-
-template<> struct is_void<void> : public true_type {};
-template<> struct is_void<const void> : public true_type{};
-template<> struct is_void<const volatile void> : public true_type{};
-template<> struct is_void<volatile void> : public true_type{};
-
-} // namespace boost
-
-#endif // BOOST_TT_IS_VOID_HPP_INCLUDED
diff --git a/third_party/boost/boost/type_traits/is_volatile.hpp b/third_party/boost/boost/type_traits/is_volatile.hpp
deleted file mode 100644
index 5b8e716..0000000
--- a/third_party/boost/boost/type_traits/is_volatile.hpp
+++ /dev/null
@@ -1,46 +0,0 @@
-
-//  (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, 
-//      Howard Hinnant and John Maddock 2000. 
-//  (C) Copyright Mat Marcus, Jesse Jones and Adobe Systems Inc 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/type_traits for most recent version including documentation.
-
-//    Fixed is_pointer, is_reference, is_const, is_volatile, is_same, 
-//    is_member_pointer based on the Simulated Partial Specialization work 
-//    of Mat Marcus and Jesse Jones. See  http://opensource.adobe.com or 
-//    http://groups.yahoo.com/group/boost/message/5441 
-//    Some workarounds in here use ideas suggested from "Generic<Programming>: 
-//    Mappings between Types and Values" 
-//    by Andrei Alexandrescu (see http://www.cuj.com/experts/1810/alexandr.html).
-
-
-#ifndef BOOST_TT_IS_VOLATILE_HPP_INCLUDED
-#define BOOST_TT_IS_VOLATILE_HPP_INCLUDED
-
-#include <cstddef> // size_t
-#include <boost/type_traits/integral_constant.hpp>
-
-namespace boost {
-
-#if defined( __CODEGEARC__ )
-
-   template <class T>
-   struct is_volatile : public integral_constant<bool, __is_volatile(T)> {};
-
-#else
-
-   template <class T>
-   struct is_volatile : public false_type {};
-   template <class T> struct is_volatile<T volatile> : public true_type{};
-   template <class T, std::size_t N> struct is_volatile<T volatile[N]> : public true_type{};
-   template <class T> struct is_volatile<T volatile[]> : public true_type{};
-
-#endif
-
-} // namespace boost
-
-#endif // BOOST_TT_IS_VOLATILE_HPP_INCLUDED
diff --git a/third_party/boost/boost/type_traits/make_unsigned.hpp b/third_party/boost/boost/type_traits/make_unsigned.hpp
deleted file mode 100644
index 17a8a5b..0000000
--- a/third_party/boost/boost/type_traits/make_unsigned.hpp
+++ /dev/null
@@ -1,136 +0,0 @@
-
-//  (C) Copyright John Maddock 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/type_traits for most recent version including documentation.
-
-#ifndef BOOST_TT_MAKE_UNSIGNED_HPP_INCLUDED
-#define BOOST_TT_MAKE_UNSIGNED_HPP_INCLUDED
-
-#include <boost/type_traits/conditional.hpp>
-#include <boost/type_traits/is_integral.hpp>
-#include <boost/type_traits/is_signed.hpp>
-#include <boost/type_traits/is_unsigned.hpp>
-#include <boost/type_traits/is_enum.hpp>
-#include <boost/type_traits/is_same.hpp>
-#include <boost/type_traits/remove_cv.hpp>
-#include <boost/type_traits/is_const.hpp>
-#include <boost/type_traits/is_volatile.hpp>
-#include <boost/type_traits/add_const.hpp>
-#include <boost/type_traits/add_volatile.hpp>
-#include <boost/static_assert.hpp>
-
-namespace boost {
-
-template <class T>
-struct make_unsigned
-{
-private:
-   BOOST_STATIC_ASSERT_MSG((::boost::is_integral<T>::value || ::boost::is_enum<T>::value), "The template argument to make_unsigned must be an integer or enum type.");
-   BOOST_STATIC_ASSERT_MSG((! ::boost::is_same<typename remove_cv<T>::type, bool>::value), "The template argument to make_unsigned must not be the type bool");
-
-   typedef typename remove_cv<T>::type t_no_cv;
-   typedef typename conditional<
-      (::boost::is_unsigned<T>::value && ::boost::is_integral<T>::value 
-      && ! ::boost::is_same<t_no_cv, char>::value
-      && ! ::boost::is_same<t_no_cv, wchar_t>::value
-      && ! ::boost::is_same<t_no_cv, bool>::value),
-      T,
-      typename conditional<
-         (::boost::is_integral<T>::value 
-         && ! ::boost::is_same<t_no_cv, char>::value
-         && ! ::boost::is_same<t_no_cv, wchar_t>::value
-         && ! ::boost::is_same<t_no_cv, bool>::value),
-         typename conditional<
-            is_same<t_no_cv, signed char>::value,
-            unsigned char,
-            typename conditional<
-               is_same<t_no_cv, short>::value,
-               unsigned short,
-               typename conditional<
-                  is_same<t_no_cv, int>::value,
-                  unsigned int,
-                  typename conditional<
-                     is_same<t_no_cv, long>::value,
-                     unsigned long,
-#if defined(BOOST_HAS_LONG_LONG)
-#ifdef BOOST_HAS_INT128
-                     typename conditional<
-                        sizeof(t_no_cv) == sizeof(boost::ulong_long_type), 
-                        boost::ulong_long_type, 
-                        boost::uint128_type
-                     >::type
-#else
-                     boost::ulong_long_type
-#endif
-#elif defined(BOOST_HAS_MS_INT64)
-                     unsigned __int64
-#else
-                     unsigned long
-#endif
-                  >::type
-               >::type
-            >::type
-         >::type,
-         // Not a regular integer type:
-         typename conditional<
-            sizeof(t_no_cv) == sizeof(unsigned char),
-            unsigned char,
-            typename conditional<
-               sizeof(t_no_cv) == sizeof(unsigned short),
-               unsigned short,
-               typename conditional<
-                  sizeof(t_no_cv) == sizeof(unsigned int),
-                  unsigned int,
-                  typename conditional<
-                     sizeof(t_no_cv) == sizeof(unsigned long),
-                     unsigned long,
-#if defined(BOOST_HAS_LONG_LONG)
-#ifdef BOOST_HAS_INT128
-                     typename conditional<
-                        sizeof(t_no_cv) == sizeof(boost::ulong_long_type), 
-                        boost::ulong_long_type, 
-                        boost::uint128_type
-                     >::type
-#else
-                     boost::ulong_long_type
-#endif
-#elif defined(BOOST_HAS_MS_INT64)
-                     unsigned __int64
-#else
-                     unsigned long
-#endif
-                  >::type
-               >::type
-            >::type
-         >::type
-      >::type
-   >::type base_integer_type;
-   
-   // Add back any const qualifier:
-   typedef typename conditional<
-      is_const<T>::value,
-      typename add_const<base_integer_type>::type,
-      base_integer_type
-   >::type const_base_integer_type;
-public:
-   // Add back any volatile qualifier:
-   typedef typename conditional<
-      is_volatile<T>::value,
-      typename add_volatile<const_base_integer_type>::type,
-      const_base_integer_type
-   >::type type;
-};
-
-#if !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES)
-
-   template <class T> using make_unsigned_t = typename make_unsigned<T>::type;
-
-#endif
-
-} // namespace boost
-
-#endif // BOOST_TT_ADD_REFERENCE_HPP_INCLUDED
-
diff --git a/third_party/boost/boost/type_traits/remove_cv.hpp b/third_party/boost/boost/type_traits/remove_cv.hpp
deleted file mode 100644
index 57a96f2..0000000
--- a/third_party/boost/boost/type_traits/remove_cv.hpp
+++ /dev/null
@@ -1,45 +0,0 @@
-
-//  (C) Copyright Dave Abrahams, Steve Cleary, Beman Dawes, Howard
-//  Hinnant & John Maddock 2000.  
-//  Use, modification and distribution are subject to the Boost Software License,
-//  Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-//  http://www.boost.org/LICENSE_1_0.txt).
-//
-//  See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-
-#ifndef BOOST_TT_REMOVE_CV_HPP_INCLUDED
-#define BOOST_TT_REMOVE_CV_HPP_INCLUDED
-
-#include <boost/config.hpp>
-#include <boost/detail/workaround.hpp>
-#include <cstddef> // size_t
-
-namespace boost {
-
-   //  convert a type T to a non-cv-qualified type - remove_cv<T>
-template <class T> struct remove_cv{ typedef T type; };
-template <class T> struct remove_cv<T const>{ typedef T type;  };
-template <class T> struct remove_cv<T volatile>{ typedef T type; };
-template <class T> struct remove_cv<T const volatile>{ typedef T type; };
-
-#if !defined(BOOST_NO_ARRAY_TYPE_SPECIALIZATIONS)
-template <class T, std::size_t N> struct remove_cv<T const[N]>{ typedef T type[N]; };
-template <class T, std::size_t N> struct remove_cv<T const volatile[N]>{ typedef T type[N]; };
-template <class T, std::size_t N> struct remove_cv<T volatile[N]>{ typedef T type[N]; };
-#if !BOOST_WORKAROUND(__BORLANDC__, < 0x600) && !defined(__IBMCPP__) &&  !BOOST_WORKAROUND(__DMC__, BOOST_TESTED_AT(0x840))
-template <class T> struct remove_cv<T const[]>{ typedef T type[]; };
-template <class T> struct remove_cv<T const volatile[]>{ typedef T type[]; };
-template <class T> struct remove_cv<T volatile[]>{ typedef T type[]; };
-#endif
-#endif
-
-#if !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES)
-
-   template <class T> using remove_cv_t = typename remove_cv<T>::type;
-
-#endif
-
-} // namespace boost
-
-#endif // BOOST_TT_REMOVE_CV_HPP_INCLUDED
diff --git a/third_party/boost/boost/type_traits/remove_reference.hpp b/third_party/boost/boost/type_traits/remove_reference.hpp
deleted file mode 100644
index 70949fb..0000000
--- a/third_party/boost/boost/type_traits/remove_reference.hpp
+++ /dev/null
@@ -1,59 +0,0 @@
-
-//  (C) Copyright Steve Cleary, Beman Dawes, Howard Hinnant & John Maddock 2000.
-//  Use, modification and distribution are subject to the Boost Software License,
-//  Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
-//  http://www.boost.org/LICENSE_1_0.txt).
-//
-//  See http://www.boost.org/libs/type_traits for most recent version including documentation.
-
-#ifndef BOOST_TT_REMOVE_REFERENCE_HPP_INCLUDED
-#define BOOST_TT_REMOVE_REFERENCE_HPP_INCLUDED
-
-#include <boost/config.hpp>
-#include <boost/detail/workaround.hpp>
-
-namespace boost {
-
-
-namespace detail{
-//
-// We can't filter out rvalue_references at the same level as
-// references or we get ambiguities from msvc:
-//
-template <class T>
-struct remove_rvalue_ref
-{
-   typedef T type;
-};
-#ifndef BOOST_NO_CXX11_RVALUE_REFERENCES
-template <class T>
-struct remove_rvalue_ref<T&&>
-{
-   typedef T type;
-};
-#endif
-
-} // namespace detail
-
-template <class T> struct remove_reference{ typedef typename boost::detail::remove_rvalue_ref<T>::type type; };
-template <class T> struct remove_reference<T&>{ typedef T type; };
-
-#if defined(BOOST_ILLEGAL_CV_REFERENCES)
-// these are illegal specialisations; cv-qualifies applied to
-// references have no effect according to [8.3.2p1],
-// C++ Builder requires them though as it treats cv-qualified
-// references as distinct types...
-template <class T> struct remove_reference<T&const>{ typedef T type; };
-template <class T> struct remove_reference<T&volatile>{ typedef T type; };
-template <class T> struct remove_reference<T&const volatile>{ typedef T type; };
-#endif
-
-#if !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES)
-
-   template <class T> using remove_reference_t = typename remove_reference<T>::type;
-
-#endif
-
-} // namespace boost
-
-#endif // BOOST_TT_REMOVE_REFERENCE_HPP_INCLUDED
diff --git a/third_party/boost/boost/version.hpp b/third_party/boost/boost/version.hpp
deleted file mode 100644
index 98ce61a..0000000
--- a/third_party/boost/boost/version.hpp
+++ /dev/null
@@ -1,32 +0,0 @@
-//  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 107000
-
-//
-//  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_70"
-
-#endif
diff --git a/third_party/boost/boost/winapi/access_rights.hpp b/third_party/boost/boost/winapi/access_rights.hpp
deleted file mode 100644
index bf8d287..0000000
--- a/third_party/boost/boost/winapi/access_rights.hpp
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Copyright 2016 Andrey Semashev
- *
- * Distributed under the Boost Software License, Version 1.0.
- * See http://www.boost.org/LICENSE_1_0.txt
- */
-
-#ifndef BOOST_WINAPI_ACCESS_RIGHTS_HPP_INCLUDED_
-#define BOOST_WINAPI_ACCESS_RIGHTS_HPP_INCLUDED_
-
-#include <boost/winapi/basic_types.hpp>
-
-#ifdef BOOST_HAS_PRAGMA_ONCE
-#pragma once
-#endif
-
-namespace boost {
-namespace winapi {
-
-#if defined( BOOST_USE_WINDOWS_H )
-
-BOOST_CONSTEXPR_OR_CONST DWORD_ DELETE_ = DELETE;
-BOOST_CONSTEXPR_OR_CONST DWORD_ READ_CONTROL_ = READ_CONTROL;
-BOOST_CONSTEXPR_OR_CONST DWORD_ WRITE_DAC_ = WRITE_DAC;
-BOOST_CONSTEXPR_OR_CONST DWORD_ WRITE_OWNER_ = WRITE_OWNER;
-BOOST_CONSTEXPR_OR_CONST DWORD_ SYNCHRONIZE_ = SYNCHRONIZE;
-
-BOOST_CONSTEXPR_OR_CONST DWORD_ STANDARD_RIGHTS_ALL_ = STANDARD_RIGHTS_ALL;
-BOOST_CONSTEXPR_OR_CONST DWORD_ STANDARD_RIGHTS_EXECUTE_ = STANDARD_RIGHTS_EXECUTE;
-BOOST_CONSTEXPR_OR_CONST DWORD_ STANDARD_RIGHTS_READ_ = STANDARD_RIGHTS_READ;
-BOOST_CONSTEXPR_OR_CONST DWORD_ STANDARD_RIGHTS_REQUIRED_ = STANDARD_RIGHTS_REQUIRED;
-BOOST_CONSTEXPR_OR_CONST DWORD_ STANDARD_RIGHTS_WRITE_ = STANDARD_RIGHTS_WRITE;
-
-BOOST_CONSTEXPR_OR_CONST DWORD_ SPECIFIC_RIGHTS_ALL_ = SPECIFIC_RIGHTS_ALL;
-
-BOOST_CONSTEXPR_OR_CONST DWORD_ ACCESS_SYSTEM_SECURITY_ = ACCESS_SYSTEM_SECURITY;
-
-BOOST_CONSTEXPR_OR_CONST DWORD_ MAXIMUM_ALLOWED_ = MAXIMUM_ALLOWED;
-
-BOOST_CONSTEXPR_OR_CONST DWORD_ GENERIC_ALL_ = GENERIC_ALL;
-BOOST_CONSTEXPR_OR_CONST DWORD_ GENERIC_EXECUTE_ = GENERIC_EXECUTE;
-BOOST_CONSTEXPR_OR_CONST DWORD_ GENERIC_WRITE_ = GENERIC_WRITE;
-BOOST_CONSTEXPR_OR_CONST DWORD_ GENERIC_READ_ = GENERIC_READ;
-
-typedef ::ACCESS_MASK ACCESS_MASK_;
-typedef ::PACCESS_MASK PACCESS_MASK_;
-
-#else // defined( BOOST_USE_WINDOWS_H )
-
-BOOST_CONSTEXPR_OR_CONST DWORD_ DELETE_ = 0x00010000;
-BOOST_CONSTEXPR_OR_CONST DWORD_ READ_CONTROL_ = 0x00020000;
-BOOST_CONSTEXPR_OR_CONST DWORD_ WRITE_DAC_ = 0x00040000;
-BOOST_CONSTEXPR_OR_CONST DWORD_ WRITE_OWNER_ = 0x00080000;
-BOOST_CONSTEXPR_OR_CONST DWORD_ SYNCHRONIZE_ = 0x00100000;
-
-BOOST_CONSTEXPR_OR_CONST DWORD_ STANDARD_RIGHTS_ALL_ = 0x001F0000;
-BOOST_CONSTEXPR_OR_CONST DWORD_ STANDARD_RIGHTS_EXECUTE_ = READ_CONTROL_;
-BOOST_CONSTEXPR_OR_CONST DWORD_ STANDARD_RIGHTS_READ_ = READ_CONTROL_;
-BOOST_CONSTEXPR_OR_CONST DWORD_ STANDARD_RIGHTS_REQUIRED_ = 0x000F0000;
-BOOST_CONSTEXPR_OR_CONST DWORD_ STANDARD_RIGHTS_WRITE_ = READ_CONTROL_;
-
-BOOST_CONSTEXPR_OR_CONST DWORD_ SPECIFIC_RIGHTS_ALL_ = 0x0000FFFF;
-
-BOOST_CONSTEXPR_OR_CONST DWORD_ ACCESS_SYSTEM_SECURITY_ = 0x01000000;
-
-BOOST_CONSTEXPR_OR_CONST DWORD_ MAXIMUM_ALLOWED_ = 0x02000000;
-
-BOOST_CONSTEXPR_OR_CONST DWORD_ GENERIC_ALL_ = 0x10000000;
-BOOST_CONSTEXPR_OR_CONST DWORD_ GENERIC_EXECUTE_ = 0x20000000;
-BOOST_CONSTEXPR_OR_CONST DWORD_ GENERIC_WRITE_ = 0x40000000;
-BOOST_CONSTEXPR_OR_CONST DWORD_ GENERIC_READ_ = 0x80000000;
-
-typedef DWORD_ ACCESS_MASK_;
-typedef ACCESS_MASK_* PACCESS_MASK_;
-
-#endif // defined( BOOST_USE_WINDOWS_H )
-
-}
-}
-
-#endif // BOOST_WINAPI_ACCESS_RIGHTS_HPP_INCLUDED_
diff --git a/third_party/boost/boost/winapi/basic_types.hpp b/third_party/boost/boost/winapi/basic_types.hpp
deleted file mode 100644
index 1168054..0000000
--- a/third_party/boost/boost/winapi/basic_types.hpp
+++ /dev/null
@@ -1,290 +0,0 @@
-/*
- * Copyright 2010 Vicente J. Botet Escriba
- * Copyright 2015-2018 Andrey Semashev
- *
- * Distributed under the Boost Software License, Version 1.0.
- * See http://www.boost.org/LICENSE_1_0.txt
- */
-
-#ifndef BOOST_WINAPI_BASIC_TYPES_HPP_INCLUDED_
-#define BOOST_WINAPI_BASIC_TYPES_HPP_INCLUDED_
-
-#include <boost/winapi/config.hpp>
-
-#ifdef BOOST_HAS_PRAGMA_ONCE
-#pragma once
-#endif
-
-#if defined(BOOST_USE_WINDOWS_H)
-# include <windows.h>
-#elif defined(WIN32) || defined(_WIN32) || defined(__WIN32__) ||  defined(__CYGWIN__)
-# include <winerror.h>
-# ifdef UNDER_CE
-#  ifndef WINAPI
-#   ifndef _WIN32_WCE_EMULATION
-#    define WINAPI  __cdecl     // Note this doesn't match the desktop definition
-#   else
-#    define WINAPI  __stdcall
-#   endif
-#  endif
-// Windows CE defines a few functions as inline functions in kfuncs.h
-typedef int BOOL;
-typedef unsigned long DWORD;
-typedef void* HANDLE;
-#  include <kfuncs.h>
-# endif // UNDER_CE
-#else
-# error "Win32 functions not available"
-#endif
-
-#if defined(_M_IX86) || defined(__i386__)
-#define BOOST_WINAPI_DETAIL_STDCALL __stdcall
-#else
-// On architectures other than 32-bit x86 __stdcall is ignored. Clang also issues a warning.
-#define BOOST_WINAPI_DETAIL_STDCALL
-#endif
-
-#if defined(WINAPI)
-#define BOOST_WINAPI_WINAPI_CC WINAPI
-#else
-#define BOOST_WINAPI_WINAPI_CC BOOST_WINAPI_DETAIL_STDCALL
-#endif
-
-#if defined(CALLBACK)
-#define BOOST_WINAPI_CALLBACK_CC CALLBACK
-#else
-#define BOOST_WINAPI_CALLBACK_CC BOOST_WINAPI_DETAIL_STDCALL
-#endif
-
-#if defined(NTAPI)
-#define BOOST_WINAPI_NTAPI_CC NTAPI
-#else
-#define BOOST_WINAPI_NTAPI_CC BOOST_WINAPI_DETAIL_STDCALL
-#endif
-
-#ifndef NO_STRICT
-#ifndef STRICT
-#define STRICT 1
-#endif
-#endif
-
-#if defined(STRICT)
-#define BOOST_WINAPI_DETAIL_DECLARE_HANDLE(x) struct x##__; typedef struct x##__ *x
-#else
-#define BOOST_WINAPI_DETAIL_DECLARE_HANDLE(x) typedef void* x
-#endif
-
-#if !defined(BOOST_USE_WINDOWS_H)
-extern "C" {
-union _LARGE_INTEGER;
-struct _SECURITY_ATTRIBUTES;
-BOOST_WINAPI_DETAIL_DECLARE_HANDLE(HINSTANCE);
-typedef HINSTANCE HMODULE;
-}
-#endif
-
-#if defined(__GNUC__)
-#define BOOST_WINAPI_DETAIL_EXTENSION __extension__
-#else
-#define BOOST_WINAPI_DETAIL_EXTENSION
-#endif
-
-// MinGW64 gcc 4.8.2 fails to compile function declarations with boost::winapi::VOID_ arguments even though
-// the typedef expands to void. In Windows SDK, VOID is a macro which unfolds to void. We use our own macro in such cases.
-#define BOOST_WINAPI_DETAIL_VOID void
-
-namespace boost {
-namespace winapi {
-#if defined(BOOST_USE_WINDOWS_H)
-
-typedef ::BOOL BOOL_;
-typedef ::PBOOL PBOOL_;
-typedef ::LPBOOL LPBOOL_;
-typedef ::BOOLEAN BOOLEAN_;
-typedef ::PBOOLEAN PBOOLEAN_;
-typedef ::BYTE BYTE_;
-typedef ::PBYTE PBYTE_;
-typedef ::LPBYTE LPBYTE_;
-typedef ::UCHAR UCHAR_;
-typedef ::PUCHAR PUCHAR_;
-typedef ::WORD WORD_;
-typedef ::PWORD PWORD_;
-typedef ::LPWORD LPWORD_;
-typedef ::DWORD DWORD_;
-typedef ::PDWORD PDWORD_;
-typedef ::LPDWORD LPDWORD_;
-typedef ::HANDLE HANDLE_;
-typedef ::PHANDLE PHANDLE_;
-typedef ::SHORT SHORT_;
-typedef ::PSHORT PSHORT_;
-typedef ::USHORT USHORT_;
-typedef ::PUSHORT PUSHORT_;
-typedef ::INT INT_;
-typedef ::PINT PINT_;
-typedef ::LPINT LPINT_;
-typedef ::UINT UINT_;
-typedef ::PUINT PUINT_;
-typedef ::LONG LONG_;
-typedef ::PLONG PLONG_;
-typedef ::LPLONG LPLONG_;
-typedef ::ULONG ULONG_;
-typedef ::PULONG PULONG_;
-typedef ::LONGLONG ULONG64_;
-typedef ::ULONGLONG PULONG64_;
-typedef ::LONGLONG LONGLONG_;
-typedef ::ULONGLONG ULONGLONG_;
-typedef ::INT_PTR INT_PTR_;
-typedef ::UINT_PTR UINT_PTR_;
-typedef ::LONG_PTR LONG_PTR_;
-typedef ::ULONG_PTR ULONG_PTR_;
-typedef ::DWORD_PTR DWORD_PTR_;
-typedef ::PDWORD_PTR PDWORD_PTR_;
-typedef ::SIZE_T SIZE_T_;
-typedef ::PSIZE_T PSIZE_T_;
-typedef ::SSIZE_T SSIZE_T_;
-typedef ::PSSIZE_T PSSIZE_T_;
-typedef VOID VOID_; // VOID is a macro
-typedef ::PVOID PVOID_;
-typedef ::LPVOID LPVOID_;
-typedef ::LPCVOID LPCVOID_;
-typedef ::CHAR CHAR_;
-typedef ::LPSTR LPSTR_;
-typedef ::LPCSTR LPCSTR_;
-typedef ::WCHAR WCHAR_;
-typedef ::LPWSTR LPWSTR_;
-typedef ::LPCWSTR LPCWSTR_;
-
-#else // defined( BOOST_USE_WINDOWS_H )
-
-#if defined(__GNUC__) && !(defined(__INTEL_COMPILER) || defined(__ICL) || defined(__ICC) || defined(__ECC)) \
-    && (__GNUC__ * 100 + __GNUC_MINOR__) >= 406
-#pragma GCC diagnostic push
-// ISO C++ 1998 does not support 'long long'
-#pragma GCC diagnostic ignored "-Wlong-long"
-#endif
-
-typedef int BOOL_;
-typedef BOOL_* PBOOL_;
-typedef BOOL_* LPBOOL_;
-typedef unsigned char BYTE_;
-typedef BYTE_* PBYTE_;
-typedef BYTE_* LPBYTE_;
-typedef unsigned char UCHAR_;
-typedef UCHAR_* PUCHAR_;
-typedef BYTE_ BOOLEAN_;
-typedef BOOLEAN_* PBOOLEAN_;
-typedef unsigned short WORD_;
-typedef WORD_* PWORD_;
-typedef WORD_* LPWORD_;
-#if !defined(__LP64__)
-typedef unsigned long DWORD_;
-#else
-typedef unsigned int DWORD_;
-#endif
-typedef DWORD_* PDWORD_;
-typedef DWORD_* LPDWORD_;
-typedef void* HANDLE_;
-typedef void** PHANDLE_;
-
-typedef short SHORT_;
-typedef SHORT_* PSHORT_;
-typedef unsigned short USHORT_;
-typedef USHORT_* PUSHORT_;
-typedef int INT_;
-typedef INT_* PINT_;
-typedef INT_* LPINT_;
-typedef unsigned int UINT_;
-typedef UINT_* PUINT_;
-#if !defined(__LP64__)
-typedef long LONG_;
-typedef unsigned long ULONG_;
-#else
-typedef int LONG_;
-typedef unsigned int ULONG_;
-#endif
-typedef LONG_* PLONG_;
-typedef LONG_* LPLONG_;
-typedef ULONG_* PULONG_;
-#if defined(BOOST_HAS_MS_INT64)
-BOOST_WINAPI_DETAIL_EXTENSION typedef __int64 LONGLONG_;
-BOOST_WINAPI_DETAIL_EXTENSION typedef unsigned __int64 ULONGLONG_;
-#else
-BOOST_WINAPI_DETAIL_EXTENSION typedef long long LONGLONG_;
-BOOST_WINAPI_DETAIL_EXTENSION typedef unsigned long long ULONGLONG_;
-#endif
-typedef LONGLONG_ LONG64_, *PLONG64_;
-typedef ULONGLONG_ ULONG64_, *PULONG64_;
-
-#if defined(_WIN64)
-typedef LONGLONG_ INT_PTR_;
-typedef ULONGLONG_ UINT_PTR_;
-typedef LONGLONG_ LONG_PTR_;
-typedef ULONGLONG_ ULONG_PTR_;
-#else
-typedef int INT_PTR_;
-typedef unsigned int UINT_PTR_;
-typedef long LONG_PTR_;
-typedef unsigned long ULONG_PTR_;
-#endif
-
-typedef ULONG_PTR_ DWORD_PTR_, *PDWORD_PTR_;
-typedef ULONG_PTR_ SIZE_T_, *PSIZE_T_;
-typedef LONG_PTR_ SSIZE_T_, *PSSIZE_T_;
-
-typedef void VOID_;
-typedef void *PVOID_;
-typedef void *LPVOID_;
-typedef const void *LPCVOID_;
-
-typedef char CHAR_;
-typedef CHAR_ *LPSTR_;
-typedef const CHAR_ *LPCSTR_;
-
-typedef wchar_t WCHAR_;
-typedef WCHAR_ *LPWSTR_;
-typedef const WCHAR_ *LPCWSTR_;
-
-#if defined(__GNUC__) && !(defined(__INTEL_COMPILER) || defined(__ICL) || defined(__ICC) || defined(__ECC)) \
-    && (__GNUC__ * 100 + __GNUC_MINOR__) >= 406
-#pragma GCC diagnostic pop
-#endif
-
-#endif // defined( BOOST_USE_WINDOWS_H )
-
-// ::NTSTATUS is defined in ntdef.h, which is not included by windows.h by default, so alwaus use LONG_
-typedef LONG_ NTSTATUS_;
-typedef NTSTATUS_ *PNTSTATUS_;
-
-typedef ::HMODULE HMODULE_;
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable:4201) // nonstandard extension used : nameless struct/union
-#endif
-
-typedef union BOOST_MAY_ALIAS _LARGE_INTEGER {
-    BOOST_WINAPI_DETAIL_EXTENSION struct {
-        DWORD_ LowPart;
-        LONG_ HighPart;
-    };
-    struct {
-        DWORD_ LowPart;
-        LONG_ HighPart;
-    } u;
-    LONGLONG_ QuadPart;
-} LARGE_INTEGER_, *PLARGE_INTEGER_;
-
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-typedef struct BOOST_MAY_ALIAS _SECURITY_ATTRIBUTES {
-    DWORD_  nLength;
-    LPVOID_ lpSecurityDescriptor;
-    BOOL_   bInheritHandle;
-} SECURITY_ATTRIBUTES_, *PSECURITY_ATTRIBUTES_, *LPSECURITY_ATTRIBUTES_;
-
-}
-}
-
-#endif // BOOST_WINAPI_BASIC_TYPES_HPP_INCLUDED_
diff --git a/third_party/boost/boost/winapi/config.hpp b/third_party/boost/boost/winapi/config.hpp
deleted file mode 100644
index 2de79cf..0000000
--- a/third_party/boost/boost/winapi/config.hpp
+++ /dev/null
@@ -1,230 +0,0 @@
-/*
- * Copyright 2013, 2017 Andrey Semashev
- * Copyright 2017 James E. King, III
- *
- * Distributed under the Boost Software License, Version 1.0.
- * See http://www.boost.org/LICENSE_1_0.txt
- */
-
-#ifndef BOOST_WINAPI_CONFIG_HPP_INCLUDED_
-#define BOOST_WINAPI_CONFIG_HPP_INCLUDED_
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/platform.h>
-#if defined(__CYGWIN__)
-// Cygwin 64 compiler does not define _WIN64 and instead defines it in a private header. We can't define _WIN64 ourselves because
-// the header defines the macro unconditionally and if the user includes both Boost.WinAPI and Cygwin WinAPI headers there will be conflict.
-#include <_cygwin.h>
-#endif
-
-// BOOST_WINAPI_IS_MINGW indicates that the target Windows SDK is provided by MinGW (http://mingw.org/).
-// BOOST_WINAPI_IS_MINGW_W64 indicates that the target Windows SDK is provided by MinGW-w64 (http://mingw-w64.org).
-// BOOST_WINAPI_IS_CYGWIN indicates that the target Windows SDK is provided by MinGW variant from Cygwin (https://cygwin.com/).
-#if defined(__CYGWIN__)
-#define BOOST_WINAPI_IS_CYGWIN
-#elif BOOST_PLAT_MINGW
-#if defined(__MINGW64_VERSION_MAJOR)
-#define BOOST_WINAPI_IS_MINGW_W64
-#else
-#define BOOST_WINAPI_IS_MINGW
-#endif
-#endif
-
-// These constants reflect _WIN32_WINNT_* macros from sdkddkver.h
-// See also: http://msdn.microsoft.com/en-us/library/windows/desktop/aa383745%28v=vs.85%29.aspx#setting_winver_or__win32_winnt
-#define BOOST_WINAPI_VERSION_NT4 0x0400
-#define BOOST_WINAPI_VERSION_WIN2K 0x0500
-#define BOOST_WINAPI_VERSION_WINXP 0x0501
-#define BOOST_WINAPI_VERSION_WS03 0x0502
-#define BOOST_WINAPI_VERSION_WIN6 0x0600
-#define BOOST_WINAPI_VERSION_VISTA 0x0600
-#define BOOST_WINAPI_VERSION_WS08 0x0600
-#define BOOST_WINAPI_VERSION_LONGHORN 0x0600
-#define BOOST_WINAPI_VERSION_WIN7 0x0601
-#define BOOST_WINAPI_VERSION_WIN8 0x0602
-#define BOOST_WINAPI_VERSION_WINBLUE 0x0603
-#define BOOST_WINAPI_VERSION_WINTHRESHOLD 0x0A00
-#define BOOST_WINAPI_VERSION_WIN10 0x0A00
-
-// These constants reflect NTDDI_* macros from sdkddkver.h
-#define BOOST_WINAPI_NTDDI_WIN2K 0x05000000
-#define BOOST_WINAPI_NTDDI_WIN2KSP1 0x05000100
-#define BOOST_WINAPI_NTDDI_WIN2KSP2 0x05000200
-#define BOOST_WINAPI_NTDDI_WIN2KSP3 0x05000300
-#define BOOST_WINAPI_NTDDI_WIN2KSP4 0x05000400
-
-#define BOOST_WINAPI_NTDDI_WINXP 0x05010000
-#define BOOST_WINAPI_NTDDI_WINXPSP1 0x05010100
-#define BOOST_WINAPI_NTDDI_WINXPSP2 0x05010200
-#define BOOST_WINAPI_NTDDI_WINXPSP3 0x05010300
-#define BOOST_WINAPI_NTDDI_WINXPSP4 0x05010400
-
-#define BOOST_WINAPI_NTDDI_WS03 0x05020000
-#define BOOST_WINAPI_NTDDI_WS03SP1 0x05020100
-#define BOOST_WINAPI_NTDDI_WS03SP2 0x05020200
-#define BOOST_WINAPI_NTDDI_WS03SP3 0x05020300
-#define BOOST_WINAPI_NTDDI_WS03SP4 0x05020400
-
-#define BOOST_WINAPI_NTDDI_WIN6 0x06000000
-#define BOOST_WINAPI_NTDDI_WIN6SP1 0x06000100
-#define BOOST_WINAPI_NTDDI_WIN6SP2 0x06000200
-#define BOOST_WINAPI_NTDDI_WIN6SP3 0x06000300
-#define BOOST_WINAPI_NTDDI_WIN6SP4 0x06000400
-
-#define BOOST_WINAPI_NTDDI_VISTA BOOST_WINAPI_NTDDI_WIN6
-#define BOOST_WINAPI_NTDDI_VISTASP1 BOOST_WINAPI_NTDDI_WIN6SP1
-#define BOOST_WINAPI_NTDDI_VISTASP2 BOOST_WINAPI_NTDDI_WIN6SP2
-#define BOOST_WINAPI_NTDDI_VISTASP3 BOOST_WINAPI_NTDDI_WIN6SP3
-#define BOOST_WINAPI_NTDDI_VISTASP4 BOOST_WINAPI_NTDDI_WIN6SP4
-
-#define BOOST_WINAPI_NTDDI_LONGHORN  BOOST_WINAPI_NTDDI_VISTA
-
-#define BOOST_WINAPI_NTDDI_WS08 BOOST_WINAPI_NTDDI_WIN6SP1
-#define BOOST_WINAPI_NTDDI_WS08SP2 BOOST_WINAPI_NTDDI_WIN6SP2
-#define BOOST_WINAPI_NTDDI_WS08SP3 BOOST_WINAPI_NTDDI_WIN6SP3
-#define BOOST_WINAPI_NTDDI_WS08SP4 BOOST_WINAPI_NTDDI_WIN6SP4
-
-#define BOOST_WINAPI_NTDDI_WIN7 0x06010000
-#define BOOST_WINAPI_NTDDI_WIN7SP1 0x06010100 // Not defined in Windows SDK
-#define BOOST_WINAPI_NTDDI_WIN8 0x06020000
-#define BOOST_WINAPI_NTDDI_WINBLUE 0x06030000
-#define BOOST_WINAPI_NTDDI_WINTHRESHOLD 0x0A000000
-#define BOOST_WINAPI_NTDDI_WIN10 0x0A000000
-#define BOOST_WINAPI_NTDDI_WIN10_TH2 0x0A000001
-#define BOOST_WINAPI_NTDDI_WIN10_RS1 0x0A000002
-#define BOOST_WINAPI_NTDDI_WIN10_RS2 0x0A000003
-#define BOOST_WINAPI_NTDDI_WIN10_RS3 0x0A000004
-
-#define BOOST_WINAPI_DETAIL_MAKE_NTDDI_VERSION2(x) x##0000
-#define BOOST_WINAPI_DETAIL_MAKE_NTDDI_VERSION(x) BOOST_WINAPI_DETAIL_MAKE_NTDDI_VERSION2(x)
-
-#if !defined(BOOST_USE_WINAPI_VERSION)
-#if defined(_WIN32_WINNT)
-#define BOOST_USE_WINAPI_VERSION _WIN32_WINNT
-#elif defined(WINVER)
-#define BOOST_USE_WINAPI_VERSION WINVER
-#else
-// By default use Windows 7 API on compilers that support it and Vista or XP on the others
-#if (defined(_MSC_VER) && _MSC_VER < 1500) || defined(BOOST_WINAPI_IS_MINGW)
-#define BOOST_USE_WINAPI_VERSION BOOST_WINAPI_VERSION_WINXP
-#elif (defined(_MSC_VER) && _MSC_VER < 1600)
-#define BOOST_USE_WINAPI_VERSION BOOST_WINAPI_VERSION_WIN6
-#else
-#define BOOST_USE_WINAPI_VERSION BOOST_WINAPI_VERSION_WIN7
-#endif
-#endif
-#endif
-
-#if !defined(BOOST_USE_NTDDI_VERSION)
-#if defined(NTDDI_VERSION)
-#define BOOST_USE_NTDDI_VERSION NTDDI_VERSION
-// Default to respective Windows version with the latest Service Pack
-#elif BOOST_USE_WINAPI_VERSION == BOOST_WINAPI_VERSION_WIN2K
-#define BOOST_USE_NTDDI_VERSION BOOST_WINAPI_NTDDI_WIN2KSP4
-#elif BOOST_USE_WINAPI_VERSION == BOOST_WINAPI_VERSION_WINXP
-#define BOOST_USE_NTDDI_VERSION BOOST_WINAPI_NTDDI_WINXPSP3
-#elif BOOST_USE_WINAPI_VERSION == BOOST_WINAPI_VERSION_WS03
-#define BOOST_USE_NTDDI_VERSION BOOST_WINAPI_NTDDI_WS03SP2
-#elif BOOST_USE_WINAPI_VERSION == BOOST_WINAPI_VERSION_WIN6
-#define BOOST_USE_NTDDI_VERSION BOOST_WINAPI_NTDDI_WIN6SP2
-#elif BOOST_USE_WINAPI_VERSION == BOOST_WINAPI_VERSION_WIN7
-#define BOOST_USE_NTDDI_VERSION BOOST_WINAPI_NTDDI_WIN7SP1
-#elif BOOST_USE_WINAPI_VERSION == BOOST_WINAPI_VERSION_WIN10
-#define BOOST_USE_NTDDI_VERSION BOOST_WINAPI_NTDDI_WIN10_RS3
-#else
-#define BOOST_USE_NTDDI_VERSION BOOST_WINAPI_DETAIL_MAKE_NTDDI_VERSION(BOOST_USE_WINAPI_VERSION)
-#endif
-#endif
-
-// Known Windows SDK versions, taken from VER_PRODUCTBUILD macro value defined in ntverp.h.
-// These values can be used to compare with BOOST_PLAT_WINDOWS_SDK_VERSION from Boost.Predef.
-#define BOOST_WINAPI_WINDOWS_SDK_MSVC71 BOOST_VERSION_NUMBER(0, 0, 3668) // Windows SDK bundled with MSVC 7.1
-#define BOOST_WINAPI_WINDOWS_SDK_MSVC8 BOOST_VERSION_NUMBER(0, 0, 3790) // Windows SDK bundled with MSVC 8
-#define BOOST_WINAPI_WINDOWS_SDK_6_0 BOOST_VERSION_NUMBER(0, 0, 6000) // Windows SDK 6.0
-#define BOOST_WINAPI_WINDOWS_SDK_7_0 BOOST_VERSION_NUMBER(0, 0, 7600) // Windows SDK 7.0, 7.1
-#define BOOST_WINAPI_WINDOWS_SDK_8_0 BOOST_VERSION_NUMBER(0, 0, 9200) // Windows SDK 8.0
-#define BOOST_WINAPI_WINDOWS_SDK_8_1 BOOST_VERSION_NUMBER(0, 0, 9600) // Windows SDK 8.1
-#define BOOST_WINAPI_WINDOWS_SDK_10_0 BOOST_VERSION_NUMBER(0, 0, 10011) // Windows SDK 10.0
-// MinGW does not have the ntverp.h header but it defines VER_PRODUCTBUILD in ddk/ntifs.h.
-// Cygwin MinGW also defines this version.
-#define BOOST_WINAPI_WINDOWS_SDK_MINGW BOOST_VERSION_NUMBER(0, 0, 10000)
-// MinGW-w64 defines the same version as the Windows SDK bundled with MSVC 8
-#define BOOST_WINAPI_WINDOWS_SDK_MINGW_W64 BOOST_VERSION_NUMBER(0, 0, 3790)
-
-#if !defined(BOOST_USE_WINAPI_FAMILY)
-#if defined(WINAPI_FAMILY)
-#define BOOST_USE_WINAPI_FAMILY WINAPI_FAMILY
-#elif defined(WINAPI_FAMILY_DESKTOP_APP)
-// If none is specified, default to a desktop application which is the most
-// backwards compatible to previous ways of doing things, if families are even
-// defined.
-#define BOOST_USE_WINAPI_FAMILY WINAPI_FAMILY_DESKTOP_APP
-#endif
-#endif
-
-//
-// UWP Support
-//
-// On platforms without windows family partition support it is assumed one
-// has all APIs and access is controlled by _WIN32_WINNT or similar mechanisms.
-//
-// Leveraging Boost.Predef here
-//
-#if BOOST_PLAT_WINDOWS_UWP
-#define BOOST_WINAPI_PARTITION_APP           (BOOST_PLAT_WINDOWS_DESKTOP || BOOST_PLAT_WINDOWS_STORE || BOOST_WINAPI_PARTITION_PHONE)
-#define BOOST_WINAPI_PARTITION_PC            (BOOST_PLAT_WINDOWS_STORE)
-#define BOOST_WINAPI_PARTITION_PHONE         (BOOST_PLAT_WINDOWS_PHONE)
-#define BOOST_WINAPI_PARTITION_SYSTEM        (BOOST_PLAT_WINDOWS_SYSTEM)
-#define BOOST_WINAPI_PARTITION_SERVER        (BOOST_PLAT_WINDOWS_SERVER)
-#define BOOST_WINAPI_PARTITION_DESKTOP       (BOOST_PLAT_WINDOWS_DESKTOP)
-#else // BOOST_PLAT_WINDOWS_UWP
-#define BOOST_WINAPI_PARTITION_APP           (1)
-#define BOOST_WINAPI_PARTITION_PC            (1)
-#define BOOST_WINAPI_PARTITION_PHONE         (1)
-#define BOOST_WINAPI_PARTITION_SYSTEM        (1)
-#define BOOST_WINAPI_PARTITION_SERVER        (1)
-#define BOOST_WINAPI_PARTITION_DESKTOP       (1)
-#endif // BOOST_PLAT_WINDOWS_UWP
-
-//
-// Windows 8.x SDK defines some items in the DESKTOP partition and then Windows SDK 10.0 defines
-// the same items to be in APP or SYSTEM partitions, and APP expands to DESKTOP or PC or PHONE.
-// The definition of BOOST_WINAPI_PARTITION_APP_SYSTEM provides a universal way to get this
-// right as it is seen in a number of places in the SDK.
-//
-#define BOOST_WINAPI_PARTITION_APP_SYSTEM \
-    ( \
-        ((BOOST_PLAT_WINDOWS_SDK_VERSION >= BOOST_WINAPI_WINDOWS_SDK_10_0) && (BOOST_WINAPI_PARTITION_APP || BOOST_WINAPI_PARTITION_SYSTEM)) || \
-        ((BOOST_PLAT_WINDOWS_SDK_VERSION < BOOST_WINAPI_WINDOWS_SDK_10_0) && BOOST_WINAPI_PARTITION_DESKTOP) \
-    )
-
-// Simiarly, some other symbols were re-classified as DESKTOP or SYSTEM
-#define BOOST_WINAPI_PARTITION_DESKTOP_SYSTEM \
-    ( \
-        ((BOOST_PLAT_WINDOWS_SDK_VERSION >= BOOST_WINAPI_WINDOWS_SDK_10_0) && (BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM)) || \
-        ((BOOST_PLAT_WINDOWS_SDK_VERSION < BOOST_WINAPI_WINDOWS_SDK_10_0) && BOOST_WINAPI_PARTITION_DESKTOP) \
-    )
-
-#if defined(BOOST_USE_WINDOWS_H) || defined(BOOST_WINAPI_DEFINE_VERSION_MACROS)
-// We have to define the version macros so that windows.h provides the necessary symbols
-#if !defined(_WIN32_WINNT)
-#define _WIN32_WINNT BOOST_USE_WINAPI_VERSION
-#endif
-#if !defined(WINVER)
-#define WINVER BOOST_USE_WINAPI_VERSION
-#endif
-#if !defined(NTDDI_VERSION)
-#define NTDDI_VERSION BOOST_USE_NTDDI_VERSION
-#endif
-#if !defined(WINAPI_FAMILY) && defined(BOOST_USE_WINAPI_FAMILY)
-#define WINAPI_FAMILY BOOST_USE_WINAPI_FAMILY
-#endif
-#endif
-
-#include <boost/config.hpp>
-
-#ifdef BOOST_HAS_PRAGMA_ONCE
-#pragma once
-#endif
-
-#endif // BOOST_WINAPI_CONFIG_HPP_INCLUDED_
diff --git a/third_party/boost/boost/winapi/dll.hpp b/third_party/boost/boost/winapi/dll.hpp
deleted file mode 100644
index b42301e..0000000
--- a/third_party/boost/boost/winapi/dll.hpp
+++ /dev/null
@@ -1,238 +0,0 @@
-/*
- * Copyright 2010 Vicente J. Botet Escriba
- * Copyright 2014 Renato Tegon Forti, Antony Polukhin
- * Copyright 2015 Andrey Semashev
- * Copyright 2015 Antony Polukhin
- *
- * Distributed under the Boost Software License, Version 1.0.
- * See http://www.boost.org/LICENSE_1_0.txt
- */
-
-#ifndef BOOST_WINAPI_DLL_HPP_INCLUDED_
-#define BOOST_WINAPI_DLL_HPP_INCLUDED_
-
-#include <boost/winapi/basic_types.hpp>
-
-#ifdef BOOST_HAS_PRAGMA_ONCE
-#pragma once
-#endif
-
-#if BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM
-
-#if !defined( BOOST_USE_WINDOWS_H )
-extern "C" {
-namespace boost { namespace winapi {
-#ifdef _WIN64
-typedef INT_PTR_ (BOOST_WINAPI_WINAPI_CC *FARPROC_)();
-typedef INT_PTR_ (BOOST_WINAPI_WINAPI_CC *NEARPROC_)();
-typedef INT_PTR_ (BOOST_WINAPI_WINAPI_CC *PROC_)();
-#else
-typedef int (BOOST_WINAPI_WINAPI_CC *FARPROC_)();
-typedef int (BOOST_WINAPI_WINAPI_CC *NEARPROC_)();
-typedef int (BOOST_WINAPI_WINAPI_CC *PROC_)();
-#endif // _WIN64
-}} // namespace boost::winapi
-
-#if !defined( BOOST_NO_ANSI_APIS )
-BOOST_SYMBOL_IMPORT boost::winapi::HMODULE_ BOOST_WINAPI_WINAPI_CC
-LoadLibraryA(boost::winapi::LPCSTR_ lpFileName);
-
-BOOST_SYMBOL_IMPORT boost::winapi::HMODULE_ BOOST_WINAPI_WINAPI_CC
-LoadLibraryExA(
-    boost::winapi::LPCSTR_ lpFileName,
-    boost::winapi::HANDLE_ hFile,
-    boost::winapi::DWORD_ dwFlags
-);
-
-BOOST_SYMBOL_IMPORT boost::winapi::HMODULE_ BOOST_WINAPI_WINAPI_CC
-GetModuleHandleA(boost::winapi::LPCSTR_ lpFileName);
-
-BOOST_SYMBOL_IMPORT boost::winapi::DWORD_ BOOST_WINAPI_WINAPI_CC
-GetModuleFileNameA(
-    boost::winapi::HMODULE_ hModule,
-    boost::winapi::LPSTR_ lpFilename,
-    boost::winapi::DWORD_ nSize
-);
-#endif
-
-BOOST_SYMBOL_IMPORT boost::winapi::HMODULE_ BOOST_WINAPI_WINAPI_CC
-LoadLibraryW(boost::winapi::LPCWSTR_ lpFileName);
-
-BOOST_SYMBOL_IMPORT boost::winapi::HMODULE_ BOOST_WINAPI_WINAPI_CC
-LoadLibraryExW(
-    boost::winapi::LPCWSTR_ lpFileName,
-    boost::winapi::HANDLE_ hFile,
-    boost::winapi::DWORD_ dwFlags
-);
-
-BOOST_SYMBOL_IMPORT boost::winapi::HMODULE_ BOOST_WINAPI_WINAPI_CC
-GetModuleHandleW(boost::winapi::LPCWSTR_ lpFileName);
-
-BOOST_SYMBOL_IMPORT boost::winapi::DWORD_ BOOST_WINAPI_WINAPI_CC
-GetModuleFileNameW(
-    boost::winapi::HMODULE_ hModule,
-    boost::winapi::LPWSTR_ lpFilename,
-    boost::winapi::DWORD_ nSize
-);
-
-#if !defined( UNDER_CE )
-BOOST_SYMBOL_IMPORT boost::winapi::FARPROC_ BOOST_WINAPI_WINAPI_CC
-GetProcAddress(boost::winapi::HMODULE_ hModule, boost::winapi::LPCSTR_ lpProcName);
-#else
-// On Windows CE there are two functions: GetProcAddressA (since Windows CE 3.0) and GetProcAddressW.
-// GetProcAddress is a macro that is _always_ defined to GetProcAddressW.
-BOOST_SYMBOL_IMPORT boost::winapi::FARPROC_ BOOST_WINAPI_WINAPI_CC
-GetProcAddressA(boost::winapi::HMODULE_ hModule, boost::winapi::LPCSTR_ lpProcName);
-BOOST_SYMBOL_IMPORT boost::winapi::FARPROC_ BOOST_WINAPI_WINAPI_CC
-GetProcAddressW(boost::winapi::HMODULE_ hModule, boost::winapi::LPCWSTR_ lpProcName);
-#endif
-
-struct _MEMORY_BASIC_INFORMATION;
-
-#if !defined( BOOST_WINAPI_IS_MINGW )
-BOOST_SYMBOL_IMPORT boost::winapi::SIZE_T_ BOOST_WINAPI_WINAPI_CC
-VirtualQuery(
-    boost::winapi::LPCVOID_ lpAddress,
-    ::_MEMORY_BASIC_INFORMATION* lpBuffer,
-    boost::winapi::SIZE_T_ dwLength
-);
-#else // !defined( BOOST_WINAPI_IS_MINGW )
-BOOST_SYMBOL_IMPORT boost::winapi::DWORD_ BOOST_WINAPI_WINAPI_CC
-VirtualQuery(
-    boost::winapi::LPCVOID_ lpAddress,
-    ::_MEMORY_BASIC_INFORMATION* lpBuffer,
-    boost::winapi::DWORD_ dwLength
-);
-#endif // !defined( BOOST_WINAPI_IS_MINGW )
-} // extern "C"
-#endif // #if !defined( BOOST_USE_WINDOWS_H )
-
-namespace boost {
-namespace winapi {
-
-typedef struct BOOST_MAY_ALIAS MEMORY_BASIC_INFORMATION_ {
-    PVOID_  BaseAddress;
-    PVOID_  AllocationBase;
-    DWORD_  AllocationProtect;
-    SIZE_T_ RegionSize;
-    DWORD_  State;
-    DWORD_  Protect;
-    DWORD_  Type;
-} *PMEMORY_BASIC_INFORMATION_;
-
-#if defined( BOOST_USE_WINDOWS_H )
-typedef ::FARPROC FARPROC_;
-typedef ::NEARPROC NEARPROC_;
-typedef ::PROC PROC_;
-
-BOOST_CONSTEXPR_OR_CONST DWORD_ DONT_RESOLVE_DLL_REFERENCES_           = DONT_RESOLVE_DLL_REFERENCES;
-BOOST_CONSTEXPR_OR_CONST DWORD_ LOAD_WITH_ALTERED_SEARCH_PATH_         = LOAD_WITH_ALTERED_SEARCH_PATH;
-#else // defined( BOOST_USE_WINDOWS_H )
-BOOST_CONSTEXPR_OR_CONST DWORD_ DONT_RESOLVE_DLL_REFERENCES_           = 0x00000001;
-BOOST_CONSTEXPR_OR_CONST DWORD_ LOAD_WITH_ALTERED_SEARCH_PATH_         = 0x00000008;
-#endif // defined( BOOST_USE_WINDOWS_H )
-
-// This one is not defined by MinGW
-BOOST_CONSTEXPR_OR_CONST DWORD_ LOAD_IGNORE_CODE_AUTHZ_LEVEL_          = 0x00000010;
-
-#if !defined( BOOST_NO_ANSI_APIS )
-using ::LoadLibraryA;
-using ::LoadLibraryExA;
-using ::GetModuleHandleA;
-using ::GetModuleFileNameA;
-#endif // !defined( BOOST_NO_ANSI_APIS )
-using ::LoadLibraryW;
-using ::LoadLibraryExW;
-using ::GetModuleHandleW;
-using ::GetModuleFileNameW;
-
-#if !defined( UNDER_CE )
-// For backward compatibility, don't use directly. Use get_proc_address instead.
-using ::GetProcAddress;
-#else
-using ::GetProcAddressA;
-using ::GetProcAddressW;
-#endif
-
-BOOST_FORCEINLINE FARPROC_ get_proc_address(HMODULE_ hModule, LPCSTR_ lpProcName)
-{
-#if !defined( UNDER_CE )
-    return ::GetProcAddress(hModule, lpProcName);
-#else
-    return ::GetProcAddressA(hModule, lpProcName);
-#endif
-}
-
-BOOST_FORCEINLINE SIZE_T_ VirtualQuery(LPCVOID_ lpAddress, MEMORY_BASIC_INFORMATION_* lpBuffer, SIZE_T_ dwLength)
-{
-    return ::VirtualQuery(lpAddress, reinterpret_cast< ::_MEMORY_BASIC_INFORMATION* >(lpBuffer), dwLength);
-}
-
-#if !defined( BOOST_NO_ANSI_APIS )
-BOOST_FORCEINLINE HMODULE_ load_library(LPCSTR_ lpFileName)
-{
-    return ::LoadLibraryA(lpFileName);
-}
-
-BOOST_FORCEINLINE HMODULE_ load_library_ex(LPCSTR_ lpFileName, HANDLE_ hFile, DWORD_ dwFlags)
-{
-    return ::LoadLibraryExA(lpFileName, hFile, dwFlags);
-}
-
-BOOST_FORCEINLINE HMODULE_ get_module_handle(LPCSTR_ lpFileName)
-{
-    return ::GetModuleHandleA(lpFileName);
-}
-
-BOOST_FORCEINLINE DWORD_ get_module_file_name(HMODULE_ hModule, LPSTR_ lpFilename, DWORD_ nSize)
-{
-    return ::GetModuleFileNameA(hModule, lpFilename, nSize);
-}
-#endif // #if !defined( BOOST_NO_ANSI_APIS )
-
-BOOST_FORCEINLINE HMODULE_ load_library(LPCWSTR_ lpFileName)
-{
-    return ::LoadLibraryW(lpFileName);
-}
-
-BOOST_FORCEINLINE HMODULE_ load_library_ex(LPCWSTR_ lpFileName, HANDLE_ hFile, DWORD_ dwFlags)
-{
-    return ::LoadLibraryExW(lpFileName, hFile, dwFlags);
-}
-
-BOOST_FORCEINLINE HMODULE_ get_module_handle(LPCWSTR_ lpFileName)
-{
-    return ::GetModuleHandleW(lpFileName);
-}
-
-BOOST_FORCEINLINE DWORD_ get_module_file_name(HMODULE_ hModule, LPWSTR_ lpFilename, DWORD_ nSize)
-{
-    return ::GetModuleFileNameW(hModule, lpFilename, nSize);
-}
-
-} // namespace winapi
-} // namespace boost
-
-#endif // BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM
-
-//
-// FreeLibrary is in a different partition set (slightly)
-//
-
-#if BOOST_WINAPI_PARTITION_APP || BOOST_WINAPI_PARTITION_SYSTEM
-
-#if !defined(BOOST_USE_WINDOWS_H)
-extern "C" {
-BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
-FreeLibrary(boost::winapi::HMODULE_ hModule);
-}
-#endif
-
-namespace boost {
-namespace winapi {
-using ::FreeLibrary;
-}
-}
-
-#endif // BOOST_WINAPI_PARTITION_APP || BOOST_WINAPI_PARTITION_SYSTEM
-#endif // BOOST_WINAPI_DLL_HPP_INCLUDED_
diff --git a/third_party/boost/boost/winapi/file_management.hpp b/third_party/boost/boost/winapi/file_management.hpp
deleted file mode 100644
index 91ff2ae..0000000
--- a/third_party/boost/boost/winapi/file_management.hpp
+++ /dev/null
@@ -1,594 +0,0 @@
-/*
- * Copyright 2010 Vicente J. Botet Escriba
- * Copyright 2015 Andrey Semashev
- * Copyright 2016 Jorge Lodos
- * Copyright 2017 James E. King, III
- *
- * Distributed under the Boost Software License, Version 1.0.
- * See http://www.boost.org/LICENSE_1_0.txt
- */
-
-#ifndef BOOST_WINAPI_FILE_MANAGEMENT_HPP_INCLUDED_
-#define BOOST_WINAPI_FILE_MANAGEMENT_HPP_INCLUDED_
-
-#include <boost/winapi/basic_types.hpp>
-#include <boost/winapi/limits.hpp>
-#include <boost/winapi/time.hpp>
-#include <boost/winapi/overlapped.hpp>
-
-#ifdef BOOST_HAS_PRAGMA_ONCE
-#pragma once
-#endif
-
-/*
- * UWP:
- * API                         SDK 8     SDK 10            _WIN32_WINNT
- * AreFileApisANSI             DESKTOP - DESKTOP | SYSTEM
- * CreateFile                  DESKTOP - DESKTOP | SYSTEM
- * DeleteFile                  APP     - APP     | SYSTEM
- * FindClose                   APP     - APP     | SYSTEM
- * FindFirstFile               DESKTOP > APP     | SYSTEM
- * FindNextFile                DESKTOP > APP     | SYSTEM
- * GetFileAttributes           DESKTOP > APP     | SYSTEM
- * GetFileInformationByHandle  DESKTOP - DESKTOP | SYSTEM
- * GetFileSizeEx               DESKTOP > APP     | SYSTEM
- * LockFile                    DESKTOP - DESKTOP | SYSTEM
- * MoveFileEx                  APP     - APP     | SYSTEM
- * ReadFile                    APP     - APP     | SYSTEM
- * SetEndOfFile                APP     - APP     | SYSTEM
- * SetFilePointer              DESKTOP > APP     | SYSTEM
- * SetFileValidData            DESKTOP - DESKTOP | SYSTEM  >= 0x0501
- * UnlockFile                  DESKTOP - DESKTOP | SYSTEM
- * WriteFile                   APP     - APP     | SYSTEM
- */
-
-#if !defined( BOOST_USE_WINDOWS_H )
-extern "C" {
-
-#if BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM
-#if !defined( BOOST_NO_ANSI_APIS )
-BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
-AreFileApisANSI(BOOST_WINAPI_DETAIL_VOID);
-
-BOOST_SYMBOL_IMPORT boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC
-CreateFileA(
-    boost::winapi::LPCSTR_ lpFileName,
-    boost::winapi::DWORD_ dwDesiredAccess,
-    boost::winapi::DWORD_ dwShareMode,
-    ::_SECURITY_ATTRIBUTES* lpSecurityAttributes,
-    boost::winapi::DWORD_ dwCreationDisposition,
-    boost::winapi::DWORD_ dwFlagsAndAttributes,
-    boost::winapi::HANDLE_ hTemplateFile);
-
-struct _WIN32_FIND_DATAA;
-BOOST_SYMBOL_IMPORT boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC
-FindFirstFileA(boost::winapi::LPCSTR_ lpFileName, ::_WIN32_FIND_DATAA* lpFindFileData);
-
-BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
-FindNextFileA(boost::winapi::HANDLE_ hFindFile, ::_WIN32_FIND_DATAA* lpFindFileData);
-#endif
-
-BOOST_SYMBOL_IMPORT boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC
-CreateFileW(
-    boost::winapi::LPCWSTR_ lpFileName,
-    boost::winapi::DWORD_ dwDesiredAccess,
-    boost::winapi::DWORD_ dwShareMode,
-    ::_SECURITY_ATTRIBUTES* lpSecurityAttributes,
-    boost::winapi::DWORD_ dwCreationDisposition,
-    boost::winapi::DWORD_ dwFlagsAndAttributes,
-    boost::winapi::HANDLE_ hTemplateFile);
-
-struct _WIN32_FIND_DATAW;
-BOOST_SYMBOL_IMPORT boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC
-FindFirstFileW(boost::winapi::LPCWSTR_ lpFileName, ::_WIN32_FIND_DATAW* lpFindFileData);
-
-BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
-FindNextFileW(boost::winapi::HANDLE_ hFindFile, ::_WIN32_FIND_DATAW* lpFindFileData);
-
-struct _BY_HANDLE_FILE_INFORMATION;
-BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
-GetFileInformationByHandle(
-    boost::winapi::HANDLE_ hFile,
-    ::_BY_HANDLE_FILE_INFORMATION* lpFileInformation);
-
-BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
-LockFile(
-    boost::winapi::HANDLE_ hFile,
-    boost::winapi::DWORD_ dwFileOffsetLow,
-    boost::winapi::DWORD_ dwFileOffsetHigh,
-    boost::winapi::DWORD_ nNumberOfBytesToLockLow,
-    boost::winapi::DWORD_ nNumberOfBytesToLockHigh);
-
-BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
-LockFileEx(
-    boost::winapi::HANDLE_ hFile,
-    boost::winapi::DWORD_ dwFlags,
-    boost::winapi::DWORD_ dwReserved,
-    boost::winapi::DWORD_ nNumberOfBytesToLockLow,
-    boost::winapi::DWORD_ nNumberOfBytesToLockHigh,
-    ::_OVERLAPPED* lpOverlapped);
-
-#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WINXP
-BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
-SetFileValidData(
-    boost::winapi::HANDLE_ hFile, 
-    boost::winapi::LONGLONG_ ValidDataLength);
-#endif
-
-BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
-UnlockFile(
-    boost::winapi::HANDLE_ hFile,
-    boost::winapi::DWORD_ dwFileOffsetLow,
-    boost::winapi::DWORD_ dwFileOffsetHigh,
-    boost::winapi::DWORD_ nNumberOfBytesToUnlockLow,
-    boost::winapi::DWORD_ nNumberOfBytesToUnlockHigh);
-
-BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
-UnlockFileEx(
-    boost::winapi::HANDLE_ hFile,
-    boost::winapi::DWORD_ dwReserved,
-    boost::winapi::DWORD_ nNumberOfBytesToUnlockLow,
-    boost::winapi::DWORD_ nNumberOfBytesToUnlockHigh,
-    ::_OVERLAPPED* lpOverlapped);
-#endif
-
-#if BOOST_WINAPI_PARTITION_APP || BOOST_WINAPI_PARTITION_SYSTEM
-#if !defined( BOOST_NO_ANSI_APIS )
-BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
-DeleteFileA(boost::winapi::LPCSTR_ lpFileName);
-
-BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
-MoveFileExA(
-    boost::winapi::LPCSTR_ lpExistingFileName,
-    boost::winapi::LPCSTR_ lpNewFileName,
-    boost::winapi::DWORD_ dwFlags);
-#endif
-
-BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
-DeleteFileW(boost::winapi::LPCWSTR_ lpFileName);
-
-BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
-FindClose(boost::winapi::HANDLE_ hFindFile);
-
-BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
-MoveFileExW(
-    boost::winapi::LPCWSTR_ lpExistingFileName,
-    boost::winapi::LPCWSTR_ lpNewFileName,
-    boost::winapi::DWORD_ dwFlags);
-
-BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
-ReadFile(
-    boost::winapi::HANDLE_ hFile,
-    boost::winapi::LPVOID_ lpBuffer,
-    boost::winapi::DWORD_ nNumberOfBytesToRead,
-    boost::winapi::LPDWORD_ lpNumberOfBytesRead,
-    ::_OVERLAPPED* lpOverlapped);
-
-BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
-SetEndOfFile(boost::winapi::HANDLE_ hFile);
-
-BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
-WriteFile(
-    boost::winapi::HANDLE_ hFile,
-    boost::winapi::LPCVOID_ lpBuffer,
-    boost::winapi::DWORD_ nNumberOfBytesToWrite,
-    boost::winapi::LPDWORD_ lpNumberOfBytesWritten,
-    ::_OVERLAPPED* lpOverlapped);
-#endif // BOOST_WINAPI_PARTITION_APP || BOOST_WINAPI_PARTITION_SYSTEM
-
-#if BOOST_WINAPI_PARTITION_APP_SYSTEM
-#if !defined( BOOST_NO_ANSI_APIS )
-BOOST_SYMBOL_IMPORT boost::winapi::DWORD_ BOOST_WINAPI_WINAPI_CC
-GetFileAttributesA(boost::winapi::LPCSTR_ lpFileName);
-#endif
-
-BOOST_SYMBOL_IMPORT boost::winapi::DWORD_ BOOST_WINAPI_WINAPI_CC
-GetFileAttributesW(boost::winapi::LPCWSTR_ lpFileName);
-
-BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
-GetFileSizeEx(boost::winapi::HANDLE_ hFile, ::_LARGE_INTEGER* lpFileSize);
-
-BOOST_SYMBOL_IMPORT boost::winapi::DWORD_ BOOST_WINAPI_WINAPI_CC
-SetFilePointer(
-    boost::winapi::HANDLE_ hFile,
-    boost::winapi::LONG_ lpDistanceToMove,
-    boost::winapi::PLONG_ lpDistanceToMoveHigh,
-    boost::winapi::DWORD_ dwMoveMethod);
-#endif // BOOST_WINAPI_PARTITION_APP_SYSTEM
-
-} // extern "C"
-#endif // !defined(BOOST_USE_WINDOWS_H)
-
-namespace boost {
-namespace winapi {
-
-#if defined( BOOST_USE_WINDOWS_H )
-
-BOOST_CONSTEXPR_OR_CONST DWORD_ INVALID_FILE_SIZE_ = INVALID_FILE_SIZE;
-BOOST_CONSTEXPR_OR_CONST DWORD_ INVALID_SET_FILE_POINTER_ = INVALID_SET_FILE_POINTER;
-BOOST_CONSTEXPR_OR_CONST DWORD_ INVALID_FILE_ATTRIBUTES_ = INVALID_FILE_ATTRIBUTES;
-
-BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_READONLY_ = FILE_ATTRIBUTE_READONLY;
-BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_HIDDEN_ = FILE_ATTRIBUTE_HIDDEN;
-BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_SYSTEM_ = FILE_ATTRIBUTE_SYSTEM;
-BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_DIRECTORY_ = FILE_ATTRIBUTE_DIRECTORY;
-BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_ARCHIVE_ = FILE_ATTRIBUTE_ARCHIVE;
-BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_DEVICE_ = FILE_ATTRIBUTE_DEVICE;
-BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_NORMAL_ = FILE_ATTRIBUTE_NORMAL;
-BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_TEMPORARY_ = FILE_ATTRIBUTE_TEMPORARY;
-BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_SPARSE_FILE_ = FILE_ATTRIBUTE_SPARSE_FILE;
-BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_REPARSE_POINT_ = FILE_ATTRIBUTE_REPARSE_POINT;
-BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_COMPRESSED_ = FILE_ATTRIBUTE_COMPRESSED;
-BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_OFFLINE_ = FILE_ATTRIBUTE_OFFLINE;
-BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_NOT_CONTENT_INDEXED_ = FILE_ATTRIBUTE_NOT_CONTENT_INDEXED;
-BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_ENCRYPTED_ = FILE_ATTRIBUTE_ENCRYPTED;
-
-BOOST_CONSTEXPR_OR_CONST DWORD_ CREATE_NEW_ = CREATE_NEW;
-BOOST_CONSTEXPR_OR_CONST DWORD_ CREATE_ALWAYS_ = CREATE_ALWAYS;
-BOOST_CONSTEXPR_OR_CONST DWORD_ OPEN_EXISTING_ = OPEN_EXISTING;
-BOOST_CONSTEXPR_OR_CONST DWORD_ OPEN_ALWAYS_ = OPEN_ALWAYS;
-BOOST_CONSTEXPR_OR_CONST DWORD_ TRUNCATE_EXISTING_ = TRUNCATE_EXISTING;
-
-BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_SHARE_READ_ = FILE_SHARE_READ;
-BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_SHARE_WRITE_ = FILE_SHARE_WRITE;
-BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_SHARE_DELETE_ = FILE_SHARE_DELETE;
-
-BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_BEGIN_ = FILE_BEGIN;
-BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_CURRENT_ = FILE_CURRENT;
-BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_END_ = FILE_END;
-
-#else // defined( BOOST_USE_WINDOWS_H )
-
-BOOST_CONSTEXPR_OR_CONST DWORD_ INVALID_FILE_SIZE_ = ((DWORD_)0xFFFFFFFF);
-BOOST_CONSTEXPR_OR_CONST DWORD_ INVALID_SET_FILE_POINTER_ = ((DWORD_)-1);
-BOOST_CONSTEXPR_OR_CONST DWORD_ INVALID_FILE_ATTRIBUTES_ = ((DWORD_)-1);
-
-BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_READONLY_ = 0x00000001;
-BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_HIDDEN_ = 0x00000002;
-BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_SYSTEM_ = 0x00000004;
-BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_DIRECTORY_ = 0x00000010;
-BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_ARCHIVE_ = 0x00000020;
-BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_DEVICE_ = 0x00000040;
-BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_NORMAL_ = 0x00000080;
-BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_TEMPORARY_ = 0x00000100;
-BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_SPARSE_FILE_ = 0x00000200;
-BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_REPARSE_POINT_ = 0x00000400;
-BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_COMPRESSED_ = 0x00000800;
-BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_OFFLINE_ = 0x00001000;
-BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_NOT_CONTENT_INDEXED_ = 0x00002000;
-BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_ENCRYPTED_ = 0x00004000;
-
-BOOST_CONSTEXPR_OR_CONST DWORD_ CREATE_NEW_ = 1;
-BOOST_CONSTEXPR_OR_CONST DWORD_ CREATE_ALWAYS_ = 2;
-BOOST_CONSTEXPR_OR_CONST DWORD_ OPEN_EXISTING_ = 3;
-BOOST_CONSTEXPR_OR_CONST DWORD_ OPEN_ALWAYS_ = 4;
-BOOST_CONSTEXPR_OR_CONST DWORD_ TRUNCATE_EXISTING_ = 5;
-
-BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_SHARE_READ_ = 0x00000001;
-BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_SHARE_WRITE_ = 0x00000002;
-BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_SHARE_DELETE_ = 0x00000004;
-
-BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_BEGIN_ = 0;
-BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_CURRENT_ = 1;
-BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_END_ = 2;
-
-#endif // defined( BOOST_USE_WINDOWS_H )
-
-// Some of these constants are not defined by Windows SDK in MinGW or older MSVC
-BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_FLAG_WRITE_THROUGH_ = 0x80000000;
-BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_FLAG_OVERLAPPED_ = 0x40000000;
-BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_FLAG_NO_BUFFERING_ = 0x20000000;
-BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_FLAG_RANDOM_ACCESS_ = 0x10000000;
-BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_FLAG_SEQUENTIAL_SCAN_ = 0x08000000;
-BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_FLAG_DELETE_ON_CLOSE_ = 0x04000000;
-BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_FLAG_BACKUP_SEMANTICS_ = 0x02000000;
-BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_FLAG_POSIX_SEMANTICS_ = 0x01000000;
-BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_FLAG_SESSION_AWARE_ = 0x00800000;
-BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_FLAG_OPEN_REPARSE_POINT_ = 0x00200000;
-BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_FLAG_OPEN_NO_RECALL_ = 0x00100000;
-BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_FLAG_FIRST_PIPE_INSTANCE_ = 0x00080000;
-
-#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN8
-BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_FLAG_OPEN_REQUIRING_OPLOCK_ = 0x00040000;
-#endif
-
-// This constant is not defined in Windows SDK up until 6.0A
-BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_VIRTUAL_ = 0x00010000;
-
-// These constants are not defined in Windows SDK up until 8.0 and MinGW/MinGW-w64 (as of 2016-02-14).
-// They are documented to be supported only since Windows 8/Windows Server 2012
-// but defined unconditionally.
-BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_INTEGRITY_STREAM_ = 0x00008000;
-BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_NO_SCRUB_DATA_ = 0x00020000;
-// Undocumented
-BOOST_CONSTEXPR_OR_CONST DWORD_ FILE_ATTRIBUTE_EA_ = 0x00040000;
-
-#if BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM
-#if !defined( BOOST_NO_ANSI_APIS )
-using ::AreFileApisANSI;
-
-BOOST_FORCEINLINE HANDLE_ CreateFileA(
-    LPCSTR_ lpFileName,
-    DWORD_ dwDesiredAccess,
-    DWORD_ dwShareMode,
-    SECURITY_ATTRIBUTES_* lpSecurityAttributes,
-    DWORD_ dwCreationDisposition,
-    DWORD_ dwFlagsAndAttributes,
-    HANDLE_ hTemplateFile)
-{
-    return ::CreateFileA(
-        lpFileName,
-        dwDesiredAccess,
-        dwShareMode,
-        reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpSecurityAttributes),
-        dwCreationDisposition,
-        dwFlagsAndAttributes,
-        hTemplateFile);
-}
-
-BOOST_FORCEINLINE HANDLE_ create_file(
-    LPCSTR_ lpFileName,
-    DWORD_ dwDesiredAccess,
-    DWORD_ dwShareMode,
-    SECURITY_ATTRIBUTES_* lpSecurityAttributes,
-    DWORD_ dwCreationDisposition,
-    DWORD_ dwFlagsAndAttributes,
-    HANDLE_ hTemplateFile)
-{
-    return ::CreateFileA(
-        lpFileName,
-        dwDesiredAccess,
-        dwShareMode,
-        reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpSecurityAttributes),
-        dwCreationDisposition,
-        dwFlagsAndAttributes,
-        hTemplateFile);
-}
-
-typedef struct BOOST_MAY_ALIAS _WIN32_FIND_DATAA {
-    DWORD_ dwFileAttributes;
-    FILETIME_ ftCreationTime;
-    FILETIME_ ftLastAccessTime;
-    FILETIME_ ftLastWriteTime;
-    DWORD_ nFileSizeHigh;
-    DWORD_ nFileSizeLow;
-    DWORD_ dwReserved0;
-    DWORD_ dwReserved1;
-    CHAR_   cFileName[MAX_PATH_];
-    CHAR_   cAlternateFileName[14];
-#ifdef _MAC
-    DWORD_ dwFileType;
-    DWORD_ dwCreatorType;
-    WORD_  wFinderFlags;
-#endif
-} WIN32_FIND_DATAA_, *PWIN32_FIND_DATAA_, *LPWIN32_FIND_DATAA_;
-
-BOOST_FORCEINLINE HANDLE_ FindFirstFileA(LPCSTR_ lpFileName, WIN32_FIND_DATAA_* lpFindFileData)
-{
-    return ::FindFirstFileA(lpFileName, reinterpret_cast< ::_WIN32_FIND_DATAA* >(lpFindFileData));
-}
-
-BOOST_FORCEINLINE HANDLE_ find_first_file(LPCSTR_ lpFileName, WIN32_FIND_DATAA_* lpFindFileData)
-{
-    return ::FindFirstFileA(lpFileName, reinterpret_cast< ::_WIN32_FIND_DATAA* >(lpFindFileData));
-}
-
-BOOST_FORCEINLINE BOOL_ FindNextFileA(HANDLE_ hFindFile, WIN32_FIND_DATAA_* lpFindFileData)
-{
-    return ::FindNextFileA(hFindFile, reinterpret_cast< ::_WIN32_FIND_DATAA* >(lpFindFileData));
-}
-
-BOOST_FORCEINLINE BOOL_ find_next_file(HANDLE_ hFindFile, WIN32_FIND_DATAA_* lpFindFileData)
-{
-    return ::FindNextFileA(hFindFile, reinterpret_cast< ::_WIN32_FIND_DATAA* >(lpFindFileData));
-}
-
-#endif // !defined( BOOST_NO_ANSI_APIS )
-
-BOOST_FORCEINLINE HANDLE_ CreateFileW(
-    LPCWSTR_ lpFileName,
-    DWORD_ dwDesiredAccess,
-    DWORD_ dwShareMode,
-    SECURITY_ATTRIBUTES_* lpSecurityAttributes,
-    DWORD_ dwCreationDisposition,
-    DWORD_ dwFlagsAndAttributes,
-    HANDLE_ hTemplateFile)
-{
-    return ::CreateFileW(
-        lpFileName,
-        dwDesiredAccess,
-        dwShareMode,
-        reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpSecurityAttributes),
-        dwCreationDisposition,
-        dwFlagsAndAttributes,
-        hTemplateFile);
-}
-
-BOOST_FORCEINLINE HANDLE_ create_file(
-    LPCWSTR_ lpFileName,
-    DWORD_ dwDesiredAccess,
-    DWORD_ dwShareMode,
-    SECURITY_ATTRIBUTES_* lpSecurityAttributes,
-    DWORD_ dwCreationDisposition,
-    DWORD_ dwFlagsAndAttributes,
-    HANDLE_ hTemplateFile)
-{
-    return ::CreateFileW(
-        lpFileName,
-        dwDesiredAccess,
-        dwShareMode,
-        reinterpret_cast< ::_SECURITY_ATTRIBUTES* >(lpSecurityAttributes),
-        dwCreationDisposition,
-        dwFlagsAndAttributes,
-        hTemplateFile);
-}
-
-typedef struct BOOST_MAY_ALIAS _WIN32_FIND_DATAW {
-    DWORD_ dwFileAttributes;
-    FILETIME_ ftCreationTime;
-    FILETIME_ ftLastAccessTime;
-    FILETIME_ ftLastWriteTime;
-    DWORD_ nFileSizeHigh;
-    DWORD_ nFileSizeLow;
-    DWORD_ dwReserved0;
-    DWORD_ dwReserved1;
-    WCHAR_  cFileName[MAX_PATH_];
-    WCHAR_  cAlternateFileName[14];
-#ifdef _MAC
-    DWORD_ dwFileType;
-    DWORD_ dwCreatorType;
-    WORD_  wFinderFlags;
-#endif
-} WIN32_FIND_DATAW_, *PWIN32_FIND_DATAW_, *LPWIN32_FIND_DATAW_;
-
-typedef struct BOOST_MAY_ALIAS _BY_HANDLE_FILE_INFORMATION {
-    DWORD_ dwFileAttributes;
-    FILETIME_ ftCreationTime;
-    FILETIME_ ftLastAccessTime;
-    FILETIME_ ftLastWriteTime;
-    DWORD_ dwVolumeSerialNumber;
-    DWORD_ nFileSizeHigh;
-    DWORD_ nFileSizeLow;
-    DWORD_ nNumberOfLinks;
-    DWORD_ nFileIndexHigh;
-    DWORD_ nFileIndexLow;
-} BY_HANDLE_FILE_INFORMATION_, *PBY_HANDLE_FILE_INFORMATION_, *LPBY_HANDLE_FILE_INFORMATION_;
-
-BOOST_FORCEINLINE HANDLE_ FindFirstFileW(LPCWSTR_ lpFileName, WIN32_FIND_DATAW_* lpFindFileData)
-{
-    return ::FindFirstFileW(lpFileName, reinterpret_cast< ::_WIN32_FIND_DATAW* >(lpFindFileData));
-}
-
-BOOST_FORCEINLINE HANDLE_ find_first_file(LPCWSTR_ lpFileName, WIN32_FIND_DATAW_* lpFindFileData)
-{
-    return ::FindFirstFileW(lpFileName, reinterpret_cast< ::_WIN32_FIND_DATAW* >(lpFindFileData));
-}
-
-BOOST_FORCEINLINE BOOL_ FindNextFileW(HANDLE_ hFindFile, WIN32_FIND_DATAW_* lpFindFileData)
-{
-    return ::FindNextFileW(hFindFile, reinterpret_cast< ::_WIN32_FIND_DATAW* >(lpFindFileData));
-}
-
-BOOST_FORCEINLINE BOOL_ find_next_file(HANDLE_ hFindFile, WIN32_FIND_DATAW_* lpFindFileData)
-{
-    return ::FindNextFileW(hFindFile, reinterpret_cast< ::_WIN32_FIND_DATAW* >(lpFindFileData));
-}
-
-BOOST_FORCEINLINE BOOL_ GetFileInformationByHandle(HANDLE_ h, BY_HANDLE_FILE_INFORMATION_* info)
-{
-    return ::GetFileInformationByHandle(h, reinterpret_cast< ::_BY_HANDLE_FILE_INFORMATION* >(info));
-}
-
-using ::LockFile;
-
-BOOST_FORCEINLINE BOOL_ LockFileEx(
-    HANDLE_ hFile,
-    DWORD_ dwFlags,
-    DWORD_ dwReserved,
-    DWORD_ nNumberOfBytesToLockLow,
-    DWORD_ nNumberOfBytesToLockHigh,
-    OVERLAPPED_* lpOverlapped)
-{
-    return ::LockFileEx(hFile, dwFlags, dwReserved, nNumberOfBytesToLockLow, nNumberOfBytesToLockHigh, reinterpret_cast< ::_OVERLAPPED* >(lpOverlapped));
-}
-
-#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WINXP
-using ::SetFileValidData;
-#endif
-
-using ::UnlockFile;
-
-BOOST_FORCEINLINE BOOL_ UnlockFileEx(
-    HANDLE_ hFile,
-    DWORD_ dwReserved,
-    DWORD_ nNumberOfBytesToUnlockLow,
-    DWORD_ nNumberOfBytesToUnlockHigh,
-    OVERLAPPED_* lpOverlapped)
-{
-    return ::UnlockFileEx(hFile, dwReserved, nNumberOfBytesToUnlockLow, nNumberOfBytesToUnlockHigh, reinterpret_cast< ::_OVERLAPPED* >(lpOverlapped));
-}
-#endif // BOOST_WINAPI_PARTITION_DESKTOP || BOOST_WINAPI_PARTITION_SYSTEM
-
-#if BOOST_WINAPI_PARTITION_APP || BOOST_WINAPI_PARTITION_SYSTEM
-#if !defined( BOOST_NO_ANSI_APIS )
-using ::DeleteFileA;
-
-BOOST_FORCEINLINE BOOL_ delete_file(LPCSTR_ lpFileName)
-{
-    return ::DeleteFileA(lpFileName);
-}
-
-using ::MoveFileExA;
-
-BOOST_FORCEINLINE BOOL_ move_file(LPCSTR_ lpExistingFileName, LPCSTR_ lpNewFileName, DWORD_ dwFlags)
-{
-    return ::MoveFileExA(lpExistingFileName, lpNewFileName, dwFlags);
-}
-
-#endif
-using ::DeleteFileW;
-
-BOOST_FORCEINLINE BOOL_ delete_file(LPCWSTR_ lpFileName)
-{
-    return ::DeleteFileW(lpFileName);
-}
-
-using ::FindClose;
-using ::MoveFileExW;
-
-BOOST_FORCEINLINE BOOL_ move_file(LPCWSTR_ lpExistingFileName, LPCWSTR_ lpNewFileName, DWORD_ dwFlags)
-{
-    return ::MoveFileExW(lpExistingFileName, lpNewFileName, dwFlags);
-}
-
-BOOST_FORCEINLINE BOOL_ ReadFile(
-    HANDLE_ hFile,
-    LPVOID_ lpBuffer,
-    DWORD_ nNumberOfBytesToWrite,
-    LPDWORD_ lpNumberOfBytesWritten,
-    OVERLAPPED_* lpOverlapped)
-{
-    return ::ReadFile(hFile, lpBuffer, nNumberOfBytesToWrite, lpNumberOfBytesWritten, reinterpret_cast< ::_OVERLAPPED* >(lpOverlapped));
-}
-
-using ::SetEndOfFile;
-
-BOOST_FORCEINLINE BOOL_ WriteFile(
-    HANDLE_ hFile,
-    LPCVOID_ lpBuffer,
-    DWORD_ nNumberOfBytesToWrite,
-    LPDWORD_ lpNumberOfBytesWritten,
-    OVERLAPPED_* lpOverlapped)
-{
-    return ::WriteFile(hFile, lpBuffer, nNumberOfBytesToWrite, lpNumberOfBytesWritten, reinterpret_cast< ::_OVERLAPPED* >(lpOverlapped));
-}
-#endif // BOOST_WINAPI_PARTITION_APP || BOOST_WINAPI_PARTITION_SYSTEM
-
-#if BOOST_WINAPI_PARTITION_APP_SYSTEM
-#if !defined( BOOST_NO_ANSI_APIS )
-using ::GetFileAttributesA;
-
-BOOST_FORCEINLINE DWORD_ get_file_attributes(LPCSTR_ lpFileName)
-{
-    return ::GetFileAttributesA(lpFileName);
-}
-#endif
-using ::GetFileAttributesW;
-
-BOOST_FORCEINLINE DWORD_ get_file_attributes(LPCWSTR_ lpFileName)
-{
-    return ::GetFileAttributesW(lpFileName);
-}
-
-BOOST_FORCEINLINE BOOL_ GetFileSizeEx(HANDLE_ hFile, LARGE_INTEGER_* lpFileSize)
-{
-    return ::GetFileSizeEx(hFile, reinterpret_cast< ::_LARGE_INTEGER* >(lpFileSize));
-}
-
-using ::SetFilePointer;
-#endif // BOOST_WINAPI_PARTITION_APP_SYSTEM
-
-}
-}
-
-#endif // BOOST_WINAPI_FILE_MANAGEMENT_HPP_INCLUDED_
diff --git a/third_party/boost/boost/winapi/get_current_process.hpp b/third_party/boost/boost/winapi/get_current_process.hpp
deleted file mode 100644
index a56118c..0000000
--- a/third_party/boost/boost/winapi/get_current_process.hpp
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * Copyright 2010 Vicente J. Botet Escriba
- * Copyright 2015 Andrey Semashev
- *
- * Distributed under the Boost Software License, Version 1.0.
- * See http://www.boost.org/LICENSE_1_0.txt
- */
-
-#ifndef BOOST_WINAPI_GET_CURRENT_PROCESS_HPP_INCLUDED_
-#define BOOST_WINAPI_GET_CURRENT_PROCESS_HPP_INCLUDED_
-
-#include <boost/winapi/basic_types.hpp>
-
-#ifdef BOOST_HAS_PRAGMA_ONCE
-#pragma once
-#endif
-
-// Windows CE define GetCurrentProcess as an inline function in kfuncs.h
-#if !defined( BOOST_USE_WINDOWS_H ) && !defined( UNDER_CE )
-extern "C" {
-BOOST_SYMBOL_IMPORT boost::winapi::HANDLE_ BOOST_WINAPI_WINAPI_CC GetCurrentProcess(BOOST_WINAPI_DETAIL_VOID);
-}
-#endif
-
-namespace boost {
-namespace winapi {
-using ::GetCurrentProcess;
-}
-}
-
-#endif // BOOST_WINAPI_GET_CURRENT_PROCESS_HPP_INCLUDED_
diff --git a/third_party/boost/boost/winapi/handles.hpp b/third_party/boost/boost/winapi/handles.hpp
deleted file mode 100644
index 91054ee..0000000
--- a/third_party/boost/boost/winapi/handles.hpp
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright 2010 Vicente J. Botet Escriba
- * Copyright 2015 Andrey Semashev
- *
- * Distributed under the Boost Software License, Version 1.0.
- * See http://www.boost.org/LICENSE_1_0.txt
- */
-
-#ifndef BOOST_WINAPI_HANDLES_HPP_INCLUDED_
-#define BOOST_WINAPI_HANDLES_HPP_INCLUDED_
-
-#include <boost/winapi/basic_types.hpp>
-
-#ifdef BOOST_HAS_PRAGMA_ONCE
-#pragma once
-#endif
-
-#if !defined( BOOST_USE_WINDOWS_H )
-extern "C" {
-BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
-CloseHandle(boost::winapi::HANDLE_ handle);
-
-BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
-DuplicateHandle(
-    boost::winapi::HANDLE_ hSourceProcessHandle,
-    boost::winapi::HANDLE_ hSourceHandle,
-    boost::winapi::HANDLE_ hTargetProcessHandle,
-    boost::winapi::HANDLE_* lpTargetHandle,
-    boost::winapi::DWORD_ dwDesiredAccess,
-    boost::winapi::BOOL_ bInheritHandle,
-    boost::winapi::DWORD_ dwOptions);
-
-#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN10
-BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
-CompareObjectHandles(
-    boost::winapi::HANDLE_ hFirstObjectHandle,
-    boost::winapi::HANDLE_ hSecondObjectHandle);
-#endif
-} // extern "C"
-#endif
-
-namespace boost {
-namespace winapi {
-
-using ::CloseHandle;
-using ::DuplicateHandle;
-
-#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN10
-using ::CompareObjectHandles;
-#endif
-
-// Note: MSVC-14.1 does not interpret INVALID_HANDLE_VALUE_ initializer as a constant expression
-#if defined( BOOST_USE_WINDOWS_H )
-BOOST_CONSTEXPR_OR_CONST DWORD_ DUPLICATE_CLOSE_SOURCE_ = DUPLICATE_CLOSE_SOURCE;
-BOOST_CONSTEXPR_OR_CONST DWORD_ DUPLICATE_SAME_ACCESS_ = DUPLICATE_SAME_ACCESS;
-const HANDLE_ INVALID_HANDLE_VALUE_ = INVALID_HANDLE_VALUE;
-#else
-BOOST_CONSTEXPR_OR_CONST DWORD_ DUPLICATE_CLOSE_SOURCE_ = 1;
-BOOST_CONSTEXPR_OR_CONST DWORD_ DUPLICATE_SAME_ACCESS_ = 2;
-const HANDLE_ INVALID_HANDLE_VALUE_ = (HANDLE_)(-1);
-#endif
-
-BOOST_CONSTEXPR_OR_CONST DWORD_ duplicate_close_source = DUPLICATE_CLOSE_SOURCE_;
-BOOST_CONSTEXPR_OR_CONST DWORD_ duplicate_same_access = DUPLICATE_SAME_ACCESS_;
-// Note: The "unused" attribute here should not be necessary because the variable is a constant.
-//       However, MinGW gcc 5.3 spams warnings about this particular constant.
-const HANDLE_ invalid_handle_value BOOST_ATTRIBUTE_UNUSED = INVALID_HANDLE_VALUE_;
-
-}
-}
-
-#endif // BOOST_WINAPI_HANDLES_HPP_INCLUDED_
diff --git a/third_party/boost/boost/winapi/limits.hpp b/third_party/boost/boost/winapi/limits.hpp
deleted file mode 100644
index 89c54d0..0000000
--- a/third_party/boost/boost/winapi/limits.hpp
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright 2016 Andrey Semashev
- *
- * Distributed under the Boost Software License, Version 1.0.
- * See http://www.boost.org/LICENSE_1_0.txt
- */
-
-#ifndef BOOST_WINAPI_LIMITS_HPP_INCLUDED_
-#define BOOST_WINAPI_LIMITS_HPP_INCLUDED_
-
-#include <boost/winapi/basic_types.hpp>
-
-#ifdef BOOST_HAS_PRAGMA_ONCE
-#pragma once
-#endif
-
-namespace boost {
-namespace winapi {
-
-#if defined( BOOST_USE_WINDOWS_H )
-
-BOOST_CONSTEXPR_OR_CONST DWORD_ MAX_PATH_ = MAX_PATH;
-
-#else
-
-BOOST_CONSTEXPR_OR_CONST DWORD_ MAX_PATH_ = 260;
-
-#endif
-
-#if defined( BOOST_USE_WINDOWS_H ) && !defined( BOOST_WINAPI_IS_MINGW )
-
-BOOST_CONSTEXPR_OR_CONST DWORD_ UNICODE_STRING_MAX_BYTES_ = UNICODE_STRING_MAX_BYTES;
-BOOST_CONSTEXPR_OR_CONST DWORD_ UNICODE_STRING_MAX_CHARS_ = UNICODE_STRING_MAX_CHARS;
-
-#else
-
-BOOST_CONSTEXPR_OR_CONST DWORD_ UNICODE_STRING_MAX_BYTES_ = 65534;
-BOOST_CONSTEXPR_OR_CONST DWORD_ UNICODE_STRING_MAX_CHARS_ = 32767;
-
-#endif
-
-BOOST_CONSTEXPR_OR_CONST DWORD_ max_path = MAX_PATH_;
-BOOST_CONSTEXPR_OR_CONST DWORD_ unicode_string_max_bytes = UNICODE_STRING_MAX_BYTES_;
-BOOST_CONSTEXPR_OR_CONST DWORD_ unicode_string_max_chars = UNICODE_STRING_MAX_CHARS_;
-
-}
-}
-
-#endif // BOOST_WINAPI_LIMITS_HPP_INCLUDED_
diff --git a/third_party/boost/boost/winapi/overlapped.hpp b/third_party/boost/boost/winapi/overlapped.hpp
deleted file mode 100644
index f0a41e4..0000000
--- a/third_party/boost/boost/winapi/overlapped.hpp
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright 2016 Klemens D. Morgenstern
- *
- * Distributed under the Boost Software License, Version 1.0.
- * See http://www.boost.org/LICENSE_1_0.txt
- */
-
-#ifndef BOOST_WINAPI_OVERLAPPED_HPP_INCLUDED_
-#define BOOST_WINAPI_OVERLAPPED_HPP_INCLUDED_
-
-#include <boost/winapi/basic_types.hpp>
-
-#ifdef BOOST_HAS_PRAGMA_ONCE
-#pragma once
-#endif
-
-#if !defined( BOOST_USE_WINDOWS_H )
-extern "C" {
-struct _OVERLAPPED;
-}
-#endif
-
-namespace boost {
-namespace winapi {
-
-#ifdef BOOST_MSVC
-#pragma warning(push)
-#pragma warning(disable:4201) // nonstandard extension used : nameless struct/union
-#endif
-
-typedef struct BOOST_MAY_ALIAS _OVERLAPPED {
-    ULONG_PTR_ Internal;
-    ULONG_PTR_ InternalHigh;
-    union {
-        BOOST_WINAPI_DETAIL_EXTENSION struct {
-            DWORD_ Offset;
-            DWORD_ OffsetHigh;
-        };
-        PVOID_  Pointer;
-    };
-    HANDLE_    hEvent;
-} OVERLAPPED_, *LPOVERLAPPED_;
-
-#ifdef BOOST_MSVC
-#pragma warning(pop)
-#endif
-
-} // namespace winapi
-} // namespace boost
-
-#endif // BOOST_WINAPI_OVERLAPPED_HPP_INCLUDED_
diff --git a/third_party/boost/boost/winapi/stack_backtrace.hpp b/third_party/boost/boost/winapi/stack_backtrace.hpp
deleted file mode 100644
index 8461c20..0000000
--- a/third_party/boost/boost/winapi/stack_backtrace.hpp
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright 2017 Andrey Semashev
- *
- * Distributed under the Boost Software License, Version 1.0.
- * See http://www.boost.org/LICENSE_1_0.txt
- */
-
-#ifndef BOOST_WINAPI_STACK_BACKTRACE_HPP_INCLUDED_
-#define BOOST_WINAPI_STACK_BACKTRACE_HPP_INCLUDED_
-
-#include <boost/winapi/basic_types.hpp>
-#include <boost/winapi/config.hpp>
-
-#ifdef BOOST_HAS_PRAGMA_ONCE
-#pragma once
-#endif
-
-// MinGW does not provide RtlCaptureStackBackTrace
-#if !defined( BOOST_WINAPI_IS_MINGW )
-
-// Note: RtlCaptureStackBackTrace is available in WinXP SP1 and later
-#if (BOOST_USE_NTDDI_VERSION > BOOST_WINAPI_NTDDI_WINXP)
-
-#if BOOST_WINAPI_PARTITION_APP_SYSTEM
-
-// Windows SDK shipped with MSVC 7.1 and 8 does not declare RtlCaptureStackBackTrace in headers but allows to link with it
-#if !defined( BOOST_USE_WINDOWS_H ) || (defined(_MSC_VER) && (_MSC_VER+0) < 1500)
-extern "C" {
-
-BOOST_SYMBOL_IMPORT boost::winapi::WORD_
-BOOST_WINAPI_NTAPI_CC RtlCaptureStackBackTrace(
-    boost::winapi::DWORD_ FramesToSkip,
-    boost::winapi::DWORD_ FramesToCapture,
-    boost::winapi::PVOID_* BackTrace,
-    boost::winapi::PDWORD_ BackTraceHash);
-
-} // extern "C"
-#endif
-
-namespace boost {
-namespace winapi {
-
-using ::RtlCaptureStackBackTrace;
-
-}
-}
-
-#endif // BOOST_WINAPI_PARTITION_APP_SYSTEM
-#endif // (BOOST_USE_NTDDI_VERSION > BOOST_WINAPI_NTDDI_WINXP)
-#endif // !defined( BOOST_WINAPI_IS_MINGW )
-#endif // BOOST_WINAPI_STACK_BACKTRACE_HPP_INCLUDED_
diff --git a/third_party/boost/boost/winapi/time.hpp b/third_party/boost/boost/winapi/time.hpp
deleted file mode 100644
index 70b0260..0000000
--- a/third_party/boost/boost/winapi/time.hpp
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * Copyright 2010 Vicente J. Botet Escriba
- * Copyright (c) Microsoft Corporation 2014
- * Copyright 2015, 2017 Andrey Semashev
- *
- * Distributed under the Boost Software License, Version 1.0.
- * See http://www.boost.org/LICENSE_1_0.txt
- */
-
-#ifndef BOOST_WINAPI_TIME_HPP_INCLUDED_
-#define BOOST_WINAPI_TIME_HPP_INCLUDED_
-
-#include <boost/winapi/basic_types.hpp>
-
-#ifdef BOOST_HAS_PRAGMA_ONCE
-#pragma once
-#endif
-
-#if !defined( BOOST_USE_WINDOWS_H )
-extern "C" {
-struct _FILETIME;
-struct _SYSTEMTIME;
-
-BOOST_SYMBOL_IMPORT boost::winapi::VOID_ BOOST_WINAPI_WINAPI_CC
-GetSystemTime(::_SYSTEMTIME* lpSystemTime);
-
-#ifdef BOOST_HAS_GETSYSTEMTIMEASFILETIME  // Windows CE does not define GetSystemTimeAsFileTime
-BOOST_SYMBOL_IMPORT boost::winapi::VOID_ BOOST_WINAPI_WINAPI_CC
-GetSystemTimeAsFileTime(::_FILETIME* lpSystemTimeAsFileTime);
-#endif
-
-BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
-SystemTimeToFileTime(
-    const ::_SYSTEMTIME* lpSystemTime,
-    ::_FILETIME* lpFileTime);
-
-BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
-FileTimeToSystemTime(
-    const ::_FILETIME* lpFileTime,
-    ::_SYSTEMTIME* lpSystemTime);
-
-#if BOOST_WINAPI_PARTITION_APP_SYSTEM
-
-BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
-FileTimeToLocalFileTime(
-    const ::_FILETIME* lpFileTime,
-    ::_FILETIME* lpLocalFileTime);
-
-BOOST_SYMBOL_IMPORT boost::winapi::BOOL_ BOOST_WINAPI_WINAPI_CC
-LocalFileTimeToFileTime(
-    const ::_FILETIME* lpLocalFileTime,
-    ::_FILETIME* lpFileTime);
-
-#endif // BOOST_WINAPI_PARTITION_APP_SYSTEM
-
-#if BOOST_WINAPI_PARTITION_DESKTOP_SYSTEM
-BOOST_SYMBOL_IMPORT boost::winapi::DWORD_ BOOST_WINAPI_WINAPI_CC
-GetTickCount(BOOST_WINAPI_DETAIL_VOID);
-#endif // BOOST_WINAPI_PARTITION_DESKTOP_SYSTEM
-
-#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6
-BOOST_SYMBOL_IMPORT boost::winapi::ULONGLONG_ BOOST_WINAPI_WINAPI_CC
-GetTickCount64(BOOST_WINAPI_DETAIL_VOID);
-#endif
-
-} // extern "C"
-#endif // !defined( BOOST_USE_WINDOWS_H )
-
-namespace boost {
-namespace winapi {
-
-typedef struct BOOST_MAY_ALIAS _FILETIME {
-    DWORD_ dwLowDateTime;
-    DWORD_ dwHighDateTime;
-} FILETIME_, *PFILETIME_, *LPFILETIME_;
-
-typedef struct BOOST_MAY_ALIAS _SYSTEMTIME {
-    WORD_ wYear;
-    WORD_ wMonth;
-    WORD_ wDayOfWeek;
-    WORD_ wDay;
-    WORD_ wHour;
-    WORD_ wMinute;
-    WORD_ wSecond;
-    WORD_ wMilliseconds;
-} SYSTEMTIME_, *PSYSTEMTIME_, *LPSYSTEMTIME_;
-
-#if BOOST_WINAPI_PARTITION_DESKTOP_SYSTEM
-using ::GetTickCount;
-#endif
-#if BOOST_USE_WINAPI_VERSION >= BOOST_WINAPI_VERSION_WIN6
-using ::GetTickCount64;
-#endif
-
-BOOST_FORCEINLINE VOID_ GetSystemTime(LPSYSTEMTIME_ lpSystemTime)
-{
-    ::GetSystemTime(reinterpret_cast< ::_SYSTEMTIME* >(lpSystemTime));
-}
-
-BOOST_FORCEINLINE BOOL_ SystemTimeToFileTime(const SYSTEMTIME_* lpSystemTime, FILETIME_* lpFileTime)
-{
-    return ::SystemTimeToFileTime(reinterpret_cast< const ::_SYSTEMTIME* >(lpSystemTime), reinterpret_cast< ::_FILETIME* >(lpFileTime));
-}
-
-BOOST_FORCEINLINE BOOL_ FileTimeToSystemTime(const FILETIME_* lpFileTime, SYSTEMTIME_* lpSystemTime)
-{
-    return ::FileTimeToSystemTime(reinterpret_cast< const ::_FILETIME* >(lpFileTime), reinterpret_cast< ::_SYSTEMTIME* >(lpSystemTime));
-}
-
-#if BOOST_WINAPI_PARTITION_APP_SYSTEM
-BOOST_FORCEINLINE BOOL_ FileTimeToLocalFileTime(const FILETIME_* lpFileTime, FILETIME_* lpLocalFileTime)
-{
-    return ::FileTimeToLocalFileTime(reinterpret_cast< const ::_FILETIME* >(lpFileTime), reinterpret_cast< ::_FILETIME* >(lpLocalFileTime));
-}
-
-BOOST_FORCEINLINE BOOL_ LocalFileTimeToFileTime(const FILETIME_* lpLocalFileTime, FILETIME_* lpFileTime)
-{
-    return ::LocalFileTimeToFileTime(reinterpret_cast< const ::_FILETIME* >(lpLocalFileTime), reinterpret_cast< ::_FILETIME* >(lpFileTime));
-}
-#endif // BOOST_WINAPI_PARTITION_APP_SYSTEM
-
-#if defined( BOOST_HAS_GETSYSTEMTIMEASFILETIME )
-BOOST_FORCEINLINE VOID_ GetSystemTimeAsFileTime(LPFILETIME_ lpSystemTimeAsFileTime)
-{
-    ::GetSystemTimeAsFileTime(reinterpret_cast< ::_FILETIME* >(lpSystemTimeAsFileTime));
-}
-#else
-// Windows CE does not define GetSystemTimeAsFileTime
-BOOST_FORCEINLINE VOID_ GetSystemTimeAsFileTime(FILETIME_* lpFileTime)
-{
-    boost::winapi::SYSTEMTIME_ st;
-    boost::winapi::GetSystemTime(&st);
-    boost::winapi::SystemTimeToFileTime(&st, lpFileTime);
-}
-#endif
-
-}
-}
-
-#endif // BOOST_WINAPI_TIME_HPP_INCLUDED_