Merge c:/dyninst/pc_bluegene/dyninst into dyn_pc_integration
[dyninst.git] / external / boost / mpl / aux_ / preprocessed / bcc551 / unpack_args.hpp
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< int size, typename F, typename Args >
17 struct unpack_args_impl;
18
19 template< typename F, typename Args >
20 struct unpack_args_impl< 0,F,Args >
21     : apply0<
22           F
23         >
24 {
25 };
26
27 template< typename F, typename Args >
28 struct unpack_args_impl< 1,F,Args >
29     : apply1<
30           F
31         , typename at_c< Args,0 >::type
32         >
33 {
34 };
35
36 template< typename F, typename Args >
37 struct unpack_args_impl< 2,F,Args >
38     : apply2<
39           F
40         , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
41         >
42 {
43 };
44
45 template< typename F, typename Args >
46 struct unpack_args_impl< 3,F,Args >
47     : apply3<
48           F
49         , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
50         , typename at_c< Args,2 >::type
51         >
52 {
53 };
54
55 template< typename F, typename Args >
56 struct unpack_args_impl< 4,F,Args >
57     : apply4<
58           F
59         , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
60         , typename at_c< Args,2 >::type, typename at_c< Args,3 >::type
61         >
62 {
63 };
64
65 template< typename F, typename Args >
66 struct unpack_args_impl< 5,F,Args >
67     : apply5<
68           F
69         , typename at_c< Args,0 >::type, typename at_c< Args,1 >::type
70         , typename at_c< Args,2 >::type, typename at_c< Args,3 >::type
71         , typename at_c< Args,4 >::type
72         >
73 {
74 };
75
76 }
77
78 template<
79       typename F
80     >
81 struct unpack_args
82 {
83     template< typename Args > struct apply
84     {
85         typedef typename aux::unpack_args_impl<
86               size<Args>::value
87             , F
88             , Args
89             >::type type;
90
91     };
92 };
93
94 BOOST_MPL_AUX_PASS_THROUGH_LAMBDA_SPEC(1, unpack_args)
95
96 }}
97