mirror of
https://github.com/boostorg/type_traits.git
synced 2025-08-02 22:14:29 +02:00
Merge branch 'develop'
This commit is contained in:
@@ -24,7 +24,7 @@
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
|
||||
<a name="id1050574"></a>Class Index</h2></div></div></div>
|
||||
<a name="id1038313"></a>Class Index</h2></div></div></div>
|
||||
<p><a class="link" href="s11.html#idx_id_0">A</a> <a class="link" href="s11.html#idx_id_2">C</a> <a class="link" href="s11.html#idx_id_3">D</a> <a class="link" href="s11.html#idx_id_4">E</a> <a class="link" href="s11.html#idx_id_5">F</a> <a class="link" href="s11.html#idx_id_6">H</a> <a class="link" href="s11.html#idx_id_7">I</a> <a class="link" href="s11.html#idx_id_8">M</a> <a class="link" href="s11.html#idx_id_9">N</a> <a class="link" href="s11.html#idx_id_10">O</a> <a class="link" href="s11.html#idx_id_11">P</a> <a class="link" href="s11.html#idx_id_12">R</a> <a class="link" href="s11.html#idx_id_13">T</a></p>
|
||||
<div class="variablelist"><dl class="variablelist">
|
||||
<dt>
|
||||
@@ -157,6 +157,7 @@
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/reference/has_multiplies_assign.html" title="has_multiplies_assign"><span class="index-entry-level-0">has_multiplies_assign</span></a></p></li>
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/reference/has_negate.html" title="has_negate"><span class="index-entry-level-0">has_negate</span></a></p></li>
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/reference/has_new_operator.html" title="has_new_operator"><span class="index-entry-level-0">has_new_operator</span></a></p></li>
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/reference/has_nothrow_assign.html" title="has_nothrow_assign"><span class="index-entry-level-0">has_nothrow_assign</span></a></p></li>
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/reference/has_nothrow_constructor.html" title="has_nothrow_constructor"><span class="index-entry-level-0">has_nothrow_constructor</span></a></p></li>
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/reference/has_nothrow_copy.html" title="has_nothrow_copy"><span class="index-entry-level-0">has_nothrow_copy</span></a></p></li>
|
||||
<li class="listitem" style="list-style-type: none">
|
||||
|
@@ -24,7 +24,7 @@
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
|
||||
<a name="id1056266"></a>Typedef Index</h2></div></div></div>
|
||||
<a name="id1042408"></a>Typedef Index</h2></div></div></div>
|
||||
<p><a class="link" href="s12.html#idx_id_21">F</a> <a class="link" href="s12.html#idx_id_28">R</a> <a class="link" href="s12.html#idx_id_29">T</a> <a class="link" href="s12.html#idx_id_31">V</a></p>
|
||||
<div class="variablelist"><dl class="variablelist">
|
||||
<dt>
|
||||
|
@@ -24,7 +24,7 @@
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
|
||||
<a name="id1056490"></a>Macro Index</h2></div></div></div>
|
||||
<a name="id1042642"></a>Macro Index</h2></div></div></div>
|
||||
<p><a class="link" href="s13.html#idx_id_33">B</a></p>
|
||||
<div class="variablelist"><dl class="variablelist">
|
||||
<dt>
|
||||
|
@@ -23,7 +23,7 @@
|
||||
</div>
|
||||
<div class="section">
|
||||
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
|
||||
<a name="id1057128"></a>Index</h2></div></div></div>
|
||||
<a name="id1046173"></a>Index</h2></div></div></div>
|
||||
<p><a class="link" href="s14.html#idx_id_48">A</a> <a class="link" href="s14.html#idx_id_49">B</a> <a class="link" href="s14.html#idx_id_50">C</a> <a class="link" href="s14.html#idx_id_51">D</a> <a class="link" href="s14.html#idx_id_52">E</a> <a class="link" href="s14.html#idx_id_53">F</a> <a class="link" href="s14.html#idx_id_54">H</a> <a class="link" href="s14.html#idx_id_55">I</a> <a class="link" href="s14.html#idx_id_56">M</a> <a class="link" href="s14.html#idx_id_57">N</a> <a class="link" href="s14.html#idx_id_58">O</a> <a class="link" href="s14.html#idx_id_59">P</a> <a class="link" href="s14.html#idx_id_60">R</a> <a class="link" href="s14.html#idx_id_61">T</a> <a class="link" href="s14.html#idx_id_62">U</a> <a class="link" href="s14.html#idx_id_63">V</a></p>
|
||||
<div class="variablelist"><dl class="variablelist">
|
||||
<dt>
|
||||
@@ -204,10 +204,6 @@
|
||||
</dt>
|
||||
<dd><div class="index"><ul class="index" style="list-style-type: none; ">
|
||||
<li class="listitem" style="list-style-type: none">
|
||||
<p><span class="index-entry-level-0">check</span></p>
|
||||
<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/category/value_traits/operators.html" title="Operator Type Traits"><span class="index-entry-level-1">Operator Type Traits</span></a></p></li></ul></div>
|
||||
</li>
|
||||
<li class="listitem" style="list-style-type: none">
|
||||
<p><span class="index-entry-level-0">common_type</span></p>
|
||||
<div class="index"><ul class="index" style="list-style-type: none; ">
|
||||
<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../boost_typetraits/reference/common_type.html" title="common_type"><span class="index-entry-level-1">common_type</span></a></strong></span></p></li>
|
||||
@@ -517,7 +513,10 @@
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/reference/has_new_operator.html" title="has_new_operator"><span class="index-entry-level-0">has_new_operator</span></a></p></li>
|
||||
<li class="listitem" style="list-style-type: none">
|
||||
<p><span class="index-entry-level-0">has_nothrow_assign</span></p>
|
||||
<div class="index"><ul class="index" style="list-style-type: none; "><li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/reference/has_nothrow_assign.html" title="has_nothrow_assign"><span class="index-entry-level-1">BOOST_HAS_NOTHROW_CONSTRUCTOR</span></a></p></li></ul></div>
|
||||
<div class="index"><ul class="index" style="list-style-type: none; ">
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/reference/has_nothrow_assign.html" title="has_nothrow_assign"><span class="index-entry-level-1">BOOST_HAS_NOTHROW_CONSTRUCTOR</span></a></p></li>
|
||||
<li class="listitem" style="list-style-type: none"><p><span class="bold"><strong><a class="link" href="../boost_typetraits/reference/has_nothrow_assign.html" title="has_nothrow_assign"><span class="index-entry-level-1">has_nothrow_assign</span></a></strong></span></p></li>
|
||||
</ul></div>
|
||||
</li>
|
||||
<li class="listitem" style="list-style-type: none">
|
||||
<p><span class="index-entry-level-0">has_nothrow_constructor</span></p>
|
||||
@@ -856,7 +855,6 @@
|
||||
<p><span class="index-entry-level-0">Operator Type Traits</span></p>
|
||||
<div class="index"><ul class="index" style="list-style-type: none; ">
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/category/value_traits/operators.html" title="Operator Type Traits"><span class="index-entry-level-1">any</span></a></p></li>
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/category/value_traits/operators.html" title="Operator Type Traits"><span class="index-entry-level-1">check</span></a></p></li>
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/category/value_traits/operators.html" title="Operator Type Traits"><span class="index-entry-level-1">dont_care</span></a></p></li>
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/category/value_traits/operators.html" title="Operator Type Traits"><span class="index-entry-level-1">has_equal_to</span></a></p></li>
|
||||
<li class="listitem" style="list-style-type: none"><p><a class="link" href="../boost_typetraits/category/value_traits/operators.html" title="Operator Type Traits"><span class="index-entry-level-1">has_operator</span></a></p></li>
|
||||
|
@@ -49,9 +49,9 @@ template <class T> struct add_reference<T&>
|
||||
// these full specialisations are always required:
|
||||
template <> struct add_reference<void> { typedef void type; };
|
||||
#ifndef BOOST_NO_CV_VOID_SPECIALIZATIONS
|
||||
template <> struct add_reference<const void> { typedef void type; };
|
||||
template <> struct add_reference<const volatile void> { typedef void type; };
|
||||
template <> struct add_reference<volatile void> { typedef void type; };
|
||||
template <> struct add_reference<const void> { typedef const void type; };
|
||||
template <> struct add_reference<const volatile void> { typedef const volatile void type; };
|
||||
template <> struct add_reference<volatile void> { typedef volatile void type; };
|
||||
#endif
|
||||
|
||||
} // namespace boost
|
||||
|
@@ -12,6 +12,7 @@
|
||||
#include <boost/config.hpp>
|
||||
#include <boost/type_traits/decay.hpp>
|
||||
#include <boost/type_traits/declval.hpp>
|
||||
#include <boost/detail/workaround.hpp>
|
||||
|
||||
#if defined(BOOST_NO_CXX11_DECLTYPE)
|
||||
#include <boost/type_traits/detail/common_type_impl.hpp>
|
||||
|
@@ -35,12 +35,16 @@ template<> struct arithmetic_type<2>
|
||||
typedef char (&result_type) [2];
|
||||
};
|
||||
|
||||
#ifndef BOOST_NO_INTRINSIC_WCHAR_T
|
||||
|
||||
template<> struct arithmetic_type<3>
|
||||
{
|
||||
typedef wchar_t type;
|
||||
typedef char (&result_type) [3];
|
||||
};
|
||||
|
||||
#endif
|
||||
|
||||
// There are five standard signed integer types:
|
||||
// “signed char”, “short int”, “int”, “long int”, and “long long int”.
|
||||
|
||||
@@ -170,7 +174,9 @@ private:
|
||||
|
||||
static arithmetic_type<1>::result_type select( arithmetic_type<1>::type );
|
||||
static arithmetic_type<2>::result_type select( arithmetic_type<2>::type );
|
||||
#ifndef BOOST_NO_INTRINSIC_WCHAR_T
|
||||
static arithmetic_type<3>::result_type select( arithmetic_type<3>::type );
|
||||
#endif
|
||||
static arithmetic_type<4>::result_type select( arithmetic_type<4>::type );
|
||||
static arithmetic_type<5>::result_type select( arithmetic_type<5>::type );
|
||||
static arithmetic_type<6>::result_type select( arithmetic_type<6>::type );
|
||||
|
@@ -25,12 +25,12 @@ template<template<class...> class F, class... T>
|
||||
struct mp_valid_impl
|
||||
{
|
||||
template<template<class...> class G, class = G<T...>>
|
||||
static boost::true_type check(int);
|
||||
static boost::true_type check_s(int);
|
||||
|
||||
template<template<class...> class>
|
||||
static boost::false_type check(...);
|
||||
static boost::false_type check_s(...);
|
||||
|
||||
using type = decltype(check<F>(0));
|
||||
using type = decltype(check_s<F>(0));
|
||||
};
|
||||
|
||||
template<template<class...> class F, class... T>
|
||||
|
@@ -12,6 +12,10 @@
|
||||
#include <boost/type_traits/integral_constant.hpp>
|
||||
#include <boost/detail/workaround.hpp>
|
||||
|
||||
#if BOOST_WORKAROUND(BOOST_GCC_VERSION, < 40700)
|
||||
#include <boost/type_traits/is_abstract.hpp>
|
||||
#endif
|
||||
|
||||
#if !defined(BOOST_NO_CXX11_DECLTYPE) && !BOOST_WORKAROUND(BOOST_MSVC, < 1800) && !BOOST_WORKAROUND(BOOST_GCC_VERSION, < 40500)
|
||||
|
||||
#include <boost/type_traits/detail/yes_no_type.hpp>
|
||||
@@ -28,10 +32,25 @@ namespace boost{
|
||||
template<typename>
|
||||
static boost::type_traits::no_type test(...);
|
||||
};
|
||||
|
||||
#if BOOST_WORKAROUND(BOOST_GCC_VERSION, < 40700)
|
||||
template<class T, bool b>
|
||||
struct is_default_constructible_abstract_filter
|
||||
{
|
||||
static const bool value = sizeof(is_default_constructible_imp::test<T>(0)) == sizeof(boost::type_traits::yes_type);
|
||||
};
|
||||
template<class T>
|
||||
struct is_default_constructible_abstract_filter<T, true>
|
||||
{
|
||||
static const bool value = false;
|
||||
};
|
||||
#endif
|
||||
}
|
||||
|
||||
#if BOOST_WORKAROUND(BOOST_GCC_VERSION, < 40700)
|
||||
template <class T> struct is_default_constructible : public integral_constant<bool, detail::is_default_constructible_abstract_filter<T, boost::is_abstract<T>::value>::value>{};
|
||||
#else
|
||||
template <class T> struct is_default_constructible : public integral_constant<bool, sizeof(detail::is_default_constructible_imp::test<T>(0)) == sizeof(boost::type_traits::yes_type)>{};
|
||||
#endif
|
||||
template <class T, std::size_t N> struct is_default_constructible<T[N]> : public is_default_constructible<T>{};
|
||||
template <class T> struct is_default_constructible<T[]> : public is_default_constructible<T>{};
|
||||
template <class T> struct is_default_constructible<T&> : public integral_constant<bool, false>{};
|
||||
|
@@ -33,7 +33,7 @@ template <class T> struct is_nothrow_move_assignable<T&> : public false_type{};
|
||||
template <class T> struct is_nothrow_move_assignable<T&&> : public false_type{};
|
||||
#endif
|
||||
|
||||
#elif !defined(BOOST_NO_CXX11_NOEXCEPT) && !defined(BOOST_NO_SFINAE_EXPR)
|
||||
#elif !defined(BOOST_NO_CXX11_NOEXCEPT) && !defined(BOOST_NO_SFINAE_EXPR) && !BOOST_WORKAROUND(BOOST_GCC_VERSION, < 40700)
|
||||
|
||||
namespace detail{
|
||||
|
||||
|
@@ -26,7 +26,7 @@ struct is_nothrow_move_constructible : public integral_constant<bool, BOOST_IS_N
|
||||
template <class T> struct is_nothrow_move_constructible<volatile T> : public ::boost::false_type {};
|
||||
template <class T> struct is_nothrow_move_constructible<const volatile T> : public ::boost::false_type{};
|
||||
|
||||
#elif !defined(BOOST_NO_CXX11_NOEXCEPT) && !defined(BOOST_NO_SFINAE_EXPR) && !BOOST_WORKAROUND(BOOST_GCC_VERSION, < 40700)
|
||||
#elif !defined(BOOST_NO_CXX11_NOEXCEPT) && !defined(BOOST_NO_SFINAE_EXPR) && !BOOST_WORKAROUND(BOOST_GCC_VERSION, < 40800)
|
||||
|
||||
#include <boost/type_traits/declval.hpp>
|
||||
#include <boost/utility/enable_if.hpp>
|
||||
|
@@ -52,7 +52,12 @@ TT_TEST_BEGIN(add_lvalue_reference)
|
||||
add_lvalue_reference_test_13a();
|
||||
#endif
|
||||
|
||||
TT_TEST_END
|
||||
BOOST_CHECK_TYPE(tt::add_lvalue_reference<void>::type, void);
|
||||
BOOST_CHECK_TYPE(tt::add_lvalue_reference<const void>::type, const void);
|
||||
BOOST_CHECK_TYPE(tt::add_lvalue_reference<const volatile void>::type, const volatile void);
|
||||
BOOST_CHECK_TYPE(tt::add_lvalue_reference<volatile void>::type, volatile void);
|
||||
|
||||
TT_TEST_END
|
||||
|
||||
|
||||
|
||||
|
@@ -52,6 +52,11 @@ TT_TEST_BEGIN(add_reference)
|
||||
add_reference_test_13a();
|
||||
#endif
|
||||
|
||||
BOOST_CHECK_TYPE(tt::add_reference<void>::type, void);
|
||||
BOOST_CHECK_TYPE(tt::add_reference<const void>::type, const void);
|
||||
BOOST_CHECK_TYPE(tt::add_reference<const volatile void>::type, const volatile void);
|
||||
BOOST_CHECK_TYPE(tt::add_reference<volatile void>::type, volatile void);
|
||||
|
||||
TT_TEST_END
|
||||
|
||||
|
||||
|
@@ -69,6 +69,11 @@ TT_TEST_BEGIN(add_rvalue_reference)
|
||||
add_rvalue_reference_test_13a();
|
||||
#endif
|
||||
|
||||
BOOST_CHECK_TYPE(tt::add_rvalue_reference<void>::type, void);
|
||||
BOOST_CHECK_TYPE(tt::add_rvalue_reference<const void>::type, const void);
|
||||
BOOST_CHECK_TYPE(tt::add_rvalue_reference<const volatile void>::type, const volatile void);
|
||||
BOOST_CHECK_TYPE(tt::add_rvalue_reference<volatile void>::type, volatile void);
|
||||
|
||||
TT_TEST_END
|
||||
|
||||
|
||||
|
@@ -198,7 +198,9 @@ BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_default_constructible<bug11324_derived>::
|
||||
#ifndef BOOST_NO_CXX11_DELETED_FUNCTIONS
|
||||
BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_default_constructible<deleted_default_construct>::value, false);
|
||||
#endif
|
||||
#if !BOOST_WORKAROUND(BOOST_GCC_VERSION, < 40700)
|
||||
BOOST_CHECK_INTEGRAL_CONSTANT(::tt::is_default_constructible<private_default_construct>::value, false);
|
||||
#endif
|
||||
|
||||
TT_TEST_END
|
||||
|
||||
|
Reference in New Issue
Block a user