aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrobot-contrib <robot-contrib@yandex-team.com>2022-08-06 22:01:27 +0300
committerrobot-contrib <robot-contrib@yandex-team.com>2022-08-06 22:01:27 +0300
commitf35a9d317f1d3dc209a73a44829632640f5db6fa (patch)
treeea964f46a911532f6d686f03b822f1bf625851cb
parent9c33cade63606ea579200799466de2926504d86a (diff)
downloadydb-f35a9d317f1d3dc209a73a44829632640f5db6fa.tar.gz
Update contrib/restricted/boost/core to 1.79.0
-rw-r--r--contrib/restricted/boost/config/include/boost/config/header_deprecated.hpp26
-rw-r--r--contrib/restricted/boost/core/README.md18
-rw-r--r--contrib/restricted/boost/core/include/boost/core/addressof.hpp4
-rw-r--r--contrib/restricted/boost/core/include/boost/core/checked_delete.hpp10
-rw-r--r--contrib/restricted/boost/core/include/boost/core/explicit_operator_bool.hpp9
-rw-r--r--contrib/restricted/boost/core/include/boost/core/ignore_unused.hpp34
-rw-r--r--contrib/restricted/boost/core/include/boost/core/no_exceptions_support.hpp16
-rw-r--r--contrib/restricted/boost/core/include/boost/core/noncopyable.hpp17
-rw-r--r--contrib/restricted/boost/core/include/boost/core/pointer_traits.hpp166
-rw-r--r--contrib/restricted/boost/core/include/boost/core/ref.hpp41
-rw-r--r--contrib/restricted/boost/core/include/boost/core/swap.hpp18
-rw-r--r--contrib/restricted/boost/core/include/boost/core/typeinfo.hpp36
-rw-r--r--contrib/restricted/boost/core/include/boost/detail/iterator.hpp6
-rw-r--r--contrib/restricted/boost/core/include/boost/detail/no_exceptions_support.hpp4
-rw-r--r--contrib/restricted/boost/core/include/boost/detail/scoped_enum_emulation.hpp4
-rw-r--r--contrib/restricted/boost/core/include/boost/detail/sp_typeinfo.hpp3
-rw-r--r--contrib/restricted/boost/core/include/boost/iterator.hpp4
-rw-r--r--contrib/restricted/boost/logic/LICENSE23
-rw-r--r--contrib/restricted/boost/logic/README.md34
19 files changed, 374 insertions, 99 deletions
diff --git a/contrib/restricted/boost/config/include/boost/config/header_deprecated.hpp b/contrib/restricted/boost/config/include/boost/config/header_deprecated.hpp
new file mode 100644
index 0000000000..864554f2a2
--- /dev/null
+++ b/contrib/restricted/boost/config/include/boost/config/header_deprecated.hpp
@@ -0,0 +1,26 @@
+#ifndef BOOST_CONFIG_HEADER_DEPRECATED_HPP_INCLUDED
+#define BOOST_CONFIG_HEADER_DEPRECATED_HPP_INCLUDED
+
+// Copyright 2017 Peter Dimov.
+//
+// Distributed under the Boost Software License, Version 1.0.
+//
+// See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt
+//
+// BOOST_HEADER_DEPRECATED("<alternative>")
+//
+// Expands to the equivalent of
+// BOOST_PRAGMA_MESSAGE("This header is deprecated. Use <alternative> instead.")
+//
+// Note that this header is C compatible.
+
+#include <boost/config/pragma_message.hpp>
+
+#if defined(BOOST_ALLOW_DEPRECATED_HEADERS)
+# define BOOST_HEADER_DEPRECATED(a)
+#else
+# define BOOST_HEADER_DEPRECATED(a) BOOST_PRAGMA_MESSAGE("This header is deprecated. Use " a " instead.")
+#endif
+
+#endif // BOOST_CONFIG_HEADER_DEPRECATED_HPP_INCLUDED
diff --git a/contrib/restricted/boost/core/README.md b/contrib/restricted/boost/core/README.md
index 52bd71b472..f5b4f987b0 100644
--- a/contrib/restricted/boost/core/README.md
+++ b/contrib/restricted/boost/core/README.md
@@ -1,19 +1,19 @@
Boost.Core
==========
-Boost.Core, part of collection of the [Boost C++ Libraries](http://github.com/boostorg), is a collection of core utilities used by other Boost libraries.
+Boost.Core, part of collection of the [Boost C++ Libraries](https://github.com/boostorg), is a collection of core utilities used by other Boost libraries.
The criteria for inclusion is that the utility component be:
* simple,
* used by other Boost libraries, and
* not dependent on any other Boost modules except Core itself, Config, Assert, Static Assert, or Predef.
-### CI Status
+### Build Status
-Branch | Travis | Appveyor
----------|--------|---------
-Develop | [![Build Status](https://travis-ci.org/boostorg/core.svg?branch=develop)](https://travis-ci.org/boostorg/core) | [![Build Status](https://ci.appveyor.com/api/projects/status/github/boostorg/core?branch=develop&svg=true)](https://ci.appveyor.com/project/pdimov/core)
-Master | [![Build Status](https://travis-ci.org/boostorg/core.svg?branch=master)](https://travis-ci.org/boostorg/core) | [![Build Status](https://ci.appveyor.com/api/projects/status/github/boostorg/core?branch=master&svg=true)](https://ci.appveyor.com/project/pdimov/core)
+Branch | GitHub Actions | AppVeyor | Test Matrix | Dependencies |
+---------|----------------|--------- | ----------- | ------------ |
+Develop | [![GitHub Actions](https://github.com/boostorg/core/actions/workflows/ci.yml/badge.svg?branch=develop)](https://github.com/boostorg/filesystem/actions?query=branch%3Adevelop) | [![AppVeyor](https://ci.appveyor.com/api/projects/status/github/boostorg/core?branch=develop&svg=true)](https://ci.appveyor.com/project/pdimov/core) | [![Tests](https://img.shields.io/badge/matrix-develop-brightgreen.svg)](http://www.boost.org/development/tests/develop/developer/core.html) | [![Dependencies](https://img.shields.io/badge/deps-develop-brightgreen.svg)](https://pdimov.github.io/boostdep-report/develop/core.html)
+Master | [![GitHub Actions](https://github.com/boostorg/core/actions/workflows/ci.yml/badge.svg?branch=master)](https://github.com/boostorg/filesystem/actions?query=branch%3Amaster) | [![AppVeyor](https://ci.appveyor.com/api/projects/status/github/boostorg/core?branch=master&svg=true)](https://ci.appveyor.com/project/pdimov/core) | [![Tests](https://img.shields.io/badge/matrix-master-brightgreen.svg)](http://www.boost.org/development/tests/master/developer/core.html) | [![Dependencies](https://img.shields.io/badge/deps-master-brightgreen.svg)](https://pdimov.github.io/boostdep-report/master/core.html)
### Directories
@@ -23,10 +23,10 @@ Master | [![Build Status](https://travis-ci.org/boostorg/core.svg?branch=maste
### More information
-* [Documentation](http://boost.org/libs/core)
+* [Documentation](https://boost.org/libs/core)
* [Report bugs](https://svn.boost.org/trac/boost/newticket?component=core;version=Boost%20Release%20Branch). Be sure to mention Boost version, platform and compiler you're using. A small compilable code sample to reproduce the problem is always good as well.
-* Submit your patches as pull requests against **develop** branch. Note that by submitting patches you agree to license your modifications under the [Boost Software License, Version 1.0](http://www.boost.org/LICENSE_1_0.txt).
+* Submit your patches as pull requests against **develop** branch. Note that by submitting patches you agree to license your modifications under the [Boost Software License, Version 1.0](https://www.boost.org/LICENSE_1_0.txt).
### License
-Distributed under the [Boost Software License, Version 1.0](http://boost.org/LICENSE_1_0.txt).
+Distributed under the [Boost Software License, Version 1.0](https://boost.org/LICENSE_1_0.txt).
diff --git a/contrib/restricted/boost/core/include/boost/core/addressof.hpp b/contrib/restricted/boost/core/include/boost/core/addressof.hpp
index f7eab06ba7..5473c36a59 100644
--- a/contrib/restricted/boost/core/include/boost/core/addressof.hpp
+++ b/contrib/restricted/boost/core/include/boost/core/addressof.hpp
@@ -125,7 +125,7 @@ template<class T>
BOOST_FORCEINLINE T*
addressof(T& o) BOOST_NOEXCEPT
{
-#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) || \
+#if BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x610)) || \
BOOST_WORKAROUND(__SUNPRO_CC, <= 0x5120)
return boost::detail::addrof<T>::get(o, 0);
#else
@@ -151,7 +151,7 @@ addressof(T (&o)[N]) BOOST_NOEXCEPT
}
#endif
-#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
+#if BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x564))
template<class T, std::size_t N>
BOOST_FORCEINLINE
T (*addressof(T (&o)[N]) BOOST_NOEXCEPT)[N]
diff --git a/contrib/restricted/boost/core/include/boost/core/checked_delete.hpp b/contrib/restricted/boost/core/include/boost/core/checked_delete.hpp
index b086e03e88..6af5c14119 100644
--- a/contrib/restricted/boost/core/include/boost/core/checked_delete.hpp
+++ b/contrib/restricted/boost/core/include/boost/core/checked_delete.hpp
@@ -7,6 +7,8 @@
# pragma once
#endif
+#include <boost/config.hpp>
+
//
// boost/checked_delete.hpp
//
@@ -26,7 +28,7 @@ namespace boost
// verify that types are complete for increased safety
-template<class T> inline void checked_delete(T * x)
+template<class T> inline void checked_delete(T * x) BOOST_NOEXCEPT
{
// intentionally complex - simplification causes regressions
typedef char type_must_be_complete[ sizeof(T)? 1: -1 ];
@@ -34,7 +36,7 @@ template<class T> inline void checked_delete(T * x)
delete x;
}
-template<class T> inline void checked_array_delete(T * x)
+template<class T> inline void checked_array_delete(T * x) BOOST_NOEXCEPT
{
typedef char type_must_be_complete[ sizeof(T)? 1: -1 ];
(void) sizeof(type_must_be_complete);
@@ -46,7 +48,7 @@ template<class T> struct checked_deleter
typedef void result_type;
typedef T * argument_type;
- void operator()(T * x) const
+ void operator()(T * x) const BOOST_NOEXCEPT
{
// boost:: disables ADL
boost::checked_delete(x);
@@ -58,7 +60,7 @@ template<class T> struct checked_array_deleter
typedef void result_type;
typedef T * argument_type;
- void operator()(T * x) const
+ void operator()(T * x) const BOOST_NOEXCEPT
{
boost::checked_array_delete(x);
}
diff --git a/contrib/restricted/boost/core/include/boost/core/explicit_operator_bool.hpp b/contrib/restricted/boost/core/include/boost/core/explicit_operator_bool.hpp
index a8936e2cd6..d689f114d3 100644
--- a/contrib/restricted/boost/core/include/boost/core/explicit_operator_bool.hpp
+++ b/contrib/restricted/boost/core/include/boost/core/explicit_operator_bool.hpp
@@ -19,6 +19,7 @@
#define BOOST_CORE_EXPLICIT_OPERATOR_BOOL_HPP
#include <boost/config.hpp>
+#include <boost/config/workaround.hpp>
#ifdef BOOST_HAS_PRAGMA_ONCE
#pragma once
@@ -52,6 +53,8 @@
return !this->operator! ();\
}
+#if !BOOST_WORKAROUND(BOOST_GCC, < 40700)
+
/*!
* \brief The macro defines a constexpr explicit operator of conversion to \c bool
*
@@ -65,6 +68,12 @@
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)
diff --git a/contrib/restricted/boost/core/include/boost/core/ignore_unused.hpp b/contrib/restricted/boost/core/include/boost/core/ignore_unused.hpp
index 994e5f6476..7c4a99787c 100644
--- a/contrib/restricted/boost/core/include/boost/core/ignore_unused.hpp
+++ b/contrib/restricted/boost/core/include/boost/core/ignore_unused.hpp
@@ -11,35 +11,65 @@
namespace boost {
-#ifndef BOOST_NO_CXX11_VARIADIC_TEMPLATES
+#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
+
+#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES)
+
+template <typename... Ts>
+BOOST_FORCEINLINE BOOST_CXX14_CONSTEXPR void ignore_unused(Ts&& ...)
+{}
+
+#else
template <typename... Ts>
BOOST_FORCEINLINE BOOST_CXX14_CONSTEXPR void ignore_unused(Ts const& ...)
{}
+#endif
+
template <typename... Ts>
BOOST_FORCEINLINE BOOST_CXX14_CONSTEXPR void ignore_unused()
{}
-#else
+#else // !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
+
+template <typename T1>
+BOOST_FORCEINLINE BOOST_CXX14_CONSTEXPR void ignore_unused(T1&)
+{}
template <typename T1>
BOOST_FORCEINLINE BOOST_CXX14_CONSTEXPR void ignore_unused(T1 const&)
{}
template <typename T1, typename T2>
+BOOST_FORCEINLINE BOOST_CXX14_CONSTEXPR void ignore_unused(T1&, T2&)
+{}
+
+template <typename T1, typename T2>
BOOST_FORCEINLINE BOOST_CXX14_CONSTEXPR void ignore_unused(T1 const&, T2 const&)
{}
template <typename T1, typename T2, typename T3>
+BOOST_FORCEINLINE BOOST_CXX14_CONSTEXPR void ignore_unused(T1&, T2&, T3&)
+{}
+
+template <typename T1, typename T2, typename T3>
BOOST_FORCEINLINE BOOST_CXX14_CONSTEXPR void ignore_unused(T1 const&, T2 const&, T3 const&)
{}
template <typename T1, typename T2, typename T3, typename T4>
+BOOST_FORCEINLINE BOOST_CXX14_CONSTEXPR void ignore_unused(T1&, T2&, T3&, T4&)
+{}
+
+template <typename T1, typename T2, typename T3, typename T4>
BOOST_FORCEINLINE BOOST_CXX14_CONSTEXPR void ignore_unused(T1 const&, T2 const&, T3 const&, T4 const&)
{}
template <typename T1, typename T2, typename T3, typename T4, typename T5>
+BOOST_FORCEINLINE BOOST_CXX14_CONSTEXPR void ignore_unused(T1&, T2&, T3&, T4&, T5&)
+{}
+
+template <typename T1, typename T2, typename T3, typename T4, typename T5>
BOOST_FORCEINLINE BOOST_CXX14_CONSTEXPR void ignore_unused(T1 const&, T2 const&, T3 const&, T4 const&, T5 const&)
{}
diff --git a/contrib/restricted/boost/core/include/boost/core/no_exceptions_support.hpp b/contrib/restricted/boost/core/include/boost/core/no_exceptions_support.hpp
index e2453d084b..1278e85688 100644
--- a/contrib/restricted/boost/core/include/boost/core/no_exceptions_support.hpp
+++ b/contrib/restricted/boost/core/include/boost/core/no_exceptions_support.hpp
@@ -29,12 +29,24 @@
# define BOOST_RETHROW throw;
# define BOOST_CATCH_END }
#else
-# if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
+# if BOOST_WORKAROUND(BOOST_BORLANDC, BOOST_TESTED_AT(0x564))
# define BOOST_TRY { if ("")
# define BOOST_CATCH(x) else if (!"")
-# else
+# elif !defined(BOOST_MSVC) || BOOST_MSVC >= 1900
# define BOOST_TRY { if (true)
# define BOOST_CATCH(x) else if (false)
+# else
+ // warning C4127: conditional expression is constant
+# define BOOST_TRY { \
+ __pragma(warning(push)) \
+ __pragma(warning(disable: 4127)) \
+ if (true) \
+ __pragma(warning(pop))
+# define BOOST_CATCH(x) else \
+ __pragma(warning(push)) \
+ __pragma(warning(disable: 4127)) \
+ if (false) \
+ __pragma(warning(pop))
# endif
# define BOOST_RETHROW
# define BOOST_CATCH_END }
diff --git a/contrib/restricted/boost/core/include/boost/core/noncopyable.hpp b/contrib/restricted/boost/core/include/boost/core/noncopyable.hpp
index 6ae8c244dd..4a4f8baba5 100644
--- a/contrib/restricted/boost/core/include/boost/core/noncopyable.hpp
+++ b/contrib/restricted/boost/core/include/boost/core/noncopyable.hpp
@@ -20,7 +20,22 @@ namespace boost {
namespace noncopyable_ // protection from unintended ADL
{
- class noncopyable
+#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)
diff --git a/contrib/restricted/boost/core/include/boost/core/pointer_traits.hpp b/contrib/restricted/boost/core/include/boost/core/pointer_traits.hpp
index e0ebfb0769..71c9df6900 100644
--- a/contrib/restricted/boost/core/include/boost/core/pointer_traits.hpp
+++ b/contrib/restricted/boost/core/include/boost/core/pointer_traits.hpp
@@ -1,5 +1,5 @@
/*
-Copyright 2017-2018 Glen Joseph Fernandes
+Copyright 2017-2021 Glen Joseph Fernandes
(glenjofe@gmail.com)
Distributed under the Boost Software License, Version 1.0.
@@ -9,42 +9,23 @@ Distributed under the Boost Software License, Version 1.0.
#define BOOST_CORE_POINTER_TRAITS_HPP
#include <boost/config.hpp>
-#if !defined(BOOST_NO_CXX11_POINTER_TRAITS)
-#include <memory>
-#else
#include <boost/core/addressof.hpp>
-#endif
+#include <cstddef>
namespace boost {
-
-#if !defined(BOOST_NO_CXX11_POINTER_TRAITS)
-template<class T>
-struct pointer_traits
- : std::pointer_traits<T> {
- template<class U>
- struct rebind_to {
- typedef typename std::pointer_traits<T>::template rebind<U> type;
- };
-};
-
-template<class T>
-struct pointer_traits<T*>
- : std::pointer_traits<T*> {
- template<class U>
- struct rebind_to {
- typedef U* type;
- };
-};
-#else
namespace detail {
+struct ptr_none { };
+
template<class>
-struct ptr_void {
+struct ptr_valid {
typedef void type;
};
-template<class T>
-struct ptr_first;
+template<class>
+struct ptr_first {
+ typedef ptr_none type;
+};
#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
template<template<class, class...> class T, class U, class... Args>
@@ -74,7 +55,7 @@ struct ptr_element {
};
template<class T>
-struct ptr_element<T, typename ptr_void<typename T::element_type>::type> {
+struct ptr_element<T, typename ptr_valid<typename T::element_type>::type> {
typedef typename T::element_type type;
};
@@ -85,12 +66,12 @@ struct ptr_difference {
template<class T>
struct ptr_difference<T,
- typename ptr_void<typename T::difference_type>::type> {
+ typename ptr_valid<typename T::difference_type>::type> {
typedef typename T::difference_type type;
};
-template<class T, class V>
-struct ptr_transform;
+template<class, class>
+struct ptr_transform { };
#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
template<template<class, class...> class T, class U, class... Args, class V>
@@ -116,68 +97,131 @@ struct ptr_transform<T<U1, U2, U3>, V> {
#endif
template<class T, class U, class = void>
-struct ptr_rebind {
- typedef typename ptr_transform<T, U>::type type;
-};
+struct ptr_rebind
+ : ptr_transform<T, U> { };
-#if !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES)
template<class T, class U>
struct ptr_rebind<T, U,
- typename ptr_void<typename T::template rebind<U> >::type> {
+ typename ptr_valid<typename T::template rebind<U> >::type> {
typedef typename T::template rebind<U> type;
};
+
+#if !defined(BOOST_NO_CXX11_DECLTYPE_N3276)
+template<class T, class E>
+class ptr_to_expr {
+ template<class>
+ struct result {
+ char x, y;
+ };
+
+ static E& source();
+
+ template<class O>
+ static auto check(int) -> result<decltype(O::pointer_to(source()))>;
+
+ template<class>
+ static char check(long);
+
+public:
+ BOOST_STATIC_CONSTEXPR bool value = sizeof(check<T>(0)) > 1;
+};
+
+template<class T, class E>
+struct ptr_to_expr<T*, E> {
+ BOOST_STATIC_CONSTEXPR bool value = true;
+};
+
+template<class T, class E>
+struct ptr_has_to {
+ BOOST_STATIC_CONSTEXPR bool value = ptr_to_expr<T, E>::value;
+};
+#else
+template<class, class>
+struct ptr_has_to {
+ BOOST_STATIC_CONSTEXPR bool value = true;
+};
#endif
template<class T>
-struct ptr_value {
- typedef T type;
+struct ptr_has_to<T, void> {
+ BOOST_STATIC_CONSTEXPR bool value = false;
};
-template<>
-struct ptr_value<void> {
- typedef struct { } type;
+template<class T>
+struct ptr_has_to<T, const void> {
+ BOOST_STATIC_CONSTEXPR bool value = false;
};
-} /* detail */
+template<class T>
+struct ptr_has_to<T, volatile void> {
+ BOOST_STATIC_CONSTEXPR bool value = false;
+};
+
+template<class T>
+struct ptr_has_to<T, const volatile void> {
+ BOOST_STATIC_CONSTEXPR bool value = false;
+};
+
+template<class T, class E, bool = ptr_has_to<T, E>::value>
+struct ptr_to { };
+
+template<class T, class E>
+struct ptr_to<T, E, true> {
+ static T pointer_to(E& v) {
+ return T::pointer_to(v);
+ }
+};
template<class T>
-struct pointer_traits {
+struct ptr_to<T*, T, true> {
+ static T* pointer_to(T& v) BOOST_NOEXCEPT {
+ return boost::addressof(v);
+ }
+};
+
+template<class T, class E>
+struct ptr_traits
+ : ptr_to<T, E> {
typedef T pointer;
- typedef typename detail::ptr_element<T>::type element_type;
- typedef typename detail::ptr_difference<T>::type difference_type;
+ typedef E element_type;
+ typedef typename ptr_difference<T>::type difference_type;
+
template<class U>
- struct rebind_to {
- typedef typename detail::ptr_rebind<T, U>::type type;
- };
+ struct rebind_to
+ : ptr_rebind<T, U> { };
+
#if !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES)
template<class U>
- using rebind = typename detail::ptr_rebind<T, U>::type;
+ using rebind = typename rebind_to<U>::type;
#endif
- static pointer
- pointer_to(typename detail::ptr_value<element_type>::type& v) {
- return pointer::pointer_to(v);
- }
};
template<class T>
-struct pointer_traits<T*> {
+struct ptr_traits<T, ptr_none> { };
+
+} /* detail */
+
+template<class T>
+struct pointer_traits
+ : detail::ptr_traits<T, typename detail::ptr_element<T>::type> { };
+
+template<class T>
+struct pointer_traits<T*>
+ : detail::ptr_to<T*, T> {
typedef T* pointer;
typedef T element_type;
typedef std::ptrdiff_t difference_type;
+
template<class U>
struct rebind_to {
typedef U* type;
};
+
#if !defined(BOOST_NO_CXX11_TEMPLATE_ALIASES)
template<class U>
- using rebind = U*;
+ using rebind = typename rebind_to<U>::type*;
#endif
- static T*
- pointer_to(typename detail::ptr_value<T>::type& v) BOOST_NOEXCEPT {
- return boost::addressof(v);
- }
};
-#endif
template<class T>
BOOST_CONSTEXPR inline T*
diff --git a/contrib/restricted/boost/core/include/boost/core/ref.hpp b/contrib/restricted/boost/core/include/boost/core/ref.hpp
index 7d768ffc75..a416cbdd34 100644
--- a/contrib/restricted/boost/core/include/boost/core/ref.hpp
+++ b/contrib/restricted/boost/core/include/boost/core/ref.hpp
@@ -10,6 +10,7 @@
#include <boost/config.hpp>
#include <boost/config/workaround.hpp>
#include <boost/core/addressof.hpp>
+#include <boost/core/enable_if.hpp>
//
// ref.hpp - ref/cref, useful helper functions
@@ -19,7 +20,8 @@
// Copyright (C) 2002 David Abrahams
//
// Copyright (C) 2014 Glen Joseph Fernandes
-// glenfe at live dot com
+// (glenjofe@gmail.com)
+//
// Copyright (C) 2014 Agustin Berge
//
// Distributed under the Boost Software License, Version 1.0. (See
@@ -45,6 +47,26 @@ namespace boost
#endif
+namespace detail
+{
+
+template< class Y, class T > struct ref_convertible
+{
+ typedef char (&yes) [1];
+ typedef char (&no) [2];
+
+ static yes f( T* );
+ static no f( ... );
+
+ enum _vt { value = sizeof( (f)( static_cast<Y*>(0) ) ) == sizeof(yes) };
+};
+
+struct ref_empty
+{
+};
+
+} // namespace detail
+
// reference_wrapper
/**
@@ -86,6 +108,21 @@ public:
public:
#endif
+ template<class Y> friend class reference_wrapper;
+
+ /**
+ Constructs a `reference_wrapper` object that stores the
+ reference stored in the compatible `reference_wrapper` `r`.
+
+ @remark Only enabled when `Y*` is convertible to `T*`.
+ @remark Does not throw.
+ */
+ template<class Y> reference_wrapper( reference_wrapper<Y> r,
+ typename enable_if_c<boost::detail::ref_convertible<Y, T>::value,
+ boost::detail::ref_empty>::type = boost::detail::ref_empty() ): t_( r.t_ )
+ {
+ }
+
/**
@return The stored reference.
@remark Does not throw.
@@ -115,7 +152,7 @@ private:
/**
@cond
*/
-#if defined( __BORLANDC__ ) && BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT(0x581) )
+#if defined( BOOST_BORLANDC ) && BOOST_WORKAROUND( BOOST_BORLANDC, BOOST_TESTED_AT(0x581) )
# define BOOST_REF_CONST
#else
# define BOOST_REF_CONST const
diff --git a/contrib/restricted/boost/core/include/boost/core/swap.hpp b/contrib/restricted/boost/core/include/boost/core/swap.hpp
index baa1be970d..49e1b2dbb6 100644
--- a/contrib/restricted/boost/core/include/boost/core/swap.hpp
+++ b/contrib/restricted/boost/core/include/boost/core/swap.hpp
@@ -21,13 +21,22 @@
// avoid ambiguity when swapping objects of a Boost type that does
// not have its own boost::swap overload.
-#include <utility> //for std::swap (C++11)
-#include <algorithm> //for std::swap (C++98)
-#include <cstddef> //for std::size_t
+#include <boost/core/enable_if.hpp>
#include <boost/config.hpp>
+#if __cplusplus >= 201103L || defined(BOOST_DINKUMWARE_STDLIB)
+#include <utility> // for std::swap (C++11)
+#else
+#include <algorithm> // for std::swap (C++98)
+#endif
+#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)
@@ -51,7 +60,8 @@ namespace boost
{
template<class T1, class T2>
BOOST_GPU_ENABLED
- void swap(T1& left, T2& right)
+ 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);
}
diff --git a/contrib/restricted/boost/core/include/boost/core/typeinfo.hpp b/contrib/restricted/boost/core/include/boost/core/typeinfo.hpp
index e67b4a3198..d33d29ba68 100644
--- a/contrib/restricted/boost/core/include/boost/core/typeinfo.hpp
+++ b/contrib/restricted/boost/core/include/boost/core/typeinfo.hpp
@@ -21,6 +21,7 @@
#include <boost/current_function.hpp>
#include <functional>
+#include <cstring>
namespace boost
{
@@ -36,26 +37,43 @@ private:
typeinfo& operator=( typeinfo const& );
char const * name_;
+ void (*lib_id_)();
public:
- explicit typeinfo( char const * name ): name_( name )
+ typeinfo( char const * name, void (*lib_id)() ): name_( name ), lib_id_( lib_id )
{
}
bool operator==( typeinfo const& rhs ) const
{
+#if ( defined(_WIN32) || defined(__CYGWIN__) ) && ( defined(__GNUC__) || defined(__clang__) ) && !defined(BOOST_DISABLE_CURRENT_FUNCTION)
+
+ return lib_id_ == rhs.lib_id_? this == &rhs: std::strcmp( name_, rhs.name_ ) == 0;
+
+#else
+
return this == &rhs;
+
+#endif
}
bool operator!=( typeinfo const& rhs ) const
{
- return this != &rhs;
+ return !( *this == rhs );
}
bool before( typeinfo const& rhs ) const
{
+#if ( defined(_WIN32) || defined(__CYGWIN__) ) && ( defined(__GNUC__) || defined(__clang__) ) && !defined(BOOST_DISABLE_CURRENT_FUNCTION)
+
+ return lib_id_ == rhs.lib_id_? std::less< typeinfo const* >()( this, &rhs ): std::strcmp( name_, rhs.name_ ) < 0;
+
+#else
+
return std::less< typeinfo const* >()( this, &rhs );
+
+#endif
}
char const* name() const
@@ -74,7 +92,7 @@ inline char const * demangled_name( core::typeinfo const & ti )
namespace detail
{
-template<class T> struct core_typeid_
+template<class T> struct BOOST_SYMBOL_VISIBLE core_typeid_
{
static boost::core::typeinfo ti_;
@@ -84,13 +102,11 @@ template<class T> struct core_typeid_
}
};
-#if defined(__SUNPRO_CC)
-// see #4199, the Sun Studio compiler gets confused about static initialization
-// constructor arguments. But an assignment works just fine.
-template<class T> boost::core::typeinfo core_typeid_< T >::ti_ = core_typeid_< T >::name();
-#else
-template<class T> boost::core::typeinfo core_typeid_< T >::ti_(core_typeid_< T >::name());
-#endif
+BOOST_SYMBOL_VISIBLE inline void core_typeid_lib_id()
+{
+}
+
+template<class T> boost::core::typeinfo core_typeid_< T >::ti_( core_typeid_< T >::name(), &core_typeid_lib_id );
template<class T> struct core_typeid_< T & >: core_typeid_< T >
{
diff --git a/contrib/restricted/boost/core/include/boost/detail/iterator.hpp b/contrib/restricted/boost/core/include/boost/detail/iterator.hpp
index 2498ef448f..95ec73725e 100644
--- a/contrib/restricted/boost/core/include/boost/detail/iterator.hpp
+++ b/contrib/restricted/boost/core/include/boost/detail/iterator.hpp
@@ -6,7 +6,11 @@
#ifndef ITERATOR_DWA122600_HPP_
#define ITERATOR_DWA122600_HPP_
-// This header is obsolete and will be deprecated.
+// This header is obsolete and deprecated.
+
+#include <boost/config/header_deprecated.hpp>
+
+BOOST_HEADER_DEPRECATED("<iterator>")
#include <iterator>
#if defined(__SUNPRO_CC) && (defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION))
diff --git a/contrib/restricted/boost/core/include/boost/detail/no_exceptions_support.hpp b/contrib/restricted/boost/core/include/boost/detail/no_exceptions_support.hpp
index 7d17454a73..2cf0938327 100644
--- a/contrib/restricted/boost/core/include/boost/detail/no_exceptions_support.hpp
+++ b/contrib/restricted/boost/core/include/boost/detail/no_exceptions_support.hpp
@@ -12,6 +12,10 @@
// The header file at this path is deprecated;
// use boost/core/no_exceptions_support.hpp instead.
+#include <boost/config/header_deprecated.hpp>
+
+BOOST_HEADER_DEPRECATED("<boost/core/no_exceptions_support.hpp>")
+
#include <boost/core/no_exceptions_support.hpp>
#endif
diff --git a/contrib/restricted/boost/core/include/boost/detail/scoped_enum_emulation.hpp b/contrib/restricted/boost/core/include/boost/detail/scoped_enum_emulation.hpp
index 1c7bc23c1c..6e47c0f1e7 100644
--- a/contrib/restricted/boost/core/include/boost/detail/scoped_enum_emulation.hpp
+++ b/contrib/restricted/boost/core/include/boost/detail/scoped_enum_emulation.hpp
@@ -12,6 +12,10 @@
// The header file at this path is deprecated;
// use boost/core/scoped_enum.hpp instead.
+#include <boost/config/header_deprecated.hpp>
+
+BOOST_HEADER_DEPRECATED("<boost/core/scoped_enum.hpp>")
+
#include <boost/core/scoped_enum.hpp>
#endif
diff --git a/contrib/restricted/boost/core/include/boost/detail/sp_typeinfo.hpp b/contrib/restricted/boost/core/include/boost/detail/sp_typeinfo.hpp
index 4e4de55b05..bec228f57d 100644
--- a/contrib/restricted/boost/core/include/boost/detail/sp_typeinfo.hpp
+++ b/contrib/restricted/boost/core/include/boost/detail/sp_typeinfo.hpp
@@ -18,6 +18,9 @@
// http://www.boost.org/LICENSE_1_0.txt)
#include <boost/core/typeinfo.hpp>
+#include <boost/config/header_deprecated.hpp>
+
+BOOST_HEADER_DEPRECATED( "<boost/core/typeinfo.hpp>" )
namespace boost
{
diff --git a/contrib/restricted/boost/core/include/boost/iterator.hpp b/contrib/restricted/boost/core/include/boost/iterator.hpp
index c9c6197950..4a780e8aef 100644
--- a/contrib/restricted/boost/core/include/boost/iterator.hpp
+++ b/contrib/restricted/boost/core/include/boost/iterator.hpp
@@ -5,7 +5,9 @@
#ifndef BOOST_ITERATOR_HPP
#define BOOST_ITERATOR_HPP
-// This header is obsolete and will be deprecated.
+#include <boost/config/header_deprecated.hpp>
+
+BOOST_HEADER_DEPRECATED("<iterator>")
#include <iterator>
#include <cstddef> // std::ptrdiff_t
diff --git a/contrib/restricted/boost/logic/LICENSE b/contrib/restricted/boost/logic/LICENSE
new file mode 100644
index 0000000000..36b7cd93cd
--- /dev/null
+++ b/contrib/restricted/boost/logic/LICENSE
@@ -0,0 +1,23 @@
+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/contrib/restricted/boost/logic/README.md b/contrib/restricted/boost/logic/README.md
new file mode 100644
index 0000000000..a71ecd3221
--- /dev/null
+++ b/contrib/restricted/boost/logic/README.md
@@ -0,0 +1,34 @@
+Logic, part of collection of the [Boost C++ Libraries](http://github.com/boostorg), provides `boost::logic::tribool` for 3-state boolean logic.
+
+### License
+
+Distributed under the [Boost Software License, Version 1.0](http://www.boost.org/LICENSE_1_0.txt).
+
+### Properties
+
+* C++03
+* Header Only
+
+### Build Status
+
+Branch | Travis | Appveyor | Coverity Scan | codecov.io | Deps | Docs | Tests |
+:-------------: | ------ | -------- | ------------- | ---------- | ---- | ---- | ----- |
+[`master`](https://github.com/boostorg/logic/tree/master) | [![Build Status](https://travis-ci.org/boostorg/logic.svg?branch=master)](https://travis-ci.org/boostorg/logic) | [![Build status](https://ci.appveyor.com/api/projects/status/a898pj8spmo2t3x9/branch/master?svg=true)](https://ci.appveyor.com/project/jeking3/logic-vv3ct/branch/master) | [![Coverity Scan Build Status](https://scan.coverity.com/projects/16173/badge.svg)](https://scan.coverity.com/projects/boostorg-logic) | [![codecov](https://codecov.io/gh/boostorg/logic/branch/master/graph/badge.svg)](https://codecov.io/gh/boostorg/logic/branch/master)| [![Deps](https://img.shields.io/badge/deps-master-brightgreen.svg)](https://pdimov.github.io/boostdep-report/master/logic.html) | [![Documentation](https://img.shields.io/badge/docs-master-brightgreen.svg)](http://www.boost.org/doc/libs/master/doc/html/logic.html) | [![Enter the Matrix](https://img.shields.io/badge/matrix-master-brightgreen.svg)](http://www.boost.org/development/tests/master/developer/logic.html)
+[`develop`](https://github.com/boostorg/logic/tree/develop) | [![Build Status](https://travis-ci.org/boostorg/logic.svg?branch=develop)](https://travis-ci.org/boostorg/logic) | [![Build status](https://ci.appveyor.com/api/projects/status/a898pj8spmo2t3x9/branch/develop?svg=true)](https://ci.appveyor.com/project/jeking3/logic-vv3ct/branch/develop) | [![Coverity Scan Build Status](https://scan.coverity.com/projects/16173/badge.svg)](https://scan.coverity.com/projects/boostorg-logic) | [![codecov](https://codecov.io/gh/boostorg/logic/branch/develop/graph/badge.svg)](https://codecov.io/gh/boostorg/logic/branch/develop) | [![Deps](https://img.shields.io/badge/deps-develop-brightgreen.svg)](https://pdimov.github.io/boostdep-report/develop/logic.html) | [![Documentation](https://img.shields.io/badge/docs-develop-brightgreen.svg)](http://www.boost.org/doc/libs/develop/doc/html/logic.html) | [![Enter the Matrix](https://img.shields.io/badge/matrix-develop-brightgreen.svg)](http://www.boost.org/development/tests/develop/developer/logic.html)
+
+### Directories
+
+| Name | Purpose |
+| ----------- | ------------------------------ |
+| `doc` | documentation |
+| `example` | examples |
+| `include` | headers |
+| `test` | unit tests |
+
+### More information
+
+* [Ask questions](http://stackoverflow.com/questions/ask?tags=c%2B%2B,boost,boost-logic)
+* [Report bugs](https://github.com/boostorg/logic/issues): Be sure to mention Boost version, platform and compiler you're using. A small compilable code sample to reproduce the problem is always good as well.
+* Submit your patches as pull requests against **develop** branch. Note that by submitting patches you agree to license your modifications under the [Boost Software License, Version 1.0](http://www.boost.org/LICENSE_1_0.txt).
+* Discussions about the library are held on the [Boost developers mailing list](http://www.boost.org/community/groups.html#main). Be sure to read the [discussion policy](http://www.boost.org/community/policy.html) before posting and add the `[logic]` tag at the beginning of the subject line.
+