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