1 2 // Copyright Aleksey Gurtovoy 2002-2004 3 // 4 // Distributed under the Boost Software License, Version 1.0. 5 // (See accompanying file LICENSE_1_0.txt or copy at 6 // http://www.boost.org/LICENSE_1_0.txt) 7 // 8 9 // Preprocessed version of "boost/mpl/unpack_args.hpp" header 10 // -- DO NOT modify by hand! 11 12 namespace boost { namespace mpl { 13 14 namespace aux { 15 16 template< BOOST_MPL_AUX_NTTP_DECL(int, size) > struct unpack_args_impl 17 { 18 template< typename F, typename Args > struct apply; 19 }; 20 21 template<> struct unpack_args_impl<0> 22 { 23 template< typename F, typename Args > struct apply 24 : apply0< 25 F 26 > 27 { 28 }; 29 }; 30 31 template<> struct unpack_args_impl<1> 32 { 33 template< typename F, typename Args > struct apply 34 : apply1< 35 F 36 , typename at_c< Args,0 >::type 37 > 38 { 39 }; 40 }; 41 42 template<> struct unpack_args_impl<2> 43 { 44 template< typename F, typename Args > struct apply 45 : apply2< 46 F 47 , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type 48 > 49 { 50 }; 51 }; 52 53 template<> struct unpack_args_impl<3> 54 { 55 template< typename F, typename Args > struct apply 56 : apply3< 57 F 58 , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type 59 , typename at_c< Args,2 >::type 60 > 61 { 62 }; 63 }; 64 65 template<> struct unpack_args_impl<4> 66 { 67 template< typename F, typename Args > struct apply 68 : apply4< 69 F 70 , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type 71 , typename at_c< Args,2 >::type, typename at_c< Args,3 >::type 72 > 73 { 74 }; 75 }; 76 77 template<> struct unpack_args_impl<5> 78 { 79 template< typename F, typename Args > struct apply 80 : apply5< 81 F 82 , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type 83 , typename at_c< Args,2 >::type, typename at_c< Args,3 >::type 84 , typename at_c< Args,4 >::type 85 > 86 { 87 }; 88 }; 89 90 } 91 92 template< 93 typename F 94 > 95 struct unpack_args 96 { 97 template< typename Args > struct apply 98 99 : aux::unpack_args_impl< size<Args>::value > 100 ::template apply< F,Args > 101 102 { 103 }; 104 }; 105 106 BOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(1, unpack_args) 107 108 }} 109 110