

// Copyright Aleksey Gurtovoy 2002-2004

//

// Distributed under the Boost Software License, Version 1.0. 

// (See accompanying file LICENSE_1_0.txt or copy at 

// http://www.boost.org/LICENSE_1_0.txt)

//



// Preprocessed version of "boost/mpl/unpack_args.hpp" header

// -- DO NOT modify by hand!



namespace boost { namespace mpl {



namespace aux {



template< int size, typename F, typename Args >

struct unpack_args_impl;



template< typename F, typename Args >

struct unpack_args_impl< 0,F,Args >

    : apply0<

          F

        >

{

};



template< typename F, typename Args >

struct unpack_args_impl< 1,F,Args >

    : apply1<

          F

        , typename at_c< Args,0 >::type

        >

{

};



template< typename F, typename Args >

struct unpack_args_impl< 2,F,Args >

    : apply2<

          F

        , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type

        >

{

};



template< typename F, typename Args >

struct unpack_args_impl< 3,F,Args >

    : apply3<

          F

        , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type

        , typename at_c< Args,2 >::type

        >

{

};



template< typename F, typename Args >

struct unpack_args_impl< 4,F,Args >

    : apply4<

          F

        , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type

        , typename at_c< Args,2 >::type, typename at_c< Args,3 >::type

        >

{

};



template< typename F, typename Args >

struct unpack_args_impl< 5,F,Args >

    : apply5<

          F

        , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type

        , typename at_c< Args,2 >::type, typename at_c< Args,3 >::type

        , typename at_c< Args,4 >::type

        >

{

};



}



template<

      typename F

    >

struct unpack_args

{

    template< typename Args > struct apply



        : aux::unpack_args_impl< size<Args>::value,F, Args >



    {

    };

};



BOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(1, unpack_args)



}}



