diff options
author | robot-contrib <robot-contrib@yandex-team.com> | 2022-08-06 22:01:27 +0300 |
---|---|---|
committer | robot-contrib <robot-contrib@yandex-team.com> | 2022-08-06 22:01:27 +0300 |
commit | f35a9d317f1d3dc209a73a44829632640f5db6fa (patch) | |
tree | ea964f46a911532f6d686f03b822f1bf625851cb | |
parent | 9c33cade63606ea579200799466de2926504d86a (diff) | |
download | ydb-f35a9d317f1d3dc209a73a44829632640f5db6fa.tar.gz |
Update contrib/restricted/boost/core to 1.79.0
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. + |