source: NonGTP/Boost/boost/mpl/aux_/preprocessed/msvc70/inherit.hpp @ 857

Revision 857, 3.4 KB checked in by igarcia, 19 years ago (diff)
Line 
1
2// Copyright Aleksey Gurtovoy 2001-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/inherit.hpp" header
10// -- DO NOT modify by hand!
11
12namespace boost { namespace mpl {
13
14namespace aux {
15
16template< bool C1, bool C2 >
17struct inherit2_impl
18{
19    template< typename Derived, typename T1, typename T2 > struct result_
20        : T1, T2
21    {
22        typedef Derived type_;
23    };
24};
25
26template<>
27struct inherit2_impl< false,true >
28{
29    template< typename Derived, typename T1, typename T2 > struct result_
30        : T1
31    {
32        typedef T1 type_;
33    };
34};
35
36template<>
37struct inherit2_impl< true,false >
38{
39    template< typename Derived, typename T1, typename T2 > struct result_
40        : T2
41    {
42        typedef T2 type_;
43    };
44};
45
46template<>
47struct inherit2_impl< true,true >
48{
49    template< typename Derived, typename T1, typename T2 > struct result_
50    {
51        typedef T1 type_;
52    };
53};
54
55} // namespace aux
56
57template<
58      typename BOOST_MPL_AUX_NA_PARAM(T1)
59    , typename BOOST_MPL_AUX_NA_PARAM(T2)
60    >
61struct inherit2
62    : aux::inherit2_impl<
63          is_empty_base<T1>::value
64        , is_empty_base<T2>::value
65        >::template result_< inherit2< T1,T2 >,T1, T2 >
66{
67    typedef typename inherit2::type_ type;
68    BOOST_MPL_AUX_LAMBDA_SUPPORT(2, inherit2, (T1, T2))
69};
70
71BOOST_MPL_AUX_NA_SPEC(2, inherit2)
72
73template<
74      typename T1 = na, typename T2 = na, typename T3 = na
75    >
76struct inherit3
77    : inherit2<
78          typename inherit2<
79              T1, T2
80            >::type
81        , T3
82        >
83{
84    BOOST_MPL_AUX_LAMBDA_SUPPORT(
85          3
86        , inherit3
87        , ( T1, T2, T3)
88        )
89};
90
91BOOST_MPL_AUX_NA_SPEC(3, inherit3)
92
93template<
94      typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
95    >
96struct inherit4
97    : inherit2<
98          typename inherit3<
99              T1, T2, T3
100            >::type
101        , T4
102        >
103{
104    BOOST_MPL_AUX_LAMBDA_SUPPORT(
105          4
106        , inherit4
107        , ( T1, T2, T3, T4)
108        )
109};
110
111BOOST_MPL_AUX_NA_SPEC(4, inherit4)
112
113template<
114      typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na
115    , typename T5 = na
116    >
117struct inherit5
118    : inherit2<
119          typename inherit4<
120              T1, T2, T3, T4
121            >::type
122        , T5
123        >
124{
125    BOOST_MPL_AUX_LAMBDA_SUPPORT(
126          5
127        , inherit5
128        , ( T1, T2, T3, T4, T5)
129        )
130};
131
132BOOST_MPL_AUX_NA_SPEC(5, inherit5)
133
134/// primary template
135
136template<
137      typename T1 = empty_base, typename T2 = empty_base
138    , typename T3 = empty_base, typename T4 = empty_base
139    , typename T5 = empty_base
140    >
141struct inherit
142    : inherit5< T1,T2,T3,T4,T5 >
143{
144};
145
146template<>
147struct inherit< na,na,na,na,na >
148{
149    template<
150
151          typename T1 = empty_base, typename T2 = empty_base
152        , typename T3 = empty_base, typename T4 = empty_base
153        , typename T5 = empty_base
154
155        >
156    struct apply
157        : inherit< T1,T2,T3,T4,T5 >
158    {
159    };
160};
161
162BOOST_MPL_AUX_NA_SPEC_LAMBDA(5, inherit)
163BOOST_MPL_AUX_NA_SPEC_ARITY(5, inherit)
164BOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(5, 5, inherit)
165}}
166
Note: See TracBrowser for help on using the repository browser.