]> AND Private Git Repository - canny.git/blob - stc/exp/ml_stc_linux_make_v1.0/include/boost/mpl/aux_/preprocessed/mwcw/inherit.hpp
Logo AND Algorithmique Numérique Distribuée

Private GIT Repository
3eb3baeb53c36a9bb987e8d7dba3327e710b5aa6
[canny.git] / stc / exp / ml_stc_linux_make_v1.0 / include / boost / mpl / aux_ / preprocessed / mwcw / 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 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 = empty_base, typename T2 = empty_base\r
127         , typename T3 = empty_base, typename T4 = empty_base\r
128         , typename T5 = empty_base\r
129 \r
130         >\r
131     struct apply\r
132         : inherit< T1,T2,T3,T4,T5 >\r
133     {\r
134     };\r
135 };\r
136 \r
137 BOOST_MPL_AUX_NA_SPEC_LAMBDA(5, inherit)\r
138 BOOST_MPL_AUX_NA_SPEC_ARITY(5, inherit)\r
139 BOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(5, 5, inherit)\r
140 }}\r
141 \r