~ubuntu-branches/ubuntu/saucy/merkaartor/saucy

« back to all changes in this revision

Viewing changes to include/builtin-boost/boost/mpl/aux_/preprocessed/msvc70/lambda_no_ctps.hpp

Tags: upstream-0.15.3+svn20934
ImportĀ upstreamĀ versionĀ 0.15.3+svn20934

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
 
 
2
// Copyright Aleksey Gurtovoy 2000-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/aux_/lambda_no_ctps.hpp" header
 
10
// -- DO NOT modify by hand!
 
11
 
 
12
namespace boost { namespace mpl {
 
13
 
 
14
namespace aux {
 
15
 
 
16
template<
 
17
      bool C1 = false, bool C2 = false, bool C3 = false, bool C4 = false
 
18
    , bool C5 = false
 
19
    >
 
20
struct lambda_or
 
21
    : true_
 
22
{
 
23
};
 
24
 
 
25
template<>
 
26
struct lambda_or< false,false,false,false,false >
 
27
    : false_
 
28
{
 
29
};
 
30
 
 
31
template< typename Arity > struct lambda_impl
 
32
{
 
33
    template< typename T, typename Tag, typename Protect > struct result_
 
34
    {
 
35
        typedef T type;
 
36
        typedef is_placeholder<T> is_le;
 
37
    };
 
38
};
 
39
 
 
40
template<> struct lambda_impl< int_<1> >
 
41
{
 
42
    template< typename F, typename Tag, typename Protect > struct result_
 
43
    {
 
44
        typedef lambda< typename F::arg1, Tag, false_ > l1;
 
45
        typedef typename l1::is_le is_le1;
 
46
        typedef aux::lambda_or<
 
47
              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value
 
48
            > is_le;
 
49
 
 
50
        typedef bind1<
 
51
              typename F::rebind
 
52
            , typename l1::type
 
53
            > bind_;
 
54
 
 
55
        typedef typename if_<
 
56
              is_le
 
57
            , if_< Protect, mpl::protect<bind_>, bind_ >
 
58
            , identity<F>
 
59
            >::type type_;
 
60
 
 
61
        typedef typename type_::type type;
 
62
    };
 
63
};
 
64
 
 
65
template<> struct lambda_impl< int_<2> >
 
66
{
 
67
    template< typename F, typename Tag, typename Protect > struct result_
 
68
    {
 
69
        typedef lambda< typename F::arg1, Tag, false_ > l1;
 
70
        typedef lambda< typename F::arg2, Tag, false_ > l2;
 
71
        
 
72
        typedef typename l1::is_le is_le1;
 
73
        typedef typename l2::is_le is_le2;
 
74
        
 
75
 
 
76
        typedef aux::lambda_or<
 
77
              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value
 
78
            > is_le;
 
79
 
 
80
        typedef bind2<
 
81
              typename F::rebind
 
82
            , typename l1::type, typename l2::type
 
83
            > bind_;
 
84
 
 
85
        typedef typename if_<
 
86
              is_le
 
87
            , if_< Protect, mpl::protect<bind_>, bind_ >
 
88
            , identity<F>
 
89
            >::type type_;
 
90
 
 
91
        typedef typename type_::type type;
 
92
    };
 
93
};
 
94
 
 
95
template<> struct lambda_impl< int_<3> >
 
96
{
 
97
    template< typename F, typename Tag, typename Protect > struct result_
 
98
    {
 
99
        typedef lambda< typename F::arg1, Tag, false_ > l1;
 
100
        typedef lambda< typename F::arg2, Tag, false_ > l2;
 
101
        typedef lambda< typename F::arg3, Tag, false_ > l3;
 
102
        
 
103
        typedef typename l1::is_le is_le1;
 
104
        typedef typename l2::is_le is_le2;
 
105
        typedef typename l3::is_le is_le3;
 
106
        
 
107
 
 
108
        typedef aux::lambda_or<
 
109
              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value
 
110
            > is_le;
 
111
 
 
112
        typedef bind3<
 
113
              typename F::rebind
 
114
            , typename l1::type, typename l2::type, typename l3::type
 
115
            > bind_;
 
116
 
 
117
        typedef typename if_<
 
118
              is_le
 
119
            , if_< Protect, mpl::protect<bind_>, bind_ >
 
120
            , identity<F>
 
121
            >::type type_;
 
122
 
 
123
        typedef typename type_::type type;
 
124
    };
 
125
};
 
126
 
 
127
template<> struct lambda_impl< int_<4> >
 
128
{
 
129
    template< typename F, typename Tag, typename Protect > struct result_
 
130
    {
 
131
        typedef lambda< typename F::arg1, Tag, false_ > l1;
 
132
        typedef lambda< typename F::arg2, Tag, false_ > l2;
 
133
        typedef lambda< typename F::arg3, Tag, false_ > l3;
 
134
        typedef lambda< typename F::arg4, Tag, false_ > l4;
 
135
        
 
136
        typedef typename l1::is_le is_le1;
 
137
        typedef typename l2::is_le is_le2;
 
138
        typedef typename l3::is_le is_le3;
 
139
        typedef typename l4::is_le is_le4;
 
140
        
 
141
 
 
142
        typedef aux::lambda_or<
 
143
              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value
 
144
            > is_le;
 
145
 
 
146
        typedef bind4<
 
147
              typename F::rebind
 
148
            , typename l1::type, typename l2::type, typename l3::type
 
149
            , typename l4::type
 
150
            > bind_;
 
151
 
 
152
        typedef typename if_<
 
153
              is_le
 
154
            , if_< Protect, mpl::protect<bind_>, bind_ >
 
155
            , identity<F>
 
156
            >::type type_;
 
157
 
 
158
        typedef typename type_::type type;
 
159
    };
 
160
};
 
161
 
 
162
template<> struct lambda_impl< int_<5> >
 
163
{
 
164
    template< typename F, typename Tag, typename Protect > struct result_
 
165
    {
 
166
        typedef lambda< typename F::arg1, Tag, false_ > l1;
 
167
        typedef lambda< typename F::arg2, Tag, false_ > l2;
 
168
        typedef lambda< typename F::arg3, Tag, false_ > l3;
 
169
        typedef lambda< typename F::arg4, Tag, false_ > l4;
 
170
        typedef lambda< typename F::arg5, Tag, false_ > l5;
 
171
        
 
172
        typedef typename l1::is_le is_le1;
 
173
        typedef typename l2::is_le is_le2;
 
174
        typedef typename l3::is_le is_le3;
 
175
        typedef typename l4::is_le is_le4;
 
176
        typedef typename l5::is_le is_le5;
 
177
        
 
178
 
 
179
        typedef aux::lambda_or<
 
180
              BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le1)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le2)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le3)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le4)::value, BOOST_MPL_AUX_MSVC_VALUE_WKND(is_le5)::value
 
181
            > is_le;
 
182
 
 
183
        typedef bind5<
 
184
              typename F::rebind
 
185
            , typename l1::type, typename l2::type, typename l3::type
 
186
            , typename l4::type, typename l5::type
 
187
            > bind_;
 
188
 
 
189
        typedef typename if_<
 
190
              is_le
 
191
            , if_< Protect, mpl::protect<bind_>, bind_ >
 
192
            , identity<F>
 
193
            >::type type_;
 
194
 
 
195
        typedef typename type_::type type;
 
196
    };
 
197
};
 
198
 
 
199
} // namespace aux
 
200
 
 
201
template<
 
202
      typename T
 
203
    , typename Tag
 
204
    , typename Protect
 
205
    >
 
206
struct lambda
 
207
{
 
208
    /// Metafunction forwarding confuses MSVC 6.x
 
209
    typedef typename aux::template_arity<T>::type arity_;
 
210
    typedef typename aux::lambda_impl<arity_>
 
211
        ::template result_< T,Tag,Protect > l_;
 
212
 
 
213
    typedef typename l_::type type;
 
214
    typedef typename l_::is_le is_le;
 
215
    BOOST_MPL_AUX_LAMBDA_SUPPORT(3, lambda, (T, Tag, Protect))
 
216
};
 
217
 
 
218
BOOST_MPL_AUX_NA_SPEC2(1, 3, lambda)
 
219
 
 
220
template<
 
221
      typename T
 
222
    >
 
223
struct is_lambda_expression
 
224
    : lambda<T>::is_le
 
225
{
 
226
};
 
227
 
 
228
}}
 
229