~ubuntu-branches/ubuntu/warty/aqsis/warty

« back to all changes in this revision

Viewing changes to boost/boost/mpl/aux_/preprocessed/gcc/lambda_no_ctps.hpp

  • Committer: Bazaar Package Importer
  • Author(s): LaMont Jones
  • Date: 2004-08-24 07:25:04 UTC
  • Revision ID: james.westby@ubuntu.com-20040824072504-zf993vnevvisdsvb
Tags: upstream-0.9.1
ImportĀ upstreamĀ versionĀ 0.9.1

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
// preprocessed version of 'boost/mpl/lambda_no_ctps.hpp' header
 
2
// see the original for copyright information
 
3
 
 
4
namespace boost {
 
5
namespace mpl {
 
6
 
 
7
namespace aux {
 
8
 
 
9
template< int arity_, bool Protect > struct lambda_impl
 
10
{
 
11
    template< typename T > struct result_
 
12
    {
 
13
        typedef T type;
 
14
    };
 
15
};
 
16
 
 
17
template<> struct lambda_impl<1, false>
 
18
{
 
19
    template< typename F > struct result_
 
20
    {
 
21
        typedef typename F::rebind f_;
 
22
        typedef bind1<
 
23
              f_
 
24
            , typename lambda< typename F::arg1, false >::type
 
25
            > type;
 
26
    };
 
27
};
 
28
 
 
29
template<> struct lambda_impl<1, true>
 
30
{
 
31
    template< typename F > struct result_
 
32
    {
 
33
        typedef typename F::rebind f_;
 
34
        typedef mpl::protect< bind1<
 
35
              f_
 
36
            , typename lambda< typename F::arg1, false >::type
 
37
            > > type;
 
38
    };
 
39
};
 
40
 
 
41
template<> struct lambda_impl<2, false>
 
42
{
 
43
    template< typename F > struct result_
 
44
    {
 
45
        typedef typename F::rebind f_;
 
46
        typedef bind2<
 
47
              f_
 
48
            
 
49
            ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type
 
50
            > type;
 
51
    };
 
52
};
 
53
 
 
54
template<> struct lambda_impl<2, true>
 
55
{
 
56
    template< typename F > struct result_
 
57
    {
 
58
        typedef typename F::rebind f_;
 
59
        typedef mpl::protect< bind2<
 
60
              f_
 
61
            
 
62
            ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type
 
63
            > > type;
 
64
    };
 
65
};
 
66
 
 
67
template<> struct lambda_impl<3, false>
 
68
{
 
69
    template< typename F > struct result_
 
70
    {
 
71
        typedef typename F::rebind f_;
 
72
        typedef bind3<
 
73
              f_
 
74
            
 
75
            ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type
 
76
            > type;
 
77
    };
 
78
};
 
79
 
 
80
template<> struct lambda_impl<3, true>
 
81
{
 
82
    template< typename F > struct result_
 
83
    {
 
84
        typedef typename F::rebind f_;
 
85
        typedef mpl::protect< bind3<
 
86
              f_
 
87
            
 
88
            ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type
 
89
            > > type;
 
90
    };
 
91
};
 
92
 
 
93
template<> struct lambda_impl<4, false>
 
94
{
 
95
    template< typename F > struct result_
 
96
    {
 
97
        typedef typename F::rebind f_;
 
98
        typedef bind4<
 
99
              f_
 
100
            
 
101
            ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type
 
102
            > type;
 
103
    };
 
104
};
 
105
 
 
106
template<> struct lambda_impl<4, true>
 
107
{
 
108
    template< typename F > struct result_
 
109
    {
 
110
        typedef typename F::rebind f_;
 
111
        typedef mpl::protect< bind4<
 
112
              f_
 
113
            
 
114
            ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type
 
115
            > > type;
 
116
    };
 
117
};
 
118
 
 
119
template<> struct lambda_impl<5, false>
 
120
{
 
121
    template< typename F > struct result_
 
122
    {
 
123
        typedef typename F::rebind f_;
 
124
        typedef bind5<
 
125
              f_
 
126
            
 
127
            ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type, typename lambda< typename F::arg5, false >::type
 
128
            > type;
 
129
    };
 
130
};
 
131
 
 
132
template<> struct lambda_impl<5, true>
 
133
{
 
134
    template< typename F > struct result_
 
135
    {
 
136
        typedef typename F::rebind f_;
 
137
        typedef mpl::protect< bind5<
 
138
              f_
 
139
            
 
140
            ,typename lambda< typename F::arg1, false >::type, typename lambda< typename F::arg2, false >::type, typename lambda< typename F::arg3, false >::type, typename lambda< typename F::arg4, false >::type, typename lambda< typename F::arg5, false >::type
 
141
            > > type;
 
142
    };
 
143
};
 
144
 
 
145
} // namespace aux
 
146
 
 
147
template< typename T, bool Protect = true >
 
148
struct lambda
 
149
    : aux::lambda_impl<
 
150
          ::boost::mpl::aux::template_arity<T>::value
 
151
 
 
152
        , Protect
 
153
 
 
154
        >::template result_<T>
 
155
{
 
156
};
 
157
 
 
158
} // namespace mpl
 
159
} // namespace boost
 
160