462 lines
6.9 KiB
C++
462 lines
6.9 KiB
C++
|
|
// Copyright Aleksey Gurtovoy 2000-2008
|
|
//
|
|
// 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)
|
|
//
|
|
|
|
// *Preprocessed* version of the main "apply_wrap.hpp" header
|
|
// -- DO NOT modify by hand!
|
|
|
|
namespace boost { namespace mpl {
|
|
|
|
template<
|
|
int N, typename F
|
|
>
|
|
struct apply_wrap_impl0;
|
|
|
|
template< typename F, bool F_has_apply >
|
|
struct apply_wrap_impl0_bcb {
|
|
typedef typename F::template apply<na> type;
|
|
};
|
|
|
|
template< typename F >
|
|
struct apply_wrap_impl0_bcb< F,true > {
|
|
typedef typename F::apply type;
|
|
};
|
|
|
|
template<
|
|
typename F
|
|
>
|
|
struct apply_wrap_impl0<
|
|
0
|
|
, F
|
|
|
|
>
|
|
{
|
|
typedef apply_wrap_impl0_bcb< F, aux::has_apply<F>::value >::type type;
|
|
};
|
|
|
|
template<
|
|
typename F
|
|
>
|
|
struct apply_wrap_impl0<
|
|
1
|
|
, F
|
|
|
|
>
|
|
{
|
|
typedef typename F::template apply<
|
|
|
|
na
|
|
> type;
|
|
};
|
|
|
|
template<
|
|
typename F
|
|
>
|
|
struct apply_wrap_impl0<
|
|
2
|
|
, F
|
|
|
|
>
|
|
{
|
|
typedef typename F::template apply<
|
|
|
|
na, na
|
|
|
|
> type;
|
|
};
|
|
|
|
template<
|
|
typename F
|
|
>
|
|
struct apply_wrap_impl0<
|
|
3
|
|
, F
|
|
|
|
>
|
|
{
|
|
typedef typename F::template apply<
|
|
|
|
na, na, na
|
|
|
|
> type;
|
|
};
|
|
|
|
template<
|
|
typename F
|
|
>
|
|
struct apply_wrap_impl0<
|
|
4
|
|
, F
|
|
|
|
>
|
|
{
|
|
typedef typename F::template apply<
|
|
|
|
na, na, na, na
|
|
|
|
> type;
|
|
};
|
|
|
|
template<
|
|
typename F
|
|
>
|
|
struct apply_wrap_impl0<
|
|
5
|
|
, F
|
|
|
|
>
|
|
{
|
|
typedef typename F::template apply<
|
|
|
|
na, na, na, na, na
|
|
|
|
> type;
|
|
};
|
|
|
|
template<
|
|
typename F
|
|
>
|
|
struct apply_wrap0
|
|
: apply_wrap_impl0<
|
|
::boost::mpl::aux::arity< F,0 >::value
|
|
, F
|
|
|
|
>::type
|
|
{
|
|
};
|
|
|
|
template<
|
|
int N, typename F, typename T1
|
|
>
|
|
struct apply_wrap_impl1;
|
|
|
|
template<
|
|
typename F, typename T1
|
|
>
|
|
struct apply_wrap_impl1<
|
|
1
|
|
, F
|
|
, T1
|
|
>
|
|
{
|
|
typedef typename F::template apply<
|
|
T1
|
|
> type;
|
|
};
|
|
|
|
template<
|
|
typename F, typename T1
|
|
>
|
|
struct apply_wrap_impl1<
|
|
2
|
|
, F
|
|
, T1
|
|
>
|
|
{
|
|
typedef typename F::template apply<
|
|
T1
|
|
, na
|
|
|
|
> type;
|
|
};
|
|
|
|
template<
|
|
typename F, typename T1
|
|
>
|
|
struct apply_wrap_impl1<
|
|
3
|
|
, F
|
|
, T1
|
|
>
|
|
{
|
|
typedef typename F::template apply<
|
|
T1
|
|
, na, na
|
|
|
|
> type;
|
|
};
|
|
|
|
template<
|
|
typename F, typename T1
|
|
>
|
|
struct apply_wrap_impl1<
|
|
4
|
|
, F
|
|
, T1
|
|
>
|
|
{
|
|
typedef typename F::template apply<
|
|
T1
|
|
, na, na, na
|
|
|
|
> type;
|
|
};
|
|
|
|
template<
|
|
typename F, typename T1
|
|
>
|
|
struct apply_wrap_impl1<
|
|
5
|
|
, F
|
|
, T1
|
|
>
|
|
{
|
|
typedef typename F::template apply<
|
|
T1
|
|
, na, na, na, na
|
|
|
|
> type;
|
|
};
|
|
|
|
template<
|
|
typename F, typename T1
|
|
>
|
|
struct apply_wrap1
|
|
: apply_wrap_impl1<
|
|
::boost::mpl::aux::arity< F,1 >::value
|
|
, F
|
|
, T1
|
|
>::type
|
|
{
|
|
};
|
|
|
|
template<
|
|
int N, typename F, typename T1, typename T2
|
|
>
|
|
struct apply_wrap_impl2;
|
|
|
|
template<
|
|
typename F, typename T1, typename T2
|
|
>
|
|
struct apply_wrap_impl2<
|
|
2
|
|
, F
|
|
, T1, T2
|
|
>
|
|
{
|
|
typedef typename F::template apply<
|
|
T1, T2
|
|
|
|
> type;
|
|
};
|
|
|
|
template<
|
|
typename F, typename T1, typename T2
|
|
>
|
|
struct apply_wrap_impl2<
|
|
3
|
|
, F
|
|
, T1, T2
|
|
>
|
|
{
|
|
typedef typename F::template apply<
|
|
T1, T2
|
|
|
|
, na
|
|
|
|
> type;
|
|
};
|
|
|
|
template<
|
|
typename F, typename T1, typename T2
|
|
>
|
|
struct apply_wrap_impl2<
|
|
4
|
|
, F
|
|
, T1, T2
|
|
>
|
|
{
|
|
typedef typename F::template apply<
|
|
T1, T2
|
|
|
|
, na, na
|
|
|
|
> type;
|
|
};
|
|
|
|
template<
|
|
typename F, typename T1, typename T2
|
|
>
|
|
struct apply_wrap_impl2<
|
|
5
|
|
, F
|
|
, T1, T2
|
|
>
|
|
{
|
|
typedef typename F::template apply<
|
|
T1, T2
|
|
|
|
, na, na, na
|
|
|
|
> type;
|
|
};
|
|
|
|
template<
|
|
typename F, typename T1, typename T2
|
|
>
|
|
struct apply_wrap2
|
|
: apply_wrap_impl2<
|
|
::boost::mpl::aux::arity< F,2 >::value
|
|
, F
|
|
, T1, T2
|
|
>::type
|
|
{
|
|
};
|
|
|
|
template<
|
|
int N, typename F, typename T1, typename T2, typename T3
|
|
>
|
|
struct apply_wrap_impl3;
|
|
|
|
template<
|
|
typename F, typename T1, typename T2, typename T3
|
|
>
|
|
struct apply_wrap_impl3<
|
|
3
|
|
, F
|
|
, T1, T2, T3
|
|
>
|
|
{
|
|
typedef typename F::template apply<
|
|
T1, T2, T3
|
|
|
|
> type;
|
|
};
|
|
|
|
template<
|
|
typename F, typename T1, typename T2, typename T3
|
|
>
|
|
struct apply_wrap_impl3<
|
|
4
|
|
, F
|
|
, T1, T2, T3
|
|
>
|
|
{
|
|
typedef typename F::template apply<
|
|
T1, T2, T3
|
|
|
|
, na
|
|
|
|
> type;
|
|
};
|
|
|
|
template<
|
|
typename F, typename T1, typename T2, typename T3
|
|
>
|
|
struct apply_wrap_impl3<
|
|
5
|
|
, F
|
|
, T1, T2, T3
|
|
>
|
|
{
|
|
typedef typename F::template apply<
|
|
T1, T2, T3
|
|
|
|
, na, na
|
|
|
|
> type;
|
|
};
|
|
|
|
template<
|
|
typename F, typename T1, typename T2, typename T3
|
|
>
|
|
struct apply_wrap3
|
|
: apply_wrap_impl3<
|
|
::boost::mpl::aux::arity< F,3 >::value
|
|
, F
|
|
, T1, T2, T3
|
|
>::type
|
|
{
|
|
};
|
|
|
|
template<
|
|
int N, typename F, typename T1, typename T2, typename T3, typename T4
|
|
>
|
|
struct apply_wrap_impl4;
|
|
|
|
template<
|
|
typename F, typename T1, typename T2, typename T3, typename T4
|
|
>
|
|
struct apply_wrap_impl4<
|
|
4
|
|
, F
|
|
, T1, T2, T3, T4
|
|
>
|
|
{
|
|
typedef typename F::template apply<
|
|
T1, T2, T3, T4
|
|
|
|
> type;
|
|
};
|
|
|
|
template<
|
|
typename F, typename T1, typename T2, typename T3, typename T4
|
|
>
|
|
struct apply_wrap_impl4<
|
|
5
|
|
, F
|
|
, T1, T2, T3, T4
|
|
>
|
|
{
|
|
typedef typename F::template apply<
|
|
T1, T2, T3, T4
|
|
|
|
, na
|
|
|
|
> type;
|
|
};
|
|
|
|
template<
|
|
typename F, typename T1, typename T2, typename T3, typename T4
|
|
>
|
|
struct apply_wrap4
|
|
: apply_wrap_impl4<
|
|
::boost::mpl::aux::arity< F,4 >::value
|
|
, F
|
|
, T1, T2, T3, T4
|
|
>::type
|
|
{
|
|
};
|
|
|
|
template<
|
|
int N, typename F, typename T1, typename T2, typename T3, typename T4
|
|
, typename T5
|
|
>
|
|
struct apply_wrap_impl5;
|
|
|
|
template<
|
|
typename F, typename T1, typename T2, typename T3, typename T4
|
|
, typename T5
|
|
>
|
|
struct apply_wrap_impl5<
|
|
5
|
|
, F
|
|
, T1, T2, T3, T4, T5
|
|
>
|
|
{
|
|
typedef typename F::template apply<
|
|
T1, T2, T3, T4, T5
|
|
|
|
> type;
|
|
};
|
|
|
|
template<
|
|
typename F, typename T1, typename T2, typename T3, typename T4
|
|
, typename T5
|
|
>
|
|
struct apply_wrap5
|
|
: apply_wrap_impl5<
|
|
::boost::mpl::aux::arity< F,5 >::value
|
|
, F
|
|
, T1, T2, T3, T4, T5
|
|
>::type
|
|
{
|
|
};
|
|
|
|
}}
|
|
|