]> git.proxmox.com Git - ceph.git/blob - ceph/src/boost/libs/mpl/include/boost/mpl/aux_/preprocessed/msvc60/inherit.hpp
add subtree-ish sources for 12.0.3
[ceph.git] / ceph / src / boost / libs / mpl / include / boost / mpl / aux_ / preprocessed / msvc60 / inherit.hpp
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