457 lines
		
	
	
		
			7.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			457 lines
		
	
	
		
			7.2 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								// 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
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								struct apply_wrap_impl0<
							 | 
						||
| 
								 | 
							
								          0
							 | 
						||
| 
								 | 
							
								        , F
							 | 
						||
| 
								 | 
							
								       
							 | 
						||
| 
								 | 
							
								        >
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    typedef typename F::template apply<
							 | 
						||
| 
								 | 
							
								         
							 | 
						||
| 
								 | 
							
								/// since the defaults are "lost", we have to pass *something* even for nullary
							 | 
						||
| 
								 | 
							
								/// metafunction classes
							 | 
						||
| 
								 | 
							
								        na
							 | 
						||
| 
								 | 
							
								        > 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
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								};
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								}}
							 | 
						||
| 
								 | 
							
								
							 |