mirror of
https://github.com/boostorg/function.git
synced 2025-07-29 12:27:15 +02:00
function_base.hpp:
- Use <boost/pending/ct_if.hpp> all: - Add BOOST_FUNCTION_NO_DEPRECATED macro hackery to get rid of ALL deprecated features [SVN r14685]
This commit is contained in:
@ -36,6 +36,11 @@
|
||||
#include <boost/function/function9.hpp>
|
||||
#include <boost/function/function10.hpp>
|
||||
|
||||
// Don't compile any of this code if we've asked not to include the deprecated
|
||||
// syntax and we don't have partial specialization, because none of this code
|
||||
// can work.
|
||||
#if !defined (BOOST_FUNCTION_NO_DEPRECATED) || !defined(BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION)
|
||||
|
||||
namespace boost {
|
||||
namespace detail {
|
||||
namespace function {
|
||||
@ -57,13 +62,19 @@ namespace boost {
|
||||
typename T8,
|
||||
typename T9,
|
||||
typename T10,
|
||||
#ifndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
typename Policy,
|
||||
typename Mixin,
|
||||
#endif // ndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
typename Allocator
|
||||
>
|
||||
struct params
|
||||
{
|
||||
typedef function0<R, Policy, Mixin, Allocator> type;
|
||||
typedef function0<R,
|
||||
#ifndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
Policy, Mixin,
|
||||
#endif // ndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
Allocator> type;
|
||||
};
|
||||
};
|
||||
|
||||
@ -82,13 +93,19 @@ namespace boost {
|
||||
typename T8,
|
||||
typename T9,
|
||||
typename T10,
|
||||
#ifndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
typename Policy,
|
||||
typename Mixin,
|
||||
#endif // ndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
typename Allocator
|
||||
>
|
||||
struct params
|
||||
{
|
||||
typedef function1<R, T1, Policy, Mixin, Allocator> type;
|
||||
typedef function1<R, T1,
|
||||
#ifndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
Policy, Mixin,
|
||||
#endif // ndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
Allocator> type;
|
||||
};
|
||||
};
|
||||
|
||||
@ -107,13 +124,19 @@ namespace boost {
|
||||
typename T8,
|
||||
typename T9,
|
||||
typename T10,
|
||||
#ifndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
typename Policy,
|
||||
typename Mixin,
|
||||
#endif // ndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
typename Allocator
|
||||
>
|
||||
struct params
|
||||
{
|
||||
typedef function2<R, T1, T2, Policy, Mixin, Allocator> type;
|
||||
typedef function2<R, T1, T2,
|
||||
#ifndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
Policy, Mixin,
|
||||
#endif // ndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
Allocator> type;
|
||||
};
|
||||
};
|
||||
|
||||
@ -132,13 +155,19 @@ namespace boost {
|
||||
typename T8,
|
||||
typename T9,
|
||||
typename T10,
|
||||
#ifndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
typename Policy,
|
||||
typename Mixin,
|
||||
#endif // ndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
typename Allocator
|
||||
>
|
||||
struct params
|
||||
{
|
||||
typedef function3<R, T1, T2, T3, Policy, Mixin, Allocator> type;
|
||||
typedef function3<R, T1, T2, T3,
|
||||
#ifndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
Policy, Mixin,
|
||||
#endif // ndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
Allocator> type;
|
||||
};
|
||||
};
|
||||
|
||||
@ -157,13 +186,19 @@ namespace boost {
|
||||
typename T8,
|
||||
typename T9,
|
||||
typename T10,
|
||||
#ifndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
typename Policy,
|
||||
typename Mixin,
|
||||
#endif // ndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
typename Allocator
|
||||
>
|
||||
struct params
|
||||
{
|
||||
typedef function4<R, T1, T2, T3, T4, Policy, Mixin, Allocator> type;
|
||||
typedef function4<R, T1, T2, T3, T4,
|
||||
#ifndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
Policy, Mixin,
|
||||
#endif // ndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
Allocator> type;
|
||||
};
|
||||
};
|
||||
|
||||
@ -182,13 +217,19 @@ namespace boost {
|
||||
typename T8,
|
||||
typename T9,
|
||||
typename T10,
|
||||
#ifndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
typename Policy,
|
||||
typename Mixin,
|
||||
#endif // ndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
typename Allocator
|
||||
>
|
||||
struct params
|
||||
{
|
||||
typedef function5<R, T1, T2, T3, T4, T5, Policy, Mixin, Allocator>
|
||||
typedef function5<R, T1, T2, T3, T4, T5,
|
||||
#ifndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
Policy, Mixin,
|
||||
#endif // ndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
Allocator>
|
||||
type;
|
||||
};
|
||||
};
|
||||
@ -208,13 +249,19 @@ namespace boost {
|
||||
typename T8,
|
||||
typename T9,
|
||||
typename T10,
|
||||
#ifndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
typename Policy,
|
||||
typename Mixin,
|
||||
#endif // ndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
typename Allocator
|
||||
>
|
||||
struct params
|
||||
{
|
||||
typedef function6<R, T1, T2, T3, T4, T5, T6, Policy, Mixin, Allocator>
|
||||
typedef function6<R, T1, T2, T3, T4, T5, T6,
|
||||
#ifndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
Policy, Mixin,
|
||||
#endif // ndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
Allocator>
|
||||
type;
|
||||
};
|
||||
};
|
||||
@ -234,13 +281,18 @@ namespace boost {
|
||||
typename T8,
|
||||
typename T9,
|
||||
typename T10,
|
||||
#ifndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
typename Policy,
|
||||
typename Mixin,
|
||||
#endif // ndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
typename Allocator
|
||||
>
|
||||
struct params
|
||||
{
|
||||
typedef function7<R, T1, T2, T3, T4, T5, T6, T7, Policy, Mixin,
|
||||
typedef function7<R, T1, T2, T3, T4, T5, T6, T7,
|
||||
#ifndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
Policy, Mixin,
|
||||
#endif // ndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
Allocator> type;
|
||||
};
|
||||
};
|
||||
@ -260,13 +312,18 @@ namespace boost {
|
||||
typename T8,
|
||||
typename T9,
|
||||
typename T10,
|
||||
#ifndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
typename Policy,
|
||||
typename Mixin,
|
||||
#endif // ndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
typename Allocator
|
||||
>
|
||||
struct params
|
||||
{
|
||||
typedef function8<R, T1, T2, T3, T4, T5, T6, T7, T8, Policy, Mixin,
|
||||
typedef function8<R, T1, T2, T3, T4, T5, T6, T7, T8,
|
||||
#ifndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
Policy, Mixin,
|
||||
#endif // ndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
Allocator> type;
|
||||
};
|
||||
};
|
||||
@ -286,14 +343,19 @@ namespace boost {
|
||||
typename T8,
|
||||
typename T9,
|
||||
typename T10,
|
||||
#ifndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
typename Policy,
|
||||
typename Mixin,
|
||||
#endif // ndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
typename Allocator
|
||||
>
|
||||
struct params
|
||||
{
|
||||
typedef function9<R, T1, T2, T3, T4, T5, T6, T7, T8, T9, Policy,
|
||||
Mixin, Allocator> type;
|
||||
typedef function9<R, T1, T2, T3, T4, T5, T6, T7, T8, T9,
|
||||
#ifndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
Policy, Mixin,
|
||||
#endif // ndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
Allocator> type;
|
||||
};
|
||||
};
|
||||
|
||||
@ -312,14 +374,19 @@ namespace boost {
|
||||
typename T8,
|
||||
typename T9,
|
||||
typename T10,
|
||||
#ifndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
typename Policy,
|
||||
typename Mixin,
|
||||
#endif // ndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
typename Allocator
|
||||
>
|
||||
struct params
|
||||
{
|
||||
typedef function10<R, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10,
|
||||
Policy, Mixin, Allocator> type;
|
||||
#ifndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
Policy, Mixin,
|
||||
#endif // ndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
Allocator> type;
|
||||
};
|
||||
};
|
||||
|
||||
@ -456,45 +523,12 @@ namespace boost {
|
||||
typename InT8,
|
||||
typename InT9,
|
||||
typename InT10,
|
||||
#ifndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
typename InPolicy,
|
||||
typename InMixin,
|
||||
#endif // ndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
typename InAllocator>
|
||||
struct maybe_decode_function_args
|
||||
{
|
||||
// Not a function, so just map the types directly
|
||||
typedef InR R;
|
||||
typedef InT1 T1;
|
||||
typedef InT2 T2;
|
||||
typedef InT3 T3;
|
||||
typedef InT4 T4;
|
||||
typedef InT5 T5;
|
||||
typedef InT6 T6;
|
||||
typedef InT7 T7;
|
||||
typedef InT8 T8;
|
||||
typedef InT9 T9;
|
||||
typedef InT10 T10;
|
||||
typedef InPolicy Policy;
|
||||
typedef InMixin Mixin;
|
||||
typedef InAllocator Allocator;
|
||||
};
|
||||
|
||||
template<typename InR,
|
||||
typename InT1,
|
||||
typename InT2,
|
||||
typename InT3,
|
||||
typename InT4,
|
||||
typename InT5,
|
||||
typename InT6,
|
||||
typename InT7,
|
||||
typename InT8,
|
||||
typename InT9,
|
||||
typename InT10,
|
||||
typename InPolicy,
|
||||
typename InMixin,
|
||||
typename InAllocator>
|
||||
struct maybe_decode_function_args<true, InR, InT1, InT2, InT3, InT4,
|
||||
InT5, InT6, InT7, InT8, InT9, InT10,
|
||||
InPolicy, InMixin, InAllocator>
|
||||
{
|
||||
typedef function_traits<InR> traits;
|
||||
|
||||
@ -509,6 +543,7 @@ namespace boost {
|
||||
typedef typename get_arg8_type<(traits::arity >= 8), traits>::type T8;
|
||||
typedef typename get_arg9_type<(traits::arity >= 9), traits>::type T9;
|
||||
typedef typename get_arg10_type<(traits::arity >= 10), traits>::type T10;
|
||||
#ifndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
typedef typename ct_if<(is_same<InT1, unusable>::value),
|
||||
empty_function_policy,
|
||||
InT1>::type Policy;
|
||||
@ -518,8 +553,58 @@ namespace boost {
|
||||
typedef typename ct_if<(is_same<InT3, unusable>::value),
|
||||
std::allocator<function_base>,
|
||||
InT3>::type Allocator;
|
||||
#else
|
||||
typedef typename ct_if<(is_same<InT1, unusable>::value),
|
||||
std::allocator<function_base>,
|
||||
InT1>::type Allocator;
|
||||
#endif // BOOST_FUNCTION_NO_DEPRECATED
|
||||
};
|
||||
|
||||
#ifndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
template<typename InR,
|
||||
typename InT1,
|
||||
typename InT2,
|
||||
typename InT3,
|
||||
typename InT4,
|
||||
typename InT5,
|
||||
typename InT6,
|
||||
typename InT7,
|
||||
typename InT8,
|
||||
typename InT9,
|
||||
typename InT10,
|
||||
#ifndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
typename InPolicy,
|
||||
typename InMixin,
|
||||
#endif // ndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
typename InAllocator>
|
||||
struct maybe_decode_function_args<false, InR, InT1, InT2, InT3, InT4,
|
||||
InT5, InT6, InT7, InT8, InT9, InT10,
|
||||
#ifndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
InPolicy, InMixin,
|
||||
#endif // ndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
InAllocator>
|
||||
{
|
||||
// Not a function, so just map the types directly
|
||||
typedef InR R;
|
||||
typedef InT1 T1;
|
||||
typedef InT2 T2;
|
||||
typedef InT3 T3;
|
||||
typedef InT4 T4;
|
||||
typedef InT5 T5;
|
||||
typedef InT6 T6;
|
||||
typedef InT7 T7;
|
||||
typedef InT8 T8;
|
||||
typedef InT9 T9;
|
||||
typedef InT10 T10;
|
||||
#ifndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
typedef InPolicy Policy;
|
||||
typedef InMixin Mixin;
|
||||
#endif // ndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
typedef InAllocator Allocator;
|
||||
|
||||
};
|
||||
#endif // ndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
|
||||
#endif // ndef BOOST_NO_TEMPLATE_PARTIAL_SPECIALIZATION
|
||||
|
||||
template<
|
||||
@ -544,8 +629,10 @@ namespace boost {
|
||||
typedef maybe_decode_function_args<(is_function<InR>::value),
|
||||
InR, InT1, InT2, InT3, InT4, InT5,
|
||||
InT6, InT7, InT8, InT9, InT10,
|
||||
InPolicy, InMixin, InAllocator>
|
||||
decoder;
|
||||
#ifndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
InPolicy, InMixin,
|
||||
#endif // ndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
InAllocator> decoder;
|
||||
typedef typename decoder::R R;
|
||||
typedef typename decoder::T1 T1;
|
||||
typedef typename decoder::T2 T2;
|
||||
@ -557,8 +644,10 @@ namespace boost {
|
||||
typedef typename decoder::T8 T8;
|
||||
typedef typename decoder::T9 T9;
|
||||
typedef typename decoder::T10 T10;
|
||||
#ifndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
typedef typename decoder::Policy Policy;
|
||||
typedef typename decoder::Mixin Mixin;
|
||||
#endif // ndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
typedef typename decoder::Allocator Allocator;
|
||||
#else
|
||||
typedef InR R;
|
||||
@ -580,10 +669,14 @@ namespace boost {
|
||||
typedef typename real_get_function_impl<
|
||||
(count_used_args<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>::value)
|
||||
>::template params<R, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10,
|
||||
Policy, Mixin, Allocator>::type
|
||||
#ifndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
Policy, Mixin,
|
||||
#endif // ndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
Allocator>::type
|
||||
type;
|
||||
};
|
||||
|
||||
#ifndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
template<
|
||||
typename InR,
|
||||
typename InT1,
|
||||
@ -676,9 +769,9 @@ namespace boost {
|
||||
Allocator>::type
|
||||
type;
|
||||
};
|
||||
#endif
|
||||
#endif // ndef NO_DEPENDENT_NESTED_DERIVATIONS
|
||||
};
|
||||
|
||||
#endif // ndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
} // end namespace function
|
||||
} // end namespace detail
|
||||
|
||||
@ -697,9 +790,11 @@ namespace boost {
|
||||
>
|
||||
class function :
|
||||
public detail::function::get_function_impl<R, T1, T2, T3, T4, T5, T6, T7,
|
||||
T8, T9, T10>::type,
|
||||
public detail::function::function_traits_builder<R, T1, T2, T3, T4, T5, T6,
|
||||
T7, T8, T9, T10>
|
||||
T8, T9, T10>::type
|
||||
#ifndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
, public detail::function::function_traits_builder<R, T1, T2, T3, T4, T5,
|
||||
T6, T7, T8, T9, T10>
|
||||
#endif // ndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
{
|
||||
typedef typename detail::function::get_function_impl<R, T1, T2, T3, T4, T5,
|
||||
T6, T7, T8, T9, T10
|
||||
@ -707,8 +802,10 @@ namespace boost {
|
||||
base_type;
|
||||
|
||||
public:
|
||||
#ifndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
typedef typename base_type::policy_type policy_type;
|
||||
typedef typename base_type::mixin_type mixin_type;
|
||||
#endif // ndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
typedef typename base_type::allocator_type allocator_type;
|
||||
typedef function self_type;
|
||||
|
||||
@ -738,27 +835,29 @@ namespace boost {
|
||||
return *this;
|
||||
}
|
||||
|
||||
#ifndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
template<typename Functor>
|
||||
BOOST_FUNCTION_DEPRECATED_PRE
|
||||
void set(Functor BOOST_FUNCTION_TARGET_FIX(const &) f)
|
||||
void set(Functor BOOST_FUNCTION_TARGET_FIX(const &) f)
|
||||
{
|
||||
BOOST_FUNCTION_DEPRECATED_INNER
|
||||
self_type(f).swap(*this);
|
||||
}
|
||||
|
||||
BOOST_FUNCTION_DEPRECATED_PRE
|
||||
BOOST_FUNCTION_DEPRECATED_PRE
|
||||
void set(const base_type& f)
|
||||
{
|
||||
BOOST_FUNCTION_DEPRECATED_INNER
|
||||
self_type(f).swap(*this);
|
||||
}
|
||||
|
||||
BOOST_FUNCTION_DEPRECATED_PRE
|
||||
BOOST_FUNCTION_DEPRECATED_PRE
|
||||
void set(const self_type& f)
|
||||
{
|
||||
BOOST_FUNCTION_DEPRECATED_INNER
|
||||
self_type(f).swap(*this);
|
||||
}
|
||||
#endif // ndef BOOST_FUNCTION_NO_DEPRECATED
|
||||
};
|
||||
|
||||
template<typename R,
|
||||
@ -779,4 +878,6 @@ namespace boost {
|
||||
}
|
||||
} // end namespace boost
|
||||
|
||||
#endif // !no deprecated || !no partial specialization
|
||||
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user