mirror of
https://git.lyx.org/repos/lyx.git
synced 2024-11-22 01:59:02 +00:00
Update boost to 1.65.1
This commit is contained in:
parent
e0616db6a1
commit
ed09ccbc3c
2
3rdparty/boost/Makefile.am
vendored
2
3rdparty/boost/Makefile.am
vendored
@ -23,7 +23,7 @@ liblyxboost_a_SOURCES = \
|
||||
libs/regex/src/instances.cpp \
|
||||
libs/regex/src/cpp_regex_traits.cpp \
|
||||
libs/regex/src/c_regex_traits.cpp \
|
||||
libs/regex/src/wc_regex_traits.cpp
|
||||
libs/regex/src/wc_regex_traits.cpp
|
||||
|
||||
else
|
||||
|
||||
|
20
3rdparty/boost/boost/any.hpp
vendored
20
3rdparty/boost/boost/any.hpp
vendored
@ -16,7 +16,7 @@
|
||||
|
||||
#include <algorithm>
|
||||
|
||||
#include "boost/config.hpp"
|
||||
#include <boost/config.hpp>
|
||||
#include <boost/type_index.hpp>
|
||||
#include <boost/type_traits/remove_reference.hpp>
|
||||
#include <boost/type_traits/decay.hpp>
|
||||
@ -27,6 +27,7 @@
|
||||
#include <boost/throw_exception.hpp>
|
||||
#include <boost/static_assert.hpp>
|
||||
#include <boost/utility/enable_if.hpp>
|
||||
#include <boost/core/addressof.hpp>
|
||||
#include <boost/type_traits/is_same.hpp>
|
||||
#include <boost/type_traits/is_const.hpp>
|
||||
#include <boost/mpl/if.hpp>
|
||||
@ -244,7 +245,9 @@ namespace boost
|
||||
ValueType * any_cast(any * operand) BOOST_NOEXCEPT
|
||||
{
|
||||
return operand && operand->type() == boost::typeindex::type_id<ValueType>()
|
||||
? &static_cast<any::holder<BOOST_DEDUCED_TYPENAME remove_cv<ValueType>::type> *>(operand->content)->held
|
||||
? boost::addressof(
|
||||
static_cast<any::holder<BOOST_DEDUCED_TYPENAME remove_cv<ValueType>::type> *>(operand->content)->held
|
||||
)
|
||||
: 0;
|
||||
}
|
||||
|
||||
@ -260,7 +263,7 @@ namespace boost
|
||||
typedef BOOST_DEDUCED_TYPENAME remove_reference<ValueType>::type nonref;
|
||||
|
||||
|
||||
nonref * result = any_cast<nonref>(&operand);
|
||||
nonref * result = any_cast<nonref>(boost::addressof(operand));
|
||||
if(!result)
|
||||
boost::throw_exception(bad_any_cast());
|
||||
|
||||
@ -274,7 +277,14 @@ namespace boost
|
||||
BOOST_DEDUCED_TYPENAME boost::add_reference<ValueType>::type
|
||||
>::type ref_type;
|
||||
|
||||
#ifdef BOOST_MSVC
|
||||
# pragma warning(push)
|
||||
# pragma warning(disable: 4172) // "returning address of local variable or temporary" but *result is not local!
|
||||
#endif
|
||||
return static_cast<ref_type>(*result);
|
||||
#ifdef BOOST_MSVC
|
||||
# pragma warning(pop)
|
||||
#endif
|
||||
}
|
||||
|
||||
template<typename ValueType>
|
||||
@ -306,7 +316,9 @@ namespace boost
|
||||
template<typename ValueType>
|
||||
inline ValueType * unsafe_any_cast(any * operand) BOOST_NOEXCEPT
|
||||
{
|
||||
return &static_cast<any::holder<ValueType> *>(operand->content)->held;
|
||||
return boost::addressof(
|
||||
static_cast<any::holder<ValueType> *>(operand->content)->held
|
||||
);
|
||||
}
|
||||
|
||||
template<typename ValueType>
|
||||
|
95
3rdparty/boost/boost/array.hpp
vendored
95
3rdparty/boost/boost/array.hpp
vendored
@ -13,6 +13,7 @@
|
||||
* 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.
|
||||
@ -42,12 +43,12 @@
|
||||
#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 <boost/functional/hash_fwd.hpp>
|
||||
#include <algorithm>
|
||||
|
||||
// FIXES for broken compilers
|
||||
@ -81,15 +82,9 @@ namespace boost {
|
||||
const_iterator cend() const { return elems+N; }
|
||||
|
||||
// reverse iterator support
|
||||
#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_MSVC_STD_ITERATOR) && !defined(BOOST_NO_STD_ITERATOR_TRAITS)
|
||||
#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(_MSC_VER) && (_MSC_VER == 1300) && defined(BOOST_DINKUMWARE_STDLIB) && (BOOST_DINKUMWARE_STDLIB == 310)
|
||||
// workaround for broken reverse_iterator in VC7
|
||||
typedef std::reverse_iterator<std::_Ptrit<value_type, difference_type, iterator,
|
||||
reference, iterator, reference> > reverse_iterator;
|
||||
typedef std::reverse_iterator<std::_Ptrit<value_type, difference_type, const_iterator,
|
||||
const_reference, iterator, reference> > 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;
|
||||
@ -120,19 +115,17 @@ namespace boost {
|
||||
// operator[]
|
||||
reference operator[](size_type i)
|
||||
{
|
||||
BOOST_ASSERT_MSG( i < N, "out of range" );
|
||||
return elems[i];
|
||||
return BOOST_ASSERT_MSG( i < N, "out of range" ), elems[i];
|
||||
}
|
||||
|
||||
const_reference operator[](size_type i) const
|
||||
/*BOOST_CONSTEXPR*/ const_reference operator[](size_type i) const
|
||||
{
|
||||
BOOST_ASSERT_MSG( i < N, "out of range" );
|
||||
return elems[i];
|
||||
return BOOST_ASSERT_MSG( i < N, "out of range" ), elems[i];
|
||||
}
|
||||
|
||||
// at() with range check
|
||||
reference at(size_type i) { rangecheck(i); return elems[i]; }
|
||||
const_reference at(size_type i) const { rangecheck(i); return elems[i]; }
|
||||
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()
|
||||
@ -140,7 +133,7 @@ namespace boost {
|
||||
return elems[0];
|
||||
}
|
||||
|
||||
const_reference front() const
|
||||
BOOST_CONSTEXPR const_reference front() const
|
||||
{
|
||||
return elems[0];
|
||||
}
|
||||
@ -150,15 +143,15 @@ namespace boost {
|
||||
return elems[N-1];
|
||||
}
|
||||
|
||||
const_reference back() const
|
||||
BOOST_CONSTEXPR const_reference back() const
|
||||
{
|
||||
return elems[N-1];
|
||||
}
|
||||
|
||||
// size is constant
|
||||
static size_type size() { return N; }
|
||||
static bool empty() { return false; }
|
||||
static size_type max_size() { return N; }
|
||||
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)
|
||||
@ -189,16 +182,12 @@ namespace boost {
|
||||
}
|
||||
|
||||
// check range (may be private because it is static)
|
||||
static void rangecheck (size_type i) {
|
||||
if (i >= size()) {
|
||||
std::out_of_range e("array<>: index out of range");
|
||||
boost::throw_exception(e);
|
||||
}
|
||||
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;
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
|
||||
template< class T >
|
||||
class array< T, 0 > {
|
||||
|
||||
@ -222,15 +211,9 @@ namespace boost {
|
||||
const_iterator cend() const { return cbegin(); }
|
||||
|
||||
// reverse iterator support
|
||||
#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION) && !defined(BOOST_MSVC_STD_ITERATOR) && !defined(BOOST_NO_STD_ITERATOR_TRAITS)
|
||||
#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(_MSC_VER) && (_MSC_VER == 1300) && defined(BOOST_DINKUMWARE_STDLIB) && (BOOST_DINKUMWARE_STDLIB == 310)
|
||||
// workaround for broken reverse_iterator in VC7
|
||||
typedef std::reverse_iterator<std::_Ptrit<value_type, difference_type, iterator,
|
||||
reference, iterator, reference> > reverse_iterator;
|
||||
typedef std::reverse_iterator<std::_Ptrit<value_type, difference_type, const_iterator,
|
||||
const_reference, iterator, reference> > 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;
|
||||
@ -264,14 +247,14 @@ namespace boost {
|
||||
return failed_rangecheck();
|
||||
}
|
||||
|
||||
const_reference operator[](size_type /*i*/) const
|
||||
/*BOOST_CONSTEXPR*/ const_reference operator[](size_type /*i*/) const
|
||||
{
|
||||
return failed_rangecheck();
|
||||
}
|
||||
|
||||
// at() with range check
|
||||
reference at(size_type /*i*/) { return failed_rangecheck(); }
|
||||
const_reference at(size_type /*i*/) const { return failed_rangecheck(); }
|
||||
/*BOOST_CONSTEXPR*/ const_reference at(size_type /*i*/) const { return failed_rangecheck(); }
|
||||
|
||||
// front() and back()
|
||||
reference front()
|
||||
@ -279,7 +262,7 @@ namespace boost {
|
||||
return failed_rangecheck();
|
||||
}
|
||||
|
||||
const_reference front() const
|
||||
BOOST_CONSTEXPR const_reference front() const
|
||||
{
|
||||
return failed_rangecheck();
|
||||
}
|
||||
@ -289,15 +272,15 @@ namespace boost {
|
||||
return failed_rangecheck();
|
||||
}
|
||||
|
||||
const_reference back() const
|
||||
BOOST_CONSTEXPR const_reference back() const
|
||||
{
|
||||
return failed_rangecheck();
|
||||
}
|
||||
|
||||
// size is constant
|
||||
static size_type size() { return 0; }
|
||||
static bool empty() { return true; }
|
||||
static size_type max_size() { return 0; }
|
||||
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*/) {
|
||||
@ -335,7 +318,6 @@ namespace boost {
|
||||
#endif
|
||||
}
|
||||
};
|
||||
#endif
|
||||
|
||||
// comparisons
|
||||
template<class T, std::size_t N>
|
||||
@ -391,7 +373,7 @@ namespace boost {
|
||||
|
||||
// Specific for boost::array: simply returns its elems data member.
|
||||
template <typename T, std::size_t N>
|
||||
typename const detail::c_array<T,N>::type& get_c_array(const boost::array<T,N>& arg)
|
||||
typename detail::c_array<T,N>::type const& get_c_array(const boost::array<T,N>& arg)
|
||||
{
|
||||
return arg.elems;
|
||||
}
|
||||
@ -429,6 +411,7 @@ namespace boost {
|
||||
}
|
||||
#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)
|
||||
@ -436,8 +419,36 @@ namespace boost {
|
||||
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)
|
||||
|
13
3rdparty/boost/boost/bind/arg.hpp
vendored
13
3rdparty/boost/boost/bind/arg.hpp
vendored
@ -21,20 +21,27 @@
|
||||
|
||||
#include <boost/config.hpp>
|
||||
#include <boost/is_placeholder.hpp>
|
||||
#include <boost/static_assert.hpp>
|
||||
|
||||
namespace boost
|
||||
{
|
||||
|
||||
template<bool Eq> struct _arg_eq
|
||||
{
|
||||
};
|
||||
|
||||
template<> struct _arg_eq<true>
|
||||
{
|
||||
typedef void type;
|
||||
};
|
||||
|
||||
template< int I > struct arg
|
||||
{
|
||||
BOOST_CONSTEXPR arg()
|
||||
{
|
||||
}
|
||||
|
||||
template< class T > BOOST_CONSTEXPR arg( T const & /* t */ )
|
||||
template< class T > BOOST_CONSTEXPR arg( T const & /* t */, typename _arg_eq< I == is_placeholder<T>::value >::type * = 0 )
|
||||
{
|
||||
BOOST_STATIC_ASSERT( I == is_placeholder<T>::value );
|
||||
}
|
||||
};
|
||||
|
||||
|
8
3rdparty/boost/boost/config.hpp
vendored
8
3rdparty/boost/boost/config.hpp
vendored
@ -32,7 +32,7 @@
|
||||
|
||||
// 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/select_compiler_config.hpp>
|
||||
# include <boost/config/detail/select_compiler_config.hpp>
|
||||
#endif
|
||||
// if we have a compiler config, include it now:
|
||||
#ifdef BOOST_COMPILER_CONFIG
|
||||
@ -41,7 +41,7 @@
|
||||
|
||||
// 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/select_stdlib_config.hpp>
|
||||
# include <boost/config/detail/select_stdlib_config.hpp>
|
||||
#endif
|
||||
// if we have a std library config, include it now:
|
||||
#ifdef BOOST_STDLIB_CONFIG
|
||||
@ -50,7 +50,7 @@
|
||||
|
||||
// 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/select_platform_config.hpp>
|
||||
# include <boost/config/detail/select_platform_config.hpp>
|
||||
#endif
|
||||
// if we have a platform config, include it now:
|
||||
#ifdef BOOST_PLATFORM_CONFIG
|
||||
@ -58,7 +58,7 @@
|
||||
#endif
|
||||
|
||||
// get config suffix code:
|
||||
#include <boost/config/suffix.hpp>
|
||||
#include <boost/config/detail/suffix.hpp>
|
||||
|
||||
#ifdef BOOST_HAS_PRAGMA_ONCE
|
||||
#pragma once
|
||||
|
11
3rdparty/boost/boost/config/auto_link.hpp
vendored
11
3rdparty/boost/boost/config/auto_link.hpp
vendored
@ -161,10 +161,15 @@ BOOST_LIB_VERSION: The Boost version, in the form x_y, for Boost version x.y.
|
||||
// vc12:
|
||||
# define BOOST_LIB_TOOLSET "vc120"
|
||||
|
||||
# elif defined(BOOST_MSVC)
|
||||
# elif defined(BOOST_MSVC) && (BOOST_MSVC < 1910)
|
||||
|
||||
// vc14:
|
||||
# define BOOST_LIB_TOOLSET "vc140"
|
||||
// vc14:
|
||||
# define BOOST_LIB_TOOLSET "vc140"
|
||||
|
||||
# elif defined(BOOST_MSVC)
|
||||
|
||||
// vc14.1:
|
||||
# define BOOST_LIB_TOOLSET "vc141"
|
||||
|
||||
# elif defined(__BORLANDC__)
|
||||
|
||||
|
12
3rdparty/boost/boost/config/compiler/borland.hpp
vendored
12
3rdparty/boost/boost/config/compiler/borland.hpp
vendored
@ -185,6 +185,7 @@
|
||||
#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
|
||||
@ -227,6 +228,17 @@
|
||||
# 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 __BORLANDC__ >= 0x590
|
||||
# define BOOST_HAS_TR1_HASH
|
||||
|
||||
|
25
3rdparty/boost/boost/config/compiler/clang.hpp
vendored
25
3rdparty/boost/boost/config/compiler/clang.hpp
vendored
@ -27,6 +27,10 @@
|
||||
#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
|
||||
@ -57,7 +61,7 @@
|
||||
#define BOOST_HAS_NRVO
|
||||
|
||||
// Branch prediction hints
|
||||
#if defined(__has_builtin)
|
||||
#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)
|
||||
@ -282,6 +286,20 @@
|
||||
# define BOOST_NO_CXX14_VARIABLE_TEMPLATES
|
||||
#endif
|
||||
|
||||
#if !defined(__cpp_structured_bindings) || (__cpp_structured_bindings < 201606)
|
||||
# define BOOST_NO_CXX17_STRUCTURED_BINDINGS
|
||||
#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
|
||||
@ -292,6 +310,11 @@
|
||||
#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__))
|
||||
|
||||
|
@ -112,6 +112,7 @@
|
||||
#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
|
||||
@ -153,6 +154,19 @@
|
||||
# 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
|
||||
|
||||
//
|
||||
// TR1 macros:
|
||||
//
|
||||
|
@ -95,6 +95,7 @@
|
||||
#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
|
||||
@ -137,6 +138,17 @@
|
||||
# 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
|
||||
|
||||
#ifdef c_plusplus
|
||||
// EDG has "long long" in non-strict mode
|
||||
// However, some libraries have insufficient "long long" support
|
||||
|
@ -39,6 +39,7 @@
|
||||
#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
|
||||
|
19
3rdparty/boost/boost/config/compiler/diab.hpp
vendored
Normal file
19
3rdparty/boost/boost/config/compiler/diab.hpp
vendored
Normal file
@ -0,0 +1,19 @@
|
||||
// (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_HAS_LONG_LONG
|
||||
#define BOOST_NO_TWO_PHASE_NAME_LOOKUP
|
||||
#define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
|
||||
#define BOOST_NO_CXX11_HDR_CODECVT
|
||||
#define BOOST_COMPILER "Wind River Diab " BOOST_STRINGIZE(__VERSION_NUMBER__)
|
@ -71,6 +71,7 @@
|
||||
#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
|
||||
@ -113,6 +114,17 @@
|
||||
# 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 (__DMC__ <= 0x840)
|
||||
#error "Compiler not supported or configured - please reconfigure"
|
||||
#endif
|
||||
|
23
3rdparty/boost/boost/config/compiler/gcc.hpp
vendored
23
3rdparty/boost/boost/config/compiler/gcc.hpp
vendored
@ -253,6 +253,7 @@
|
||||
#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
|
||||
@ -287,6 +288,28 @@
|
||||
# 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 __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
|
||||
|
12
3rdparty/boost/boost/config/compiler/gcc_xml.hpp
vendored
12
3rdparty/boost/boost/config/compiler/gcc_xml.hpp
vendored
@ -46,6 +46,7 @@
|
||||
# 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
|
||||
@ -91,6 +92,17 @@
|
||||
# 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
|
||||
|
||||
#define BOOST_COMPILER "GCC-XML C++ version " __GCCXML__
|
||||
|
||||
|
||||
|
@ -114,6 +114,7 @@
|
||||
#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
|
||||
|
24
3rdparty/boost/boost/config/compiler/intel.hpp
vendored
24
3rdparty/boost/boost/config/compiler/intel.hpp
vendored
@ -35,15 +35,24 @@
|
||||
|
||||
#endif
|
||||
|
||||
#else
|
||||
#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
|
||||
|
||||
// Broken in all versions up to 17 (newer versions not tested)
|
||||
#if (__INTEL_COMPILER <= 1700) && !defined(BOOST_NO_CXX14_CONSTEXPR)
|
||||
# define BOOST_NO_CXX14_CONSTEXPR
|
||||
#endif
|
||||
|
||||
#endif // defined(_MSC_VER)
|
||||
|
||||
#undef BOOST_COMPILER
|
||||
|
||||
#if defined(__INTEL_COMPILER)
|
||||
@ -88,7 +97,7 @@
|
||||
# define BOOST_INTEL_LINUX BOOST_INTEL
|
||||
#endif
|
||||
|
||||
#else
|
||||
#else // defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 1500) && (defined(_MSC_VER) || defined(__GNUC__))
|
||||
|
||||
#include <boost/config/compiler/common_edg.hpp>
|
||||
|
||||
@ -406,6 +415,11 @@ template<> struct assert_intrinsic_wchar_t<unsigned short> {};
|
||||
# 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:
|
||||
@ -479,7 +493,7 @@ template<> struct assert_intrinsic_wchar_t<unsigned short> {};
|
||||
# undef BOOST_NO_CXX11_FINAL
|
||||
#endif
|
||||
|
||||
#endif
|
||||
#endif // defined(BOOST_INTEL_STDCXX0X)
|
||||
|
||||
//
|
||||
// Broken in all versions up to 15:
|
||||
@ -526,10 +540,10 @@ template<> struct assert_intrinsic_wchar_t<unsigned short> {};
|
||||
# define BOOST_HAS_INT128
|
||||
#endif
|
||||
|
||||
#endif
|
||||
#endif // defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 1500) && (defined(_MSC_VER) || defined(__GNUC__))
|
||||
//
|
||||
// last known and checked version:
|
||||
#if (BOOST_INTEL_CXX_VERSION > 1500)
|
||||
#if (BOOST_INTEL_CXX_VERSION > 1700)
|
||||
# if defined(BOOST_ASSERT_CONFIG)
|
||||
# error "Unknown compiler version - please run the configure tests and report the results"
|
||||
# elif defined(_MSC_VER)
|
||||
|
@ -113,6 +113,7 @@
|
||||
#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
|
||||
@ -156,6 +157,17 @@
|
||||
# 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
|
||||
|
||||
#define BOOST_COMPILER "Metrowerks CodeWarrior C++ version " BOOST_STRINGIZE(BOOST_COMPILER_VERSION)
|
||||
|
||||
//
|
||||
|
12
3rdparty/boost/boost/config/compiler/mpw.hpp
vendored
12
3rdparty/boost/boost/config/compiler/mpw.hpp
vendored
@ -62,6 +62,7 @@
|
||||
#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
|
||||
@ -105,6 +106,17 @@
|
||||
# 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
|
||||
|
||||
//
|
||||
// versions check:
|
||||
// we don't support MPW prior to version 8.9:
|
||||
|
36
3rdparty/boost/boost/config/compiler/nvcc.hpp
vendored
36
3rdparty/boost/boost/config/compiler/nvcc.hpp
vendored
@ -11,6 +11,13 @@
|
||||
# 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__
|
||||
@ -19,6 +26,33 @@
|
||||
// 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 !defined(__CUDACC_VER__) || (__CUDACC_VER__ < 70500)
|
||||
#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
|
||||
// Most recent CUDA (8.0) has no constexpr support in msvc mode:
|
||||
#if defined(_MSC_VER)
|
||||
# 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
|
||||
|
||||
|
@ -12,7 +12,12 @@
|
||||
# define BOOST_COMPILER "PathScale EKOPath C++ Compiler version " __PATHSCALE__
|
||||
#endif
|
||||
|
||||
#if __PATHCC__ >= 4
|
||||
#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
|
||||
@ -37,6 +42,7 @@
|
||||
# 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
|
||||
@ -112,4 +118,15 @@
|
||||
#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
|
||||
#endif
|
||||
|
12
3rdparty/boost/boost/config/compiler/pgi.hpp
vendored
12
3rdparty/boost/boost/config/compiler/pgi.hpp
vendored
@ -88,6 +88,7 @@
|
||||
#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_SWPRINTF
|
||||
#define BOOST_NO_CXX11_TEMPLATE_ALIASES
|
||||
@ -150,6 +151,17 @@
|
||||
#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
|
||||
//
|
||||
// version check:
|
||||
// probably nothing to do here?
|
||||
|
@ -141,6 +141,7 @@
|
||||
//
|
||||
# define BOOST_HAS_LONG_LONG
|
||||
|
||||
#define BOOST_NO_CXX11_SFINAE_EXPR
|
||||
|
||||
// C++ 14:
|
||||
#if !defined(__cpp_aggregate_nsdmi) || (__cpp_aggregate_nsdmi < 201304)
|
||||
@ -152,7 +153,7 @@
|
||||
#if !defined(__cpp_constexpr) || (__cpp_constexpr < 201304)
|
||||
# define BOOST_NO_CXX14_CONSTEXPR
|
||||
#endif
|
||||
#if !defined(__cpp_decltype_auto) || (__cpp_decltype_auto < 201304)
|
||||
#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....
|
||||
@ -171,6 +172,17 @@
|
||||
# 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
|
||||
|
||||
// Turn on threading support for Solaris 12.
|
||||
// Ticket #11972
|
||||
#if (__SUNPRO_CC >= 0x5140) && defined(__SunOS_5_12) && !defined(BOOST_HAS_THREADS)
|
||||
|
12
3rdparty/boost/boost/config/compiler/vacpp.hpp
vendored
12
3rdparty/boost/boost/config/compiler/vacpp.hpp
vendored
@ -114,6 +114,7 @@
|
||||
# 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
|
||||
@ -161,3 +162,14 @@
|
||||
#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
|
||||
|
50
3rdparty/boost/boost/config/compiler/visualc.hpp
vendored
50
3rdparty/boost/boost/config/compiler/visualc.hpp
vendored
@ -107,7 +107,7 @@
|
||||
//
|
||||
// TR1 features:
|
||||
//
|
||||
#if _MSC_VER >= 1700
|
||||
#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
|
||||
@ -190,6 +190,18 @@
|
||||
# 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
|
||||
#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
|
||||
@ -210,13 +222,31 @@
|
||||
// C++ 11:
|
||||
//
|
||||
#define BOOST_NO_TWO_PHASE_NAME_LOOKUP
|
||||
//
|
||||
#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_constexpr) || (__cpp_constexpr < 201304)
|
||||
# define BOOST_NO_CXX14_CONSTEXPR
|
||||
// C++ 17:
|
||||
#define BOOST_NO_CXX17_INLINE_VARIABLES
|
||||
#define BOOST_NO_CXX17_FOLD_EXPRESSIONS
|
||||
|
||||
//
|
||||
// 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
|
||||
|
||||
//
|
||||
@ -283,8 +313,10 @@
|
||||
# define BOOST_COMPILER_VERSION 11.0
|
||||
# elif _MSC_VER < 1900
|
||||
# define BOOST_COMPILER_VERSION 12.0
|
||||
# elif _MSC_VER < 2000
|
||||
# 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
|
||||
@ -294,8 +326,8 @@
|
||||
#endif
|
||||
|
||||
//
|
||||
// last known and checked version is 19.00.23026 (VC++ 2015 RTM):
|
||||
#if (_MSC_VER > 1900)
|
||||
// last known and checked version is 19.11.25506 (VC++ 2017.3):
|
||||
#if (_MSC_VER > 1911)
|
||||
# if defined(BOOST_ASSERT_CONFIG)
|
||||
# error "Unknown compiler version - please run the configure tests and report the results"
|
||||
# else
|
||||
|
14
3rdparty/boost/boost/config/compiler/xlcpp.hpp
vendored
14
3rdparty/boost/boost/config/compiler/xlcpp.hpp
vendored
@ -23,6 +23,10 @@
|
||||
#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
|
||||
@ -238,6 +242,16 @@
|
||||
# define BOOST_NO_CXX14_VARIABLE_TEMPLATES
|
||||
#endif
|
||||
|
||||
#if !defined(__cpp_structured_bindings) || (__cpp_structured_bindings < 201606)
|
||||
# define BOOST_NO_CXX17_STRUCTURED_BINDINGS
|
||||
#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
|
||||
|
168
3rdparty/boost/boost/config/compiler/xlcpp_zos.hpp
vendored
Normal file
168
3rdparty/boost/boost/config/compiler/xlcpp_zos.hpp
vendored
Normal file
@ -0,0 +1,168 @@
|
||||
// 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
|
||||
|
||||
// -------------------------------------
|
||||
|
||||
#if defined(__IBM_ATTRIBUTES)
|
||||
# define BOOST_FORCEINLINE inline __attribute__ ((__always_inline__))
|
||||
# define BOOST_NOINLINE __attribute__ ((__noinline__))
|
||||
// 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)
|
@ -48,6 +48,10 @@
|
||||
// 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(__GNUC__) && !defined(__ibmxl__)
|
||||
// GNU C++:
|
||||
# define BOOST_COMPILER_CONFIG "boost/config/compiler/gcc.hpp"
|
||||
@ -92,8 +96,12 @@
|
||||
// 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)
|
||||
// IBM XL C/C++ for Linux (Little Endian)
|
||||
# define BOOST_COMPILER_CONFIG "boost/config/compiler/xlcpp.hpp"
|
||||
|
||||
#elif defined(__IBMCPP__)
|
||||
@ -140,6 +148,8 @@
|
||||
#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>
|
@ -53,8 +53,12 @@
|
||||
// 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
|
||||
// IBM AIX
|
||||
# define BOOST_PLATFORM_CONFIG "boost/config/platform/aix.hpp"
|
||||
|
||||
#elif defined(__amigaos__)
|
||||
@ -97,7 +101,7 @@
|
||||
# define BOOST_HAS_UNISTD_H
|
||||
# endif
|
||||
|
||||
# include <boost/config/posix_features.hpp>
|
||||
# include <boost/config/detail/posix_features.hpp>
|
||||
|
||||
# endif
|
||||
|
||||
@ -122,6 +126,7 @@
|
||||
# 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"
|
||||
@ -129,7 +134,7 @@
|
||||
# include "boost/config/platform/symbian.hpp"
|
||||
# include "boost/config/platform/cray.hpp"
|
||||
# include "boost/config/platform/vms.hpp"
|
||||
# include <boost/config/posix_features.hpp>
|
||||
# include <boost/config/detail/posix_features.hpp>
|
||||
|
||||
|
||||
|
@ -66,6 +66,10 @@
|
||||
// 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"
|
||||
@ -98,6 +102,7 @@
|
||||
# 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"
|
@ -583,6 +583,25 @@ namespace std{ using ::type_info; }
|
||||
# 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_FORCEINLINE ---------------------------------------------//
|
||||
// Macro to use in place of 'inline' to force a function to be inline
|
||||
#if !defined(BOOST_FORCEINLINE)
|
||||
@ -604,7 +623,7 @@ namespace std{ using ::type_info; }
|
||||
# elif defined(__GNUC__) && __GNUC__ > 3
|
||||
// Clang also defines __GNUC__ (as 4)
|
||||
# if defined(__CUDACC__)
|
||||
// nvcc doesn't always parse __noinline__,
|
||||
// nvcc doesn't always parse __noinline__,
|
||||
// see: https://svn.boost.org/trac/boost/ticket/9392
|
||||
# define BOOST_NOINLINE __attribute__ ((noinline))
|
||||
# else
|
||||
@ -624,7 +643,7 @@ namespace std{ using ::type_info; }
|
||||
# define BOOST_NORETURN __declspec(noreturn)
|
||||
# elif defined(__GNUC__)
|
||||
# define BOOST_NORETURN __attribute__ ((__noreturn__))
|
||||
# elif defined(__has_attribute) && defined(__SUNPRO_CC)
|
||||
# elif defined(__has_attribute) && defined(__SUNPRO_CC) && (__SUNPRO_CC > 0x5130)
|
||||
# if __has_attribute(noreturn)
|
||||
# define BOOST_NORETURN [[noreturn]]
|
||||
# endif
|
||||
@ -657,15 +676,17 @@ namespace std{ using ::type_info; }
|
||||
|
||||
// Type and data alignment specification
|
||||
//
|
||||
#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)
|
||||
#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
|
2
3rdparty/boost/boost/config/platform/aix.hpp
vendored
2
3rdparty/boost/boost/config/platform/aix.hpp
vendored
@ -26,7 +26,7 @@
|
||||
//#define BOOST_HAS_PTHREAD_YIELD
|
||||
|
||||
// boilerplate code:
|
||||
#include <boost/config/posix_features.hpp>
|
||||
#include <boost/config/detail/posix_features.hpp>
|
||||
|
||||
|
||||
|
||||
|
@ -20,7 +20,7 @@
|
||||
#endif
|
||||
|
||||
// boilerplate code:
|
||||
#include <boost/config/posix_features.hpp>
|
||||
#include <boost/config/detail/posix_features.hpp>
|
||||
|
||||
|
||||
|
||||
|
2
3rdparty/boost/boost/config/platform/bsd.hpp
vendored
2
3rdparty/boost/boost/config/platform/bsd.hpp
vendored
@ -77,7 +77,7 @@
|
||||
|
||||
// boilerplate code:
|
||||
#define BOOST_HAS_UNISTD_H
|
||||
#include <boost/config/posix_features.hpp>
|
||||
#include <boost/config/detail/posix_features.hpp>
|
||||
|
||||
|
||||
|
||||
|
@ -12,7 +12,7 @@
|
||||
|
||||
// boilerplate code:
|
||||
#define BOOST_HAS_UNISTD_H
|
||||
#include <boost/config/posix_features.hpp>
|
||||
#include <boost/config/detail/posix_features.hpp>
|
||||
|
||||
|
||||
|
||||
|
@ -23,7 +23,7 @@
|
||||
# define BOOST_HAS_SCHED_YIELD
|
||||
# define BOOST_HAS_GETTIMEOFDAY
|
||||
# define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
|
||||
# define BOOST_HAS_SIGACTION
|
||||
//# define BOOST_HAS_SIGACTION
|
||||
#else
|
||||
# if !defined(BOOST_HAS_WINTHREADS)
|
||||
# define BOOST_HAS_WINTHREADS
|
||||
@ -43,7 +43,7 @@
|
||||
#define BOOST_NO_FENV_H
|
||||
|
||||
// boilerplate code:
|
||||
#include <boost/config/posix_features.hpp>
|
||||
#include <boost/config/detail/posix_features.hpp>
|
||||
|
||||
//
|
||||
// Cygwin lies about XSI conformance, there is no nl_types.h:
|
||||
@ -51,7 +51,6 @@
|
||||
#ifdef BOOST_HAS_NL_TYPES_H
|
||||
# undef BOOST_HAS_NL_TYPES_H
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -28,4 +28,4 @@
|
||||
#define BOOST_HAS_GETTIMEOFDAY
|
||||
|
||||
// boilerplate code:
|
||||
#include <boost/config/posix_features.hpp>
|
||||
#include <boost/config/detail/posix_features.hpp>
|
||||
|
@ -43,7 +43,7 @@
|
||||
|
||||
// boilerplate code:
|
||||
#define BOOST_HAS_UNISTD_H
|
||||
#include <boost/config/posix_features.hpp>
|
||||
#include <boost/config/detail/posix_features.hpp>
|
||||
|
||||
// the following are always available:
|
||||
#ifndef BOOST_HAS_GETTIMEOFDAY
|
||||
|
@ -25,7 +25,7 @@
|
||||
|
||||
// boilerplate code:
|
||||
#define BOOST_HAS_UNISTD_H
|
||||
#include <boost/config/posix_features.hpp>
|
||||
#include <boost/config/detail/posix_features.hpp>
|
||||
|
||||
|
||||
|
||||
|
@ -24,8 +24,9 @@
|
||||
#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.
|
||||
# if defined __GNUC__
|
||||
// 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
|
||||
@ -71,7 +72,7 @@
|
||||
|
||||
// boilerplate code:
|
||||
#define BOOST_HAS_UNISTD_H
|
||||
#include <boost/config/posix_features.hpp>
|
||||
#include <boost/config/detail/posix_features.hpp>
|
||||
#if defined(__USE_GNU) && !defined(__ANDROID__) && !defined(ANDROID)
|
||||
#define BOOST_HAS_PTHREAD_YIELD
|
||||
#endif
|
||||
|
@ -25,7 +25,7 @@
|
||||
// to replace the platform-native BSD one. G++ users
|
||||
// should also always be able to do this on MaxOS X.
|
||||
//
|
||||
# include <boost/config/posix_features.hpp>
|
||||
# include <boost/config/detail/posix_features.hpp>
|
||||
# ifndef BOOST_HAS_STDINT_H
|
||||
# define BOOST_HAS_STDINT_H
|
||||
# endif
|
||||
|
@ -10,7 +10,7 @@
|
||||
#define BOOST_PLATFORM "QNX"
|
||||
|
||||
#define BOOST_HAS_UNISTD_H
|
||||
#include <boost/config/posix_features.hpp>
|
||||
#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:
|
||||
|
@ -14,7 +14,7 @@
|
||||
|
||||
// boilerplate code:
|
||||
#define BOOST_HAS_UNISTD_H
|
||||
#include <boost/config/posix_features.hpp>
|
||||
#include <boost/config/detail/posix_features.hpp>
|
||||
|
||||
//
|
||||
// pthreads don't actually work with gcc unless _PTHREADS is defined:
|
||||
|
@ -24,7 +24,7 @@
|
||||
#include <stdlib.h>
|
||||
#endif// boilerplate code:
|
||||
# define BOOST_HAS_UNISTD_H
|
||||
# include <boost/config/posix_features.hpp>
|
||||
# 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
|
||||
|
41
3rdparty/boost/boost/config/platform/vxworks.hpp
vendored
41
3rdparty/boost/boost/config/platform/vxworks.hpp
vendored
@ -180,7 +180,7 @@
|
||||
// Luckily, at the moment there seems to be none!
|
||||
#endif
|
||||
|
||||
// These #defines allow posix_features to work, since vxWorks doesn't
|
||||
// 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
|
||||
@ -286,10 +286,8 @@ inline ssize_t readlink(const char*, char*, size_t){
|
||||
return -1;
|
||||
}
|
||||
|
||||
// vxWorks claims to implement gettimeofday in sys/time.h
|
||||
// but nevertheless does not provide it! See
|
||||
// https://support.windriver.com/olsPortal/faces/maintenance/techtipDetail_noHeader.jspx?docId=16442&contentId=WR_TECHTIP_006256
|
||||
// We implement a surrogate version here via clock_gettime:
|
||||
#if (_WRS_VXWORKS_MAJOR < 7)
|
||||
|
||||
inline int gettimeofday(struct timeval *tv, void * /*tzv*/) {
|
||||
struct timespec ts;
|
||||
clock_gettime(CLOCK_MONOTONIC, &ts);
|
||||
@ -297,6 +295,8 @@ inline int gettimeofday(struct timeval *tv, void * /*tzv*/) {
|
||||
tv->tv_usec = ts.tv_nsec / 1000;
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
// vxWorks does provide neither struct tms nor function times()!
|
||||
// We implement an empty dummy-function, simply setting the user
|
||||
@ -327,6 +327,7 @@ inline clock_t times(struct tms *t){
|
||||
return ticks;
|
||||
}
|
||||
|
||||
extern void bzero (void *, size_t); // FD_ZERO uses bzero() but doesn't include strings.h
|
||||
} // extern "C"
|
||||
|
||||
// Put the selfmade functions into the std-namespace, just in case
|
||||
@ -349,21 +350,43 @@ namespace std {
|
||||
// Include signal.h which might contain a typo to be corrected here
|
||||
#include <signal.h>
|
||||
|
||||
#define getpagesize() sysconf(_SC_PAGESIZE) // getpagesize is deprecated anyway!
|
||||
inline int getpagesize() { return sysconf(_SC_PAGESIZE); } // getpagesize is deprecated anyway!
|
||||
#ifndef S_ISSOCK
|
||||
# define S_ISSOCK(mode) ((mode & S_IFMT) == S_IFSOCK) // Is file a socket?
|
||||
#endif
|
||||
#define lstat(p, b) stat(p, b) // lstat() == stat(), as vxWorks has no symlinks!
|
||||
inline int lstat(p, b) { return stat(p, b); } // lstat() == stat(), as vxWorks has no symlinks!
|
||||
#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 unpresent in vxWorks!
|
||||
typedef int locale_t; // locale_t is a POSIX-extension, currently not present in vxWorks!
|
||||
|
||||
// #include boilerplate code:
|
||||
#include <boost/config/posix_features.hpp>
|
||||
#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 Dinkum STL version and GCC version (or ICC and DCC)
|
||||
|
||||
#ifndef _WRS_CONFIG_LANG_LIB_CPLUS_CPLUS_USER_2011
|
||||
# define BOOST_NO_CXX11_HDR_ARRAY
|
||||
# define BOOST_NO_CXX11_HDR_TYPEINDEX
|
||||
# define BOOST_NO_CXX11_HDR_TYPE_TRAITS
|
||||
# define BOOST_NO_CXX11_HDR_TUPLE
|
||||
# define BOOST_NO_CXX11_ALLOCATOR
|
||||
# define BOOST_NO_CXX11_SMART_PTR
|
||||
# define BOOST_NO_CXX11_STD_ALIGN
|
||||
# define BOOST_NO_CXX11_HDR_UNORDERED_SET
|
||||
# define BOOST_NO_CXX11_HDR_TYPE_TRAITS
|
||||
# define BOOST_NO_CXX11_HDR_UNORDERED_MAP
|
||||
# define BOOST_NO_CXX11_HDR_FUNCTIONAL
|
||||
# define BOOST_NO_CXX11_HDR_ATOMIC
|
||||
#else
|
||||
# define BOOST_NO_CXX11_NULLPTR
|
||||
#endif
|
||||
|
||||
|
32
3rdparty/boost/boost/config/platform/zos.hpp
vendored
Normal file
32
3rdparty/boost/boost/config/platform/zos.hpp
vendored
Normal file
@ -0,0 +1,32 @@
|
||||
// Copyright (c) 2017 Dynatrace
|
||||
//
|
||||
// Distributed under the Boost Software License, Version 1.0.
|
||||
// See accompanying file LICENSE_1_0.txt or copy at
|
||||
// http://www.boost.org/LICENSE_1_0.txt
|
||||
|
||||
// See http://www.boost.org for most recent version.
|
||||
|
||||
// Platform setup for IBM z/OS.
|
||||
|
||||
#define BOOST_PLATFORM "IBM z/OS"
|
||||
|
||||
#include <features.h> // For __UU, __C99, __TR1, ...
|
||||
|
||||
#if defined(__UU)
|
||||
# define BOOST_HAS_GETTIMEOFDAY
|
||||
#endif
|
||||
|
||||
#if defined(_OPEN_THREADS) || defined(__SUSV3_THR)
|
||||
# define BOOST_HAS_PTHREADS
|
||||
# define BOOST_HAS_PTHREAD_MUTEXATTR_SETTYPE
|
||||
# define BOOST_HAS_THREADS
|
||||
#endif
|
||||
|
||||
#if defined(__SUSV3) || defined(__SUSV3_THR)
|
||||
# define BOOST_HAS_SCHED_YIELD
|
||||
#endif
|
||||
|
||||
#define BOOST_HAS_SIGACTION
|
||||
#define BOOST_HAS_UNISTD_H
|
||||
#define BOOST_HAS_DIRENT_H
|
||||
#define BOOST_HAS_NL_TYPES_H
|
@ -147,16 +147,36 @@
|
||||
# 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
|
||||
#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
|
||||
#endif
|
||||
#if !defined(_CPPLIB_VER) || (_CPPLIB_VER < 650)
|
||||
# define BOOST_NO_CXX17_STD_INVOKE
|
||||
#endif
|
||||
|
||||
#if defined(BOOST_INTEL) && (BOOST_INTEL <= 1400)
|
||||
// Intel's compiler can't handle this header yet:
|
||||
# define BOOST_NO_CXX11_HDR_ATOMIC
|
||||
@ -177,14 +197,47 @@
|
||||
#endif
|
||||
|
||||
#if defined(_CPPLIB_VER) && (_CPPLIB_VER >= 650)
|
||||
// If _HAS_AUTO_PTR_ETC is defined to 0, std::auto_ptr is not available.
|
||||
// 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
|
||||
|
@ -55,6 +55,7 @@
|
||||
# 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
|
||||
@ -72,6 +73,13 @@
|
||||
# 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
|
||||
|
||||
//
|
||||
// Intrinsic type_traits support.
|
||||
// The SGI STL has it's own __type_traits class, which
|
||||
|
32
3rdparty/boost/boost/config/stdlib/libcpp.hpp
vendored
32
3rdparty/boost/boost/config/stdlib/libcpp.hpp
vendored
@ -29,13 +29,18 @@
|
||||
// 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
|
||||
# define BOOST_NO_CXX11_HDR_ARRAY
|
||||
//
|
||||
// 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_FORWARD_LIST
|
||||
# define BOOST_NO_CXX11_HDR_INITIALIZER_LIST
|
||||
# define BOOST_NO_CXX11_HDR_MUTEX
|
||||
# define BOOST_NO_CXX11_HDR_RANDOM
|
||||
@ -49,6 +54,7 @@
|
||||
# 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
|
||||
@ -75,6 +81,28 @@
|
||||
#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 < 3700) || (__cplusplus <= 201402L)
|
||||
# define BOOST_NO_CXX17_STD_INVOKE
|
||||
#endif
|
||||
#if (_LIBCPP_VERSION < 4000) || (__cplusplus <= 201402L)
|
||||
# define BOOST_NO_CXX17_STD_APPLY
|
||||
#endif
|
||||
#if (_LIBCPP_VERSION > 4000) && (__cplusplus > 201402L) && !defined(_LIBCPP_ENABLE_CXX17_REMOVED_AUTO_PTR)
|
||||
# define BOOST_NO_AUTO_PTR
|
||||
#endif
|
||||
#if (_LIBCPP_VERSION > 4000) && (__cplusplus > 201402L) && !defined(_LIBCPP_ENABLE_CXX17_REMOVED_RANDOM_SHUFFLE)
|
||||
# define BOOST_NO_CXX98_RANDOM_SHUFFLE
|
||||
#endif
|
||||
#if (_LIBCPP_VERSION > 4000) && (__cplusplus > 201402L) && !defined(_LIBCPP_ENABLE_CXX17_REMOVED_BINDERS)
|
||||
# define BOOST_NO_CXX98_BINDERS
|
||||
#endif
|
||||
|
||||
#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
|
||||
|
@ -98,10 +98,11 @@
|
||||
#if defined(__GXX_EXPERIMENTAL_CXX0X__) || (__cplusplus >= 201103)
|
||||
# define BOOST_LIBSTDCXX11
|
||||
#endif
|
||||
|
||||
//
|
||||
// Decide which version of libstdc++ we have, normally
|
||||
// stdlibc++ C++0x support is detected via __GNUC__, __GNUC_MINOR__, and possibly
|
||||
// __GNUC_PATCHLEVEL__ at the suggestion of Jonathan Wakely, one of the stdlibc++
|
||||
// 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
|
||||
@ -109,7 +110,7 @@
|
||||
// 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 stdlibc++ features is:
|
||||
// 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
|
||||
@ -122,7 +123,9 @@
|
||||
//
|
||||
#ifdef __clang__
|
||||
|
||||
#if __has_include(<experimental/any>)
|
||||
#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
|
||||
@ -139,6 +142,38 @@
|
||||
#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
|
||||
@ -218,9 +253,10 @@
|
||||
//
|
||||
#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 truely conforming one.
|
||||
// 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
|
||||
//
|
||||
@ -236,6 +272,9 @@
|
||||
// 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:
|
||||
@ -251,6 +290,16 @@
|
||||
# define BOOST_NO_CXX11_STD_ALIGN
|
||||
#endif
|
||||
|
||||
//
|
||||
// C++17 features in GCC 6.1 and later
|
||||
//
|
||||
#if (BOOST_LIBSTDCXX_VERSION < 60100) || (__cplusplus <= 201402L)
|
||||
# define BOOST_NO_CXX17_STD_INVOKE
|
||||
#endif
|
||||
#if (BOOST_LIBSTDCXX_VERSION < 70100) || (__cplusplus <= 201402L)
|
||||
# define BOOST_NO_CXX17_STD_APPLY
|
||||
#endif
|
||||
|
||||
#if defined(__has_include)
|
||||
#if !__has_include(<shared_mutex>)
|
||||
# define BOOST_NO_CXX14_HDR_SHARED_MUTEX
|
||||
|
@ -44,6 +44,7 @@
|
||||
# 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
|
||||
@ -61,6 +62,13 @@
|
||||
# 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_STDLIB "Modena C++ standard library"
|
||||
|
||||
|
||||
|
10
3rdparty/boost/boost/config/stdlib/msl.hpp
vendored
10
3rdparty/boost/boost/config/stdlib/msl.hpp
vendored
@ -34,7 +34,7 @@
|
||||
# define BOOST_HAS_UNISTD_H
|
||||
# endif
|
||||
// boilerplate code:
|
||||
# include <boost/config/posix_features.hpp>
|
||||
# include <boost/config/detail/posix_features.hpp>
|
||||
#endif
|
||||
|
||||
#if defined(_MWMT) || _MSL_THREADSAFE
|
||||
@ -68,6 +68,7 @@
|
||||
# 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
|
||||
@ -85,4 +86,11 @@
|
||||
# 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_STDLIB "Metrowerks Standard Library version " BOOST_STRINGIZE(__MSL_CPP__)
|
||||
|
@ -180,6 +180,7 @@
|
||||
# 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
|
||||
@ -196,3 +197,10 @@
|
||||
#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
|
||||
|
10
3rdparty/boost/boost/config/stdlib/sgi.hpp
vendored
10
3rdparty/boost/boost/config/stdlib/sgi.hpp
vendored
@ -138,6 +138,7 @@
|
||||
# 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
|
||||
@ -155,4 +156,11 @@
|
||||
# define BOOST_NO_CXX14_HDR_SHARED_MUTEX
|
||||
#endif
|
||||
|
||||
#define BOOST_STDLIB "SGI standard library"
|
||||
// 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_STDLIB "SGI standard library"
|
||||
|
@ -228,6 +228,7 @@ namespace boost { using std::min; using std::max; }
|
||||
# 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
|
||||
@ -245,4 +246,11 @@ namespace boost { using std::min; using std::max; }
|
||||
# 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_STDLIB "STLPort standard library version " BOOST_STRINGIZE(__SGI_STL_PORT)
|
||||
|
8
3rdparty/boost/boost/config/stdlib/vacpp.hpp
vendored
8
3rdparty/boost/boost/config/stdlib/vacpp.hpp
vendored
@ -44,6 +44,7 @@
|
||||
# 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
|
||||
@ -61,4 +62,11 @@
|
||||
# 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_STDLIB "Visual Age default standard library"
|
||||
|
59
3rdparty/boost/boost/config/stdlib/xlcpp_zos.hpp
vendored
Normal file
59
3rdparty/boost/boost/config/stdlib/xlcpp_zos.hpp
vendored
Normal file
@ -0,0 +1,59 @@
|
||||
// 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
|
277
3rdparty/boost/boost/config/workaround.hpp
vendored
Normal file
277
3rdparty/boost/boost/config/workaround.hpp
vendored
Normal file
@ -0,0 +1,277 @@
|
||||
// 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
|
||||
#else
|
||||
#define BOOST_GCC_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
|
354
3rdparty/boost/boost/core/addressof.hpp
vendored
354
3rdparty/boost/boost/core/addressof.hpp
vendored
@ -1,162 +1,274 @@
|
||||
// Copyright (C) 2002 Brad King (brad.king@kitware.com)
|
||||
// Douglas Gregor (gregod@cs.rpi.edu)
|
||||
//
|
||||
// Copyright (C) 2002, 2008, 2013 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)
|
||||
/*
|
||||
Copyright (C) 2002 Brad King (brad.king@kitware.com)
|
||||
Douglas Gregor (gregod@cs.rpi.edu)
|
||||
|
||||
// For more information, see http://www.boost.org
|
||||
Copyright (C) 2002, 2008, 2013 Peter Dimov
|
||||
|
||||
Copyright (C) 2017 Glen Joseph Fernandes (glenjofe@gmail.com)
|
||||
|
||||
Distributed under the 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_CORE_ADDRESSOF_HPP
|
||||
#define BOOST_CORE_ADDRESSOF_HPP
|
||||
|
||||
# include <boost/config.hpp>
|
||||
# include <boost/detail/workaround.hpp>
|
||||
# include <cstddef>
|
||||
#include <boost/config.hpp>
|
||||
|
||||
namespace boost
|
||||
#if defined(BOOST_MSVC_FULL_VER) && BOOST_MSVC_FULL_VER >= 190024215
|
||||
#define BOOST_CORE_HAS_BUILTIN_ADDRESSOF
|
||||
#elif defined(BOOST_GCC) && BOOST_GCC >= 70000
|
||||
#define BOOST_CORE_HAS_BUILTIN_ADDRESSOF
|
||||
#elif defined(__has_builtin)
|
||||
#if __has_builtin(__builtin_addressof)
|
||||
#define BOOST_CORE_HAS_BUILTIN_ADDRESSOF
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(BOOST_CORE_HAS_BUILTIN_ADDRESSOF)
|
||||
#if defined(BOOST_NO_CXX11_CONSTEXPR)
|
||||
#define BOOST_CORE_NO_CONSTEXPR_ADDRESSOF
|
||||
#endif
|
||||
|
||||
namespace boost {
|
||||
|
||||
template<class T>
|
||||
BOOST_CONSTEXPR inline T*
|
||||
addressof(T& o) BOOST_NOEXCEPT
|
||||
{
|
||||
return __builtin_addressof(o);
|
||||
}
|
||||
|
||||
namespace detail
|
||||
{
|
||||
|
||||
template<class T> struct addr_impl_ref
|
||||
{
|
||||
T & v_;
|
||||
|
||||
BOOST_FORCEINLINE addr_impl_ref( T & v ): v_( v ) {}
|
||||
BOOST_FORCEINLINE operator T& () const { return v_; }
|
||||
|
||||
private:
|
||||
addr_impl_ref & operator=(const addr_impl_ref &);
|
||||
};
|
||||
|
||||
template<class T> struct addressof_impl
|
||||
{
|
||||
static BOOST_FORCEINLINE T * f( T & v, long )
|
||||
{
|
||||
return reinterpret_cast<T*>(
|
||||
&const_cast<char&>(reinterpret_cast<const volatile char &>(v)));
|
||||
}
|
||||
|
||||
static BOOST_FORCEINLINE T * f( T * v, int )
|
||||
{
|
||||
return v;
|
||||
}
|
||||
};
|
||||
|
||||
#if !defined( BOOST_NO_CXX11_NULLPTR )
|
||||
|
||||
#if !defined( BOOST_NO_CXX11_DECLTYPE ) && ( ( defined( __clang__ ) && !defined( _LIBCPP_VERSION ) ) || defined( __INTEL_COMPILER ) )
|
||||
|
||||
typedef decltype(nullptr) addr_nullptr_t;
|
||||
|
||||
} /* boost */
|
||||
#else
|
||||
#include <boost/config/workaround.hpp>
|
||||
#include <cstddef>
|
||||
|
||||
typedef std::nullptr_t addr_nullptr_t;
|
||||
namespace boost {
|
||||
namespace detail {
|
||||
|
||||
template<class T>
|
||||
class addressof_ref {
|
||||
public:
|
||||
BOOST_FORCEINLINE addressof_ref(T& o) BOOST_NOEXCEPT
|
||||
: o_(o) { }
|
||||
BOOST_FORCEINLINE operator T&() const BOOST_NOEXCEPT {
|
||||
return o_;
|
||||
}
|
||||
private:
|
||||
addressof_ref& operator=(const addressof_ref&);
|
||||
T& o_;
|
||||
};
|
||||
|
||||
template<class T>
|
||||
struct address_of {
|
||||
static BOOST_FORCEINLINE T* get(T& o, long) BOOST_NOEXCEPT {
|
||||
return reinterpret_cast<T*>(&
|
||||
const_cast<char&>(reinterpret_cast<const volatile char&>(o)));
|
||||
}
|
||||
static BOOST_FORCEINLINE T* get(T* p, int) BOOST_NOEXCEPT {
|
||||
return p;
|
||||
}
|
||||
};
|
||||
|
||||
#if !defined(BOOST_NO_CXX11_NULLPTR)
|
||||
#if !defined(BOOST_NO_CXX11_DECLTYPE) && \
|
||||
(defined(__INTEL_COMPILER) || \
|
||||
(defined(__clang__) && !defined(_LIBCPP_VERSION)))
|
||||
typedef decltype(nullptr) addressof_null_t;
|
||||
#else
|
||||
typedef std::nullptr_t addressof_null_t;
|
||||
#endif
|
||||
|
||||
template<> struct addressof_impl< addr_nullptr_t >
|
||||
{
|
||||
typedef addr_nullptr_t T;
|
||||
|
||||
static BOOST_FORCEINLINE T * f( T & v, int )
|
||||
{
|
||||
return &v;
|
||||
template<>
|
||||
struct address_of<addressof_null_t> {
|
||||
typedef addressof_null_t type;
|
||||
static BOOST_FORCEINLINE type* get(type& o, int) BOOST_NOEXCEPT {
|
||||
return &o;
|
||||
}
|
||||
};
|
||||
|
||||
template<> struct addressof_impl< addr_nullptr_t const >
|
||||
{
|
||||
typedef addr_nullptr_t const T;
|
||||
|
||||
static BOOST_FORCEINLINE T * f( T & v, int )
|
||||
{
|
||||
return &v;
|
||||
template<>
|
||||
struct address_of<const addressof_null_t> {
|
||||
typedef const addressof_null_t type;
|
||||
static BOOST_FORCEINLINE type* get(type& o, int) BOOST_NOEXCEPT {
|
||||
return &o;
|
||||
}
|
||||
};
|
||||
|
||||
template<> struct addressof_impl< addr_nullptr_t volatile >
|
||||
{
|
||||
typedef addr_nullptr_t volatile T;
|
||||
|
||||
static BOOST_FORCEINLINE T * f( T & v, int )
|
||||
{
|
||||
return &v;
|
||||
template<>
|
||||
struct address_of<volatile addressof_null_t> {
|
||||
typedef volatile addressof_null_t type;
|
||||
static BOOST_FORCEINLINE type* get(type& o, int) BOOST_NOEXCEPT {
|
||||
return &o;
|
||||
}
|
||||
};
|
||||
|
||||
template<> struct addressof_impl< addr_nullptr_t const volatile >
|
||||
{
|
||||
typedef addr_nullptr_t const volatile T;
|
||||
|
||||
static BOOST_FORCEINLINE T * f( T & v, int )
|
||||
{
|
||||
return &v;
|
||||
template<>
|
||||
struct address_of<const volatile addressof_null_t> {
|
||||
typedef const volatile addressof_null_t type;
|
||||
static BOOST_FORCEINLINE type* get(type& o, int) BOOST_NOEXCEPT {
|
||||
return &o;
|
||||
}
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
} // namespace detail
|
||||
} /* detail */
|
||||
|
||||
#if defined(BOOST_NO_CXX11_SFINAE_EXPR) || \
|
||||
defined(BOOST_NO_CXX11_CONSTEXPR) || \
|
||||
defined(BOOST_NO_CXX11_DECLTYPE)
|
||||
#define BOOST_CORE_NO_CONSTEXPR_ADDRESSOF
|
||||
|
||||
template<class T>
|
||||
BOOST_FORCEINLINE T*
|
||||
addressof(T& o) BOOST_NOEXCEPT
|
||||
{
|
||||
#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x610)) || \
|
||||
BOOST_WORKAROUND(__SUNPRO_CC, <= 0x5120)
|
||||
return detail::address_of<T>::get(o, 0);
|
||||
#else
|
||||
return detail::address_of<T>::get(detail::addressof_ref<T>(o), 0);
|
||||
#endif
|
||||
}
|
||||
|
||||
#if BOOST_WORKAROUND(__SUNPRO_CC, BOOST_TESTED_AT(0x590))
|
||||
namespace detail {
|
||||
|
||||
template<class T>
|
||||
struct addressof_result {
|
||||
typedef T* type;
|
||||
};
|
||||
|
||||
} /* detail */
|
||||
|
||||
template<class T, std::size_t N>
|
||||
BOOST_FORCEINLINE typename detail::addressof_result<T[N]>::type
|
||||
addressof(T (&o)[N]) BOOST_NOEXCEPT
|
||||
{
|
||||
return &o;
|
||||
}
|
||||
#endif
|
||||
|
||||
#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
|
||||
template<class T, std::size_t N>
|
||||
BOOST_FORCEINLINE
|
||||
T (*addressof(T (&o)[N]) BOOST_NOEXCEPT)[N]
|
||||
{
|
||||
return reinterpret_cast<T(*)[N]>(&o);
|
||||
}
|
||||
|
||||
template<class T, std::size_t N>
|
||||
BOOST_FORCEINLINE
|
||||
const T (*addressof(const T (&o)[N]) BOOST_NOEXCEPT)[N]
|
||||
{
|
||||
return reinterpret_cast<const T(*)[N]>(&o);
|
||||
}
|
||||
#endif
|
||||
#else
|
||||
namespace detail {
|
||||
|
||||
template<class T>
|
||||
T addressof_declval() BOOST_NOEXCEPT;
|
||||
|
||||
template<class>
|
||||
struct addressof_void {
|
||||
typedef void type;
|
||||
};
|
||||
|
||||
template<class T, class E = void>
|
||||
struct addressof_member_operator {
|
||||
static constexpr bool value = false;
|
||||
};
|
||||
|
||||
template<class T>
|
||||
struct addressof_member_operator<T, typename
|
||||
addressof_void<decltype(addressof_declval<T&>().operator&())>::type> {
|
||||
static constexpr bool value = true;
|
||||
};
|
||||
|
||||
#if BOOST_WORKAROUND(BOOST_INTEL, < 1600)
|
||||
struct addressof_addressable { };
|
||||
|
||||
addressof_addressable*
|
||||
operator&(addressof_addressable&) BOOST_NOEXCEPT;
|
||||
#endif
|
||||
|
||||
template<class T, class E = void>
|
||||
struct addressof_non_member_operator {
|
||||
static constexpr bool value = false;
|
||||
};
|
||||
|
||||
template<class T>
|
||||
struct addressof_non_member_operator<T, typename
|
||||
addressof_void<decltype(operator&(addressof_declval<T&>()))>::type> {
|
||||
static constexpr bool value = true;
|
||||
};
|
||||
|
||||
template<class T, class E = void>
|
||||
struct addressof_expression {
|
||||
static constexpr bool value = false;
|
||||
};
|
||||
|
||||
template<class T>
|
||||
struct addressof_expression<T,
|
||||
typename addressof_void<decltype(&addressof_declval<T&>())>::type> {
|
||||
static constexpr bool value = true;
|
||||
};
|
||||
|
||||
template<class T>
|
||||
struct addressof_is_constexpr {
|
||||
static constexpr bool value = addressof_expression<T>::value &&
|
||||
!addressof_member_operator<T>::value &&
|
||||
!addressof_non_member_operator<T>::value;
|
||||
};
|
||||
|
||||
template<bool E, class T>
|
||||
struct addressof_if { };
|
||||
|
||||
template<class T>
|
||||
struct addressof_if<true, T> {
|
||||
typedef T* type;
|
||||
};
|
||||
|
||||
template<class T>
|
||||
BOOST_FORCEINLINE
|
||||
T * addressof( T & v )
|
||||
typename addressof_if<!addressof_is_constexpr<T>::value, T>::type
|
||||
addressof(T& o) BOOST_NOEXCEPT
|
||||
{
|
||||
#if (defined( __BORLANDC__ ) && BOOST_WORKAROUND( __BORLANDC__, BOOST_TESTED_AT( 0x610 ) ) ) || (defined(__SUNPRO_CC) && BOOST_WORKAROUND(__SUNPRO_CC, <= 0x5120))
|
||||
|
||||
return boost::detail::addressof_impl<T>::f( v, 0 );
|
||||
|
||||
#else
|
||||
|
||||
return boost::detail::addressof_impl<T>::f( boost::detail::addr_impl_ref<T>( v ), 0 );
|
||||
|
||||
#endif
|
||||
return address_of<T>::get(addressof_ref<T>(o), 0);
|
||||
}
|
||||
|
||||
#if defined( __SUNPRO_CC ) && BOOST_WORKAROUND( __SUNPRO_CC, BOOST_TESTED_AT( 0x590 ) )
|
||||
|
||||
namespace detail
|
||||
template<class T>
|
||||
constexpr BOOST_FORCEINLINE
|
||||
typename addressof_if<addressof_is_constexpr<T>::value, T>::type
|
||||
addressof(T& o) BOOST_NOEXCEPT
|
||||
{
|
||||
|
||||
template<class T> struct addressof_addp
|
||||
{
|
||||
typedef T * type;
|
||||
};
|
||||
|
||||
} // namespace detail
|
||||
|
||||
template< class T, std::size_t N >
|
||||
BOOST_FORCEINLINE
|
||||
typename detail::addressof_addp< T[N] >::type addressof( T (&t)[N] )
|
||||
{
|
||||
return &t;
|
||||
return &o;
|
||||
}
|
||||
|
||||
#endif
|
||||
} /* detail */
|
||||
|
||||
// Borland doesn't like casting an array reference to a char reference
|
||||
// but these overloads work around the problem.
|
||||
#if defined( __BORLANDC__ ) && BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x564))
|
||||
template<typename T,std::size_t N>
|
||||
BOOST_FORCEINLINE
|
||||
T (*addressof(T (&t)[N]))[N]
|
||||
template<class T>
|
||||
constexpr BOOST_FORCEINLINE T*
|
||||
addressof(T& o) BOOST_NOEXCEPT
|
||||
{
|
||||
return reinterpret_cast<T(*)[N]>(&t);
|
||||
}
|
||||
|
||||
template<typename T,std::size_t N>
|
||||
BOOST_FORCEINLINE
|
||||
const T (*addressof(const T (&t)[N]))[N]
|
||||
{
|
||||
return reinterpret_cast<const T(*)[N]>(&t);
|
||||
return detail::addressof(o);
|
||||
}
|
||||
#endif
|
||||
|
||||
} // namespace boost
|
||||
} /* boost */
|
||||
#endif
|
||||
|
||||
#endif // BOOST_CORE_ADDRESSOF_HPP
|
||||
#if !defined(BOOST_NO_CXX11_RVALUE_REFERENCES) && \
|
||||
!defined(BOOST_NO_CXX11_DELETED_FUNCTIONS)
|
||||
namespace boost {
|
||||
|
||||
template<class T>
|
||||
const T* addressof(const T&&) = delete;
|
||||
|
||||
} /* boost */
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
13
3rdparty/boost/boost/core/demangle.hpp
vendored
13
3rdparty/boost/boost/core/demangle.hpp
vendored
@ -93,15 +93,10 @@ inline void demangle_free( char const * name ) BOOST_NOEXCEPT
|
||||
inline std::string demangle( char const * name )
|
||||
{
|
||||
scoped_demangled_name demangled_name( name );
|
||||
char const * const p = demangled_name.get();
|
||||
if( p )
|
||||
{
|
||||
return p;
|
||||
}
|
||||
else
|
||||
{
|
||||
return name;
|
||||
}
|
||||
char const * p = demangled_name.get();
|
||||
if( !p )
|
||||
p = name;
|
||||
return p;
|
||||
}
|
||||
|
||||
#else
|
||||
|
@ -21,7 +21,7 @@
|
||||
//----------------------------------------------------------------------
|
||||
|
||||
#include <boost/config.hpp>
|
||||
#include <boost/detail/workaround.hpp>
|
||||
#include <boost/config/workaround.hpp>
|
||||
|
||||
#if !(defined BOOST_NO_EXCEPTIONS)
|
||||
# define BOOST_TRY { try
|
||||
|
4
3rdparty/boost/boost/core/ref.hpp
vendored
4
3rdparty/boost/boost/core/ref.hpp
vendored
@ -8,8 +8,8 @@
|
||||
#endif
|
||||
|
||||
#include <boost/config.hpp>
|
||||
#include <boost/utility/addressof.hpp>
|
||||
#include <boost/detail/workaround.hpp>
|
||||
#include <boost/config/workaround.hpp>
|
||||
#include <boost/core/addressof.hpp>
|
||||
|
||||
//
|
||||
// ref.hpp - ref/cref, useful helper functions
|
||||
|
16
3rdparty/boost/boost/cstdint.hpp
vendored
16
3rdparty/boost/boost/cstdint.hpp
vendored
@ -374,7 +374,7 @@ namespace boost
|
||||
|| (defined(_XOPEN_UNIX) && (_XOPEN_UNIX+0 > 0) && !defined(__UCLIBC__)) \
|
||||
|| defined(__CYGWIN__) \
|
||||
|| defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__) \
|
||||
|| defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) || defined(sun)
|
||||
|| defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__) || (defined(sun) && !defined(BOOST_HAS_STDINT_H)) || defined(INTPTR_MAX)
|
||||
|
||||
namespace boost {
|
||||
using ::intptr_t;
|
||||
@ -422,6 +422,20 @@ INT#_C macros if they're not already defined (John Maddock).
|
||||
#if defined(__GNUC__) && (__GNUC__ >= 4)
|
||||
#pragma GCC system_header
|
||||
#endif
|
||||
//
|
||||
// Undef the macros as a precaution, since we may get here if <stdint.h> has failed
|
||||
// to define them all, see https://svn.boost.org/trac/boost/ticket/12786
|
||||
//
|
||||
#undef INT8_C
|
||||
#undef INT16_C
|
||||
#undef INT32_C
|
||||
#undef INT64_C
|
||||
#undef INTMAX_C
|
||||
#undef UINT8_C
|
||||
#undef UINT16_C
|
||||
#undef UINT32_C
|
||||
#undef UINT64_C
|
||||
#undef UINTMAX_C
|
||||
|
||||
#include <limits.h>
|
||||
# define BOOST__STDC_CONSTANT_MACROS_DEFINED
|
||||
|
6
3rdparty/boost/boost/current_function.hpp
vendored
6
3rdparty/boost/boost/current_function.hpp
vendored
@ -28,7 +28,11 @@ namespace detail
|
||||
inline void current_function_helper()
|
||||
{
|
||||
|
||||
#if defined(__GNUC__) || (defined(__MWERKS__) && (__MWERKS__ >= 0x3000)) || (defined(__ICC) && (__ICC >= 600)) || defined(__ghs__)
|
||||
#if defined( BOOST_DISABLE_CURRENT_FUNCTION )
|
||||
|
||||
# define BOOST_CURRENT_FUNCTION "(unknown)"
|
||||
|
||||
#elif defined(__GNUC__) || (defined(__MWERKS__) && (__MWERKS__ >= 0x3000)) || (defined(__ICC) && (__ICC >= 600)) || defined(__ghs__)
|
||||
|
||||
# define BOOST_CURRENT_FUNCTION __PRETTY_FUNCTION__
|
||||
|
||||
|
@ -125,6 +125,7 @@ inline std::streamsize lcast_get_precision(T* = 0)
|
||||
limits::radix == 10 && limits::digits10 > 0;
|
||||
std::streamsize const streamsize_max =
|
||||
(boost::integer_traits<std::streamsize>::max)();
|
||||
(void)streamsize_max;
|
||||
|
||||
if(is_specialized_bin)
|
||||
{ // Floating-point types with
|
||||
|
@ -1,22 +0,0 @@
|
||||
#ifndef BOOST_DETAIL_LIGHTWEIGHT_MUTEX_HPP_INCLUDED
|
||||
#define BOOST_DETAIL_LIGHTWEIGHT_MUTEX_HPP_INCLUDED
|
||||
|
||||
// MS compatible compilers support #pragma once
|
||||
|
||||
#if defined(_MSC_VER) && (_MSC_VER >= 1020)
|
||||
# pragma once
|
||||
#endif
|
||||
|
||||
//
|
||||
// boost/detail/lightweight_mutex.hpp - lightweight mutex
|
||||
//
|
||||
// Copyright (c) 2002, 2003 Peter Dimov and Multi Media Ltd.
|
||||
//
|
||||
// Distributed under the 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/smart_ptr/detail/lightweight_mutex.hpp>
|
||||
|
||||
#endif // #ifndef BOOST_DETAIL_LIGHTWEIGHT_MUTEX_HPP_INCLUDED
|
261
3rdparty/boost/boost/detail/workaround.hpp
vendored
261
3rdparty/boost/boost/detail/workaround.hpp
vendored
@ -3,265 +3,8 @@
|
||||
// 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
|
||||
#define WORKAROUND_DWA2002126_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 __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
|
||||
#include <boost/config/workaround.hpp>
|
||||
|
||||
#endif // WORKAROUND_DWA2002126_HPP
|
||||
|
11
3rdparty/boost/boost/exception/exception.hpp
vendored
11
3rdparty/boost/boost/exception/exception.hpp
vendored
@ -12,6 +12,14 @@
|
||||
#pragma warning(push,1)
|
||||
#endif
|
||||
|
||||
#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
|
||||
|
||||
namespace
|
||||
boost
|
||||
{
|
||||
@ -144,9 +152,6 @@ boost
|
||||
# endif
|
||||
#endif
|
||||
|
||||
template <class T>
|
||||
class shared_ptr;
|
||||
|
||||
namespace
|
||||
exception_detail
|
||||
{
|
||||
|
@ -1,5 +1,4 @@
|
||||
#!/usr/bin/perl -w
|
||||
# -*- mode: perl; -*-
|
||||
#
|
||||
# Boost.Function library
|
||||
#
|
||||
|
@ -656,17 +656,6 @@ namespace boost {
|
||||
BOOST_FUNCTION_TEMPLATE_PARMS
|
||||
>
|
||||
class BOOST_FUNCTION_FUNCTION : public function_base
|
||||
|
||||
#if BOOST_FUNCTION_NUM_ARGS == 1
|
||||
|
||||
, public std::unary_function<T0,R>
|
||||
|
||||
#elif BOOST_FUNCTION_NUM_ARGS == 2
|
||||
|
||||
, public std::binary_function<T0,T1,R>
|
||||
|
||||
#endif
|
||||
|
||||
{
|
||||
public:
|
||||
#ifndef BOOST_NO_VOID_RETURNS
|
||||
|
@ -179,7 +179,7 @@ namespace boost
|
||||
hash_float_combine(seed, part);
|
||||
}
|
||||
|
||||
hash_float_combine(seed, exp);
|
||||
hash_float_combine(seed, static_cast<std::size_t>(exp));
|
||||
|
||||
return seed;
|
||||
}
|
||||
|
@ -254,7 +254,7 @@ namespace boost
|
||||
#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
|
||||
|
||||
template <class T> struct hash
|
||||
: std::unary_function<T, std::size_t>
|
||||
: boost::hash_detail::hash_base<T>
|
||||
{
|
||||
#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING)
|
||||
std::size_t operator()(T const& val) const
|
||||
@ -271,7 +271,7 @@ namespace boost
|
||||
|
||||
#if BOOST_WORKAROUND(__DMC__, <= 0x848)
|
||||
template <class T, unsigned int n> struct hash<T[n]>
|
||||
: std::unary_function<T[n], std::size_t>
|
||||
: boost::hash_detail::hash_base<T[n]>
|
||||
{
|
||||
std::size_t operator()(const T* val) const
|
||||
{
|
||||
@ -296,7 +296,7 @@ namespace boost
|
||||
{
|
||||
template <class T>
|
||||
struct inner
|
||||
: std::unary_function<T, std::size_t>
|
||||
: boost::hash_detail::hash_base<T>
|
||||
{
|
||||
#if !defined(BOOST_NO_FUNCTION_TEMPLATE_ORDERING)
|
||||
std::size_t operator()(T const& val) const
|
||||
|
54
3rdparty/boost/boost/functional/hash/hash.hpp
vendored
54
3rdparty/boost/boost/functional/hash/hash.hpp
vendored
@ -62,6 +62,18 @@ namespace boost
|
||||
{
|
||||
namespace hash_detail
|
||||
{
|
||||
#if defined(_HAS_AUTO_PTR_ETC) && !_HAS_AUTO_PTR_ETC
|
||||
template <typename T>
|
||||
struct hash_base
|
||||
{
|
||||
typedef T argument_type;
|
||||
typedef std::size_t result_type;
|
||||
};
|
||||
#else
|
||||
template <typename T>
|
||||
struct hash_base : std::unary_function<T, std::size_t> {};
|
||||
#endif
|
||||
|
||||
struct enable_hash_value { typedef std::size_t type; };
|
||||
|
||||
template <typename T> struct basic_numbers {};
|
||||
@ -95,6 +107,16 @@ namespace boost
|
||||
boost::hash_detail::enable_hash_value {};
|
||||
#endif
|
||||
|
||||
#if !defined(BOOST_NO_CXX11_CHAR16_T)
|
||||
template <> struct basic_numbers<char16_t> :
|
||||
boost::hash_detail::enable_hash_value {};
|
||||
#endif
|
||||
|
||||
#if !defined(BOOST_NO_CXX11_CHAR32_T)
|
||||
template <> struct basic_numbers<char32_t> :
|
||||
boost::hash_detail::enable_hash_value {};
|
||||
#endif
|
||||
|
||||
// long_numbers is defined like this to allow for separate
|
||||
// specialization for long_long and int128_type, in case
|
||||
// they conflict.
|
||||
@ -168,10 +190,10 @@ namespace boost
|
||||
template <class T>
|
||||
inline std::size_t hash_value_signed(T val)
|
||||
{
|
||||
const int size_t_bits = std::numeric_limits<std::size_t>::digits;
|
||||
const unsigned int size_t_bits = std::numeric_limits<std::size_t>::digits;
|
||||
// ceiling(std::numeric_limits<T>::digits / size_t_bits) - 1
|
||||
const int length = (std::numeric_limits<T>::digits - 1)
|
||||
/ size_t_bits;
|
||||
/ static_cast<int>(size_t_bits);
|
||||
|
||||
std::size_t seed = 0;
|
||||
T positive = val < 0 ? -1 - val : val;
|
||||
@ -189,10 +211,10 @@ namespace boost
|
||||
template <class T>
|
||||
inline std::size_t hash_value_unsigned(T val)
|
||||
{
|
||||
const int size_t_bits = std::numeric_limits<std::size_t>::digits;
|
||||
const unsigned int size_t_bits = std::numeric_limits<std::size_t>::digits;
|
||||
// ceiling(std::numeric_limits<T>::digits / size_t_bits) - 1
|
||||
const int length = (std::numeric_limits<T>::digits - 1)
|
||||
/ size_t_bits;
|
||||
/ static_cast<int>(size_t_bits);
|
||||
|
||||
std::size_t seed = 0;
|
||||
|
||||
@ -236,7 +258,7 @@ namespace boost
|
||||
inline void hash_combine_impl(boost::uint64_t& h,
|
||||
boost::uint64_t k)
|
||||
{
|
||||
const uint64_t m = UINT64_C(0xc6a4a7935bd1e995);
|
||||
const boost::uint64_t m = UINT64_C(0xc6a4a7935bd1e995);
|
||||
const int r = 47;
|
||||
|
||||
k *= m;
|
||||
@ -419,7 +441,7 @@ namespace boost
|
||||
|
||||
#define BOOST_HASH_SPECIALIZE(type) \
|
||||
template <> struct hash<type> \
|
||||
: public std::unary_function<type, std::size_t> \
|
||||
: public boost::hash_detail::hash_base<type> \
|
||||
{ \
|
||||
std::size_t operator()(type v) const \
|
||||
{ \
|
||||
@ -429,7 +451,7 @@ namespace boost
|
||||
|
||||
#define BOOST_HASH_SPECIALIZE_REF(type) \
|
||||
template <> struct hash<type> \
|
||||
: public std::unary_function<type, std::size_t> \
|
||||
: public boost::hash_detail::hash_base<type> \
|
||||
{ \
|
||||
std::size_t operator()(type const& v) const \
|
||||
{ \
|
||||
@ -443,6 +465,12 @@ namespace boost
|
||||
BOOST_HASH_SPECIALIZE(unsigned char)
|
||||
#if !defined(BOOST_NO_INTRINSIC_WCHAR_T)
|
||||
BOOST_HASH_SPECIALIZE(wchar_t)
|
||||
#endif
|
||||
#if !defined(BOOST_NO_CXX11_CHAR16_T)
|
||||
BOOST_HASH_SPECIALIZE(char16_t)
|
||||
#endif
|
||||
#if !defined(BOOST_NO_CXX11_CHAR32_T)
|
||||
BOOST_HASH_SPECIALIZE(char32_t)
|
||||
#endif
|
||||
BOOST_HASH_SPECIALIZE(short)
|
||||
BOOST_HASH_SPECIALIZE(unsigned short)
|
||||
@ -456,9 +484,15 @@ namespace boost
|
||||
BOOST_HASH_SPECIALIZE(long double)
|
||||
|
||||
BOOST_HASH_SPECIALIZE_REF(std::string)
|
||||
#if !defined(BOOST_NO_STD_WSTRING)
|
||||
#if !defined(BOOST_NO_STD_WSTRING) && !defined(BOOST_NO_INTRINSIC_WCHAR_T)
|
||||
BOOST_HASH_SPECIALIZE_REF(std::wstring)
|
||||
#endif
|
||||
#if !defined(BOOST_NO_CXX11_CHAR16_T)
|
||||
BOOST_HASH_SPECIALIZE_REF(std::basic_string<char16_t>)
|
||||
#endif
|
||||
#if !defined(BOOST_NO_CXX11_CHAR32_T)
|
||||
BOOST_HASH_SPECIALIZE_REF(std::basic_string<char32_t>)
|
||||
#endif
|
||||
|
||||
#if !defined(BOOST_NO_LONG_LONG)
|
||||
BOOST_HASH_SPECIALIZE(boost::long_long_type)
|
||||
@ -483,7 +517,7 @@ namespace boost
|
||||
|
||||
template <class T>
|
||||
struct hash<T*>
|
||||
: public std::unary_function<T*, std::size_t>
|
||||
: public boost::hash_detail::hash_base<T*>
|
||||
{
|
||||
std::size_t operator()(T* v) const
|
||||
{
|
||||
@ -516,7 +550,7 @@ namespace boost
|
||||
{
|
||||
template <class T>
|
||||
struct inner
|
||||
: public std::unary_function<T, std::size_t>
|
||||
: public boost::hash_detail::hash_base<T>
|
||||
{
|
||||
std::size_t operator()(T val) const
|
||||
{
|
||||
|
102
3rdparty/boost/boost/integer/common_factor_ct.hpp
vendored
Normal file
102
3rdparty/boost/boost/integer/common_factor_ct.hpp
vendored
Normal file
@ -0,0 +1,102 @@
|
||||
// Boost common_factor_ct.hpp header file ----------------------------------//
|
||||
|
||||
// (C) Copyright Daryle Walker and Stephen Cleary 2001-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)
|
||||
|
||||
// See http://www.boost.org for updates, documentation, and revision history.
|
||||
|
||||
#ifndef BOOST_INTEGER_COMMON_FACTOR_CT_HPP
|
||||
#define BOOST_INTEGER_COMMON_FACTOR_CT_HPP
|
||||
|
||||
#include <boost/integer_fwd.hpp> // self include
|
||||
#include <boost/config.hpp> // for BOOST_STATIC_CONSTANT, etc.
|
||||
|
||||
namespace boost
|
||||
{
|
||||
namespace integer
|
||||
{
|
||||
|
||||
// Implementation details --------------------------------------------------//
|
||||
|
||||
namespace detail
|
||||
{
|
||||
// Build GCD with Euclid's recursive algorithm
|
||||
template < static_gcd_type Value1, static_gcd_type Value2 >
|
||||
struct static_gcd_helper_t
|
||||
{
|
||||
private:
|
||||
BOOST_STATIC_CONSTANT( static_gcd_type, new_value1 = Value2 );
|
||||
BOOST_STATIC_CONSTANT( static_gcd_type, new_value2 = Value1 % Value2 );
|
||||
|
||||
#ifndef __BORLANDC__
|
||||
#define BOOST_DETAIL_GCD_HELPER_VAL(Value) static_cast<static_gcd_type>(Value)
|
||||
#else
|
||||
typedef static_gcd_helper_t self_type;
|
||||
#define BOOST_DETAIL_GCD_HELPER_VAL(Value) (self_type:: Value )
|
||||
#endif
|
||||
|
||||
typedef static_gcd_helper_t< BOOST_DETAIL_GCD_HELPER_VAL(new_value1),
|
||||
BOOST_DETAIL_GCD_HELPER_VAL(new_value2) > next_step_type;
|
||||
|
||||
#undef BOOST_DETAIL_GCD_HELPER_VAL
|
||||
|
||||
public:
|
||||
BOOST_STATIC_CONSTANT( static_gcd_type, value = next_step_type::value );
|
||||
};
|
||||
|
||||
// Non-recursive case
|
||||
template < static_gcd_type Value1 >
|
||||
struct static_gcd_helper_t< Value1, 0UL >
|
||||
{
|
||||
BOOST_STATIC_CONSTANT( static_gcd_type, value = Value1 );
|
||||
};
|
||||
|
||||
// Build the LCM from the GCD
|
||||
template < static_gcd_type Value1, static_gcd_type Value2 >
|
||||
struct static_lcm_helper_t
|
||||
{
|
||||
typedef static_gcd_helper_t<Value1, Value2> gcd_type;
|
||||
|
||||
BOOST_STATIC_CONSTANT( static_gcd_type, value = Value1 / gcd_type::value
|
||||
* Value2 );
|
||||
};
|
||||
|
||||
// Special case for zero-GCD values
|
||||
template < >
|
||||
struct static_lcm_helper_t< 0UL, 0UL >
|
||||
{
|
||||
BOOST_STATIC_CONSTANT( static_gcd_type, value = 0UL );
|
||||
};
|
||||
|
||||
} // namespace detail
|
||||
|
||||
|
||||
// Compile-time greatest common divisor evaluator class declaration --------//
|
||||
|
||||
template < static_gcd_type Value1, static_gcd_type Value2 > struct static_gcd
|
||||
{
|
||||
BOOST_STATIC_CONSTANT( static_gcd_type, value = (detail::static_gcd_helper_t<Value1, Value2>::value) );
|
||||
}; // boost::integer::static_gcd
|
||||
|
||||
#if !defined(BOOST_NO_INCLASS_MEMBER_INITIALIZATION)
|
||||
template< static_gcd_type Value1, static_gcd_type Value2 > static_gcd_type const static_gcd< Value1, Value2 >::value;
|
||||
#endif
|
||||
|
||||
// Compile-time least common multiple evaluator class declaration ----------//
|
||||
|
||||
template < static_gcd_type Value1, static_gcd_type Value2 > struct static_lcm
|
||||
{
|
||||
BOOST_STATIC_CONSTANT( static_gcd_type, value = (detail::static_lcm_helper_t<Value1, Value2>::value) );
|
||||
}; // boost::integer::static_lcm
|
||||
|
||||
#if !defined(BOOST_NO_INCLASS_MEMBER_INITIALIZATION)
|
||||
template< static_gcd_type Value1, static_gcd_type Value2 > static_gcd_type const static_lcm< Value1, Value2 >::value;
|
||||
#endif
|
||||
|
||||
} // namespace integer
|
||||
} // namespace boost
|
||||
|
||||
|
||||
#endif // BOOST_INTEGER_COMMON_FACTOR_CT_HPP
|
3
3rdparty/boost/boost/integer_fwd.hpp
vendored
3
3rdparty/boost/boost/integer_fwd.hpp
vendored
@ -159,6 +159,8 @@ template <static_min_max_unsigned_type Value1, static_min_max_unsigned_type Valu
|
||||
struct static_unsigned_max;
|
||||
|
||||
|
||||
namespace integer
|
||||
{
|
||||
// From <boost/integer/common_factor_ct.hpp>
|
||||
|
||||
#ifdef BOOST_NO_INTEGRAL_INT64_T
|
||||
@ -180,6 +182,7 @@ template < typename IntegerType >
|
||||
template < typename IntegerType >
|
||||
class lcm_evaluator;
|
||||
|
||||
} // namespace integer
|
||||
|
||||
} // namespace boost
|
||||
|
||||
|
84
3rdparty/boost/boost/iterator/advance.hpp
vendored
Normal file
84
3rdparty/boost/boost/iterator/advance.hpp
vendored
Normal file
@ -0,0 +1,84 @@
|
||||
// Copyright (C) 2017 Michel Morin.
|
||||
//
|
||||
// Distributed under the 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_ITERATOR_ADVANCE_HPP
|
||||
#define BOOST_ITERATOR_ADVANCE_HPP
|
||||
|
||||
#include <boost/config.hpp>
|
||||
#include <boost/iterator/iterator_categories.hpp>
|
||||
|
||||
namespace boost {
|
||||
namespace iterators {
|
||||
|
||||
namespace detail {
|
||||
template <typename InputIterator, typename Distance>
|
||||
inline BOOST_CXX14_CONSTEXPR void
|
||||
advance_impl(
|
||||
InputIterator& it
|
||||
, Distance n
|
||||
, incrementable_traversal_tag
|
||||
)
|
||||
{
|
||||
while (n > 0) {
|
||||
++it;
|
||||
--n;
|
||||
}
|
||||
}
|
||||
|
||||
template <typename BidirectionalIterator, typename Distance>
|
||||
inline BOOST_CXX14_CONSTEXPR void
|
||||
advance_impl(
|
||||
BidirectionalIterator& it
|
||||
, Distance n
|
||||
, bidirectional_traversal_tag
|
||||
)
|
||||
{
|
||||
if (n >= 0) {
|
||||
while (n > 0) {
|
||||
++it;
|
||||
--n;
|
||||
}
|
||||
}
|
||||
else {
|
||||
while (n < 0) {
|
||||
--it;
|
||||
++n;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
template <typename RandomAccessIterator, typename Distance>
|
||||
inline BOOST_CXX14_CONSTEXPR void
|
||||
advance_impl(
|
||||
RandomAccessIterator& it
|
||||
, Distance n
|
||||
, random_access_traversal_tag
|
||||
)
|
||||
{
|
||||
it += n;
|
||||
}
|
||||
}
|
||||
|
||||
namespace advance_adl_barrier {
|
||||
template <typename InputIterator, typename Distance>
|
||||
inline BOOST_CXX14_CONSTEXPR void
|
||||
advance(InputIterator& it, Distance n)
|
||||
{
|
||||
detail::advance_impl(
|
||||
it, n, typename iterator_traversal<InputIterator>::type()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
using namespace advance_adl_barrier;
|
||||
|
||||
} // namespace iterators
|
||||
|
||||
using iterators::advance;
|
||||
|
||||
} // namespace boost
|
||||
|
||||
#endif
|
@ -7,7 +7,6 @@
|
||||
#ifndef BOOST_REVERSE_ITERATOR_23022003THW_HPP
|
||||
#define BOOST_REVERSE_ITERATOR_23022003THW_HPP
|
||||
|
||||
#include <boost/next_prior.hpp>
|
||||
#include <boost/iterator.hpp>
|
||||
#include <boost/iterator/iterator_adaptor.hpp>
|
||||
|
||||
@ -40,14 +39,19 @@ namespace iterators {
|
||||
{}
|
||||
|
||||
private:
|
||||
typename super_t::reference dereference() const { return *boost::prior(this->base()); }
|
||||
typename super_t::reference dereference() const
|
||||
{
|
||||
Iterator it = this->base_reference();
|
||||
--it;
|
||||
return *it;
|
||||
}
|
||||
|
||||
void increment() { --this->base_reference(); }
|
||||
void decrement() { ++this->base_reference(); }
|
||||
|
||||
void advance(typename super_t::difference_type n)
|
||||
{
|
||||
this->base_reference() += -n;
|
||||
this->base_reference() -= n;
|
||||
}
|
||||
|
||||
template <class OtherIterator>
|
||||
|
@ -1,6 +1,6 @@
|
||||
// Copyright Kevlin Henney, 2000-2005.
|
||||
// Copyright Alexander Nasonov, 2006-2010.
|
||||
// Copyright Antony Polukhin, 2011-2014.
|
||||
// Copyright Antony Polukhin, 2011-2016.
|
||||
//
|
||||
// Distributed under the Boost Software License, Version 1.0. (See
|
||||
// accompanying file LICENSE_1_0.txt or copy at
|
||||
@ -13,7 +13,7 @@
|
||||
// Beman Dawes, Dave Abrahams, Daryle Walker, Peter Dimov,
|
||||
// Alexander Nasonov, Antony Polukhin, Justin Viiret, Michael Hofmann,
|
||||
// Cheng Yang, Matthew Bradbury, David W. Birdsall, Pavel Korzh and other Boosters
|
||||
// when: November 2000, March 2003, June 2005, June 2006, March 2011 - 2014
|
||||
// when: November 2000, March 2003, June 2005, June 2006, March 2011 - 2014, Nowember 2016
|
||||
|
||||
#ifndef BOOST_LEXICAL_CAST_DETAIL_CONVERTER_LEXICAL_STREAMS_HPP
|
||||
#define BOOST_LEXICAL_CAST_DETAIL_CONVERTER_LEXICAL_STREAMS_HPP
|
||||
@ -107,23 +107,26 @@ namespace boost {
|
||||
|
||||
namespace detail
|
||||
{
|
||||
struct do_not_construct_out_stream_t{};
|
||||
|
||||
struct do_not_construct_out_buffer_t{};
|
||||
struct do_not_construct_out_stream_t{
|
||||
do_not_construct_out_stream_t(do_not_construct_out_buffer_t*){}
|
||||
};
|
||||
|
||||
template <class CharT, class Traits>
|
||||
struct out_stream_helper_trait {
|
||||
#if defined(BOOST_NO_STRINGSTREAM)
|
||||
typedef std::ostrstream out_stream_t;
|
||||
typedef void buffer_t;
|
||||
typedef std::ostream out_stream_t;
|
||||
typedef basic_unlockedbuf<std::strstreambuf, char> stringbuffer_t;
|
||||
#elif defined(BOOST_NO_STD_LOCALE)
|
||||
typedef std::ostringstream out_stream_t;
|
||||
typedef basic_unlockedbuf<std::streambuf, char> buffer_t;
|
||||
typedef std::ostream out_stream_t;
|
||||
typedef basic_unlockedbuf<std::stringbuf, char> stringbuffer_t;
|
||||
typedef basic_unlockedbuf<std::streambuf, char> buffer_t;
|
||||
#else
|
||||
typedef std::basic_ostringstream<CharT, Traits>
|
||||
out_stream_t;
|
||||
typedef basic_unlockedbuf<std::basic_streambuf<CharT, Traits>, CharT>
|
||||
buffer_t;
|
||||
typedef std::basic_ostream<CharT, Traits> out_stream_t;
|
||||
typedef basic_unlockedbuf<std::basic_stringbuf<CharT, Traits>, CharT> stringbuffer_t;
|
||||
typedef basic_unlockedbuf<std::basic_streambuf<CharT, Traits>, CharT> buffer_t;
|
||||
#endif
|
||||
};
|
||||
};
|
||||
}
|
||||
|
||||
namespace detail // optimized stream wrappers
|
||||
@ -134,19 +137,19 @@ namespace boost {
|
||||
, std::size_t CharacterBufferSize
|
||||
>
|
||||
class lexical_istream_limited_src: boost::noncopyable {
|
||||
typedef BOOST_DEDUCED_TYPENAME out_stream_helper_trait<CharT, Traits>::buffer_t
|
||||
buffer_t;
|
||||
|
||||
typedef BOOST_DEDUCED_TYPENAME out_stream_helper_trait<CharT, Traits>::out_stream_t
|
||||
out_stream_t;
|
||||
|
||||
typedef BOOST_DEDUCED_TYPENAME boost::mpl::if_c<
|
||||
RequiresStringbuffer,
|
||||
out_stream_t,
|
||||
BOOST_DEDUCED_TYPENAME out_stream_helper_trait<CharT, Traits>::out_stream_t,
|
||||
do_not_construct_out_stream_t
|
||||
>::type deduced_out_stream_t;
|
||||
|
||||
// A string representation of Source is written to `buffer`.
|
||||
typedef BOOST_DEDUCED_TYPENAME boost::mpl::if_c<
|
||||
RequiresStringbuffer,
|
||||
BOOST_DEDUCED_TYPENAME out_stream_helper_trait<CharT, Traits>::stringbuffer_t,
|
||||
do_not_construct_out_buffer_t
|
||||
>::type deduced_out_buffer_t;
|
||||
|
||||
deduced_out_buffer_t out_buffer;
|
||||
deduced_out_stream_t out_stream;
|
||||
CharT buffer[CharacterBufferSize];
|
||||
|
||||
@ -157,7 +160,9 @@ namespace boost {
|
||||
|
||||
public:
|
||||
lexical_istream_limited_src() BOOST_NOEXCEPT
|
||||
: start(buffer)
|
||||
: out_buffer()
|
||||
, out_stream(&out_buffer)
|
||||
, start(buffer)
|
||||
, finish(buffer + CharacterBufferSize)
|
||||
{}
|
||||
|
||||
@ -170,10 +175,6 @@ namespace boost {
|
||||
}
|
||||
|
||||
private:
|
||||
// Undefined:
|
||||
lexical_istream_limited_src(lexical_istream_limited_src const&);
|
||||
void operator=(lexical_istream_limited_src const&);
|
||||
|
||||
/************************************ HELPER FUNCTIONS FOR OPERATORS << ( ... ) ********************************/
|
||||
bool shl_char(CharT ch) BOOST_NOEXCEPT {
|
||||
Traits::assign(buffer[0], ch);
|
||||
@ -212,7 +213,7 @@ namespace boost {
|
||||
"Use boost::locale instead" );
|
||||
return shl_input_streamable(str);
|
||||
}
|
||||
|
||||
|
||||
bool shl_char_array_limited(CharT const* str, std::size_t max_size) BOOST_NOEXCEPT {
|
||||
start = str;
|
||||
finish = std::find(start, start + max_size, Traits::to_char_type(0));
|
||||
@ -232,8 +233,8 @@ namespace boost {
|
||||
try {
|
||||
#endif
|
||||
bool const result = !(out_stream << input).fail();
|
||||
const buffer_t* const p = static_cast<buffer_t*>(
|
||||
static_cast<std::basic_streambuf<CharT, Traits>*>(out_stream.rdbuf())
|
||||
const deduced_out_buffer_t* const p = static_cast<deduced_out_buffer_t*>(
|
||||
out_stream.rdbuf()
|
||||
);
|
||||
start = p->pbase();
|
||||
finish = p->pptr();
|
||||
@ -573,17 +574,15 @@ namespace boost {
|
||||
"support such conversions. Try updating it."
|
||||
);
|
||||
#endif
|
||||
typedef BOOST_DEDUCED_TYPENAME out_stream_helper_trait<CharT, Traits>::buffer_t
|
||||
buffer_t;
|
||||
|
||||
#if defined(BOOST_NO_STRINGSTREAM)
|
||||
std::istrstream stream(start, finish - start);
|
||||
std::istrstream stream(start, static_cast<std::istrstream::streamsize>(finish - start));
|
||||
#else
|
||||
|
||||
typedef BOOST_DEDUCED_TYPENAME out_stream_helper_trait<CharT, Traits>::buffer_t buffer_t;
|
||||
buffer_t buf;
|
||||
// Usually `istream` and `basic_istream` do not modify
|
||||
// content of buffer; `buffer_t` assures that this is true
|
||||
buf.setbuf(const_cast<CharT*>(start), finish - start);
|
||||
buf.setbuf(const_cast<CharT*>(start), static_cast<typename buffer_t::streamsize>(finish - start));
|
||||
#if defined(BOOST_NO_STD_LOCALE)
|
||||
std::istream stream(&buf);
|
||||
#else
|
||||
|
@ -1,6 +1,6 @@
|
||||
// Copyright Kevlin Henney, 2000-2005.
|
||||
// Copyright Alexander Nasonov, 2006-2010.
|
||||
// Copyright Antony Polukhin, 2011-2014.
|
||||
// Copyright Antony Polukhin, 2011-2016.
|
||||
//
|
||||
// Distributed under the Boost Software License, Version 1.0. (See
|
||||
// accompanying file LICENSE_1_0.txt or copy at
|
||||
@ -13,7 +13,7 @@
|
||||
// Beman Dawes, Dave Abrahams, Daryle Walker, Peter Dimov,
|
||||
// Alexander Nasonov, Antony Polukhin, Justin Viiret, Michael Hofmann,
|
||||
// Cheng Yang, Matthew Bradbury, David W. Birdsall, Pavel Korzh and other Boosters
|
||||
// when: November 2000, March 2003, June 2005, June 2006, March 2011 - 2014
|
||||
// when: November 2000, March 2003, June 2005, June 2006, March 2011 - 2016
|
||||
|
||||
#ifndef BOOST_LEXICAL_CAST_DETAIL_CONVERTER_NUMERIC_HPP
|
||||
#define BOOST_LEXICAL_CAST_DETAIL_CONVERTER_NUMERIC_HPP
|
||||
@ -154,35 +154,13 @@ struct dynamic_num_converter_impl
|
||||
{
|
||||
static inline bool try_convert(const Source &arg, Target& result) BOOST_NOEXCEPT {
|
||||
typedef BOOST_DEDUCED_TYPENAME boost::mpl::if_c<
|
||||
boost::is_unsigned<Target>::value &&
|
||||
(boost::is_signed<Source>::value || boost::is_float<Source>::value) &&
|
||||
!(boost::is_same<Source, bool>::value) &&
|
||||
!(boost::is_same<Target, bool>::value),
|
||||
boost::is_unsigned<Target>::value &&
|
||||
(boost::is_signed<Source>::value || boost::is_float<Source>::value) &&
|
||||
!(boost::is_same<Source, bool>::value) &&
|
||||
!(boost::is_same<Target, bool>::value),
|
||||
lexical_cast_dynamic_num_ignoring_minus<Target, Source>,
|
||||
lexical_cast_dynamic_num_not_ignoring_minus<Target, Source>
|
||||
>::type caster_type;
|
||||
|
||||
#if 0
|
||||
|
||||
typedef BOOST_DEDUCED_TYPENAME boost::mpl::if_<
|
||||
BOOST_DEDUCED_TYPENAME boost::mpl::and_<
|
||||
boost::is_unsigned<Target>,
|
||||
boost::mpl::or_<
|
||||
boost::is_signed<Source>,
|
||||
boost::is_float<Source>
|
||||
>,
|
||||
boost::mpl::not_<
|
||||
boost::is_same<Source, bool>
|
||||
>,
|
||||
boost::mpl::not_<
|
||||
boost::is_same<Target, bool>
|
||||
>
|
||||
>::type,
|
||||
lexical_cast_dynamic_num_ignoring_minus<Target, Source>,
|
||||
lexical_cast_dynamic_num_not_ignoring_minus<Target, Source>
|
||||
>::type caster_type;
|
||||
|
||||
#endif
|
||||
|
||||
return caster_type::try_convert(arg, result);
|
||||
}
|
||||
|
79
3rdparty/boost/boost/math/common_factor_ct.hpp
vendored
79
3rdparty/boost/boost/math/common_factor_ct.hpp
vendored
@ -1,6 +1,6 @@
|
||||
// Boost common_factor_ct.hpp header file ----------------------------------//
|
||||
|
||||
// (C) Copyright Daryle Walker and Stephen Cleary 2001-2002.
|
||||
// (C) Copyright John Maddock 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)
|
||||
@ -10,85 +10,16 @@
|
||||
#ifndef BOOST_MATH_COMMON_FACTOR_CT_HPP
|
||||
#define BOOST_MATH_COMMON_FACTOR_CT_HPP
|
||||
|
||||
#include <boost/math_fwd.hpp> // self include
|
||||
#include <boost/config.hpp> // for BOOST_STATIC_CONSTANT, etc.
|
||||
#include <boost/mpl/integral_c.hpp>
|
||||
#include <boost/integer/common_factor_ct.hpp>
|
||||
|
||||
namespace boost
|
||||
{
|
||||
namespace math
|
||||
{
|
||||
|
||||
// Implementation details --------------------------------------------------//
|
||||
|
||||
namespace detail
|
||||
{
|
||||
// Build GCD with Euclid's recursive algorithm
|
||||
template < static_gcd_type Value1, static_gcd_type Value2 >
|
||||
struct static_gcd_helper_t
|
||||
{
|
||||
private:
|
||||
BOOST_STATIC_CONSTANT( static_gcd_type, new_value1 = Value2 );
|
||||
BOOST_STATIC_CONSTANT( static_gcd_type, new_value2 = Value1 % Value2 );
|
||||
|
||||
#ifndef __BORLANDC__
|
||||
#define BOOST_DETAIL_GCD_HELPER_VAL(Value) static_cast<static_gcd_type>(Value)
|
||||
#else
|
||||
typedef static_gcd_helper_t self_type;
|
||||
#define BOOST_DETAIL_GCD_HELPER_VAL(Value) (self_type:: Value )
|
||||
#endif
|
||||
|
||||
typedef static_gcd_helper_t< BOOST_DETAIL_GCD_HELPER_VAL(new_value1),
|
||||
BOOST_DETAIL_GCD_HELPER_VAL(new_value2) > next_step_type;
|
||||
|
||||
#undef BOOST_DETAIL_GCD_HELPER_VAL
|
||||
|
||||
public:
|
||||
BOOST_STATIC_CONSTANT( static_gcd_type, value = next_step_type::value );
|
||||
};
|
||||
|
||||
// Non-recursive case
|
||||
template < static_gcd_type Value1 >
|
||||
struct static_gcd_helper_t< Value1, 0UL >
|
||||
{
|
||||
BOOST_STATIC_CONSTANT( static_gcd_type, value = Value1 );
|
||||
};
|
||||
|
||||
// Build the LCM from the GCD
|
||||
template < static_gcd_type Value1, static_gcd_type Value2 >
|
||||
struct static_lcm_helper_t
|
||||
{
|
||||
typedef static_gcd_helper_t<Value1, Value2> gcd_type;
|
||||
|
||||
BOOST_STATIC_CONSTANT( static_gcd_type, value = Value1 / gcd_type::value
|
||||
* Value2 );
|
||||
};
|
||||
|
||||
// Special case for zero-GCD values
|
||||
template < >
|
||||
struct static_lcm_helper_t< 0UL, 0UL >
|
||||
{
|
||||
BOOST_STATIC_CONSTANT( static_gcd_type, value = 0UL );
|
||||
};
|
||||
|
||||
} // namespace detail
|
||||
|
||||
|
||||
// Compile-time greatest common divisor evaluator class declaration --------//
|
||||
|
||||
template < static_gcd_type Value1, static_gcd_type Value2 >
|
||||
struct static_gcd : public mpl::integral_c<static_gcd_type, (detail::static_gcd_helper_t<Value1, Value2>::value) >
|
||||
{
|
||||
}; // boost::math::static_gcd
|
||||
|
||||
|
||||
// Compile-time least common multiple evaluator class declaration ----------//
|
||||
|
||||
template < static_gcd_type Value1, static_gcd_type Value2 >
|
||||
struct static_lcm : public mpl::integral_c<static_gcd_type, (detail::static_lcm_helper_t<Value1, Value2>::value) >
|
||||
{
|
||||
}; // boost::math::static_lcm
|
||||
|
||||
using boost::integer::static_gcd;
|
||||
using boost::integer::static_lcm;
|
||||
using boost::integer::static_gcd_type;
|
||||
|
||||
} // namespace math
|
||||
} // namespace boost
|
||||
|
@ -23,6 +23,7 @@
|
||||
#pragma once
|
||||
#endif
|
||||
|
||||
#include <vector>
|
||||
#include <boost/math/special_functions/detail/round_fwd.hpp>
|
||||
#include <boost/math/tools/promotion.hpp> // for argument promotion.
|
||||
#include <boost/math/policies/policy.hpp>
|
||||
@ -181,10 +182,24 @@ namespace boost
|
||||
template <class T>
|
||||
typename tools::promote_args<T>::type
|
||||
legendre_p(int l, T x);
|
||||
template <class T>
|
||||
typename tools::promote_args<T>::type
|
||||
legendre_p_prime(int l, T x);
|
||||
|
||||
|
||||
template <class T, class Policy>
|
||||
inline std::vector<T> legendre_p_zeros(int l, const Policy& pol);
|
||||
|
||||
template <class T>
|
||||
inline std::vector<T> legendre_p_zeros(int l);
|
||||
|
||||
#if !BOOST_WORKAROUND(BOOST_MSVC, <= 1310)
|
||||
template <class T, class Policy>
|
||||
typename boost::enable_if_c<policies::is_policy<Policy>::value, typename tools::promote_args<T>::type>::type
|
||||
legendre_p(int l, T x, const Policy& pol);
|
||||
template <class T, class Policy>
|
||||
inline typename boost::enable_if_c<policies::is_policy<Policy>::value, typename tools::promote_args<T>::type>::type
|
||||
legendre_p_prime(int l, T x, const Policy& pol);
|
||||
#endif
|
||||
template <class T>
|
||||
typename tools::promote_args<T>::type
|
||||
@ -626,6 +641,17 @@ namespace boost
|
||||
bessel_maybe_int_tag
|
||||
>::type
|
||||
>::type optimisation_tag;
|
||||
typedef typename mpl::if_<
|
||||
mpl::or_<
|
||||
mpl::less_equal<precision_type, mpl::int_<0> >,
|
||||
mpl::greater<precision_type, mpl::int_<113> > >,
|
||||
bessel_no_int_tag,
|
||||
typename mpl::if_<
|
||||
is_integral<T1>,
|
||||
bessel_int_tag,
|
||||
bessel_maybe_int_tag
|
||||
>::type
|
||||
>::type optimisation_tag128;
|
||||
};
|
||||
} // detail
|
||||
|
||||
@ -1133,6 +1159,10 @@ namespace boost
|
||||
template <class T>\
|
||||
inline typename boost::math::tools::promote_args<T>::type \
|
||||
legendre_p(int l, T x){ return ::boost::math::legendre_p(l, x, Policy()); }\
|
||||
\
|
||||
template <class T>\
|
||||
inline typename boost::math::tools::promote_args<T>::type \
|
||||
legendre_p_prime(int l, T x){ return ::boost::math::legendre_p(l, x, Policy()); }\
|
||||
\
|
||||
template <class T>\
|
||||
inline typename boost::math::tools::promote_args<T>::type \
|
||||
@ -1582,5 +1612,3 @@ template <class OutputIterator, class T>\
|
||||
|
||||
|
||||
#endif // BOOST_MATH_SPECIAL_MATH_FWD_HPP
|
||||
|
||||
|
||||
|
@ -27,7 +27,7 @@ namespace detail {
|
||||
template<class T>
|
||||
inline int signbit_impl(T x, native_tag const&)
|
||||
{
|
||||
return (std::signbit)(x);
|
||||
return (std::signbit)(x) ? 1 : 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
2
3rdparty/boost/boost/math/tools/config.hpp
vendored
2
3rdparty/boost/boost/math/tools/config.hpp
vendored
@ -31,7 +31,7 @@
|
||||
#if (defined(__CYGWIN__) || defined(__FreeBSD__) || defined(__NetBSD__) \
|
||||
|| (defined(__hppa) && !defined(__OpenBSD__)) || (defined(__NO_LONG_DOUBLE_MATH) && (DBL_MANT_DIG != LDBL_MANT_DIG))) \
|
||||
&& !defined(BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS)
|
||||
# define BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
//# define BOOST_MATH_NO_LONG_DOUBLE_MATH_FUNCTIONS
|
||||
#endif
|
||||
#if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x582))
|
||||
//
|
||||
|
97
3rdparty/boost/boost/math_fwd.hpp
vendored
97
3rdparty/boost/boost/math_fwd.hpp
vendored
@ -1,97 +0,0 @@
|
||||
// Boost math_fwd.hpp header file ------------------------------------------//
|
||||
|
||||
// (C) Copyright Hubert Holin and Daryle Walker 2001-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)
|
||||
|
||||
// See http://www.boost.org/libs/math for documentation.
|
||||
|
||||
#ifndef BOOST_MATH_FWD_HPP
|
||||
#define BOOST_MATH_FWD_HPP
|
||||
|
||||
#include <boost/cstdint.hpp>
|
||||
|
||||
namespace boost
|
||||
{
|
||||
namespace math
|
||||
{
|
||||
|
||||
|
||||
// From <boost/math/quaternion.hpp> ----------------------------------------//
|
||||
|
||||
template < typename T >
|
||||
class quaternion;
|
||||
|
||||
template < >
|
||||
class quaternion< float >;
|
||||
template < >
|
||||
class quaternion< double >;
|
||||
template < >
|
||||
class quaternion< long double >;
|
||||
|
||||
// Also has many function templates (including operators)
|
||||
|
||||
|
||||
// From <boost/math/octonion.hpp> ------------------------------------------//
|
||||
|
||||
template < typename T >
|
||||
class octonion;
|
||||
|
||||
template < >
|
||||
class octonion< float >;
|
||||
template < >
|
||||
class octonion< double >;
|
||||
template < >
|
||||
class octonion< long double >;
|
||||
|
||||
// Also has many function templates (including operators)
|
||||
|
||||
|
||||
// From <boost/math/special_functions/acosh.hpp> ---------------------------//
|
||||
|
||||
// Only has function template
|
||||
|
||||
|
||||
// From <boost/math/special_functions/asinh.hpp> ---------------------------//
|
||||
|
||||
// Only has function template
|
||||
|
||||
|
||||
// From <boost/math/special_functions/atanh.hpp> ---------------------------//
|
||||
|
||||
// Only has function template
|
||||
|
||||
|
||||
// From <boost/math/special_functions/sinc.hpp> ----------------------------//
|
||||
|
||||
// Only has function templates
|
||||
|
||||
|
||||
// From <boost/math/special_functions/sinhc.hpp> ---------------------------//
|
||||
|
||||
// Only has function templates
|
||||
|
||||
|
||||
// From <boost/math/common_factor.hpp> -------------------------------------//
|
||||
|
||||
// Only #includes other headers
|
||||
|
||||
|
||||
// From <boost/math/common_factor_ct.hpp> ----------------------------------//
|
||||
|
||||
#ifdef BOOST_NO_INTEGRAL_INT64_T
|
||||
typedef unsigned long static_gcd_type;
|
||||
#else
|
||||
typedef boost::uintmax_t static_gcd_type;
|
||||
#endif
|
||||
|
||||
template < static_gcd_type Value1, static_gcd_type Value2 >
|
||||
struct static_gcd;
|
||||
template < static_gcd_type Value1, static_gcd_type Value2 >
|
||||
struct static_lcm;
|
||||
|
||||
} // namespace math
|
||||
} // namespace boost
|
||||
|
||||
|
||||
#endif // BOOST_MATH_FWD_HPP
|
3
3rdparty/boost/boost/move/algo/move.hpp
vendored
3
3rdparty/boost/boost/move/algo/move.hpp
vendored
@ -26,6 +26,7 @@
|
||||
|
||||
#include <boost/move/utility_core.hpp>
|
||||
#include <boost/move/detail/iterator_traits.hpp>
|
||||
#include <boost/move/detail/iterator_to_raw_pointer.hpp>
|
||||
#include <boost/detail/no_exceptions_support.hpp>
|
||||
|
||||
namespace boost {
|
||||
@ -126,7 +127,7 @@ F uninitialized_move(I f, I l, F r
|
||||
}
|
||||
BOOST_CATCH(...){
|
||||
for (; back != r; ++back){
|
||||
back->~input_value_type();
|
||||
boost::movelib::iterator_to_raw_pointer(back)->~input_value_type();
|
||||
}
|
||||
BOOST_RETHROW;
|
||||
}
|
||||
|
59
3rdparty/boost/boost/move/detail/iterator_to_raw_pointer.hpp
vendored
Normal file
59
3rdparty/boost/boost/move/detail/iterator_to_raw_pointer.hpp
vendored
Normal file
@ -0,0 +1,59 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztanaga 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)
|
||||
//
|
||||
// See http://www.boost.org/libs/container for documentation.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
#ifndef BOOST_MOVE_DETAIL_ITERATOR_TO_RAW_POINTER_HPP
|
||||
#define BOOST_MOVE_DETAIL_ITERATOR_TO_RAW_POINTER_HPP
|
||||
|
||||
#ifndef BOOST_CONFIG_HPP
|
||||
# include <boost/config.hpp>
|
||||
#endif
|
||||
|
||||
#if defined(BOOST_HAS_PRAGMA_ONCE)
|
||||
# pragma once
|
||||
#endif
|
||||
|
||||
#include <boost/move/detail/iterator_traits.hpp>
|
||||
#include <boost/move/detail/to_raw_pointer.hpp>
|
||||
#include <boost/move/detail/pointer_element.hpp>
|
||||
|
||||
namespace boost {
|
||||
namespace movelib {
|
||||
namespace detail {
|
||||
|
||||
template <class T>
|
||||
inline T* iterator_to_pointer(T* i)
|
||||
{ return i; }
|
||||
|
||||
template <class Iterator>
|
||||
inline typename boost::movelib::iterator_traits<Iterator>::pointer
|
||||
iterator_to_pointer(const Iterator &i)
|
||||
{ return i.operator->(); }
|
||||
|
||||
template <class Iterator>
|
||||
struct iterator_to_element_ptr
|
||||
{
|
||||
typedef typename boost::movelib::iterator_traits<Iterator>::pointer pointer;
|
||||
typedef typename boost::movelib::pointer_element<pointer>::type element_type;
|
||||
typedef element_type* type;
|
||||
};
|
||||
|
||||
} //namespace detail {
|
||||
|
||||
template <class Iterator>
|
||||
inline typename boost::movelib::detail::iterator_to_element_ptr<Iterator>::type
|
||||
iterator_to_raw_pointer(const Iterator &i)
|
||||
{
|
||||
return ::boost::movelib::to_raw_pointer
|
||||
( ::boost::movelib::detail::iterator_to_pointer(i) );
|
||||
}
|
||||
|
||||
} //namespace movelib {
|
||||
} //namespace boost {
|
||||
|
||||
#endif //#ifndef BOOST_MOVE_DETAIL_ITERATOR_TO_RAW_POINTER_HPP
|
168
3rdparty/boost/boost/move/detail/pointer_element.hpp
vendored
Normal file
168
3rdparty/boost/boost/move/detail/pointer_element.hpp
vendored
Normal file
@ -0,0 +1,168 @@
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztanaga 2014-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)
|
||||
//
|
||||
// See http://www.boost.org/libs/move for documentation.
|
||||
//
|
||||
//////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef BOOST_MOVE_DETAIL_POINTER_ELEMENT_HPP
|
||||
#define BOOST_MOVE_DETAIL_POINTER_ELEMENT_HPP
|
||||
|
||||
#ifndef BOOST_CONFIG_HPP
|
||||
# include <boost/config.hpp>
|
||||
#endif
|
||||
|
||||
#if defined(BOOST_HAS_PRAGMA_ONCE)
|
||||
# pragma once
|
||||
#endif
|
||||
|
||||
#ifndef BOOST_MOVE_DETAIL_WORKAROUND_HPP
|
||||
#include <boost/move/detail/workaround.hpp>
|
||||
#endif //BOOST_MOVE_DETAIL_WORKAROUND_HPP
|
||||
|
||||
namespace boost {
|
||||
namespace movelib {
|
||||
namespace detail{
|
||||
|
||||
//////////////////////
|
||||
//struct first_param
|
||||
//////////////////////
|
||||
|
||||
template <typename T> struct first_param
|
||||
{ typedef void type; };
|
||||
|
||||
#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
|
||||
|
||||
template <template <typename, typename...> class TemplateClass, typename T, typename... Args>
|
||||
struct first_param< TemplateClass<T, Args...> >
|
||||
{
|
||||
typedef T type;
|
||||
};
|
||||
|
||||
#else //C++03 compilers
|
||||
|
||||
template < template //0arg
|
||||
<class
|
||||
> class TemplateClass, class T
|
||||
>
|
||||
struct first_param
|
||||
< TemplateClass<T> >
|
||||
{ typedef T type; };
|
||||
|
||||
template < template //1arg
|
||||
<class,class
|
||||
> class TemplateClass, class T
|
||||
, class P0>
|
||||
struct first_param
|
||||
< TemplateClass<T, P0> >
|
||||
{ typedef T type; };
|
||||
|
||||
template < template //2arg
|
||||
<class,class,class
|
||||
> class TemplateClass, class T
|
||||
, class P0, class P1>
|
||||
struct first_param
|
||||
< TemplateClass<T, P0, P1> >
|
||||
{ typedef T type; };
|
||||
|
||||
template < template //3arg
|
||||
<class,class,class,class
|
||||
> class TemplateClass, class T
|
||||
, class P0, class P1, class P2>
|
||||
struct first_param
|
||||
< TemplateClass<T, P0, P1, P2> >
|
||||
{ typedef T type; };
|
||||
|
||||
template < template //4arg
|
||||
<class,class,class,class,class
|
||||
> class TemplateClass, class T
|
||||
, class P0, class P1, class P2, class P3>
|
||||
struct first_param
|
||||
< TemplateClass<T, P0, P1, P2, P3> >
|
||||
{ typedef T type; };
|
||||
|
||||
template < template //5arg
|
||||
<class,class,class,class,class,class
|
||||
> class TemplateClass, class T
|
||||
, class P0, class P1, class P2, class P3, class P4>
|
||||
struct first_param
|
||||
< TemplateClass<T, P0, P1, P2, P3, P4> >
|
||||
{ typedef T type; };
|
||||
|
||||
template < template //6arg
|
||||
<class,class,class,class,class,class,class
|
||||
> class TemplateClass, class T
|
||||
, class P0, class P1, class P2, class P3, class P4, class P5>
|
||||
struct first_param
|
||||
< TemplateClass<T, P0, P1, P2, P3, P4, P5> >
|
||||
{ typedef T type; };
|
||||
|
||||
template < template //7arg
|
||||
<class,class,class,class,class,class,class,class
|
||||
> class TemplateClass, class T
|
||||
, class P0, class P1, class P2, class P3, class P4, class P5, class P6>
|
||||
struct first_param
|
||||
< TemplateClass<T, P0, P1, P2, P3, P4, P5, P6> >
|
||||
{ typedef T type; };
|
||||
|
||||
template < template //8arg
|
||||
<class,class,class,class,class,class,class,class,class
|
||||
> class TemplateClass, class T
|
||||
, class P0, class P1, class P2, class P3, class P4, class P5, class P6, class P7>
|
||||
struct first_param
|
||||
< TemplateClass<T, P0, P1, P2, P3, P4, P5, P6, P7> >
|
||||
{ typedef T type; };
|
||||
|
||||
template < template //9arg
|
||||
<class,class,class,class,class,class,class,class,class,class
|
||||
> class TemplateClass, class T
|
||||
, class P0, class P1, class P2, class P3, class P4, class P5, class P6, class P7, class P8>
|
||||
struct first_param
|
||||
< TemplateClass<T, P0, P1, P2, P3, P4, P5, P6, P7, P8> >
|
||||
{ typedef T type; };
|
||||
|
||||
#endif //!defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES)
|
||||
|
||||
template <typename T>
|
||||
struct has_internal_pointer_element
|
||||
{
|
||||
template <typename X>
|
||||
static char test(int, typename X::element_type*);
|
||||
|
||||
template <typename X>
|
||||
static int test(...);
|
||||
|
||||
static const bool value = (1 == sizeof(test<T>(0, 0)));
|
||||
};
|
||||
|
||||
template<class Ptr, bool = has_internal_pointer_element<Ptr>::value>
|
||||
struct pointer_element_impl
|
||||
{
|
||||
typedef typename Ptr::element_type type;
|
||||
};
|
||||
|
||||
template<class Ptr>
|
||||
struct pointer_element_impl<Ptr, false>
|
||||
{
|
||||
typedef typename boost::movelib::detail::first_param<Ptr>::type type;
|
||||
};
|
||||
|
||||
} //namespace detail{
|
||||
|
||||
template <typename Ptr>
|
||||
struct pointer_element
|
||||
{
|
||||
typedef typename ::boost::movelib::detail::pointer_element_impl<Ptr>::type type;
|
||||
};
|
||||
|
||||
template <typename T>
|
||||
struct pointer_element<T*>
|
||||
{ typedef T type; };
|
||||
|
||||
} //namespace movelib {
|
||||
} //namespace boost {
|
||||
|
||||
#endif // defined(BOOST_MOVE_DETAIL_POINTER_ELEMENT_HPP)
|
45
3rdparty/boost/boost/move/detail/to_raw_pointer.hpp
vendored
Normal file
45
3rdparty/boost/boost/move/detail/to_raw_pointer.hpp
vendored
Normal file
@ -0,0 +1,45 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// (C) Copyright Ion Gaztanaga 2017-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)
|
||||
//
|
||||
// See http://www.boost.org/libs/move for documentation.
|
||||
//
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
#ifndef BOOST_MOVE_DETAIL_TO_RAW_POINTER_HPP
|
||||
#define BOOST_MOVE_DETAIL_TO_RAW_POINTER_HPP
|
||||
|
||||
#ifndef BOOST_CONFIG_HPP
|
||||
# include <boost/config.hpp>
|
||||
#endif
|
||||
|
||||
#if defined(BOOST_HAS_PRAGMA_ONCE)
|
||||
# pragma once
|
||||
#endif
|
||||
|
||||
#include <boost/move/detail/config_begin.hpp>
|
||||
#include <boost/move/detail/workaround.hpp>
|
||||
#include <boost/move/detail/pointer_element.hpp>
|
||||
|
||||
namespace boost {
|
||||
namespace movelib {
|
||||
|
||||
template <class T>
|
||||
BOOST_MOVE_FORCEINLINE T* to_raw_pointer(T* p)
|
||||
{ return p; }
|
||||
|
||||
template <class Pointer>
|
||||
BOOST_MOVE_FORCEINLINE typename boost::movelib::pointer_element<Pointer>::type*
|
||||
to_raw_pointer(const Pointer &p)
|
||||
{ return ::boost::movelib::to_raw_pointer(p.operator->()); }
|
||||
|
||||
} //namespace movelib
|
||||
} //namespace boost
|
||||
|
||||
#include <boost/move/detail/config_end.hpp>
|
||||
|
||||
#endif //BOOST_MOVE_DETAIL_TO_RAW_POINTER_HPP
|
@ -52,8 +52,6 @@
|
||||
#define BOOST_MOVE_MSVC_AUTO_MOVE_RETURN_BUG
|
||||
#endif
|
||||
|
||||
#define BOOST_MOVE_DISABLE_FORCEINLINE
|
||||
|
||||
#if defined(BOOST_MOVE_DISABLE_FORCEINLINE)
|
||||
#define BOOST_MOVE_FORCEINLINE inline
|
||||
#elif defined(BOOST_MOVE_FORCEINLINE_IS_BOOST_FORCELINE)
|
||||
@ -61,6 +59,9 @@
|
||||
#elif defined(BOOST_MSVC) && defined(_DEBUG)
|
||||
//"__forceinline" and MSVC seems to have some bugs in debug mode
|
||||
#define BOOST_MOVE_FORCEINLINE inline
|
||||
#elif defined(__GNUC__) && ((__GNUC__ < 4) || (__GNUC__ == 4 && (__GNUC_MINOR__ < 5)))
|
||||
//Older GCCs have problems with forceinline
|
||||
#define BOOST_MOVE_FORCEINLINE inline
|
||||
#else
|
||||
#define BOOST_MOVE_FORCEINLINE BOOST_FORCEINLINE
|
||||
#endif
|
||||
|
80
3rdparty/boost/boost/mpl/aux_/insert_range_impl.hpp
vendored
Normal file
80
3rdparty/boost/boost/mpl/aux_/insert_range_impl.hpp
vendored
Normal file
@ -0,0 +1,80 @@
|
||||
|
||||
#ifndef BOOST_MPL_AUX_INSERT_RANGE_IMPL_HPP_INCLUDED
|
||||
#define BOOST_MPL_AUX_INSERT_RANGE_IMPL_HPP_INCLUDED
|
||||
|
||||
// Copyright Aleksey Gurtovoy 2000-2004
|
||||
//
|
||||
// Distributed under the Boost Software License, Version 1.0.
|
||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
||||
// http://www.boost.org/LICENSE_1_0.txt)
|
||||
//
|
||||
// See http://www.boost.org/libs/mpl for documentation.
|
||||
|
||||
// $Id$
|
||||
// $Date$
|
||||
// $Revision$
|
||||
|
||||
#include <boost/mpl/placeholders.hpp>
|
||||
#include <boost/mpl/fold.hpp>
|
||||
#include <boost/mpl/insert.hpp>
|
||||
#include <boost/mpl/clear.hpp>
|
||||
#include <boost/mpl/joint_view.hpp>
|
||||
#include <boost/mpl/iterator_range.hpp>
|
||||
#include <boost/mpl/aux_/na_spec.hpp>
|
||||
#include <boost/mpl/aux_/iter_push_front.hpp>
|
||||
#include <boost/mpl/aux_/traits_lambda_spec.hpp>
|
||||
#include <boost/mpl/aux_/config/forwarding.hpp>
|
||||
|
||||
#include <boost/type_traits/same_traits.hpp>
|
||||
|
||||
namespace boost { namespace mpl {
|
||||
|
||||
// default implementation; conrete sequences might override it by
|
||||
// specializing either the 'insert_range_impl' or the primary
|
||||
// 'insert_range' template
|
||||
|
||||
|
||||
template< typename Tag >
|
||||
struct insert_range_impl
|
||||
{
|
||||
template<
|
||||
typename Sequence
|
||||
, typename Pos
|
||||
, typename Range
|
||||
>
|
||||
struct apply
|
||||
#if !defined(BOOST_MPL_CFG_NO_NESTED_FORWARDING)
|
||||
: reverse_fold<
|
||||
joint_view<
|
||||
iterator_range<typename begin<Sequence>::type,Pos>
|
||||
, joint_view<
|
||||
Range
|
||||
, iterator_range<Pos,typename end<Sequence>::type>
|
||||
>
|
||||
>
|
||||
, typename clear<Sequence>::type
|
||||
, insert<_1, begin<_1>, _2>
|
||||
>
|
||||
{
|
||||
#else
|
||||
{
|
||||
typedef typename reverse_fold<
|
||||
joint_view<
|
||||
iterator_range<typename begin<Sequence>::type,Pos>
|
||||
, joint_view<
|
||||
Range
|
||||
, iterator_range<Pos,typename end<Sequence>::type>
|
||||
>
|
||||
>
|
||||
, typename clear<Sequence>::type
|
||||
, insert<_1, begin<_1>, _2>
|
||||
>::type type;
|
||||
#endif
|
||||
};
|
||||
};
|
||||
|
||||
BOOST_MPL_ALGORITM_TRAITS_LAMBDA_SPEC(3,insert_range_impl)
|
||||
|
||||
}}
|
||||
|
||||
#endif // BOOST_MPL_AUX_INSERT_RANGE_IMPL_HPP_INCLUDED
|
36
3rdparty/boost/boost/mpl/aux_/iter_push_front.hpp
vendored
Normal file
36
3rdparty/boost/boost/mpl/aux_/iter_push_front.hpp
vendored
Normal file
@ -0,0 +1,36 @@
|
||||
|
||||
#ifndef BOOST_MPL_ITER_PUSH_FRONT_HPP_INCLUDED
|
||||
#define BOOST_MPL_ITER_PUSH_FRONT_HPP_INCLUDED
|
||||
|
||||
// Copyright Aleksey Gurtovoy 2002-2004
|
||||
//
|
||||
// Distributed under the Boost Software License, Version 1.0.
|
||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
||||
// http://www.boost.org/LICENSE_1_0.txt)
|
||||
//
|
||||
// See http://www.boost.org/libs/mpl for documentation.
|
||||
|
||||
// $Id$
|
||||
// $Date$
|
||||
// $Revision$
|
||||
|
||||
#include <boost/mpl/push_front.hpp>
|
||||
#include <boost/mpl/deref.hpp>
|
||||
|
||||
namespace boost { namespace mpl { namespace aux {
|
||||
|
||||
template<
|
||||
typename Sequence
|
||||
, typename Iterator
|
||||
>
|
||||
struct iter_push_front
|
||||
{
|
||||
typedef typename push_front<
|
||||
Sequence
|
||||
, typename deref<Iterator>::type
|
||||
>::type type;
|
||||
};
|
||||
|
||||
}}}
|
||||
|
||||
#endif // BOOST_MPL_ITER_PUSH_FRONT_HPP_INCLUDED
|
120
3rdparty/boost/boost/mpl/aux_/joint_iter.hpp
vendored
Normal file
120
3rdparty/boost/boost/mpl/aux_/joint_iter.hpp
vendored
Normal file
@ -0,0 +1,120 @@
|
||||
|
||||
#ifndef BOOST_MPL_AUX_JOINT_ITER_HPP_INCLUDED
|
||||
#define BOOST_MPL_AUX_JOINT_ITER_HPP_INCLUDED
|
||||
|
||||
// Copyright Aleksey Gurtovoy 2000-2004
|
||||
//
|
||||
// Distributed under the Boost Software License, Version 1.0.
|
||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
||||
// http://www.boost.org/LICENSE_1_0.txt)
|
||||
//
|
||||
// See http://www.boost.org/libs/mpl for documentation.
|
||||
|
||||
// $Id$
|
||||
// $Date$
|
||||
// $Revision$
|
||||
|
||||
#include <boost/mpl/next_prior.hpp>
|
||||
#include <boost/mpl/deref.hpp>
|
||||
#include <boost/mpl/iterator_tags.hpp>
|
||||
#include <boost/mpl/aux_/lambda_spec.hpp>
|
||||
#include <boost/mpl/aux_/config/ctps.hpp>
|
||||
|
||||
#if defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
|
||||
# include <boost/type_traits/is_same.hpp>
|
||||
#endif
|
||||
|
||||
namespace boost { namespace mpl {
|
||||
|
||||
#if !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
|
||||
|
||||
template<
|
||||
typename Iterator1
|
||||
, typename LastIterator1
|
||||
, typename Iterator2
|
||||
>
|
||||
struct joint_iter
|
||||
{
|
||||
typedef Iterator1 base;
|
||||
typedef forward_iterator_tag category;
|
||||
};
|
||||
|
||||
template<
|
||||
typename LastIterator1
|
||||
, typename Iterator2
|
||||
>
|
||||
struct joint_iter<LastIterator1,LastIterator1,Iterator2>
|
||||
{
|
||||
typedef Iterator2 base;
|
||||
typedef forward_iterator_tag category;
|
||||
};
|
||||
|
||||
|
||||
template< typename I1, typename L1, typename I2 >
|
||||
struct deref< joint_iter<I1,L1,I2> >
|
||||
{
|
||||
typedef typename joint_iter<I1,L1,I2>::base base_;
|
||||
typedef typename deref<base_>::type type;
|
||||
};
|
||||
|
||||
template< typename I1, typename L1, typename I2 >
|
||||
struct next< joint_iter<I1,L1,I2> >
|
||||
{
|
||||
typedef joint_iter< typename mpl::next<I1>::type,L1,I2 > type;
|
||||
};
|
||||
|
||||
template< typename L1, typename I2 >
|
||||
struct next< joint_iter<L1,L1,I2> >
|
||||
{
|
||||
typedef joint_iter< L1,L1,typename mpl::next<I2>::type > type;
|
||||
};
|
||||
|
||||
#else // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
|
||||
|
||||
template<
|
||||
typename Iterator1
|
||||
, typename LastIterator1
|
||||
, typename Iterator2
|
||||
>
|
||||
struct joint_iter;
|
||||
|
||||
template< bool > struct joint_iter_impl
|
||||
{
|
||||
template< typename I1, typename L1, typename I2 > struct result_
|
||||
{
|
||||
typedef I1 base;
|
||||
typedef forward_iterator_tag category;
|
||||
typedef joint_iter< typename mpl::next<I1>::type,L1,I2 > next;
|
||||
typedef typename deref<I1>::type type;
|
||||
};
|
||||
};
|
||||
|
||||
template<> struct joint_iter_impl<true>
|
||||
{
|
||||
template< typename I1, typename L1, typename I2 > struct result_
|
||||
{
|
||||
typedef I2 base;
|
||||
typedef forward_iterator_tag category;
|
||||
typedef joint_iter< L1,L1,typename mpl::next<I2>::type > next;
|
||||
typedef typename deref<I2>::type type;
|
||||
};
|
||||
};
|
||||
|
||||
template<
|
||||
typename Iterator1
|
||||
, typename LastIterator1
|
||||
, typename Iterator2
|
||||
>
|
||||
struct joint_iter
|
||||
: joint_iter_impl< is_same<Iterator1,LastIterator1>::value >
|
||||
::template result_<Iterator1,LastIterator1,Iterator2>
|
||||
{
|
||||
};
|
||||
|
||||
#endif // BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
|
||||
|
||||
BOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(3, joint_iter)
|
||||
|
||||
}}
|
||||
|
||||
#endif // BOOST_MPL_AUX_JOINT_ITER_HPP_INCLUDED
|
41
3rdparty/boost/boost/mpl/insert_range.hpp
vendored
Normal file
41
3rdparty/boost/boost/mpl/insert_range.hpp
vendored
Normal file
@ -0,0 +1,41 @@
|
||||
|
||||
#ifndef BOOST_MPL_INSERT_RANGE_HPP_INCLUDED
|
||||
#define BOOST_MPL_INSERT_RANGE_HPP_INCLUDED
|
||||
|
||||
// Copyright Aleksey Gurtovoy 2000-2004
|
||||
//
|
||||
// Distributed under the Boost Software License, Version 1.0.
|
||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
||||
// http://www.boost.org/LICENSE_1_0.txt)
|
||||
//
|
||||
// See http://www.boost.org/libs/mpl for documentation.
|
||||
|
||||
// $Id$
|
||||
// $Date$
|
||||
// $Revision$
|
||||
|
||||
#include <boost/mpl/insert_range_fwd.hpp>
|
||||
#include <boost/mpl/sequence_tag.hpp>
|
||||
#include <boost/mpl/aux_/insert_range_impl.hpp>
|
||||
#include <boost/mpl/aux_/na_spec.hpp>
|
||||
#include <boost/mpl/aux_/lambda_support.hpp>
|
||||
|
||||
namespace boost { namespace mpl {
|
||||
|
||||
template<
|
||||
typename BOOST_MPL_AUX_NA_PARAM(Sequence)
|
||||
, typename BOOST_MPL_AUX_NA_PARAM(Pos)
|
||||
, typename BOOST_MPL_AUX_NA_PARAM(Range)
|
||||
>
|
||||
struct insert_range
|
||||
: insert_range_impl< typename sequence_tag<Sequence>::type >
|
||||
::template apply< Sequence,Pos,Range >
|
||||
{
|
||||
BOOST_MPL_AUX_LAMBDA_SUPPORT(3,insert_range,(Sequence,Pos,Range))
|
||||
};
|
||||
|
||||
BOOST_MPL_AUX_NA_SPEC(3, insert_range)
|
||||
|
||||
}}
|
||||
|
||||
#endif // BOOST_MPL_INSERT_RANGE_HPP_INCLUDED
|
65
3rdparty/boost/boost/mpl/joint_view.hpp
vendored
Normal file
65
3rdparty/boost/boost/mpl/joint_view.hpp
vendored
Normal file
@ -0,0 +1,65 @@
|
||||
|
||||
#ifndef BOOST_MPL_JOINT_VIEW_HPP_INCLUDED
|
||||
#define BOOST_MPL_JOINT_VIEW_HPP_INCLUDED
|
||||
|
||||
// Copyright Aleksey Gurtovoy 2000-2004
|
||||
//
|
||||
// Distributed under the Boost Software License, Version 1.0.
|
||||
// (See accompanying file LICENSE_1_0.txt or copy at
|
||||
// http://www.boost.org/LICENSE_1_0.txt)
|
||||
//
|
||||
// See http://www.boost.org/libs/mpl for documentation.
|
||||
|
||||
// $Id$
|
||||
// $Date$
|
||||
// $Revision$
|
||||
|
||||
#include <boost/mpl/aux_/joint_iter.hpp>
|
||||
#include <boost/mpl/plus.hpp>
|
||||
#include <boost/mpl/size_fwd.hpp>
|
||||
#include <boost/mpl/begin_end.hpp>
|
||||
#include <boost/mpl/aux_/na_spec.hpp>
|
||||
|
||||
namespace boost { namespace mpl {
|
||||
|
||||
namespace aux {
|
||||
struct joint_view_tag;
|
||||
}
|
||||
|
||||
template<>
|
||||
struct size_impl< aux::joint_view_tag >
|
||||
{
|
||||
template < typename JointView > struct apply
|
||||
: plus<
|
||||
size<typename JointView::sequence1_>
|
||||
, size<typename JointView::sequence2_>
|
||||
>
|
||||
{};
|
||||
};
|
||||
|
||||
template<
|
||||
typename BOOST_MPL_AUX_NA_PARAM(Sequence1_)
|
||||
, typename BOOST_MPL_AUX_NA_PARAM(Sequence2_)
|
||||
>
|
||||
struct joint_view
|
||||
{
|
||||
typedef typename mpl::begin<Sequence1_>::type first1_;
|
||||
typedef typename mpl::end<Sequence1_>::type last1_;
|
||||
typedef typename mpl::begin<Sequence2_>::type first2_;
|
||||
typedef typename mpl::end<Sequence2_>::type last2_;
|
||||
|
||||
// agurt, 25/may/03: for the 'size_traits' implementation above
|
||||
typedef Sequence1_ sequence1_;
|
||||
typedef Sequence2_ sequence2_;
|
||||
|
||||
typedef joint_view type;
|
||||
typedef aux::joint_view_tag tag;
|
||||
typedef joint_iter<first1_,last1_,first2_> begin;
|
||||
typedef joint_iter<last1_,last1_,last2_> end;
|
||||
};
|
||||
|
||||
BOOST_MPL_AUX_NA_SPEC(2, joint_view)
|
||||
|
||||
}}
|
||||
|
||||
#endif // BOOST_MPL_JOINT_VIEW_HPP_INCLUDED
|
125
3rdparty/boost/boost/next_prior.hpp
vendored
125
3rdparty/boost/boost/next_prior.hpp
vendored
@ -1,8 +1,11 @@
|
||||
// Boost next_prior.hpp header file ---------------------------------------//
|
||||
|
||||
// (C) Copyright Dave Abrahams and Daniel Walker 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)
|
||||
// (C) Copyright Dave Abrahams and Daniel Walker 1999-2003.
|
||||
// Copyright (c) Andrey Semashev 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)
|
||||
|
||||
// See http://www.boost.org/libs/utility for documentation.
|
||||
|
||||
@ -13,17 +16,14 @@
|
||||
#define BOOST_NEXT_PRIOR_HPP_INCLUDED
|
||||
|
||||
#include <iterator>
|
||||
#if defined(_MSC_VER) && _MSC_VER <= 1310
|
||||
#include <boost/mpl/and.hpp>
|
||||
#include <boost/type_traits/is_integral.hpp>
|
||||
#endif
|
||||
#include <boost/type_traits/is_unsigned.hpp>
|
||||
#include <boost/type_traits/integral_promotion.hpp>
|
||||
#include <boost/type_traits/make_signed.hpp>
|
||||
#include <boost/config.hpp>
|
||||
#include <boost/core/enable_if.hpp>
|
||||
#include <boost/type_traits/has_plus.hpp>
|
||||
#include <boost/type_traits/has_plus_assign.hpp>
|
||||
#include <boost/type_traits/has_minus.hpp>
|
||||
#include <boost/type_traits/has_minus_assign.hpp>
|
||||
#include <boost/iterator/advance.hpp>
|
||||
#include <boost/iterator/reverse_iterator.hpp>
|
||||
|
||||
namespace boost {
|
||||
|
||||
@ -39,18 +39,36 @@ namespace boost {
|
||||
|
||||
namespace next_prior_detail {
|
||||
|
||||
template< typename T, typename Distance, bool HasPlus = has_plus< T, Distance >::value >
|
||||
struct next_impl2
|
||||
// The trait attempts to detect if the T type is an iterator. Class-type iterators are assumed
|
||||
// to have the nested type iterator_category. Strictly speaking, this is not required to be the
|
||||
// case (e.g. a user can specialize iterator_traits for T without defining T::iterator_category).
|
||||
// Still, this is a good heuristic in practice, and we can't do anything better anyway.
|
||||
// Since C++17 we can test for iterator_traits<T>::iterator_category presence instead as it is
|
||||
// required to be only present for iterators.
|
||||
template< typename T, typename Void = void >
|
||||
struct is_iterator
|
||||
{
|
||||
static T call(T x, Distance n)
|
||||
{
|
||||
std::advance(x, n);
|
||||
return x;
|
||||
}
|
||||
static BOOST_CONSTEXPR_OR_CONST bool value = false;
|
||||
};
|
||||
|
||||
template< typename T >
|
||||
struct is_iterator< T, typename enable_if_has_type< typename T::iterator_category >::type >
|
||||
{
|
||||
static BOOST_CONSTEXPR_OR_CONST bool value = true;
|
||||
};
|
||||
|
||||
template< typename T >
|
||||
struct is_iterator< T*, void >
|
||||
{
|
||||
static BOOST_CONSTEXPR_OR_CONST bool value = true;
|
||||
};
|
||||
|
||||
|
||||
template< typename T, typename Distance, bool HasPlus = has_plus< T, Distance >::value >
|
||||
struct next_plus_impl;
|
||||
|
||||
template< typename T, typename Distance >
|
||||
struct next_impl2< T, Distance, true >
|
||||
struct next_plus_impl< T, Distance, true >
|
||||
{
|
||||
static T call(T x, Distance n)
|
||||
{
|
||||
@ -58,15 +76,14 @@ struct next_impl2< T, Distance, true >
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
template< typename T, typename Distance, bool HasPlusAssign = has_plus_assign< T, Distance >::value >
|
||||
struct next_impl1 :
|
||||
public next_impl2< T, Distance >
|
||||
struct next_plus_assign_impl :
|
||||
public next_plus_impl< T, Distance >
|
||||
{
|
||||
};
|
||||
|
||||
template< typename T, typename Distance >
|
||||
struct next_impl1< T, Distance, true >
|
||||
struct next_plus_assign_impl< T, Distance, true >
|
||||
{
|
||||
static T call(T x, Distance n)
|
||||
{
|
||||
@ -75,47 +92,28 @@ struct next_impl1< T, Distance, true >
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
template<
|
||||
typename T,
|
||||
typename Distance,
|
||||
typename PromotedDistance = typename integral_promotion< Distance >::type,
|
||||
#if !defined(_MSC_VER) || _MSC_VER > 1310
|
||||
bool IsUInt = is_unsigned< PromotedDistance >::value
|
||||
#else
|
||||
// MSVC 7.1 has problems with applying is_unsigned to non-integral types
|
||||
bool IsUInt = mpl::and_< is_integral< PromotedDistance >, is_unsigned< PromotedDistance > >::value
|
||||
#endif
|
||||
>
|
||||
struct prior_impl3
|
||||
template< typename T, typename Distance, bool IsIterator = is_iterator< T >::value >
|
||||
struct next_advance_impl :
|
||||
public next_plus_assign_impl< T, Distance >
|
||||
{
|
||||
static T call(T x, Distance n)
|
||||
{
|
||||
std::advance(x, -n);
|
||||
return x;
|
||||
}
|
||||
};
|
||||
|
||||
template< typename T, typename Distance, typename PromotedDistance >
|
||||
struct prior_impl3< T, Distance, PromotedDistance, true >
|
||||
template< typename T, typename Distance >
|
||||
struct next_advance_impl< T, Distance, true >
|
||||
{
|
||||
static T call(T x, Distance n)
|
||||
{
|
||||
typedef typename make_signed< PromotedDistance >::type signed_distance;
|
||||
std::advance(x, -static_cast< signed_distance >(static_cast< PromotedDistance >(n)));
|
||||
boost::iterators::advance(x, n);
|
||||
return x;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
template< typename T, typename Distance, bool HasMinus = has_minus< T, Distance >::value >
|
||||
struct prior_impl2 :
|
||||
public prior_impl3< T, Distance >
|
||||
{
|
||||
};
|
||||
struct prior_minus_impl;
|
||||
|
||||
template< typename T, typename Distance >
|
||||
struct prior_impl2< T, Distance, true >
|
||||
struct prior_minus_impl< T, Distance, true >
|
||||
{
|
||||
static T call(T x, Distance n)
|
||||
{
|
||||
@ -123,15 +121,14 @@ struct prior_impl2< T, Distance, true >
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
template< typename T, typename Distance, bool HasMinusAssign = has_minus_assign< T, Distance >::value >
|
||||
struct prior_impl1 :
|
||||
public prior_impl2< T, Distance >
|
||||
struct prior_minus_assign_impl :
|
||||
public prior_minus_impl< T, Distance >
|
||||
{
|
||||
};
|
||||
|
||||
template< typename T, typename Distance >
|
||||
struct prior_impl1< T, Distance, true >
|
||||
struct prior_minus_assign_impl< T, Distance, true >
|
||||
{
|
||||
static T call(T x, Distance n)
|
||||
{
|
||||
@ -140,6 +137,24 @@ struct prior_impl1< T, Distance, true >
|
||||
}
|
||||
};
|
||||
|
||||
template< typename T, typename Distance, bool IsIterator = is_iterator< T >::value >
|
||||
struct prior_advance_impl :
|
||||
public prior_minus_assign_impl< T, Distance >
|
||||
{
|
||||
};
|
||||
|
||||
template< typename T, typename Distance >
|
||||
struct prior_advance_impl< T, Distance, true >
|
||||
{
|
||||
static T call(T x, Distance n)
|
||||
{
|
||||
// Avoid negating n to sidestep possible integer overflow
|
||||
boost::iterators::reverse_iterator< T > rx(x);
|
||||
boost::iterators::advance(rx, n);
|
||||
return rx.base();
|
||||
}
|
||||
};
|
||||
|
||||
} // namespace next_prior_detail
|
||||
|
||||
template <class T>
|
||||
@ -148,7 +163,7 @@ inline T next(T x) { return ++x; }
|
||||
template <class T, class Distance>
|
||||
inline T next(T x, Distance n)
|
||||
{
|
||||
return next_prior_detail::next_impl1< T, Distance >::call(x, n);
|
||||
return next_prior_detail::next_advance_impl< T, Distance >::call(x, n);
|
||||
}
|
||||
|
||||
template <class T>
|
||||
@ -157,7 +172,7 @@ inline T prior(T x) { return --x; }
|
||||
template <class T, class Distance>
|
||||
inline T prior(T x, Distance n)
|
||||
{
|
||||
return next_prior_detail::prior_impl1< T, Distance >::call(x, n);
|
||||
return next_prior_detail::prior_advance_impl< T, Distance >::call(x, n);
|
||||
}
|
||||
|
||||
} // namespace boost
|
||||
|
@ -96,4 +96,21 @@
|
||||
|
||||
#endif // defined(__GNUC__)
|
||||
|
||||
#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && !defined(BOOST_NO_CXX11_DECLTYPE) && !BOOST_WORKAROUND(BOOST_MSVC, < 1800) && !BOOST_WORKAROUND(BOOST_GCC_VERSION, < 40500) && !defined(__SUNPRO_CC)
|
||||
// this condition is a copy paste from is_constructible.hpp
|
||||
// I also disable SUNPRO, as it seems not to support type_traits correctly
|
||||
#else
|
||||
# define BOOST_OPTIONAL_DETAIL_NO_IS_CONSTRUCTIBLE_TRAIT
|
||||
#endif
|
||||
|
||||
#if defined __SUNPRO_CC
|
||||
# define BOOST_OPTIONAL_DETAIL_NO_SFINAE_FRIENDLY_CONSTRUCTORS
|
||||
#elif (defined _MSC_FULL_VER) && (_MSC_FULL_VER < 190023026)
|
||||
# define BOOST_OPTIONAL_DETAIL_NO_SFINAE_FRIENDLY_CONSTRUCTORS
|
||||
#elif defined BOOST_GCC && !defined BOOST_GCC_CXX11
|
||||
# define BOOST_OPTIONAL_DETAIL_NO_SFINAE_FRIENDLY_CONSTRUCTORS
|
||||
#elif defined BOOST_GCC_VERSION && BOOST_GCC_VERSION < 40800
|
||||
# define BOOST_OPTIONAL_DETAIL_NO_SFINAE_FRIENDLY_CONSTRUCTORS
|
||||
#endif
|
||||
|
||||
#endif // header guard
|
||||
|
@ -44,6 +44,23 @@ BOOST_DEDUCED_TYPENAME boost::remove_reference<T>::type& forward_reference(T&& r
|
||||
|
||||
#endif // BOOST_OPTIONAL_DETAIL_NO_RVALUE_REFERENCES
|
||||
|
||||
|
||||
template <class T>
|
||||
struct is_const_integral
|
||||
{
|
||||
static const bool value = boost::is_const<T>::value && boost::is_integral<T>::value;
|
||||
};
|
||||
|
||||
template <class T>
|
||||
struct is_const_integral_bad_for_conversion
|
||||
{
|
||||
#if (!defined BOOST_OPTIONAL_CONFIG_ALLOW_BINDING_TO_RVALUES) && (defined BOOST_OPTIONAL_CONFIG_NO_PROPER_CONVERT_FROM_CONST_INT)
|
||||
static const bool value = boost::is_const<T>::value && boost::is_integral<T>::value;
|
||||
#else
|
||||
static const bool value = false;
|
||||
#endif
|
||||
};
|
||||
|
||||
template <class From>
|
||||
void prevent_assignment_from_false_const_integral()
|
||||
{
|
||||
@ -51,12 +68,13 @@ void prevent_assignment_from_false_const_integral()
|
||||
#ifdef BOOST_OPTIONAL_CONFIG_NO_PROPER_ASSIGN_FROM_CONST_INT
|
||||
// MSVC compiler without rvalue refernces: we need to disable the asignment from
|
||||
// const integral lvalue reference, as it may be an invalid temporary
|
||||
BOOST_STATIC_ASSERT_MSG(!(boost::is_const<From>::value && boost::is_integral<From>::value),
|
||||
BOOST_STATIC_ASSERT_MSG(!is_const_integral<From>::value,
|
||||
"binding const lvalue references to integral types is disabled in this compiler");
|
||||
#endif
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
template <class T>
|
||||
struct is_optional_
|
||||
{
|
||||
@ -75,6 +93,21 @@ struct is_no_optional
|
||||
static const bool value = !is_optional_<BOOST_DEDUCED_TYPENAME boost::decay<T>::type>::value;
|
||||
};
|
||||
|
||||
|
||||
template <class T, class U>
|
||||
struct is_same_decayed
|
||||
{
|
||||
static const bool value = ::boost::is_same<T, BOOST_DEDUCED_TYPENAME ::boost::remove_reference<U>::type>::value
|
||||
|| ::boost::is_same<T, const BOOST_DEDUCED_TYPENAME ::boost::remove_reference<U>::type>::value;
|
||||
};
|
||||
|
||||
template <class T, class U>
|
||||
struct no_unboxing_cond
|
||||
{
|
||||
static const bool value = is_no_optional<U>::value && !is_same_decayed<T, U>::value;
|
||||
};
|
||||
|
||||
|
||||
} // namespace detail
|
||||
|
||||
template <class T>
|
||||
@ -94,13 +127,21 @@ public:
|
||||
optional(none_t) BOOST_NOEXCEPT : ptr_() {}
|
||||
|
||||
template <class U>
|
||||
explicit optional(const optional<U&>& rhs) BOOST_NOEXCEPT : ptr_(rhs.ptr_) {}
|
||||
optional(const optional& rhs) BOOST_NOEXCEPT : ptr_(rhs.ptr_) {}
|
||||
explicit optional(const optional<U&>& rhs) BOOST_NOEXCEPT : ptr_(rhs.get_ptr()) {}
|
||||
optional(const optional& rhs) BOOST_NOEXCEPT : ptr_(rhs.get_ptr()) {}
|
||||
|
||||
|
||||
optional& operator=(const optional& rhs) BOOST_NOEXCEPT { ptr_ = rhs.ptr_; return *this; }
|
||||
// the following two implement a 'conditionally explicit' constructor: condition is a hack for buggy compilers with srewed conversion construction from const int
|
||||
template <class U>
|
||||
optional& operator=(const optional<U&>& rhs) BOOST_NOEXCEPT { ptr_ = rhs.ptr_; return *this; }
|
||||
explicit optional(U& rhs, BOOST_DEDUCED_TYPENAME boost::enable_if_c<detail::is_same_decayed<T, U>::value && detail::is_const_integral_bad_for_conversion<U>::value>::type* = 0) BOOST_NOEXCEPT
|
||||
: ptr_(boost::addressof(rhs)) {}
|
||||
|
||||
template <class U>
|
||||
optional(U& rhs, BOOST_DEDUCED_TYPENAME boost::enable_if_c<detail::is_same_decayed<T, U>::value && !detail::is_const_integral_bad_for_conversion<U>::value>::type* = 0) BOOST_NOEXCEPT
|
||||
: ptr_(boost::addressof(rhs)) {}
|
||||
|
||||
optional& operator=(const optional& rhs) BOOST_NOEXCEPT { ptr_ = rhs.get_ptr(); return *this; }
|
||||
template <class U>
|
||||
optional& operator=(const optional<U&>& rhs) BOOST_NOEXCEPT { ptr_ = rhs.get_ptr(); return *this; }
|
||||
optional& operator=(none_t) BOOST_NOEXCEPT { ptr_ = 0; return *this; }
|
||||
|
||||
|
||||
@ -121,8 +162,10 @@ public:
|
||||
|
||||
#ifndef BOOST_OPTIONAL_DETAIL_NO_RVALUE_REFERENCES
|
||||
|
||||
optional(T&& /* rhs */) BOOST_NOEXCEPT { detail::prevent_binding_rvalue<T&&>(); }
|
||||
|
||||
template <class R>
|
||||
optional(R&& r, BOOST_DEDUCED_TYPENAME boost::enable_if<detail::is_no_optional<R> >::type* = 0) BOOST_NOEXCEPT
|
||||
optional(R&& r, BOOST_DEDUCED_TYPENAME boost::enable_if<detail::no_unboxing_cond<T, R> >::type* = 0) BOOST_NOEXCEPT
|
||||
: ptr_(boost::addressof(r)) { detail::prevent_binding_rvalue<R>(); }
|
||||
|
||||
template <class R>
|
||||
@ -154,19 +197,26 @@ public:
|
||||
|
||||
#else // BOOST_OPTIONAL_DETAIL_NO_RVALUE_REFERENCES
|
||||
|
||||
|
||||
// the following two implement a 'conditionally explicit' constructor
|
||||
template <class U>
|
||||
optional(U& v, BOOST_DEDUCED_TYPENAME boost::enable_if<detail::is_no_optional<U> >::type* = 0) BOOST_NOEXCEPT : ptr_(boost::addressof(v)) { }
|
||||
explicit optional(U& v, BOOST_DEDUCED_TYPENAME boost::enable_if_c<detail::no_unboxing_cond<T, U>::value && detail::is_const_integral_bad_for_conversion<U>::value >::type* = 0) BOOST_NOEXCEPT
|
||||
: ptr_(boost::addressof(v)) { }
|
||||
|
||||
template <class U>
|
||||
optional(U& v, BOOST_DEDUCED_TYPENAME boost::enable_if_c<detail::no_unboxing_cond<T, U>::value && !detail::is_const_integral_bad_for_conversion<U>::value >::type* = 0) BOOST_NOEXCEPT
|
||||
: ptr_(boost::addressof(v)) { }
|
||||
|
||||
template <class U>
|
||||
optional(bool cond, U& v, BOOST_DEDUCED_TYPENAME boost::enable_if<detail::is_no_optional<U> >::type* = 0) BOOST_NOEXCEPT : ptr_(cond ? boost::addressof(v) : 0) {}
|
||||
optional(bool cond, U& v, BOOST_DEDUCED_TYPENAME boost::enable_if<detail::is_no_optional<U> >::type* = 0) BOOST_NOEXCEPT : ptr_(cond ? boost::addressof(v) : 0) {}
|
||||
|
||||
template <class U>
|
||||
BOOST_DEDUCED_TYPENAME boost::enable_if<detail::is_no_optional<U>, optional<T&>&>::type
|
||||
operator=(U& v) BOOST_NOEXCEPT
|
||||
{
|
||||
detail::prevent_assignment_from_false_const_integral<U>();
|
||||
ptr_ = boost::addressof(v); return *this;
|
||||
}
|
||||
BOOST_DEDUCED_TYPENAME boost::enable_if<detail::is_no_optional<U>, optional<T&>&>::type
|
||||
operator=(U& v) BOOST_NOEXCEPT
|
||||
{
|
||||
detail::prevent_assignment_from_false_const_integral<U>();
|
||||
ptr_ = boost::addressof(v); return *this;
|
||||
}
|
||||
|
||||
template <class U>
|
||||
void emplace(U& v, BOOST_DEDUCED_TYPENAME boost::enable_if<detail::is_no_optional<U> >::type* = 0) BOOST_NOEXCEPT
|
||||
|
311
3rdparty/boost/boost/optional/optional.hpp
vendored
311
3rdparty/boost/boost/optional/optional.hpp
vendored
@ -1,5 +1,5 @@
|
||||
// Copyright (C) 2003, 2008 Fernando Luis Cacciola Carballal.
|
||||
// Copyright (C) 2014, 2015 Andrzej Krzemienski.
|
||||
// Copyright (C) 2014 - 2016 Andrzej Krzemienski.
|
||||
//
|
||||
// Use, modification, and distribution is subject to the Boost Software
|
||||
// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
|
||||
@ -56,6 +56,31 @@
|
||||
#include <boost/optional/detail/old_optional_implementation.hpp>
|
||||
#else
|
||||
namespace boost {
|
||||
|
||||
namespace optional_ns {
|
||||
|
||||
// a tag for in-place initialization of contained value
|
||||
struct in_place_init_t
|
||||
{
|
||||
struct init_tag{};
|
||||
explicit in_place_init_t(init_tag){}
|
||||
};
|
||||
const in_place_init_t in_place_init ((in_place_init_t::init_tag()));
|
||||
|
||||
// a tag for conditional in-place initialization of contained value
|
||||
struct in_place_init_if_t
|
||||
{
|
||||
struct init_tag{};
|
||||
explicit in_place_init_if_t(init_tag){}
|
||||
};
|
||||
const in_place_init_if_t in_place_init_if ((in_place_init_if_t::init_tag()));
|
||||
|
||||
} // namespace optional_ns
|
||||
|
||||
using optional_ns::in_place_init_t;
|
||||
using optional_ns::in_place_init;
|
||||
using optional_ns::in_place_init_if_t;
|
||||
using optional_ns::in_place_init_if;
|
||||
|
||||
namespace optional_detail {
|
||||
|
||||
@ -338,51 +363,179 @@ class optional_base : public optional_tag
|
||||
#if (!defined BOOST_OPTIONAL_DETAIL_NO_RVALUE_REFERENCES) && (!defined BOOST_NO_CXX11_VARIADIC_TEMPLATES)
|
||||
// Constructs in-place
|
||||
// upon exception *this is always uninitialized
|
||||
template<class... Args>
|
||||
void construct ( in_place_init_t, Args&&... args )
|
||||
{
|
||||
::new (m_storage.address()) value_type( boost::forward<Args>(args)... ) ;
|
||||
m_initialized = true ;
|
||||
}
|
||||
|
||||
template<class... Args>
|
||||
void emplace_assign ( Args&&... args )
|
||||
{
|
||||
destroy();
|
||||
::new (m_storage.address()) value_type( boost::forward<Args>(args)... );
|
||||
m_initialized = true ;
|
||||
}
|
||||
{
|
||||
destroy();
|
||||
construct(in_place_init, boost::forward<Args>(args)...);
|
||||
}
|
||||
|
||||
template<class... Args>
|
||||
explicit optional_base ( in_place_init_t, Args&&... args )
|
||||
:
|
||||
m_initialized(false)
|
||||
{
|
||||
construct(in_place_init, boost::forward<Args>(args)...);
|
||||
}
|
||||
|
||||
template<class... Args>
|
||||
explicit optional_base ( in_place_init_if_t, bool cond, Args&&... args )
|
||||
:
|
||||
m_initialized(false)
|
||||
{
|
||||
if ( cond )
|
||||
construct(in_place_init, boost::forward<Args>(args)...);
|
||||
}
|
||||
#elif (!defined BOOST_OPTIONAL_DETAIL_NO_RVALUE_REFERENCES)
|
||||
template<class Arg>
|
||||
void emplace_assign ( Arg&& arg )
|
||||
void construct ( in_place_init_t, Arg&& arg )
|
||||
{
|
||||
destroy();
|
||||
::new (m_storage.address()) value_type( boost::forward<Arg>(arg) );
|
||||
m_initialized = true ;
|
||||
}
|
||||
|
||||
void emplace_assign ()
|
||||
void construct ( in_place_init_t )
|
||||
{
|
||||
destroy();
|
||||
::new (m_storage.address()) value_type();
|
||||
m_initialized = true ;
|
||||
}
|
||||
#else
|
||||
|
||||
template<class Arg>
|
||||
void emplace_assign ( const Arg& arg )
|
||||
void emplace_assign ( Arg&& arg )
|
||||
{
|
||||
destroy();
|
||||
construct(in_place_init, boost::forward<Arg>(arg)) ;
|
||||
}
|
||||
|
||||
void emplace_assign ()
|
||||
{
|
||||
destroy();
|
||||
construct(in_place_init) ;
|
||||
}
|
||||
|
||||
template<class Arg>
|
||||
explicit optional_base ( in_place_init_t, Arg&& arg )
|
||||
:
|
||||
m_initialized(false)
|
||||
{
|
||||
construct(in_place_init, boost::forward<Arg>(arg));
|
||||
}
|
||||
|
||||
explicit optional_base ( in_place_init_t )
|
||||
:
|
||||
m_initialized(false)
|
||||
{
|
||||
construct(in_place_init);
|
||||
}
|
||||
|
||||
template<class Arg>
|
||||
explicit optional_base ( in_place_init_if_t, bool cond, Arg&& arg )
|
||||
:
|
||||
m_initialized(false)
|
||||
{
|
||||
if ( cond )
|
||||
construct(in_place_init, boost::forward<Arg>(arg));
|
||||
}
|
||||
|
||||
explicit optional_base ( in_place_init_if_t, bool cond )
|
||||
:
|
||||
m_initialized(false)
|
||||
{
|
||||
if ( cond )
|
||||
construct(in_place_init);
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
template<class Arg>
|
||||
void construct ( in_place_init_t, const Arg& arg )
|
||||
{
|
||||
::new (m_storage.address()) value_type( arg );
|
||||
m_initialized = true ;
|
||||
}
|
||||
|
||||
template<class Arg>
|
||||
void construct ( in_place_init_t, Arg& arg )
|
||||
{
|
||||
::new (m_storage.address()) value_type( arg );
|
||||
m_initialized = true ;
|
||||
}
|
||||
|
||||
void construct ( in_place_init_t )
|
||||
{
|
||||
::new (m_storage.address()) value_type();
|
||||
m_initialized = true ;
|
||||
}
|
||||
|
||||
template<class Arg>
|
||||
void emplace_assign ( const Arg& arg )
|
||||
{
|
||||
destroy();
|
||||
construct(in_place_init, arg);
|
||||
}
|
||||
|
||||
template<class Arg>
|
||||
void emplace_assign ( Arg& arg )
|
||||
{
|
||||
destroy();
|
||||
::new (m_storage.address()) value_type( arg );
|
||||
m_initialized = true ;
|
||||
}
|
||||
{
|
||||
destroy();
|
||||
construct(in_place_init, arg);
|
||||
}
|
||||
|
||||
void emplace_assign ()
|
||||
{
|
||||
destroy();
|
||||
::new (m_storage.address()) value_type();
|
||||
m_initialized = true ;
|
||||
}
|
||||
{
|
||||
destroy();
|
||||
construct(in_place_init);
|
||||
}
|
||||
|
||||
template<class Arg>
|
||||
explicit optional_base ( in_place_init_t, const Arg& arg )
|
||||
: m_initialized(false)
|
||||
{
|
||||
construct(in_place_init, arg);
|
||||
}
|
||||
|
||||
template<class Arg>
|
||||
explicit optional_base ( in_place_init_t, Arg& arg )
|
||||
: m_initialized(false)
|
||||
{
|
||||
construct(in_place_init, arg);
|
||||
}
|
||||
|
||||
explicit optional_base ( in_place_init_t )
|
||||
: m_initialized(false)
|
||||
{
|
||||
construct(in_place_init);
|
||||
}
|
||||
|
||||
template<class Arg>
|
||||
explicit optional_base ( in_place_init_if_t, bool cond, const Arg& arg )
|
||||
: m_initialized(false)
|
||||
{
|
||||
if ( cond )
|
||||
construct(in_place_init, arg);
|
||||
}
|
||||
|
||||
template<class Arg>
|
||||
explicit optional_base ( in_place_init_if_t, bool cond, Arg& arg )
|
||||
: m_initialized(false)
|
||||
{
|
||||
if ( cond )
|
||||
construct(in_place_init, arg);
|
||||
}
|
||||
|
||||
explicit optional_base ( in_place_init_if_t, bool cond )
|
||||
: m_initialized(false)
|
||||
{
|
||||
if ( cond )
|
||||
construct(in_place_init);
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef BOOST_OPTIONAL_NO_INPLACE_FACTORY_SUPPORT
|
||||
@ -574,30 +727,36 @@ class optional_base : public optional_tag
|
||||
template <typename U>
|
||||
struct is_optional_related
|
||||
: boost::conditional< boost::is_base_of<optional_detail::optional_tag, BOOST_DEDUCED_TYPENAME boost::decay<U>::type>::value
|
||||
|| boost::is_same<BOOST_DEDUCED_TYPENAME boost::decay<U>::type, none_t>::value,
|
||||
|| boost::is_same<BOOST_DEDUCED_TYPENAME boost::decay<U>::type, none_t>::value
|
||||
|| boost::is_same<BOOST_DEDUCED_TYPENAME boost::decay<U>::type, in_place_init_t>::value
|
||||
|| boost::is_same<BOOST_DEDUCED_TYPENAME boost::decay<U>::type, in_place_init_if_t>::value,
|
||||
boost::true_type, boost::false_type>::type
|
||||
{};
|
||||
|
||||
#if !defined(BOOST_NO_CXX11_VARIADIC_TEMPLATES) && !defined(BOOST_NO_CXX11_DECLTYPE) && !BOOST_WORKAROUND(BOOST_MSVC, < 1800) && !BOOST_WORKAROUND(BOOST_GCC_VERSION, < 40500) && !defined(__SUNPRO_CC)
|
||||
// this condition is a copy paste from is_constructible.hpp
|
||||
// I also disable SUNPRO, as it seems not to support type_traits correctly
|
||||
#if !defined(BOOST_OPTIONAL_DETAIL_NO_IS_CONSTRUCTIBLE_TRAIT)
|
||||
|
||||
template <typename T, typename U>
|
||||
struct is_convertible_to_T_or_factory
|
||||
: boost::conditional< boost::is_base_of<boost::in_place_factory_base, BOOST_DEDUCED_TYPENAME boost::decay<U>::type>::value
|
||||
|| boost::is_base_of<boost::typed_in_place_factory_base, BOOST_DEDUCED_TYPENAME boost::decay<U>::type>::value
|
||||
|| boost::is_constructible<T, U&&>::value
|
||||
|| (boost::is_constructible<T, U&&>::value && !boost::is_same<T, BOOST_DEDUCED_TYPENAME boost::decay<U>::type>::value)
|
||||
, boost::true_type, boost::false_type>::type
|
||||
{};
|
||||
|
||||
template <typename T, typename U>
|
||||
struct is_optional_constructible : boost::is_constructible<T, U>
|
||||
{};
|
||||
|
||||
#else
|
||||
|
||||
#define BOOST_OPTIONAL_DETAIL_NO_IS_CONSTRUCTIBLE_TRAIT
|
||||
|
||||
template <typename, typename>
|
||||
struct is_convertible_to_T_or_factory : boost::true_type
|
||||
{};
|
||||
|
||||
template <typename T, typename U>
|
||||
struct is_optional_constructible : boost::true_type
|
||||
{};
|
||||
|
||||
#endif // is_convertible condition
|
||||
|
||||
template <typename T, typename U>
|
||||
@ -657,7 +816,11 @@ class optional : public optional_detail::optional_base<T>
|
||||
// Requires a valid conversion from U to T.
|
||||
// Can throw if T::T(U const&) does
|
||||
template<class U>
|
||||
explicit optional ( optional<U> const& rhs )
|
||||
explicit optional ( optional<U> const& rhs
|
||||
#ifndef BOOST_OPTIONAL_DETAIL_NO_SFINAE_FRIENDLY_CONSTRUCTORS
|
||||
,typename boost::enable_if< optional_detail::is_optional_constructible<T, U const&> >::type* = 0
|
||||
#endif
|
||||
)
|
||||
:
|
||||
base()
|
||||
{
|
||||
@ -670,7 +833,11 @@ class optional : public optional_detail::optional_base<T>
|
||||
// Requires a valid conversion from U to T.
|
||||
// Can throw if T::T(U&&) does
|
||||
template<class U>
|
||||
explicit optional ( optional<U> && rhs )
|
||||
explicit optional ( optional<U> && rhs
|
||||
#ifndef BOOST_OPTIONAL_DETAIL_NO_SFINAE_FRIENDLY_CONSTRUCTORS
|
||||
,typename boost::enable_if< optional_detail::is_optional_constructible<T, U> >::type* = 0
|
||||
#endif
|
||||
)
|
||||
:
|
||||
base()
|
||||
{
|
||||
@ -789,6 +956,19 @@ class optional : public optional_detail::optional_base<T>
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifndef BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
|
||||
|
||||
// Assigns from a T (deep-moves/copies the rhs value)
|
||||
template <typename T_>
|
||||
BOOST_DEDUCED_TYPENAME boost::enable_if<boost::is_same<T, BOOST_DEDUCED_TYPENAME boost::decay<T_>::type>, optional&>::type
|
||||
operator= ( T_&& val )
|
||||
{
|
||||
this->assign( boost::forward<T_>(val) ) ;
|
||||
return *this ;
|
||||
}
|
||||
|
||||
#else
|
||||
|
||||
// Assigns from a T (deep-copies the rhs value)
|
||||
// Basic Guarantee: If T::( T const& ) throws, this is left UNINITIALIZED
|
||||
optional& operator= ( argument_type val )
|
||||
@ -796,7 +976,7 @@ class optional : public optional_detail::optional_base<T>
|
||||
this->assign( val ) ;
|
||||
return *this ;
|
||||
}
|
||||
|
||||
|
||||
#ifndef BOOST_OPTIONAL_DETAIL_NO_RVALUE_REFERENCES
|
||||
// Assigns from a T (deep-moves the rhs value)
|
||||
optional& operator= ( rval_reference_type val )
|
||||
@ -805,7 +985,9 @@ class optional : public optional_detail::optional_base<T>
|
||||
return *this ;
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#endif // BOOST_NO_CXX11_UNIFIED_INITIALIZATION_SYNTAX
|
||||
|
||||
// Assigns from a "none"
|
||||
// Which destroys the current value, if any, leaving this UNINITIALIZED
|
||||
// No-throw (assuming T::~T() doesn't)
|
||||
@ -820,9 +1002,20 @@ class optional : public optional_detail::optional_base<T>
|
||||
// upon exception *this is always uninitialized
|
||||
template<class... Args>
|
||||
void emplace ( Args&&... args )
|
||||
{
|
||||
this->emplace_assign( boost::forward<Args>(args)... );
|
||||
}
|
||||
{
|
||||
this->emplace_assign( boost::forward<Args>(args)... );
|
||||
}
|
||||
|
||||
template<class... Args>
|
||||
explicit optional ( in_place_init_t, Args&&... args )
|
||||
: base( in_place_init, boost::forward<Args>(args)... )
|
||||
{}
|
||||
|
||||
template<class... Args>
|
||||
explicit optional ( in_place_init_if_t, bool cond, Args&&... args )
|
||||
: base( in_place_init_if, cond, boost::forward<Args>(args)... )
|
||||
{}
|
||||
|
||||
#elif (!defined BOOST_OPTIONAL_DETAIL_NO_RVALUE_REFERENCES)
|
||||
template<class Arg>
|
||||
void emplace ( Arg&& arg )
|
||||
@ -834,6 +1027,24 @@ class optional : public optional_detail::optional_base<T>
|
||||
{
|
||||
this->emplace_assign();
|
||||
}
|
||||
|
||||
template<class Args>
|
||||
explicit optional ( in_place_init_t, Args&& args )
|
||||
: base( in_place_init, boost::forward<Args>(args) )
|
||||
{}
|
||||
|
||||
explicit optional ( in_place_init_t )
|
||||
: base( in_place_init )
|
||||
{}
|
||||
|
||||
template<class Args>
|
||||
explicit optional ( in_place_init_if_t, bool cond, Args&& args )
|
||||
: base( in_place_init_if, cond, boost::forward<Args>(args) )
|
||||
{}
|
||||
|
||||
explicit optional ( in_place_init_if_t, bool cond )
|
||||
: base( in_place_init_if, cond )
|
||||
{}
|
||||
#else
|
||||
template<class Arg>
|
||||
void emplace ( const Arg& arg )
|
||||
@ -851,6 +1062,34 @@ class optional : public optional_detail::optional_base<T>
|
||||
{
|
||||
this->emplace_assign();
|
||||
}
|
||||
|
||||
template<class Arg>
|
||||
explicit optional ( in_place_init_t, const Arg& arg )
|
||||
: base( in_place_init, arg )
|
||||
{}
|
||||
|
||||
template<class Arg>
|
||||
explicit optional ( in_place_init_t, Arg& arg )
|
||||
: base( in_place_init, arg )
|
||||
{}
|
||||
|
||||
explicit optional ( in_place_init_t )
|
||||
: base( in_place_init )
|
||||
{}
|
||||
|
||||
template<class Arg>
|
||||
explicit optional ( in_place_init_if_t, bool cond, const Arg& arg )
|
||||
: base( in_place_init_if, cond, arg )
|
||||
{}
|
||||
|
||||
template<class Arg>
|
||||
explicit optional ( in_place_init_if_t, bool cond, Arg& arg )
|
||||
: base( in_place_init_if, cond, arg )
|
||||
{}
|
||||
|
||||
explicit optional ( in_place_init_if_t, bool cond )
|
||||
: base( in_place_init_if, cond )
|
||||
{}
|
||||
#endif
|
||||
|
||||
void swap( optional & arg )
|
||||
|
@ -339,6 +339,7 @@ struct arg_list : Next
|
||||
template <class Default>
|
||||
reference operator[](lazy_default<key_type, Default>) const
|
||||
{
|
||||
BOOST_MPL_ASSERT_NOT((holds_maybe));
|
||||
return arg.value;
|
||||
}
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user