Fixes for VS 2008
[dyninst.git] / external / boost / mpl / aux_ / preprocessed / no_ctps / inherit.hpp
1 \r
2 // Copyright Aleksey Gurtovoy 2001-2004\r
3 //\r
4 // Distributed under the Boost Software License, Version 1.0. \r
5 // (See accompanying file LICENSE_1_0.txt or copy at \r
6 // http://www.boost.org/LICENSE_1_0.txt)\r
7 //\r
8 \r
9 // Preprocessed version of "boost/mpl/inherit.hpp" header\r
10 // -- DO NOT modify by hand!\r
11 \r
12 namespace boost { namespace mpl {\r
13 \r
14 namespace aux {\r
15 \r
16 template< bool C1, bool C2 >\r
17 struct inherit2_impl\r
18 {\r
19     template< typename Derived, typename T1, typename T2 > struct result_\r
20         : T1, T2\r
21     {\r
22         typedef Derived type_;\r
23     };\r
24 };\r
25 \r
26 template<>\r
27 struct inherit2_impl< false,true >\r
28 {\r
29     template< typename Derived, typename T1, typename T2 > struct result_\r
30         : T1\r
31     {\r
32         typedef T1 type_;\r
33     };\r
34 };\r
35 \r
36 template<>\r
37 struct inherit2_impl< true,false >\r
38 {\r
39     template< typename Derived, typename T1, typename T2 > struct result_\r
40         : T2\r
41     {\r
42         typedef T2 type_;\r
43     };\r
44 };\r
45 \r
46 template<>\r
47 struct inherit2_impl< true,true >\r
48 {\r
49     template< typename Derived, typename T1, typename T2 > struct result_\r
50     {\r
51         typedef T1 type_;\r
52     };\r
53 };\r
54 \r
55 } // namespace aux\r
56 \r
57 template<\r
58       typename BOOST_MPL_AUX_NA_PARAM(T1)\r
59     , typename BOOST_MPL_AUX_NA_PARAM(T2)\r
60     >\r
61 struct inherit2\r
62     : aux::inherit2_impl<\r
63           is_empty_base<T1>::value\r
64         , is_empty_base<T2>::value\r
65         >::template result_< inherit2< T1,T2 >,T1, T2 >\r
66 {\r
67     typedef typename inherit2::type_ type;\r
68     BOOST_MPL_AUX_LAMBDA_SUPPORT(2, inherit2, (T1, T2))\r
69 };\r
70 \r
71 BOOST_MPL_AUX_NA_SPEC(2, inherit2)\r
72 \r
73 template<\r
74       typename T1 = na, typename T2 = na, typename T3 = na\r
75     >\r
76 struct inherit3\r
77     : inherit2<\r
78           typename inherit2<\r
79               T1, T2\r
80             >::type\r
81         , T3\r
82         >\r
83 {\r
84     BOOST_MPL_AUX_LAMBDA_SUPPORT(\r
85           3\r
86         , inherit3\r
87         , ( T1, T2, T3)\r
88         )\r
89 };\r
90 \r
91 BOOST_MPL_AUX_NA_SPEC(3, inherit3)\r
92 \r
93 template<\r
94       typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na\r
95     >\r
96 struct inherit4\r
97     : inherit2<\r
98           typename inherit3<\r
99               T1, T2, T3\r
100             >::type\r
101         , T4\r
102         >\r
103 {\r
104     BOOST_MPL_AUX_LAMBDA_SUPPORT(\r
105           4\r
106         , inherit4\r
107         , ( T1, T2, T3, T4)\r
108         )\r
109 };\r
110 \r
111 BOOST_MPL_AUX_NA_SPEC(4, inherit4)\r
112 \r
113 template<\r
114       typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na\r
115     , typename T5 = na\r
116     >\r
117 struct inherit5\r
118     : inherit2<\r
119           typename inherit4<\r
120               T1, T2, T3, T4\r
121             >::type\r
122         , T5\r
123         >\r
124 {\r
125     BOOST_MPL_AUX_LAMBDA_SUPPORT(\r
126           5\r
127         , inherit5\r
128         , ( T1, T2, T3, T4, T5)\r
129         )\r
130 };\r
131 \r
132 BOOST_MPL_AUX_NA_SPEC(5, inherit5)\r
133 \r
134 /// primary template\r
135 \r
136 template<\r
137       typename T1 = empty_base, typename T2 = empty_base\r
138     , typename T3 = empty_base, typename T4 = empty_base\r
139     , typename T5 = empty_base\r
140     >\r
141 struct inherit\r
142     : inherit5< T1,T2,T3,T4,T5 >\r
143 {\r
144 };\r
145 \r
146 template<>\r
147 struct inherit< na,na,na,na,na >\r
148 {\r
149     template<\r
150 \r
151           typename T1 = empty_base, typename T2 = empty_base\r
152         , typename T3 = empty_base, typename T4 = empty_base\r
153         , typename T5 = empty_base\r
154 \r
155         >\r
156     struct apply\r
157         : inherit< T1,T2,T3,T4,T5 >\r
158     {\r
159     };\r
160 };\r
161 \r
162 BOOST_MPL_AUX_NA_SPEC_LAMBDA(5, inherit)\r
163 BOOST_MPL_AUX_NA_SPEC_ARITY(5, inherit)\r
164 BOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(5, 5, inherit)\r
165 }}\r
166 \r