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

Private GIT Repository
35eb35f1255bb7c83232cd6ae65fa68211b3ddac
[canny.git] / stc / exp / ml_stc_linux_make_v1.0 / include / boost / mpl / aux_ / preprocessed / plain / 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 };\r
23 \r
24 template< typename T1 >\r
25 struct inherit2< T1,empty_base >\r
26 {\r
27     typedef T1 type;\r
28     BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (T1, empty_base))\r
29 };\r
30 \r
31 template< typename T2 >\r
32 struct inherit2< empty_base,T2 >\r
33 {\r
34     typedef T2 type;\r
35     BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (empty_base, T2))\r
36 };\r
37 \r
38 template<>\r
39 struct inherit2< empty_base,empty_base >\r
40 {\r
41     typedef empty_base type;\r
42     BOOST_MPL_AUX_LAMBDA_SUPPORT_SPEC(2, inherit2, (empty_base, empty_base))\r
43 };\r
44 \r
45 BOOST_MPL_AUX_NA_SPEC(2, inherit2)\r
46 \r
47 template<\r
48       typename T1 = na, typename T2 = na, typename T3 = na\r
49     >\r
50 struct inherit3\r
51     : inherit2<\r
52           typename inherit2<\r
53               T1, T2\r
54             >::type\r
55         , T3\r
56         >\r
57 {\r
58 };\r
59 \r
60 BOOST_MPL_AUX_NA_SPEC(3, inherit3)\r
61 \r
62 template<\r
63       typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na\r
64     >\r
65 struct inherit4\r
66     : inherit2<\r
67           typename inherit3<\r
68               T1, T2, T3\r
69             >::type\r
70         , T4\r
71         >\r
72 {\r
73 };\r
74 \r
75 BOOST_MPL_AUX_NA_SPEC(4, inherit4)\r
76 \r
77 template<\r
78       typename T1 = na, typename T2 = na, typename T3 = na, typename T4 = na\r
79     , typename T5 = na\r
80     >\r
81 struct inherit5\r
82     : inherit2<\r
83           typename inherit4<\r
84               T1, T2, T3, T4\r
85             >::type\r
86         , T5\r
87         >\r
88 {\r
89 };\r
90 \r
91 BOOST_MPL_AUX_NA_SPEC(5, inherit5)\r
92 \r
93 /// primary template\r
94 \r
95 template<\r
96       typename T1 = empty_base, typename T2 = empty_base\r
97     , typename T3 = empty_base, typename T4 = empty_base\r
98     , typename T5 = empty_base\r
99     >\r
100 struct inherit\r
101     : inherit5< T1,T2,T3,T4,T5 >\r
102 {\r
103 };\r
104 \r
105 template<>\r
106 struct inherit< na,na,na,na,na >\r
107 {\r
108     template<\r
109 \r
110           typename T1 = empty_base, typename T2 = empty_base\r
111         , typename T3 = empty_base, typename T4 = empty_base\r
112         , typename T5 = empty_base\r
113 \r
114         >\r
115     struct apply\r
116         : inherit< T1,T2,T3,T4,T5 >\r
117     {\r
118     };\r
119 };\r
120 \r
121 BOOST_MPL_AUX_NA_SPEC_LAMBDA(5, inherit)\r
122 BOOST_MPL_AUX_NA_SPEC_ARITY(5, inherit)\r
123 BOOST_MPL_AUX_NA_SPEC_TEMPLATE_ARITY(5, 5, inherit)\r
124 }}\r
125 \r