Revert "Ugly, not-to-be-pushed sucking in of all of Boost to get windows to work."
[dyninst.git] / external / boost / mpl / aux_ / preprocessed / bcc_pre590 / 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 the main "inherit.hpp" header\r
10 // -- DO NOT modify by hand!\r
11 \r
12 namespace boost { namespace mpl {\r
13 \r
14 template<\r
15       typename BOOST_MPL_AUX_NA_PARAM(T1)\r
16     , typename BOOST_MPL_AUX_NA_PARAM(T2)\r
17     >\r
18 struct inherit2\r
19     : T1, T2\r
20 {\r
21     typedef inherit2 type;\r
22     BOOST_MPL_AUX_LAMBDA_SUPPORT(2, inherit2, (T1, T2))\r
23 };\r
24 \r
25 template< typename T1 >\r
26 struct inherit2< T1,empty_base >\r
27 {\r
28     typedef T1 type;\r
29     BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (T1, empty_base))\r
30 };\r
31 \r
32 template< typename T2 >\r
33 struct inherit2< empty_base,T2 >\r
34 {\r
35     typedef T2 type;\r
36     BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (empty_base, T2))\r
37 };\r
38 \r
39 template<>\r
40 struct inherit2< empty_base,empty_base >\r
41 {\r
42     typedef empty_base type;\r
43     BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (empty_base, empty_base))\r
44 };\r
45 \r
46 BOOST_MPL_AUX_NA_SPEC(2, inherit2)\r
47 \r
48 template<\r
49       typename T1 = na, typename T2 = na, typename T3 = na\r
50     >\r
51 struct inherit3\r
52     : inherit2<\r
53           typename inherit2<\r
54               T1, T2\r
55             >::type\r
56         , T3\r
57         >\r
58 {\r
59     BOOST_MPL_AUX_LAMBDA_SUPPORT(\r
60           3\r
61         , inherit3\r
62         , ( T1, T2, T3)\r
63         )\r
64 };\r
65 \r
66 BOOST_MPL_AUX_NA_SPEC(3, inherit3)\r
67 \r
68 template<\r
69       typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na\r
70     >\r
71 struct inherit4\r
72     : inherit2<\r
73           typename inherit3<\r
74               T1, T2, T3\r
75             >::type\r
76         , T4\r
77         >\r
78 {\r
79     BOOST_MPL_AUX_LAMBDA_SUPPORT(\r
80           4\r
81         , inherit4\r
82         , ( T1, T2, T3, T4)\r
83         )\r
84 };\r
85 \r
86 BOOST_MPL_AUX_NA_SPEC(4, inherit4)\r
87 \r
88 template<\r
89       typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na\r
90     , typename T5 = na\r
91     >\r
92 struct inherit5\r
93     : inherit2<\r
94           typename inherit4<\r
95               T1, T2, T3, T4\r
96             >::type\r
97         , T5\r
98         >\r
99 {\r
100     BOOST_MPL_AUX_LAMBDA_SUPPORT(\r
101           5\r
102         , inherit5\r
103         , ( T1, T2, T3, T4, T5)\r
104         )\r
105 };\r
106 \r
107 BOOST_MPL_AUX_NA_SPEC(5, inherit5)\r
108 \r
109 /// primary template\r
110 \r
111 template<\r
112       typename T1 = empty_base, typename T2 = empty_base\r
113     , typename T3 = empty_base, typename T4 = empty_base\r
114     , typename T5 = empty_base\r
115     >\r
116 struct inherit\r
117     : inherit5< T1,T2,T3,T4,T5 >\r
118 {\r
119 };\r
120 \r
121 template<>\r
122 struct inherit< na,na,na,na,na >\r
123 {\r
124     template<\r
125 \r
126           typename T1, typename T2, typename T3, typename T4, typename T5\r
127 \r
128         >\r
129     struct apply\r
130         : inherit< T1,T2,T3,T4,T5 >\r
131     {\r
132     };\r
133 };\r
134 \r
135 BOOST_MPL_AUX_NA_SPEC_LAMBDA(5, inherit)\r
136 BOOST_MPL_AUX_NA_SPEC_ARITY(5, inherit)\r
137 BOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(5, 5, inherit)\r
138 }}\r
139 \r