Chris@16
|
1 ///////////////////////////////////////////////////////////////////////////////
|
Chris@16
|
2 /// \file vararg_matches_impl.hpp
|
Chris@16
|
3 /// Specializations of the vararg_matches_impl template
|
Chris@16
|
4 //
|
Chris@16
|
5 // Copyright 2008 Eric Niebler. Distributed under the Boost
|
Chris@16
|
6 // Software License, Version 1.0. (See accompanying file
|
Chris@16
|
7 // LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
|
Chris@16
|
8 template<typename Args, typename Back, long To>
|
Chris@16
|
9 struct vararg_matches_impl<Args, Back, 2, To>
|
Chris@16
|
10 : and_2<
|
Chris@16
|
11 matches_<
|
Chris@16
|
12 typename detail::expr_traits<typename Args::child1>::value_type::proto_derived_expr
|
Chris@16
|
13 , typename detail::expr_traits<typename Args::child1>::value_type::proto_grammar
|
Chris@16
|
14 , Back
|
Chris@16
|
15 >::value
|
Chris@16
|
16 , vararg_matches_impl<Args, Back, 2 + 1, To>
|
Chris@16
|
17 >
|
Chris@16
|
18 {};
|
Chris@16
|
19 template<typename Args, typename Back>
|
Chris@16
|
20 struct vararg_matches_impl<Args, Back, 2, 2>
|
Chris@16
|
21 : matches_<
|
Chris@16
|
22 typename detail::expr_traits<typename Args::child1>::value_type::proto_derived_expr
|
Chris@16
|
23 , typename detail::expr_traits<typename Args::child1>::value_type::proto_grammar
|
Chris@16
|
24 , Back
|
Chris@16
|
25 >
|
Chris@16
|
26 {};
|
Chris@16
|
27 template<typename Args, typename Back, long To>
|
Chris@16
|
28 struct vararg_matches_impl<Args, Back, 3, To>
|
Chris@16
|
29 : and_2<
|
Chris@16
|
30 matches_<
|
Chris@16
|
31 typename detail::expr_traits<typename Args::child2>::value_type::proto_derived_expr
|
Chris@16
|
32 , typename detail::expr_traits<typename Args::child2>::value_type::proto_grammar
|
Chris@16
|
33 , Back
|
Chris@16
|
34 >::value
|
Chris@16
|
35 , vararg_matches_impl<Args, Back, 3 + 1, To>
|
Chris@16
|
36 >
|
Chris@16
|
37 {};
|
Chris@16
|
38 template<typename Args, typename Back>
|
Chris@16
|
39 struct vararg_matches_impl<Args, Back, 3, 3>
|
Chris@16
|
40 : matches_<
|
Chris@16
|
41 typename detail::expr_traits<typename Args::child2>::value_type::proto_derived_expr
|
Chris@16
|
42 , typename detail::expr_traits<typename Args::child2>::value_type::proto_grammar
|
Chris@16
|
43 , Back
|
Chris@16
|
44 >
|
Chris@16
|
45 {};
|
Chris@16
|
46 template<typename Args, typename Back, long To>
|
Chris@16
|
47 struct vararg_matches_impl<Args, Back, 4, To>
|
Chris@16
|
48 : and_2<
|
Chris@16
|
49 matches_<
|
Chris@16
|
50 typename detail::expr_traits<typename Args::child3>::value_type::proto_derived_expr
|
Chris@16
|
51 , typename detail::expr_traits<typename Args::child3>::value_type::proto_grammar
|
Chris@16
|
52 , Back
|
Chris@16
|
53 >::value
|
Chris@16
|
54 , vararg_matches_impl<Args, Back, 4 + 1, To>
|
Chris@16
|
55 >
|
Chris@16
|
56 {};
|
Chris@16
|
57 template<typename Args, typename Back>
|
Chris@16
|
58 struct vararg_matches_impl<Args, Back, 4, 4>
|
Chris@16
|
59 : matches_<
|
Chris@16
|
60 typename detail::expr_traits<typename Args::child3>::value_type::proto_derived_expr
|
Chris@16
|
61 , typename detail::expr_traits<typename Args::child3>::value_type::proto_grammar
|
Chris@16
|
62 , Back
|
Chris@16
|
63 >
|
Chris@16
|
64 {};
|
Chris@16
|
65 template<typename Args, typename Back, long To>
|
Chris@16
|
66 struct vararg_matches_impl<Args, Back, 5, To>
|
Chris@16
|
67 : and_2<
|
Chris@16
|
68 matches_<
|
Chris@16
|
69 typename detail::expr_traits<typename Args::child4>::value_type::proto_derived_expr
|
Chris@16
|
70 , typename detail::expr_traits<typename Args::child4>::value_type::proto_grammar
|
Chris@16
|
71 , Back
|
Chris@16
|
72 >::value
|
Chris@16
|
73 , vararg_matches_impl<Args, Back, 5 + 1, To>
|
Chris@16
|
74 >
|
Chris@16
|
75 {};
|
Chris@16
|
76 template<typename Args, typename Back>
|
Chris@16
|
77 struct vararg_matches_impl<Args, Back, 5, 5>
|
Chris@16
|
78 : matches_<
|
Chris@16
|
79 typename detail::expr_traits<typename Args::child4>::value_type::proto_derived_expr
|
Chris@16
|
80 , typename detail::expr_traits<typename Args::child4>::value_type::proto_grammar
|
Chris@16
|
81 , Back
|
Chris@16
|
82 >
|
Chris@16
|
83 {};
|
Chris@16
|
84 template<typename Args, typename Back, long To>
|
Chris@16
|
85 struct vararg_matches_impl<Args, Back, 6, To>
|
Chris@16
|
86 : and_2<
|
Chris@16
|
87 matches_<
|
Chris@16
|
88 typename detail::expr_traits<typename Args::child5>::value_type::proto_derived_expr
|
Chris@16
|
89 , typename detail::expr_traits<typename Args::child5>::value_type::proto_grammar
|
Chris@16
|
90 , Back
|
Chris@16
|
91 >::value
|
Chris@16
|
92 , vararg_matches_impl<Args, Back, 6 + 1, To>
|
Chris@16
|
93 >
|
Chris@16
|
94 {};
|
Chris@16
|
95 template<typename Args, typename Back>
|
Chris@16
|
96 struct vararg_matches_impl<Args, Back, 6, 6>
|
Chris@16
|
97 : matches_<
|
Chris@16
|
98 typename detail::expr_traits<typename Args::child5>::value_type::proto_derived_expr
|
Chris@16
|
99 , typename detail::expr_traits<typename Args::child5>::value_type::proto_grammar
|
Chris@16
|
100 , Back
|
Chris@16
|
101 >
|
Chris@16
|
102 {};
|
Chris@16
|
103 template<typename Args, typename Back, long To>
|
Chris@16
|
104 struct vararg_matches_impl<Args, Back, 7, To>
|
Chris@16
|
105 : and_2<
|
Chris@16
|
106 matches_<
|
Chris@16
|
107 typename detail::expr_traits<typename Args::child6>::value_type::proto_derived_expr
|
Chris@16
|
108 , typename detail::expr_traits<typename Args::child6>::value_type::proto_grammar
|
Chris@16
|
109 , Back
|
Chris@16
|
110 >::value
|
Chris@16
|
111 , vararg_matches_impl<Args, Back, 7 + 1, To>
|
Chris@16
|
112 >
|
Chris@16
|
113 {};
|
Chris@16
|
114 template<typename Args, typename Back>
|
Chris@16
|
115 struct vararg_matches_impl<Args, Back, 7, 7>
|
Chris@16
|
116 : matches_<
|
Chris@16
|
117 typename detail::expr_traits<typename Args::child6>::value_type::proto_derived_expr
|
Chris@16
|
118 , typename detail::expr_traits<typename Args::child6>::value_type::proto_grammar
|
Chris@16
|
119 , Back
|
Chris@16
|
120 >
|
Chris@16
|
121 {};
|
Chris@16
|
122 template<typename Args, typename Back, long To>
|
Chris@16
|
123 struct vararg_matches_impl<Args, Back, 8, To>
|
Chris@16
|
124 : and_2<
|
Chris@16
|
125 matches_<
|
Chris@16
|
126 typename detail::expr_traits<typename Args::child7>::value_type::proto_derived_expr
|
Chris@16
|
127 , typename detail::expr_traits<typename Args::child7>::value_type::proto_grammar
|
Chris@16
|
128 , Back
|
Chris@16
|
129 >::value
|
Chris@16
|
130 , vararg_matches_impl<Args, Back, 8 + 1, To>
|
Chris@16
|
131 >
|
Chris@16
|
132 {};
|
Chris@16
|
133 template<typename Args, typename Back>
|
Chris@16
|
134 struct vararg_matches_impl<Args, Back, 8, 8>
|
Chris@16
|
135 : matches_<
|
Chris@16
|
136 typename detail::expr_traits<typename Args::child7>::value_type::proto_derived_expr
|
Chris@16
|
137 , typename detail::expr_traits<typename Args::child7>::value_type::proto_grammar
|
Chris@16
|
138 , Back
|
Chris@16
|
139 >
|
Chris@16
|
140 {};
|
Chris@16
|
141 template<typename Args, typename Back, long To>
|
Chris@16
|
142 struct vararg_matches_impl<Args, Back, 9, To>
|
Chris@16
|
143 : and_2<
|
Chris@16
|
144 matches_<
|
Chris@16
|
145 typename detail::expr_traits<typename Args::child8>::value_type::proto_derived_expr
|
Chris@16
|
146 , typename detail::expr_traits<typename Args::child8>::value_type::proto_grammar
|
Chris@16
|
147 , Back
|
Chris@16
|
148 >::value
|
Chris@16
|
149 , vararg_matches_impl<Args, Back, 9 + 1, To>
|
Chris@16
|
150 >
|
Chris@16
|
151 {};
|
Chris@16
|
152 template<typename Args, typename Back>
|
Chris@16
|
153 struct vararg_matches_impl<Args, Back, 9, 9>
|
Chris@16
|
154 : matches_<
|
Chris@16
|
155 typename detail::expr_traits<typename Args::child8>::value_type::proto_derived_expr
|
Chris@16
|
156 , typename detail::expr_traits<typename Args::child8>::value_type::proto_grammar
|
Chris@16
|
157 , Back
|
Chris@16
|
158 >
|
Chris@16
|
159 {};
|
Chris@16
|
160 template<typename Args, typename Back, long To>
|
Chris@16
|
161 struct vararg_matches_impl<Args, Back, 10, To>
|
Chris@16
|
162 : and_2<
|
Chris@16
|
163 matches_<
|
Chris@16
|
164 typename detail::expr_traits<typename Args::child9>::value_type::proto_derived_expr
|
Chris@16
|
165 , typename detail::expr_traits<typename Args::child9>::value_type::proto_grammar
|
Chris@16
|
166 , Back
|
Chris@16
|
167 >::value
|
Chris@16
|
168 , vararg_matches_impl<Args, Back, 10 + 1, To>
|
Chris@16
|
169 >
|
Chris@16
|
170 {};
|
Chris@16
|
171 template<typename Args, typename Back>
|
Chris@16
|
172 struct vararg_matches_impl<Args, Back, 10, 10>
|
Chris@16
|
173 : matches_<
|
Chris@16
|
174 typename detail::expr_traits<typename Args::child9>::value_type::proto_derived_expr
|
Chris@16
|
175 , typename detail::expr_traits<typename Args::child9>::value_type::proto_grammar
|
Chris@16
|
176 , Back
|
Chris@16
|
177 >
|
Chris@16
|
178 {};
|