]>
Commit | Line | Data |
---|---|---|
7c673cae FG |
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 | ||
12 | namespace boost { namespace mpl { | |
13 | ||
14 | namespace aux { | |
15 | ||
16 | template< bool C1, bool C2 > | |
17 | struct inherit2_impl | |
18 | { | |
19 | template< typename Derived, typename T1, typename T2 > struct result_ | |
20 | : T1, T2 | |
21 | { | |
22 | typedef Derived type_; | |
23 | }; | |
24 | }; | |
25 | ||
26 | template<> | |
27 | struct 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 | ||
36 | template<> | |
37 | struct 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 | ||
46 | template<> | |
47 | struct 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 | ||
57 | template< | |
58 | typename BOOST_MPL_AUX_NA_PARAM(T1) | |
59 | , typename BOOST_MPL_AUX_NA_PARAM(T2) | |
60 | > | |
61 | struct 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 | ||
71 | BOOST_MPL_AUX_NA_SPEC(2, inherit2) | |
72 | ||
73 | template< | |
74 | typename T1 = na, typename T2 = na, typename T3 = na | |
75 | > | |
76 | struct 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 | ||
91 | BOOST_MPL_AUX_NA_SPEC(3, inherit3) | |
92 | ||
93 | template< | |
94 | typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na | |
95 | > | |
96 | struct 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 | ||
111 | BOOST_MPL_AUX_NA_SPEC(4, inherit4) | |
112 | ||
113 | template< | |
114 | typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na | |
115 | , typename T5 = na | |
116 | > | |
117 | struct 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 | ||
132 | BOOST_MPL_AUX_NA_SPEC(5, inherit5) | |
133 | ||
134 | /// primary template | |
135 | ||
136 | template< | |
137 | typename T1 = empty_base, typename T2 = empty_base | |
138 | , typename T3 = empty_base, typename T4 = empty_base | |
139 | , typename T5 = empty_base | |
140 | > | |
141 | struct inherit | |
142 | : inherit5< T1,T2,T3,T4,T5 > | |
143 | { | |
144 | }; | |
145 | ||
146 | template<> | |
147 | struct 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 | ||
162 | BOOST_MPL_AUX_NA_SPEC_LAMBDA(5, inherit) | |
163 | BOOST_MPL_AUX_NA_SPEC_ARITY(5, inherit) | |
164 | BOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(5, 5, inherit) | |
165 | }} | |
166 |