1927 lines
		
	
	
		
			125 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
		
		
			
		
	
	
			1927 lines
		
	
	
		
			125 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| 
								 | 
							
								/*=============================================================================
							 | 
						||
| 
								 | 
							
								    Copyright (c) 2001-2007 Joel de Guzman
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    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)
							 | 
						||
| 
								 | 
							
								==============================================================================*/
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    template <
							 | 
						||
| 
								 | 
							
								        typename RT
							 | 
						||
| 
								 | 
							
								      , typename T0 , typename T1
							 | 
						||
| 
								 | 
							
								      , typename A0 , typename A1
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								    inline
							 | 
						||
| 
								 | 
							
								    typename detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								        detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            2
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1)
							 | 
						||
| 
								 | 
							
								        >
							 | 
						||
| 
								 | 
							
								      , A0 , A1
							 | 
						||
| 
								 | 
							
								    >::type const
							 | 
						||
| 
								 | 
							
								    bind(
							 | 
						||
| 
								 | 
							
								        RT(*f)(T0 , T1)
							 | 
						||
| 
								 | 
							
								      , A0 const& a0 , A1 const& a1
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        typedef detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            2
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1)
							 | 
						||
| 
								 | 
							
								        > fp_type;
							 | 
						||
| 
								 | 
							
								        return
							 | 
						||
| 
								 | 
							
								            detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								                fp_type
							 | 
						||
| 
								 | 
							
								              , A0 , A1
							 | 
						||
| 
								 | 
							
								            >::make(
							 | 
						||
| 
								 | 
							
								                fp_type(f)
							 | 
						||
| 
								 | 
							
								              , a0 , a1
							 | 
						||
| 
								 | 
							
								            );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    template <
							 | 
						||
| 
								 | 
							
								        typename RT
							 | 
						||
| 
								 | 
							
								      , typename T0 , typename T1 , typename T2
							 | 
						||
| 
								 | 
							
								      , typename A0 , typename A1 , typename A2
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								    inline
							 | 
						||
| 
								 | 
							
								    typename detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								        detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            3
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2)
							 | 
						||
| 
								 | 
							
								        >
							 | 
						||
| 
								 | 
							
								      , A0 , A1 , A2
							 | 
						||
| 
								 | 
							
								    >::type const
							 | 
						||
| 
								 | 
							
								    bind(
							 | 
						||
| 
								 | 
							
								        RT(*f)(T0 , T1 , T2)
							 | 
						||
| 
								 | 
							
								      , A0 const& a0 , A1 const& a1 , A2 const& a2
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        typedef detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            3
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2)
							 | 
						||
| 
								 | 
							
								        > fp_type;
							 | 
						||
| 
								 | 
							
								        return
							 | 
						||
| 
								 | 
							
								            detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								                fp_type
							 | 
						||
| 
								 | 
							
								              , A0 , A1 , A2
							 | 
						||
| 
								 | 
							
								            >::make(
							 | 
						||
| 
								 | 
							
								                fp_type(f)
							 | 
						||
| 
								 | 
							
								              , a0 , a1 , a2
							 | 
						||
| 
								 | 
							
								            );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    template <
							 | 
						||
| 
								 | 
							
								        typename RT
							 | 
						||
| 
								 | 
							
								      , typename T0 , typename T1 , typename T2 , typename T3
							 | 
						||
| 
								 | 
							
								      , typename A0 , typename A1 , typename A2 , typename A3
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								    inline
							 | 
						||
| 
								 | 
							
								    typename detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								        detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            4
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3)
							 | 
						||
| 
								 | 
							
								        >
							 | 
						||
| 
								 | 
							
								      , A0 , A1 , A2 , A3
							 | 
						||
| 
								 | 
							
								    >::type const
							 | 
						||
| 
								 | 
							
								    bind(
							 | 
						||
| 
								 | 
							
								        RT(*f)(T0 , T1 , T2 , T3)
							 | 
						||
| 
								 | 
							
								      , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        typedef detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            4
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3)
							 | 
						||
| 
								 | 
							
								        > fp_type;
							 | 
						||
| 
								 | 
							
								        return
							 | 
						||
| 
								 | 
							
								            detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								                fp_type
							 | 
						||
| 
								 | 
							
								              , A0 , A1 , A2 , A3
							 | 
						||
| 
								 | 
							
								            >::make(
							 | 
						||
| 
								 | 
							
								                fp_type(f)
							 | 
						||
| 
								 | 
							
								              , a0 , a1 , a2 , a3
							 | 
						||
| 
								 | 
							
								            );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    template <
							 | 
						||
| 
								 | 
							
								        typename RT
							 | 
						||
| 
								 | 
							
								      , typename T0 , typename T1 , typename T2 , typename T3 , typename T4
							 | 
						||
| 
								 | 
							
								      , typename A0 , typename A1 , typename A2 , typename A3 , typename A4
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								    inline
							 | 
						||
| 
								 | 
							
								    typename detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								        detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            5
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4)
							 | 
						||
| 
								 | 
							
								        >
							 | 
						||
| 
								 | 
							
								      , A0 , A1 , A2 , A3 , A4
							 | 
						||
| 
								 | 
							
								    >::type const
							 | 
						||
| 
								 | 
							
								    bind(
							 | 
						||
| 
								 | 
							
								        RT(*f)(T0 , T1 , T2 , T3 , T4)
							 | 
						||
| 
								 | 
							
								      , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        typedef detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            5
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4)
							 | 
						||
| 
								 | 
							
								        > fp_type;
							 | 
						||
| 
								 | 
							
								        return
							 | 
						||
| 
								 | 
							
								            detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								                fp_type
							 | 
						||
| 
								 | 
							
								              , A0 , A1 , A2 , A3 , A4
							 | 
						||
| 
								 | 
							
								            >::make(
							 | 
						||
| 
								 | 
							
								                fp_type(f)
							 | 
						||
| 
								 | 
							
								              , a0 , a1 , a2 , a3 , a4
							 | 
						||
| 
								 | 
							
								            );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    template <
							 | 
						||
| 
								 | 
							
								        typename RT
							 | 
						||
| 
								 | 
							
								      , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5
							 | 
						||
| 
								 | 
							
								      , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								    inline
							 | 
						||
| 
								 | 
							
								    typename detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								        detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            6
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5)
							 | 
						||
| 
								 | 
							
								        >
							 | 
						||
| 
								 | 
							
								      , A0 , A1 , A2 , A3 , A4 , A5
							 | 
						||
| 
								 | 
							
								    >::type const
							 | 
						||
| 
								 | 
							
								    bind(
							 | 
						||
| 
								 | 
							
								        RT(*f)(T0 , T1 , T2 , T3 , T4 , T5)
							 | 
						||
| 
								 | 
							
								      , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        typedef detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            6
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5)
							 | 
						||
| 
								 | 
							
								        > fp_type;
							 | 
						||
| 
								 | 
							
								        return
							 | 
						||
| 
								 | 
							
								            detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								                fp_type
							 | 
						||
| 
								 | 
							
								              , A0 , A1 , A2 , A3 , A4 , A5
							 | 
						||
| 
								 | 
							
								            >::make(
							 | 
						||
| 
								 | 
							
								                fp_type(f)
							 | 
						||
| 
								 | 
							
								              , a0 , a1 , a2 , a3 , a4 , a5
							 | 
						||
| 
								 | 
							
								            );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    template <
							 | 
						||
| 
								 | 
							
								        typename RT
							 | 
						||
| 
								 | 
							
								      , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6
							 | 
						||
| 
								 | 
							
								      , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								    inline
							 | 
						||
| 
								 | 
							
								    typename detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								        detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            7
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6)
							 | 
						||
| 
								 | 
							
								        >
							 | 
						||
| 
								 | 
							
								      , A0 , A1 , A2 , A3 , A4 , A5 , A6
							 | 
						||
| 
								 | 
							
								    >::type const
							 | 
						||
| 
								 | 
							
								    bind(
							 | 
						||
| 
								 | 
							
								        RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6)
							 | 
						||
| 
								 | 
							
								      , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        typedef detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            7
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6)
							 | 
						||
| 
								 | 
							
								        > fp_type;
							 | 
						||
| 
								 | 
							
								        return
							 | 
						||
| 
								 | 
							
								            detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								                fp_type
							 | 
						||
| 
								 | 
							
								              , A0 , A1 , A2 , A3 , A4 , A5 , A6
							 | 
						||
| 
								 | 
							
								            >::make(
							 | 
						||
| 
								 | 
							
								                fp_type(f)
							 | 
						||
| 
								 | 
							
								              , a0 , a1 , a2 , a3 , a4 , a5 , a6
							 | 
						||
| 
								 | 
							
								            );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    template <
							 | 
						||
| 
								 | 
							
								        typename RT
							 | 
						||
| 
								 | 
							
								      , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7
							 | 
						||
| 
								 | 
							
								      , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								    inline
							 | 
						||
| 
								 | 
							
								    typename detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								        detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            8
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7)
							 | 
						||
| 
								 | 
							
								        >
							 | 
						||
| 
								 | 
							
								      , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7
							 | 
						||
| 
								 | 
							
								    >::type const
							 | 
						||
| 
								 | 
							
								    bind(
							 | 
						||
| 
								 | 
							
								        RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7)
							 | 
						||
| 
								 | 
							
								      , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        typedef detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            8
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7)
							 | 
						||
| 
								 | 
							
								        > fp_type;
							 | 
						||
| 
								 | 
							
								        return
							 | 
						||
| 
								 | 
							
								            detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								                fp_type
							 | 
						||
| 
								 | 
							
								              , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7
							 | 
						||
| 
								 | 
							
								            >::make(
							 | 
						||
| 
								 | 
							
								                fp_type(f)
							 | 
						||
| 
								 | 
							
								              , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7
							 | 
						||
| 
								 | 
							
								            );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    template <
							 | 
						||
| 
								 | 
							
								        typename RT
							 | 
						||
| 
								 | 
							
								      , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8
							 | 
						||
| 
								 | 
							
								      , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								    inline
							 | 
						||
| 
								 | 
							
								    typename detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								        detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            9
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8)
							 | 
						||
| 
								 | 
							
								        >
							 | 
						||
| 
								 | 
							
								      , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8
							 | 
						||
| 
								 | 
							
								    >::type const
							 | 
						||
| 
								 | 
							
								    bind(
							 | 
						||
| 
								 | 
							
								        RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8)
							 | 
						||
| 
								 | 
							
								      , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        typedef detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            9
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8)
							 | 
						||
| 
								 | 
							
								        > fp_type;
							 | 
						||
| 
								 | 
							
								        return
							 | 
						||
| 
								 | 
							
								            detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								                fp_type
							 | 
						||
| 
								 | 
							
								              , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8
							 | 
						||
| 
								 | 
							
								            >::make(
							 | 
						||
| 
								 | 
							
								                fp_type(f)
							 | 
						||
| 
								 | 
							
								              , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8
							 | 
						||
| 
								 | 
							
								            );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    template <
							 | 
						||
| 
								 | 
							
								        typename RT
							 | 
						||
| 
								 | 
							
								      , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9
							 | 
						||
| 
								 | 
							
								      , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								    inline
							 | 
						||
| 
								 | 
							
								    typename detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								        detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            10
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9)
							 | 
						||
| 
								 | 
							
								        >
							 | 
						||
| 
								 | 
							
								      , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9
							 | 
						||
| 
								 | 
							
								    >::type const
							 | 
						||
| 
								 | 
							
								    bind(
							 | 
						||
| 
								 | 
							
								        RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9)
							 | 
						||
| 
								 | 
							
								      , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        typedef detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            10
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9)
							 | 
						||
| 
								 | 
							
								        > fp_type;
							 | 
						||
| 
								 | 
							
								        return
							 | 
						||
| 
								 | 
							
								            detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								                fp_type
							 | 
						||
| 
								 | 
							
								              , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9
							 | 
						||
| 
								 | 
							
								            >::make(
							 | 
						||
| 
								 | 
							
								                fp_type(f)
							 | 
						||
| 
								 | 
							
								              , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9
							 | 
						||
| 
								 | 
							
								            );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    template <
							 | 
						||
| 
								 | 
							
								        typename RT
							 | 
						||
| 
								 | 
							
								      , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10
							 | 
						||
| 
								 | 
							
								      , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								    inline
							 | 
						||
| 
								 | 
							
								    typename detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								        detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            11
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10)
							 | 
						||
| 
								 | 
							
								        >
							 | 
						||
| 
								 | 
							
								      , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10
							 | 
						||
| 
								 | 
							
								    >::type const
							 | 
						||
| 
								 | 
							
								    bind(
							 | 
						||
| 
								 | 
							
								        RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10)
							 | 
						||
| 
								 | 
							
								      , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        typedef detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            11
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10)
							 | 
						||
| 
								 | 
							
								        > fp_type;
							 | 
						||
| 
								 | 
							
								        return
							 | 
						||
| 
								 | 
							
								            detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								                fp_type
							 | 
						||
| 
								 | 
							
								              , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10
							 | 
						||
| 
								 | 
							
								            >::make(
							 | 
						||
| 
								 | 
							
								                fp_type(f)
							 | 
						||
| 
								 | 
							
								              , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10
							 | 
						||
| 
								 | 
							
								            );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    template <
							 | 
						||
| 
								 | 
							
								        typename RT
							 | 
						||
| 
								 | 
							
								      , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11
							 | 
						||
| 
								 | 
							
								      , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								    inline
							 | 
						||
| 
								 | 
							
								    typename detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								        detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            12
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11)
							 | 
						||
| 
								 | 
							
								        >
							 | 
						||
| 
								 | 
							
								      , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11
							 | 
						||
| 
								 | 
							
								    >::type const
							 | 
						||
| 
								 | 
							
								    bind(
							 | 
						||
| 
								 | 
							
								        RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11)
							 | 
						||
| 
								 | 
							
								      , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        typedef detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            12
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11)
							 | 
						||
| 
								 | 
							
								        > fp_type;
							 | 
						||
| 
								 | 
							
								        return
							 | 
						||
| 
								 | 
							
								            detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								                fp_type
							 | 
						||
| 
								 | 
							
								              , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11
							 | 
						||
| 
								 | 
							
								            >::make(
							 | 
						||
| 
								 | 
							
								                fp_type(f)
							 | 
						||
| 
								 | 
							
								              , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11
							 | 
						||
| 
								 | 
							
								            );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    template <
							 | 
						||
| 
								 | 
							
								        typename RT
							 | 
						||
| 
								 | 
							
								      , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12
							 | 
						||
| 
								 | 
							
								      , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								    inline
							 | 
						||
| 
								 | 
							
								    typename detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								        detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            13
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12)
							 | 
						||
| 
								 | 
							
								        >
							 | 
						||
| 
								 | 
							
								      , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12
							 | 
						||
| 
								 | 
							
								    >::type const
							 | 
						||
| 
								 | 
							
								    bind(
							 | 
						||
| 
								 | 
							
								        RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12)
							 | 
						||
| 
								 | 
							
								      , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        typedef detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            13
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12)
							 | 
						||
| 
								 | 
							
								        > fp_type;
							 | 
						||
| 
								 | 
							
								        return
							 | 
						||
| 
								 | 
							
								            detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								                fp_type
							 | 
						||
| 
								 | 
							
								              , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12
							 | 
						||
| 
								 | 
							
								            >::make(
							 | 
						||
| 
								 | 
							
								                fp_type(f)
							 | 
						||
| 
								 | 
							
								              , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12
							 | 
						||
| 
								 | 
							
								            );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    template <
							 | 
						||
| 
								 | 
							
								        typename RT
							 | 
						||
| 
								 | 
							
								      , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13
							 | 
						||
| 
								 | 
							
								      , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								    inline
							 | 
						||
| 
								 | 
							
								    typename detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								        detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            14
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13)
							 | 
						||
| 
								 | 
							
								        >
							 | 
						||
| 
								 | 
							
								      , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13
							 | 
						||
| 
								 | 
							
								    >::type const
							 | 
						||
| 
								 | 
							
								    bind(
							 | 
						||
| 
								 | 
							
								        RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13)
							 | 
						||
| 
								 | 
							
								      , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        typedef detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            14
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13)
							 | 
						||
| 
								 | 
							
								        > fp_type;
							 | 
						||
| 
								 | 
							
								        return
							 | 
						||
| 
								 | 
							
								            detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								                fp_type
							 | 
						||
| 
								 | 
							
								              , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13
							 | 
						||
| 
								 | 
							
								            >::make(
							 | 
						||
| 
								 | 
							
								                fp_type(f)
							 | 
						||
| 
								 | 
							
								              , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13
							 | 
						||
| 
								 | 
							
								            );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    template <
							 | 
						||
| 
								 | 
							
								        typename RT
							 | 
						||
| 
								 | 
							
								      , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14
							 | 
						||
| 
								 | 
							
								      , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								    inline
							 | 
						||
| 
								 | 
							
								    typename detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								        detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            15
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14)
							 | 
						||
| 
								 | 
							
								        >
							 | 
						||
| 
								 | 
							
								      , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14
							 | 
						||
| 
								 | 
							
								    >::type const
							 | 
						||
| 
								 | 
							
								    bind(
							 | 
						||
| 
								 | 
							
								        RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14)
							 | 
						||
| 
								 | 
							
								      , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        typedef detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            15
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14)
							 | 
						||
| 
								 | 
							
								        > fp_type;
							 | 
						||
| 
								 | 
							
								        return
							 | 
						||
| 
								 | 
							
								            detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								                fp_type
							 | 
						||
| 
								 | 
							
								              , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14
							 | 
						||
| 
								 | 
							
								            >::make(
							 | 
						||
| 
								 | 
							
								                fp_type(f)
							 | 
						||
| 
								 | 
							
								              , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14
							 | 
						||
| 
								 | 
							
								            );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    template <
							 | 
						||
| 
								 | 
							
								        typename RT
							 | 
						||
| 
								 | 
							
								      , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15
							 | 
						||
| 
								 | 
							
								      , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								    inline
							 | 
						||
| 
								 | 
							
								    typename detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								        detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            16
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15)
							 | 
						||
| 
								 | 
							
								        >
							 | 
						||
| 
								 | 
							
								      , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15
							 | 
						||
| 
								 | 
							
								    >::type const
							 | 
						||
| 
								 | 
							
								    bind(
							 | 
						||
| 
								 | 
							
								        RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15)
							 | 
						||
| 
								 | 
							
								      , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        typedef detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            16
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15)
							 | 
						||
| 
								 | 
							
								        > fp_type;
							 | 
						||
| 
								 | 
							
								        return
							 | 
						||
| 
								 | 
							
								            detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								                fp_type
							 | 
						||
| 
								 | 
							
								              , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15
							 | 
						||
| 
								 | 
							
								            >::make(
							 | 
						||
| 
								 | 
							
								                fp_type(f)
							 | 
						||
| 
								 | 
							
								              , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15
							 | 
						||
| 
								 | 
							
								            );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    template <
							 | 
						||
| 
								 | 
							
								        typename RT
							 | 
						||
| 
								 | 
							
								      , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16
							 | 
						||
| 
								 | 
							
								      , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								    inline
							 | 
						||
| 
								 | 
							
								    typename detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								        detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            17
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16)
							 | 
						||
| 
								 | 
							
								        >
							 | 
						||
| 
								 | 
							
								      , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16
							 | 
						||
| 
								 | 
							
								    >::type const
							 | 
						||
| 
								 | 
							
								    bind(
							 | 
						||
| 
								 | 
							
								        RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16)
							 | 
						||
| 
								 | 
							
								      , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        typedef detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            17
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16)
							 | 
						||
| 
								 | 
							
								        > fp_type;
							 | 
						||
| 
								 | 
							
								        return
							 | 
						||
| 
								 | 
							
								            detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								                fp_type
							 | 
						||
| 
								 | 
							
								              , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16
							 | 
						||
| 
								 | 
							
								            >::make(
							 | 
						||
| 
								 | 
							
								                fp_type(f)
							 | 
						||
| 
								 | 
							
								              , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16
							 | 
						||
| 
								 | 
							
								            );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    template <
							 | 
						||
| 
								 | 
							
								        typename RT
							 | 
						||
| 
								 | 
							
								      , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17
							 | 
						||
| 
								 | 
							
								      , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								    inline
							 | 
						||
| 
								 | 
							
								    typename detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								        detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            18
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17)
							 | 
						||
| 
								 | 
							
								        >
							 | 
						||
| 
								 | 
							
								      , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17
							 | 
						||
| 
								 | 
							
								    >::type const
							 | 
						||
| 
								 | 
							
								    bind(
							 | 
						||
| 
								 | 
							
								        RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17)
							 | 
						||
| 
								 | 
							
								      , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        typedef detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            18
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17)
							 | 
						||
| 
								 | 
							
								        > fp_type;
							 | 
						||
| 
								 | 
							
								        return
							 | 
						||
| 
								 | 
							
								            detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								                fp_type
							 | 
						||
| 
								 | 
							
								              , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17
							 | 
						||
| 
								 | 
							
								            >::make(
							 | 
						||
| 
								 | 
							
								                fp_type(f)
							 | 
						||
| 
								 | 
							
								              , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17
							 | 
						||
| 
								 | 
							
								            );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    template <
							 | 
						||
| 
								 | 
							
								        typename RT
							 | 
						||
| 
								 | 
							
								      , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18
							 | 
						||
| 
								 | 
							
								      , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								    inline
							 | 
						||
| 
								 | 
							
								    typename detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								        detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            19
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18)
							 | 
						||
| 
								 | 
							
								        >
							 | 
						||
| 
								 | 
							
								      , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18
							 | 
						||
| 
								 | 
							
								    >::type const
							 | 
						||
| 
								 | 
							
								    bind(
							 | 
						||
| 
								 | 
							
								        RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18)
							 | 
						||
| 
								 | 
							
								      , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        typedef detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            19
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18)
							 | 
						||
| 
								 | 
							
								        > fp_type;
							 | 
						||
| 
								 | 
							
								        return
							 | 
						||
| 
								 | 
							
								            detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								                fp_type
							 | 
						||
| 
								 | 
							
								              , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18
							 | 
						||
| 
								 | 
							
								            >::make(
							 | 
						||
| 
								 | 
							
								                fp_type(f)
							 | 
						||
| 
								 | 
							
								              , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18
							 | 
						||
| 
								 | 
							
								            );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    template <
							 | 
						||
| 
								 | 
							
								        typename RT
							 | 
						||
| 
								 | 
							
								      , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19
							 | 
						||
| 
								 | 
							
								      , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								    inline
							 | 
						||
| 
								 | 
							
								    typename detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								        detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            20
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19)
							 | 
						||
| 
								 | 
							
								        >
							 | 
						||
| 
								 | 
							
								      , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19
							 | 
						||
| 
								 | 
							
								    >::type const
							 | 
						||
| 
								 | 
							
								    bind(
							 | 
						||
| 
								 | 
							
								        RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19)
							 | 
						||
| 
								 | 
							
								      , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        typedef detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            20
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19)
							 | 
						||
| 
								 | 
							
								        > fp_type;
							 | 
						||
| 
								 | 
							
								        return
							 | 
						||
| 
								 | 
							
								            detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								                fp_type
							 | 
						||
| 
								 | 
							
								              , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19
							 | 
						||
| 
								 | 
							
								            >::make(
							 | 
						||
| 
								 | 
							
								                fp_type(f)
							 | 
						||
| 
								 | 
							
								              , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19
							 | 
						||
| 
								 | 
							
								            );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    template <
							 | 
						||
| 
								 | 
							
								        typename RT
							 | 
						||
| 
								 | 
							
								      , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20
							 | 
						||
| 
								 | 
							
								      , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								    inline
							 | 
						||
| 
								 | 
							
								    typename detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								        detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            21
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20)
							 | 
						||
| 
								 | 
							
								        >
							 | 
						||
| 
								 | 
							
								      , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20
							 | 
						||
| 
								 | 
							
								    >::type const
							 | 
						||
| 
								 | 
							
								    bind(
							 | 
						||
| 
								 | 
							
								        RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20)
							 | 
						||
| 
								 | 
							
								      , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        typedef detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            21
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20)
							 | 
						||
| 
								 | 
							
								        > fp_type;
							 | 
						||
| 
								 | 
							
								        return
							 | 
						||
| 
								 | 
							
								            detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								                fp_type
							 | 
						||
| 
								 | 
							
								              , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20
							 | 
						||
| 
								 | 
							
								            >::make(
							 | 
						||
| 
								 | 
							
								                fp_type(f)
							 | 
						||
| 
								 | 
							
								              , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20
							 | 
						||
| 
								 | 
							
								            );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    template <
							 | 
						||
| 
								 | 
							
								        typename RT
							 | 
						||
| 
								 | 
							
								      , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21
							 | 
						||
| 
								 | 
							
								      , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								    inline
							 | 
						||
| 
								 | 
							
								    typename detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								        detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            22
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21)
							 | 
						||
| 
								 | 
							
								        >
							 | 
						||
| 
								 | 
							
								      , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21
							 | 
						||
| 
								 | 
							
								    >::type const
							 | 
						||
| 
								 | 
							
								    bind(
							 | 
						||
| 
								 | 
							
								        RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21)
							 | 
						||
| 
								 | 
							
								      , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        typedef detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            22
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21)
							 | 
						||
| 
								 | 
							
								        > fp_type;
							 | 
						||
| 
								 | 
							
								        return
							 | 
						||
| 
								 | 
							
								            detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								                fp_type
							 | 
						||
| 
								 | 
							
								              , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21
							 | 
						||
| 
								 | 
							
								            >::make(
							 | 
						||
| 
								 | 
							
								                fp_type(f)
							 | 
						||
| 
								 | 
							
								              , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21
							 | 
						||
| 
								 | 
							
								            );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    template <
							 | 
						||
| 
								 | 
							
								        typename RT
							 | 
						||
| 
								 | 
							
								      , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22
							 | 
						||
| 
								 | 
							
								      , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								    inline
							 | 
						||
| 
								 | 
							
								    typename detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								        detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            23
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22)
							 | 
						||
| 
								 | 
							
								        >
							 | 
						||
| 
								 | 
							
								      , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22
							 | 
						||
| 
								 | 
							
								    >::type const
							 | 
						||
| 
								 | 
							
								    bind(
							 | 
						||
| 
								 | 
							
								        RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22)
							 | 
						||
| 
								 | 
							
								      , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        typedef detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            23
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22)
							 | 
						||
| 
								 | 
							
								        > fp_type;
							 | 
						||
| 
								 | 
							
								        return
							 | 
						||
| 
								 | 
							
								            detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								                fp_type
							 | 
						||
| 
								 | 
							
								              , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22
							 | 
						||
| 
								 | 
							
								            >::make(
							 | 
						||
| 
								 | 
							
								                fp_type(f)
							 | 
						||
| 
								 | 
							
								              , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22
							 | 
						||
| 
								 | 
							
								            );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    template <
							 | 
						||
| 
								 | 
							
								        typename RT
							 | 
						||
| 
								 | 
							
								      , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23
							 | 
						||
| 
								 | 
							
								      , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								    inline
							 | 
						||
| 
								 | 
							
								    typename detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								        detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            24
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23)
							 | 
						||
| 
								 | 
							
								        >
							 | 
						||
| 
								 | 
							
								      , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23
							 | 
						||
| 
								 | 
							
								    >::type const
							 | 
						||
| 
								 | 
							
								    bind(
							 | 
						||
| 
								 | 
							
								        RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23)
							 | 
						||
| 
								 | 
							
								      , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        typedef detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            24
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23)
							 | 
						||
| 
								 | 
							
								        > fp_type;
							 | 
						||
| 
								 | 
							
								        return
							 | 
						||
| 
								 | 
							
								            detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								                fp_type
							 | 
						||
| 
								 | 
							
								              , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23
							 | 
						||
| 
								 | 
							
								            >::make(
							 | 
						||
| 
								 | 
							
								                fp_type(f)
							 | 
						||
| 
								 | 
							
								              , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23
							 | 
						||
| 
								 | 
							
								            );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    template <
							 | 
						||
| 
								 | 
							
								        typename RT
							 | 
						||
| 
								 | 
							
								      , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24
							 | 
						||
| 
								 | 
							
								      , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								    inline
							 | 
						||
| 
								 | 
							
								    typename detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								        detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            25
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24)
							 | 
						||
| 
								 | 
							
								        >
							 | 
						||
| 
								 | 
							
								      , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24
							 | 
						||
| 
								 | 
							
								    >::type const
							 | 
						||
| 
								 | 
							
								    bind(
							 | 
						||
| 
								 | 
							
								        RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24)
							 | 
						||
| 
								 | 
							
								      , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        typedef detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            25
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24)
							 | 
						||
| 
								 | 
							
								        > fp_type;
							 | 
						||
| 
								 | 
							
								        return
							 | 
						||
| 
								 | 
							
								            detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								                fp_type
							 | 
						||
| 
								 | 
							
								              , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24
							 | 
						||
| 
								 | 
							
								            >::make(
							 | 
						||
| 
								 | 
							
								                fp_type(f)
							 | 
						||
| 
								 | 
							
								              , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24
							 | 
						||
| 
								 | 
							
								            );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    template <
							 | 
						||
| 
								 | 
							
								        typename RT
							 | 
						||
| 
								 | 
							
								      , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25
							 | 
						||
| 
								 | 
							
								      , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								    inline
							 | 
						||
| 
								 | 
							
								    typename detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								        detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            26
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25)
							 | 
						||
| 
								 | 
							
								        >
							 | 
						||
| 
								 | 
							
								      , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25
							 | 
						||
| 
								 | 
							
								    >::type const
							 | 
						||
| 
								 | 
							
								    bind(
							 | 
						||
| 
								 | 
							
								        RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25)
							 | 
						||
| 
								 | 
							
								      , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        typedef detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            26
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25)
							 | 
						||
| 
								 | 
							
								        > fp_type;
							 | 
						||
| 
								 | 
							
								        return
							 | 
						||
| 
								 | 
							
								            detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								                fp_type
							 | 
						||
| 
								 | 
							
								              , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25
							 | 
						||
| 
								 | 
							
								            >::make(
							 | 
						||
| 
								 | 
							
								                fp_type(f)
							 | 
						||
| 
								 | 
							
								              , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25
							 | 
						||
| 
								 | 
							
								            );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    template <
							 | 
						||
| 
								 | 
							
								        typename RT
							 | 
						||
| 
								 | 
							
								      , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26
							 | 
						||
| 
								 | 
							
								      , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								    inline
							 | 
						||
| 
								 | 
							
								    typename detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								        detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            27
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26)
							 | 
						||
| 
								 | 
							
								        >
							 | 
						||
| 
								 | 
							
								      , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26
							 | 
						||
| 
								 | 
							
								    >::type const
							 | 
						||
| 
								 | 
							
								    bind(
							 | 
						||
| 
								 | 
							
								        RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26)
							 | 
						||
| 
								 | 
							
								      , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        typedef detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            27
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26)
							 | 
						||
| 
								 | 
							
								        > fp_type;
							 | 
						||
| 
								 | 
							
								        return
							 | 
						||
| 
								 | 
							
								            detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								                fp_type
							 | 
						||
| 
								 | 
							
								              , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26
							 | 
						||
| 
								 | 
							
								            >::make(
							 | 
						||
| 
								 | 
							
								                fp_type(f)
							 | 
						||
| 
								 | 
							
								              , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26
							 | 
						||
| 
								 | 
							
								            );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    template <
							 | 
						||
| 
								 | 
							
								        typename RT
							 | 
						||
| 
								 | 
							
								      , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27
							 | 
						||
| 
								 | 
							
								      , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								    inline
							 | 
						||
| 
								 | 
							
								    typename detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								        detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            28
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27)
							 | 
						||
| 
								 | 
							
								        >
							 | 
						||
| 
								 | 
							
								      , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27
							 | 
						||
| 
								 | 
							
								    >::type const
							 | 
						||
| 
								 | 
							
								    bind(
							 | 
						||
| 
								 | 
							
								        RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27)
							 | 
						||
| 
								 | 
							
								      , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        typedef detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            28
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27)
							 | 
						||
| 
								 | 
							
								        > fp_type;
							 | 
						||
| 
								 | 
							
								        return
							 | 
						||
| 
								 | 
							
								            detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								                fp_type
							 | 
						||
| 
								 | 
							
								              , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27
							 | 
						||
| 
								 | 
							
								            >::make(
							 | 
						||
| 
								 | 
							
								                fp_type(f)
							 | 
						||
| 
								 | 
							
								              , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26 , a27
							 | 
						||
| 
								 | 
							
								            );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    template <
							 | 
						||
| 
								 | 
							
								        typename RT
							 | 
						||
| 
								 | 
							
								      , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28
							 | 
						||
| 
								 | 
							
								      , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								    inline
							 | 
						||
| 
								 | 
							
								    typename detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								        detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            29
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28)
							 | 
						||
| 
								 | 
							
								        >
							 | 
						||
| 
								 | 
							
								      , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28
							 | 
						||
| 
								 | 
							
								    >::type const
							 | 
						||
| 
								 | 
							
								    bind(
							 | 
						||
| 
								 | 
							
								        RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28)
							 | 
						||
| 
								 | 
							
								      , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        typedef detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            29
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28)
							 | 
						||
| 
								 | 
							
								        > fp_type;
							 | 
						||
| 
								 | 
							
								        return
							 | 
						||
| 
								 | 
							
								            detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								                fp_type
							 | 
						||
| 
								 | 
							
								              , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28
							 | 
						||
| 
								 | 
							
								            >::make(
							 | 
						||
| 
								 | 
							
								                fp_type(f)
							 | 
						||
| 
								 | 
							
								              , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26 , a27 , a28
							 | 
						||
| 
								 | 
							
								            );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    template <
							 | 
						||
| 
								 | 
							
								        typename RT
							 | 
						||
| 
								 | 
							
								      , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29
							 | 
						||
| 
								 | 
							
								      , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								    inline
							 | 
						||
| 
								 | 
							
								    typename detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								        detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            30
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29)
							 | 
						||
| 
								 | 
							
								        >
							 | 
						||
| 
								 | 
							
								      , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29
							 | 
						||
| 
								 | 
							
								    >::type const
							 | 
						||
| 
								 | 
							
								    bind(
							 | 
						||
| 
								 | 
							
								        RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29)
							 | 
						||
| 
								 | 
							
								      , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        typedef detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            30
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29)
							 | 
						||
| 
								 | 
							
								        > fp_type;
							 | 
						||
| 
								 | 
							
								        return
							 | 
						||
| 
								 | 
							
								            detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								                fp_type
							 | 
						||
| 
								 | 
							
								              , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29
							 | 
						||
| 
								 | 
							
								            >::make(
							 | 
						||
| 
								 | 
							
								                fp_type(f)
							 | 
						||
| 
								 | 
							
								              , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26 , a27 , a28 , a29
							 | 
						||
| 
								 | 
							
								            );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    template <
							 | 
						||
| 
								 | 
							
								        typename RT
							 | 
						||
| 
								 | 
							
								      , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30
							 | 
						||
| 
								 | 
							
								      , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								    inline
							 | 
						||
| 
								 | 
							
								    typename detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								        detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            31
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30)
							 | 
						||
| 
								 | 
							
								        >
							 | 
						||
| 
								 | 
							
								      , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30
							 | 
						||
| 
								 | 
							
								    >::type const
							 | 
						||
| 
								 | 
							
								    bind(
							 | 
						||
| 
								 | 
							
								        RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30)
							 | 
						||
| 
								 | 
							
								      , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        typedef detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            31
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30)
							 | 
						||
| 
								 | 
							
								        > fp_type;
							 | 
						||
| 
								 | 
							
								        return
							 | 
						||
| 
								 | 
							
								            detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								                fp_type
							 | 
						||
| 
								 | 
							
								              , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30
							 | 
						||
| 
								 | 
							
								            >::make(
							 | 
						||
| 
								 | 
							
								                fp_type(f)
							 | 
						||
| 
								 | 
							
								              , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26 , a27 , a28 , a29 , a30
							 | 
						||
| 
								 | 
							
								            );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    template <
							 | 
						||
| 
								 | 
							
								        typename RT
							 | 
						||
| 
								 | 
							
								      , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31
							 | 
						||
| 
								 | 
							
								      , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								    inline
							 | 
						||
| 
								 | 
							
								    typename detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								        detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            32
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31)
							 | 
						||
| 
								 | 
							
								        >
							 | 
						||
| 
								 | 
							
								      , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31
							 | 
						||
| 
								 | 
							
								    >::type const
							 | 
						||
| 
								 | 
							
								    bind(
							 | 
						||
| 
								 | 
							
								        RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31)
							 | 
						||
| 
								 | 
							
								      , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        typedef detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            32
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31)
							 | 
						||
| 
								 | 
							
								        > fp_type;
							 | 
						||
| 
								 | 
							
								        return
							 | 
						||
| 
								 | 
							
								            detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								                fp_type
							 | 
						||
| 
								 | 
							
								              , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31
							 | 
						||
| 
								 | 
							
								            >::make(
							 | 
						||
| 
								 | 
							
								                fp_type(f)
							 | 
						||
| 
								 | 
							
								              , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26 , a27 , a28 , a29 , a30 , a31
							 | 
						||
| 
								 | 
							
								            );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    template <
							 | 
						||
| 
								 | 
							
								        typename RT
							 | 
						||
| 
								 | 
							
								      , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32
							 | 
						||
| 
								 | 
							
								      , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								    inline
							 | 
						||
| 
								 | 
							
								    typename detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								        detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            33
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32)
							 | 
						||
| 
								 | 
							
								        >
							 | 
						||
| 
								 | 
							
								      , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32
							 | 
						||
| 
								 | 
							
								    >::type const
							 | 
						||
| 
								 | 
							
								    bind(
							 | 
						||
| 
								 | 
							
								        RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32)
							 | 
						||
| 
								 | 
							
								      , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        typedef detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            33
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32)
							 | 
						||
| 
								 | 
							
								        > fp_type;
							 | 
						||
| 
								 | 
							
								        return
							 | 
						||
| 
								 | 
							
								            detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								                fp_type
							 | 
						||
| 
								 | 
							
								              , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32
							 | 
						||
| 
								 | 
							
								            >::make(
							 | 
						||
| 
								 | 
							
								                fp_type(f)
							 | 
						||
| 
								 | 
							
								              , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26 , a27 , a28 , a29 , a30 , a31 , a32
							 | 
						||
| 
								 | 
							
								            );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    template <
							 | 
						||
| 
								 | 
							
								        typename RT
							 | 
						||
| 
								 | 
							
								      , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33
							 | 
						||
| 
								 | 
							
								      , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								    inline
							 | 
						||
| 
								 | 
							
								    typename detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								        detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            34
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33)
							 | 
						||
| 
								 | 
							
								        >
							 | 
						||
| 
								 | 
							
								      , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33
							 | 
						||
| 
								 | 
							
								    >::type const
							 | 
						||
| 
								 | 
							
								    bind(
							 | 
						||
| 
								 | 
							
								        RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33)
							 | 
						||
| 
								 | 
							
								      , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        typedef detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            34
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33)
							 | 
						||
| 
								 | 
							
								        > fp_type;
							 | 
						||
| 
								 | 
							
								        return
							 | 
						||
| 
								 | 
							
								            detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								                fp_type
							 | 
						||
| 
								 | 
							
								              , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33
							 | 
						||
| 
								 | 
							
								            >::make(
							 | 
						||
| 
								 | 
							
								                fp_type(f)
							 | 
						||
| 
								 | 
							
								              , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26 , a27 , a28 , a29 , a30 , a31 , a32 , a33
							 | 
						||
| 
								 | 
							
								            );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    template <
							 | 
						||
| 
								 | 
							
								        typename RT
							 | 
						||
| 
								 | 
							
								      , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34
							 | 
						||
| 
								 | 
							
								      , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								    inline
							 | 
						||
| 
								 | 
							
								    typename detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								        detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            35
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34)
							 | 
						||
| 
								 | 
							
								        >
							 | 
						||
| 
								 | 
							
								      , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34
							 | 
						||
| 
								 | 
							
								    >::type const
							 | 
						||
| 
								 | 
							
								    bind(
							 | 
						||
| 
								 | 
							
								        RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34)
							 | 
						||
| 
								 | 
							
								      , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        typedef detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            35
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34)
							 | 
						||
| 
								 | 
							
								        > fp_type;
							 | 
						||
| 
								 | 
							
								        return
							 | 
						||
| 
								 | 
							
								            detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								                fp_type
							 | 
						||
| 
								 | 
							
								              , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34
							 | 
						||
| 
								 | 
							
								            >::make(
							 | 
						||
| 
								 | 
							
								                fp_type(f)
							 | 
						||
| 
								 | 
							
								              , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26 , a27 , a28 , a29 , a30 , a31 , a32 , a33 , a34
							 | 
						||
| 
								 | 
							
								            );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    template <
							 | 
						||
| 
								 | 
							
								        typename RT
							 | 
						||
| 
								 | 
							
								      , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35
							 | 
						||
| 
								 | 
							
								      , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								    inline
							 | 
						||
| 
								 | 
							
								    typename detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								        detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            36
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35)
							 | 
						||
| 
								 | 
							
								        >
							 | 
						||
| 
								 | 
							
								      , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35
							 | 
						||
| 
								 | 
							
								    >::type const
							 | 
						||
| 
								 | 
							
								    bind(
							 | 
						||
| 
								 | 
							
								        RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35)
							 | 
						||
| 
								 | 
							
								      , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        typedef detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            36
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35)
							 | 
						||
| 
								 | 
							
								        > fp_type;
							 | 
						||
| 
								 | 
							
								        return
							 | 
						||
| 
								 | 
							
								            detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								                fp_type
							 | 
						||
| 
								 | 
							
								              , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35
							 | 
						||
| 
								 | 
							
								            >::make(
							 | 
						||
| 
								 | 
							
								                fp_type(f)
							 | 
						||
| 
								 | 
							
								              , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26 , a27 , a28 , a29 , a30 , a31 , a32 , a33 , a34 , a35
							 | 
						||
| 
								 | 
							
								            );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    template <
							 | 
						||
| 
								 | 
							
								        typename RT
							 | 
						||
| 
								 | 
							
								      , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36
							 | 
						||
| 
								 | 
							
								      , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								    inline
							 | 
						||
| 
								 | 
							
								    typename detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								        detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            37
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36)
							 | 
						||
| 
								 | 
							
								        >
							 | 
						||
| 
								 | 
							
								      , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36
							 | 
						||
| 
								 | 
							
								    >::type const
							 | 
						||
| 
								 | 
							
								    bind(
							 | 
						||
| 
								 | 
							
								        RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36)
							 | 
						||
| 
								 | 
							
								      , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        typedef detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            37
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36)
							 | 
						||
| 
								 | 
							
								        > fp_type;
							 | 
						||
| 
								 | 
							
								        return
							 | 
						||
| 
								 | 
							
								            detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								                fp_type
							 | 
						||
| 
								 | 
							
								              , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36
							 | 
						||
| 
								 | 
							
								            >::make(
							 | 
						||
| 
								 | 
							
								                fp_type(f)
							 | 
						||
| 
								 | 
							
								              , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26 , a27 , a28 , a29 , a30 , a31 , a32 , a33 , a34 , a35 , a36
							 | 
						||
| 
								 | 
							
								            );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    template <
							 | 
						||
| 
								 | 
							
								        typename RT
							 | 
						||
| 
								 | 
							
								      , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37
							 | 
						||
| 
								 | 
							
								      , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								    inline
							 | 
						||
| 
								 | 
							
								    typename detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								        detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            38
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37)
							 | 
						||
| 
								 | 
							
								        >
							 | 
						||
| 
								 | 
							
								      , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 , A37
							 | 
						||
| 
								 | 
							
								    >::type const
							 | 
						||
| 
								 | 
							
								    bind(
							 | 
						||
| 
								 | 
							
								        RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37)
							 | 
						||
| 
								 | 
							
								      , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        typedef detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            38
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37)
							 | 
						||
| 
								 | 
							
								        > fp_type;
							 | 
						||
| 
								 | 
							
								        return
							 | 
						||
| 
								 | 
							
								            detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								                fp_type
							 | 
						||
| 
								 | 
							
								              , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 , A37
							 | 
						||
| 
								 | 
							
								            >::make(
							 | 
						||
| 
								 | 
							
								                fp_type(f)
							 | 
						||
| 
								 | 
							
								              , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26 , a27 , a28 , a29 , a30 , a31 , a32 , a33 , a34 , a35 , a36 , a37
							 | 
						||
| 
								 | 
							
								            );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    template <
							 | 
						||
| 
								 | 
							
								        typename RT
							 | 
						||
| 
								 | 
							
								      , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38
							 | 
						||
| 
								 | 
							
								      , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								    inline
							 | 
						||
| 
								 | 
							
								    typename detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								        detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            39
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38)
							 | 
						||
| 
								 | 
							
								        >
							 | 
						||
| 
								 | 
							
								      , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 , A37 , A38
							 | 
						||
| 
								 | 
							
								    >::type const
							 | 
						||
| 
								 | 
							
								    bind(
							 | 
						||
| 
								 | 
							
								        RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38)
							 | 
						||
| 
								 | 
							
								      , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        typedef detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            39
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38)
							 | 
						||
| 
								 | 
							
								        > fp_type;
							 | 
						||
| 
								 | 
							
								        return
							 | 
						||
| 
								 | 
							
								            detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								                fp_type
							 | 
						||
| 
								 | 
							
								              , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 , A37 , A38
							 | 
						||
| 
								 | 
							
								            >::make(
							 | 
						||
| 
								 | 
							
								                fp_type(f)
							 | 
						||
| 
								 | 
							
								              , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26 , a27 , a28 , a29 , a30 , a31 , a32 , a33 , a34 , a35 , a36 , a37 , a38
							 | 
						||
| 
								 | 
							
								            );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    template <
							 | 
						||
| 
								 | 
							
								        typename RT
							 | 
						||
| 
								 | 
							
								      , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39
							 | 
						||
| 
								 | 
							
								      , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								    inline
							 | 
						||
| 
								 | 
							
								    typename detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								        detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            40
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39)
							 | 
						||
| 
								 | 
							
								        >
							 | 
						||
| 
								 | 
							
								      , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 , A37 , A38 , A39
							 | 
						||
| 
								 | 
							
								    >::type const
							 | 
						||
| 
								 | 
							
								    bind(
							 | 
						||
| 
								 | 
							
								        RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39)
							 | 
						||
| 
								 | 
							
								      , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        typedef detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            40
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39)
							 | 
						||
| 
								 | 
							
								        > fp_type;
							 | 
						||
| 
								 | 
							
								        return
							 | 
						||
| 
								 | 
							
								            detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								                fp_type
							 | 
						||
| 
								 | 
							
								              , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 , A37 , A38 , A39
							 | 
						||
| 
								 | 
							
								            >::make(
							 | 
						||
| 
								 | 
							
								                fp_type(f)
							 | 
						||
| 
								 | 
							
								              , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26 , a27 , a28 , a29 , a30 , a31 , a32 , a33 , a34 , a35 , a36 , a37 , a38 , a39
							 | 
						||
| 
								 | 
							
								            );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    template <
							 | 
						||
| 
								 | 
							
								        typename RT
							 | 
						||
| 
								 | 
							
								      , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40
							 | 
						||
| 
								 | 
							
								      , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								    inline
							 | 
						||
| 
								 | 
							
								    typename detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								        detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            41
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40)
							 | 
						||
| 
								 | 
							
								        >
							 | 
						||
| 
								 | 
							
								      , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 , A37 , A38 , A39 , A40
							 | 
						||
| 
								 | 
							
								    >::type const
							 | 
						||
| 
								 | 
							
								    bind(
							 | 
						||
| 
								 | 
							
								        RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40)
							 | 
						||
| 
								 | 
							
								      , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        typedef detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            41
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40)
							 | 
						||
| 
								 | 
							
								        > fp_type;
							 | 
						||
| 
								 | 
							
								        return
							 | 
						||
| 
								 | 
							
								            detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								                fp_type
							 | 
						||
| 
								 | 
							
								              , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 , A37 , A38 , A39 , A40
							 | 
						||
| 
								 | 
							
								            >::make(
							 | 
						||
| 
								 | 
							
								                fp_type(f)
							 | 
						||
| 
								 | 
							
								              , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26 , a27 , a28 , a29 , a30 , a31 , a32 , a33 , a34 , a35 , a36 , a37 , a38 , a39 , a40
							 | 
						||
| 
								 | 
							
								            );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    template <
							 | 
						||
| 
								 | 
							
								        typename RT
							 | 
						||
| 
								 | 
							
								      , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41
							 | 
						||
| 
								 | 
							
								      , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								    inline
							 | 
						||
| 
								 | 
							
								    typename detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								        detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            42
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41)
							 | 
						||
| 
								 | 
							
								        >
							 | 
						||
| 
								 | 
							
								      , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 , A37 , A38 , A39 , A40 , A41
							 | 
						||
| 
								 | 
							
								    >::type const
							 | 
						||
| 
								 | 
							
								    bind(
							 | 
						||
| 
								 | 
							
								        RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41)
							 | 
						||
| 
								 | 
							
								      , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        typedef detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            42
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41)
							 | 
						||
| 
								 | 
							
								        > fp_type;
							 | 
						||
| 
								 | 
							
								        return
							 | 
						||
| 
								 | 
							
								            detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								                fp_type
							 | 
						||
| 
								 | 
							
								              , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 , A37 , A38 , A39 , A40 , A41
							 | 
						||
| 
								 | 
							
								            >::make(
							 | 
						||
| 
								 | 
							
								                fp_type(f)
							 | 
						||
| 
								 | 
							
								              , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26 , a27 , a28 , a29 , a30 , a31 , a32 , a33 , a34 , a35 , a36 , a37 , a38 , a39 , a40 , a41
							 | 
						||
| 
								 | 
							
								            );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    template <
							 | 
						||
| 
								 | 
							
								        typename RT
							 | 
						||
| 
								 | 
							
								      , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42
							 | 
						||
| 
								 | 
							
								      , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								    inline
							 | 
						||
| 
								 | 
							
								    typename detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								        detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            43
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42)
							 | 
						||
| 
								 | 
							
								        >
							 | 
						||
| 
								 | 
							
								      , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 , A37 , A38 , A39 , A40 , A41 , A42
							 | 
						||
| 
								 | 
							
								    >::type const
							 | 
						||
| 
								 | 
							
								    bind(
							 | 
						||
| 
								 | 
							
								        RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42)
							 | 
						||
| 
								 | 
							
								      , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        typedef detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            43
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42)
							 | 
						||
| 
								 | 
							
								        > fp_type;
							 | 
						||
| 
								 | 
							
								        return
							 | 
						||
| 
								 | 
							
								            detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								                fp_type
							 | 
						||
| 
								 | 
							
								              , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 , A37 , A38 , A39 , A40 , A41 , A42
							 | 
						||
| 
								 | 
							
								            >::make(
							 | 
						||
| 
								 | 
							
								                fp_type(f)
							 | 
						||
| 
								 | 
							
								              , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26 , a27 , a28 , a29 , a30 , a31 , a32 , a33 , a34 , a35 , a36 , a37 , a38 , a39 , a40 , a41 , a42
							 | 
						||
| 
								 | 
							
								            );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    template <
							 | 
						||
| 
								 | 
							
								        typename RT
							 | 
						||
| 
								 | 
							
								      , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43
							 | 
						||
| 
								 | 
							
								      , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42 , typename A43
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								    inline
							 | 
						||
| 
								 | 
							
								    typename detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								        detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            44
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43)
							 | 
						||
| 
								 | 
							
								        >
							 | 
						||
| 
								 | 
							
								      , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 , A37 , A38 , A39 , A40 , A41 , A42 , A43
							 | 
						||
| 
								 | 
							
								    >::type const
							 | 
						||
| 
								 | 
							
								    bind(
							 | 
						||
| 
								 | 
							
								        RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43)
							 | 
						||
| 
								 | 
							
								      , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        typedef detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            44
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43)
							 | 
						||
| 
								 | 
							
								        > fp_type;
							 | 
						||
| 
								 | 
							
								        return
							 | 
						||
| 
								 | 
							
								            detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								                fp_type
							 | 
						||
| 
								 | 
							
								              , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 , A37 , A38 , A39 , A40 , A41 , A42 , A43
							 | 
						||
| 
								 | 
							
								            >::make(
							 | 
						||
| 
								 | 
							
								                fp_type(f)
							 | 
						||
| 
								 | 
							
								              , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26 , a27 , a28 , a29 , a30 , a31 , a32 , a33 , a34 , a35 , a36 , a37 , a38 , a39 , a40 , a41 , a42 , a43
							 | 
						||
| 
								 | 
							
								            );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    template <
							 | 
						||
| 
								 | 
							
								        typename RT
							 | 
						||
| 
								 | 
							
								      , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43 , typename T44
							 | 
						||
| 
								 | 
							
								      , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								    inline
							 | 
						||
| 
								 | 
							
								    typename detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								        detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            45
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44)
							 | 
						||
| 
								 | 
							
								        >
							 | 
						||
| 
								 | 
							
								      , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 , A37 , A38 , A39 , A40 , A41 , A42 , A43 , A44
							 | 
						||
| 
								 | 
							
								    >::type const
							 | 
						||
| 
								 | 
							
								    bind(
							 | 
						||
| 
								 | 
							
								        RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44)
							 | 
						||
| 
								 | 
							
								      , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        typedef detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            45
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44)
							 | 
						||
| 
								 | 
							
								        > fp_type;
							 | 
						||
| 
								 | 
							
								        return
							 | 
						||
| 
								 | 
							
								            detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								                fp_type
							 | 
						||
| 
								 | 
							
								              , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 , A37 , A38 , A39 , A40 , A41 , A42 , A43 , A44
							 | 
						||
| 
								 | 
							
								            >::make(
							 | 
						||
| 
								 | 
							
								                fp_type(f)
							 | 
						||
| 
								 | 
							
								              , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26 , a27 , a28 , a29 , a30 , a31 , a32 , a33 , a34 , a35 , a36 , a37 , a38 , a39 , a40 , a41 , a42 , a43 , a44
							 | 
						||
| 
								 | 
							
								            );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    template <
							 | 
						||
| 
								 | 
							
								        typename RT
							 | 
						||
| 
								 | 
							
								      , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43 , typename T44 , typename T45
							 | 
						||
| 
								 | 
							
								      , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								    inline
							 | 
						||
| 
								 | 
							
								    typename detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								        detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            46
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45)
							 | 
						||
| 
								 | 
							
								        >
							 | 
						||
| 
								 | 
							
								      , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 , A37 , A38 , A39 , A40 , A41 , A42 , A43 , A44 , A45
							 | 
						||
| 
								 | 
							
								    >::type const
							 | 
						||
| 
								 | 
							
								    bind(
							 | 
						||
| 
								 | 
							
								        RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45)
							 | 
						||
| 
								 | 
							
								      , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        typedef detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            46
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45)
							 | 
						||
| 
								 | 
							
								        > fp_type;
							 | 
						||
| 
								 | 
							
								        return
							 | 
						||
| 
								 | 
							
								            detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								                fp_type
							 | 
						||
| 
								 | 
							
								              , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 , A37 , A38 , A39 , A40 , A41 , A42 , A43 , A44 , A45
							 | 
						||
| 
								 | 
							
								            >::make(
							 | 
						||
| 
								 | 
							
								                fp_type(f)
							 | 
						||
| 
								 | 
							
								              , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26 , a27 , a28 , a29 , a30 , a31 , a32 , a33 , a34 , a35 , a36 , a37 , a38 , a39 , a40 , a41 , a42 , a43 , a44 , a45
							 | 
						||
| 
								 | 
							
								            );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    template <
							 | 
						||
| 
								 | 
							
								        typename RT
							 | 
						||
| 
								 | 
							
								      , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43 , typename T44 , typename T45 , typename T46
							 | 
						||
| 
								 | 
							
								      , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								    inline
							 | 
						||
| 
								 | 
							
								    typename detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								        detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            47
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46)
							 | 
						||
| 
								 | 
							
								        >
							 | 
						||
| 
								 | 
							
								      , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 , A37 , A38 , A39 , A40 , A41 , A42 , A43 , A44 , A45 , A46
							 | 
						||
| 
								 | 
							
								    >::type const
							 | 
						||
| 
								 | 
							
								    bind(
							 | 
						||
| 
								 | 
							
								        RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46)
							 | 
						||
| 
								 | 
							
								      , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45 , A46 const& a46
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        typedef detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            47
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46)
							 | 
						||
| 
								 | 
							
								        > fp_type;
							 | 
						||
| 
								 | 
							
								        return
							 | 
						||
| 
								 | 
							
								            detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								                fp_type
							 | 
						||
| 
								 | 
							
								              , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 , A37 , A38 , A39 , A40 , A41 , A42 , A43 , A44 , A45 , A46
							 | 
						||
| 
								 | 
							
								            >::make(
							 | 
						||
| 
								 | 
							
								                fp_type(f)
							 | 
						||
| 
								 | 
							
								              , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26 , a27 , a28 , a29 , a30 , a31 , a32 , a33 , a34 , a35 , a36 , a37 , a38 , a39 , a40 , a41 , a42 , a43 , a44 , a45 , a46
							 | 
						||
| 
								 | 
							
								            );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    template <
							 | 
						||
| 
								 | 
							
								        typename RT
							 | 
						||
| 
								 | 
							
								      , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43 , typename T44 , typename T45 , typename T46 , typename T47
							 | 
						||
| 
								 | 
							
								      , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								    inline
							 | 
						||
| 
								 | 
							
								    typename detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								        detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            48
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47)
							 | 
						||
| 
								 | 
							
								        >
							 | 
						||
| 
								 | 
							
								      , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 , A37 , A38 , A39 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47
							 | 
						||
| 
								 | 
							
								    >::type const
							 | 
						||
| 
								 | 
							
								    bind(
							 | 
						||
| 
								 | 
							
								        RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47)
							 | 
						||
| 
								 | 
							
								      , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45 , A46 const& a46 , A47 const& a47
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        typedef detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            48
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47)
							 | 
						||
| 
								 | 
							
								        > fp_type;
							 | 
						||
| 
								 | 
							
								        return
							 | 
						||
| 
								 | 
							
								            detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								                fp_type
							 | 
						||
| 
								 | 
							
								              , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 , A37 , A38 , A39 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47
							 | 
						||
| 
								 | 
							
								            >::make(
							 | 
						||
| 
								 | 
							
								                fp_type(f)
							 | 
						||
| 
								 | 
							
								              , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26 , a27 , a28 , a29 , a30 , a31 , a32 , a33 , a34 , a35 , a36 , a37 , a38 , a39 , a40 , a41 , a42 , a43 , a44 , a45 , a46 , a47
							 | 
						||
| 
								 | 
							
								            );
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    
							 | 
						||
| 
								 | 
							
								    template <
							 | 
						||
| 
								 | 
							
								        typename RT
							 | 
						||
| 
								 | 
							
								      , typename T0 , typename T1 , typename T2 , typename T3 , typename T4 , typename T5 , typename T6 , typename T7 , typename T8 , typename T9 , typename T10 , typename T11 , typename T12 , typename T13 , typename T14 , typename T15 , typename T16 , typename T17 , typename T18 , typename T19 , typename T20 , typename T21 , typename T22 , typename T23 , typename T24 , typename T25 , typename T26 , typename T27 , typename T28 , typename T29 , typename T30 , typename T31 , typename T32 , typename T33 , typename T34 , typename T35 , typename T36 , typename T37 , typename T38 , typename T39 , typename T40 , typename T41 , typename T42 , typename T43 , typename T44 , typename T45 , typename T46 , typename T47 , typename T48
							 | 
						||
| 
								 | 
							
								      , typename A0 , typename A1 , typename A2 , typename A3 , typename A4 , typename A5 , typename A6 , typename A7 , typename A8 , typename A9 , typename A10 , typename A11 , typename A12 , typename A13 , typename A14 , typename A15 , typename A16 , typename A17 , typename A18 , typename A19 , typename A20 , typename A21 , typename A22 , typename A23 , typename A24 , typename A25 , typename A26 , typename A27 , typename A28 , typename A29 , typename A30 , typename A31 , typename A32 , typename A33 , typename A34 , typename A35 , typename A36 , typename A37 , typename A38 , typename A39 , typename A40 , typename A41 , typename A42 , typename A43 , typename A44 , typename A45 , typename A46 , typename A47 , typename A48
							 | 
						||
| 
								 | 
							
								    >
							 | 
						||
| 
								 | 
							
								    inline
							 | 
						||
| 
								 | 
							
								    typename detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								        detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            49
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 , T48)
							 | 
						||
| 
								 | 
							
								        >
							 | 
						||
| 
								 | 
							
								      , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 , A37 , A38 , A39 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47 , A48
							 | 
						||
| 
								 | 
							
								    >::type const
							 | 
						||
| 
								 | 
							
								    bind(
							 | 
						||
| 
								 | 
							
								        RT(*f)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 , T48)
							 | 
						||
| 
								 | 
							
								      , A0 const& a0 , A1 const& a1 , A2 const& a2 , A3 const& a3 , A4 const& a4 , A5 const& a5 , A6 const& a6 , A7 const& a7 , A8 const& a8 , A9 const& a9 , A10 const& a10 , A11 const& a11 , A12 const& a12 , A13 const& a13 , A14 const& a14 , A15 const& a15 , A16 const& a16 , A17 const& a17 , A18 const& a18 , A19 const& a19 , A20 const& a20 , A21 const& a21 , A22 const& a22 , A23 const& a23 , A24 const& a24 , A25 const& a25 , A26 const& a26 , A27 const& a27 , A28 const& a28 , A29 const& a29 , A30 const& a30 , A31 const& a31 , A32 const& a32 , A33 const& a33 , A34 const& a34 , A35 const& a35 , A36 const& a36 , A37 const& a37 , A38 const& a38 , A39 const& a39 , A40 const& a40 , A41 const& a41 , A42 const& a42 , A43 const& a43 , A44 const& a44 , A45 const& a45 , A46 const& a46 , A47 const& a47 , A48 const& a48
							 | 
						||
| 
								 | 
							
								    )
							 | 
						||
| 
								 | 
							
								    {
							 | 
						||
| 
								 | 
							
								        typedef detail::function_ptr<
							 | 
						||
| 
								 | 
							
								            49
							 | 
						||
| 
								 | 
							
								          , RT
							 | 
						||
| 
								 | 
							
								          , RT(*)(T0 , T1 , T2 , T3 , T4 , T5 , T6 , T7 , T8 , T9 , T10 , T11 , T12 , T13 , T14 , T15 , T16 , T17 , T18 , T19 , T20 , T21 , T22 , T23 , T24 , T25 , T26 , T27 , T28 , T29 , T30 , T31 , T32 , T33 , T34 , T35 , T36 , T37 , T38 , T39 , T40 , T41 , T42 , T43 , T44 , T45 , T46 , T47 , T48)
							 | 
						||
| 
								 | 
							
								        > fp_type;
							 | 
						||
| 
								 | 
							
								        return
							 | 
						||
| 
								 | 
							
								            detail::expression::function_eval<
							 | 
						||
| 
								 | 
							
								                fp_type
							 | 
						||
| 
								 | 
							
								              , A0 , A1 , A2 , A3 , A4 , A5 , A6 , A7 , A8 , A9 , A10 , A11 , A12 , A13 , A14 , A15 , A16 , A17 , A18 , A19 , A20 , A21 , A22 , A23 , A24 , A25 , A26 , A27 , A28 , A29 , A30 , A31 , A32 , A33 , A34 , A35 , A36 , A37 , A38 , A39 , A40 , A41 , A42 , A43 , A44 , A45 , A46 , A47 , A48
							 | 
						||
| 
								 | 
							
								            >::make(
							 | 
						||
| 
								 | 
							
								                fp_type(f)
							 | 
						||
| 
								 | 
							
								              , a0 , a1 , a2 , a3 , a4 , a5 , a6 , a7 , a8 , a9 , a10 , a11 , a12 , a13 , a14 , a15 , a16 , a17 , a18 , a19 , a20 , a21 , a22 , a23 , a24 , a25 , a26 , a27 , a28 , a29 , a30 , a31 , a32 , a33 , a34 , a35 , a36 , a37 , a38 , a39 , a40 , a41 , a42 , a43 , a44 , a45 , a46 , a47 , a48
							 | 
						||
| 
								 | 
							
								            );
							 | 
						||
| 
								 | 
							
								    }
							 |