1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
|
///////////////////////////////////////////////////////////////////////////////
/// \file lambda_matches.hpp
/// Specializations of the lambda_matches template
//
// Copyright 2008 Eric Niebler. Distributed under the Boost
// Software License, Version 1.0. (See accompanying file
// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
template<
template<typename , typename> class T
, typename Expr0 , typename Expr1
, typename Grammar0 , typename Grammar1
>
struct lambda_matches<
T<Expr0 , Expr1>
, T<Grammar0 , Grammar1>
BOOST_PROTO_TEMPLATE_ARITY_PARAM(2)
>
: and_2<
lambda_matches< Expr0 , Grammar0 >::value,
lambda_matches< Expr1 , Grammar1 >
>
{};
template<
template<typename , typename , typename> class T
, typename Expr0 , typename Expr1 , typename Expr2
, typename Grammar0 , typename Grammar1 , typename Grammar2
>
struct lambda_matches<
T<Expr0 , Expr1 , Expr2>
, T<Grammar0 , Grammar1 , Grammar2>
BOOST_PROTO_TEMPLATE_ARITY_PARAM(3)
>
: and_3<
lambda_matches< Expr0 , Grammar0 >::value,
lambda_matches< Expr1 , Grammar1 > , lambda_matches< Expr2 , Grammar2 >
>
{};
template<
template<typename , typename , typename , typename> class T
, typename Expr0 , typename Expr1 , typename Expr2 , typename Expr3
, typename Grammar0 , typename Grammar1 , typename Grammar2 , typename Grammar3
>
struct lambda_matches<
T<Expr0 , Expr1 , Expr2 , Expr3>
, T<Grammar0 , Grammar1 , Grammar2 , Grammar3>
BOOST_PROTO_TEMPLATE_ARITY_PARAM(4)
>
: and_4<
lambda_matches< Expr0 , Grammar0 >::value,
lambda_matches< Expr1 , Grammar1 > , lambda_matches< Expr2 , Grammar2 > , lambda_matches< Expr3 , Grammar3 >
>
{};
template<
template<typename , typename , typename , typename , typename> class T
, typename Expr0 , typename Expr1 , typename Expr2 , typename Expr3 , typename Expr4
, typename Grammar0 , typename Grammar1 , typename Grammar2 , typename Grammar3 , typename Grammar4
>
struct lambda_matches<
T<Expr0 , Expr1 , Expr2 , Expr3 , Expr4>
, T<Grammar0 , Grammar1 , Grammar2 , Grammar3 , Grammar4>
BOOST_PROTO_TEMPLATE_ARITY_PARAM(5)
>
: and_5<
lambda_matches< Expr0 , Grammar0 >::value,
lambda_matches< Expr1 , Grammar1 > , lambda_matches< Expr2 , Grammar2 > , lambda_matches< Expr3 , Grammar3 > , lambda_matches< Expr4 , Grammar4 >
>
{};
template<
template<typename , typename , typename , typename , typename , typename> class T
, typename Expr0 , typename Expr1 , typename Expr2 , typename Expr3 , typename Expr4 , typename Expr5
, typename Grammar0 , typename Grammar1 , typename Grammar2 , typename Grammar3 , typename Grammar4 , typename Grammar5
>
struct lambda_matches<
T<Expr0 , Expr1 , Expr2 , Expr3 , Expr4 , Expr5>
, T<Grammar0 , Grammar1 , Grammar2 , Grammar3 , Grammar4 , Grammar5>
BOOST_PROTO_TEMPLATE_ARITY_PARAM(6)
>
: and_6<
lambda_matches< Expr0 , Grammar0 >::value,
lambda_matches< Expr1 , Grammar1 > , lambda_matches< Expr2 , Grammar2 > , lambda_matches< Expr3 , Grammar3 > , lambda_matches< Expr4 , Grammar4 > , lambda_matches< Expr5 , Grammar5 >
>
{};
template<
template<typename , typename , typename , typename , typename , typename , typename> class T
, typename Expr0 , typename Expr1 , typename Expr2 , typename Expr3 , typename Expr4 , typename Expr5 , typename Expr6
, typename Grammar0 , typename Grammar1 , typename Grammar2 , typename Grammar3 , typename Grammar4 , typename Grammar5 , typename Grammar6
>
struct lambda_matches<
T<Expr0 , Expr1 , Expr2 , Expr3 , Expr4 , Expr5 , Expr6>
, T<Grammar0 , Grammar1 , Grammar2 , Grammar3 , Grammar4 , Grammar5 , Grammar6>
BOOST_PROTO_TEMPLATE_ARITY_PARAM(7)
>
: and_7<
lambda_matches< Expr0 , Grammar0 >::value,
lambda_matches< Expr1 , Grammar1 > , lambda_matches< Expr2 , Grammar2 > , lambda_matches< Expr3 , Grammar3 > , lambda_matches< Expr4 , Grammar4 > , lambda_matches< Expr5 , Grammar5 > , lambda_matches< Expr6 , Grammar6 >
>
{};
template<
template<typename , typename , typename , typename , typename , typename , typename , typename> class T
, typename Expr0 , typename Expr1 , typename Expr2 , typename Expr3 , typename Expr4 , typename Expr5 , typename Expr6 , typename Expr7
, typename Grammar0 , typename Grammar1 , typename Grammar2 , typename Grammar3 , typename Grammar4 , typename Grammar5 , typename Grammar6 , typename Grammar7
>
struct lambda_matches<
T<Expr0 , Expr1 , Expr2 , Expr3 , Expr4 , Expr5 , Expr6 , Expr7>
, T<Grammar0 , Grammar1 , Grammar2 , Grammar3 , Grammar4 , Grammar5 , Grammar6 , Grammar7>
BOOST_PROTO_TEMPLATE_ARITY_PARAM(8)
>
: and_8<
lambda_matches< Expr0 , Grammar0 >::value,
lambda_matches< Expr1 , Grammar1 > , lambda_matches< Expr2 , Grammar2 > , lambda_matches< Expr3 , Grammar3 > , lambda_matches< Expr4 , Grammar4 > , lambda_matches< Expr5 , Grammar5 > , lambda_matches< Expr6 , Grammar6 > , lambda_matches< Expr7 , Grammar7 >
>
{};
template<
template<typename , typename , typename , typename , typename , typename , typename , typename , typename> class T
, typename Expr0 , typename Expr1 , typename Expr2 , typename Expr3 , typename Expr4 , typename Expr5 , typename Expr6 , typename Expr7 , typename Expr8
, typename Grammar0 , typename Grammar1 , typename Grammar2 , typename Grammar3 , typename Grammar4 , typename Grammar5 , typename Grammar6 , typename Grammar7 , typename Grammar8
>
struct lambda_matches<
T<Expr0 , Expr1 , Expr2 , Expr3 , Expr4 , Expr5 , Expr6 , Expr7 , Expr8>
, T<Grammar0 , Grammar1 , Grammar2 , Grammar3 , Grammar4 , Grammar5 , Grammar6 , Grammar7 , Grammar8>
BOOST_PROTO_TEMPLATE_ARITY_PARAM(9)
>
: and_9<
lambda_matches< Expr0 , Grammar0 >::value,
lambda_matches< Expr1 , Grammar1 > , lambda_matches< Expr2 , Grammar2 > , lambda_matches< Expr3 , Grammar3 > , lambda_matches< Expr4 , Grammar4 > , lambda_matches< Expr5 , Grammar5 > , lambda_matches< Expr6 , Grammar6 > , lambda_matches< Expr7 , Grammar7 > , lambda_matches< Expr8 , Grammar8 >
>
{};
template<
template<typename , typename , typename , typename , typename , typename , typename , typename , typename , typename> class T
, typename Expr0 , typename Expr1 , typename Expr2 , typename Expr3 , typename Expr4 , typename Expr5 , typename Expr6 , typename Expr7 , typename Expr8 , typename Expr9
, typename Grammar0 , typename Grammar1 , typename Grammar2 , typename Grammar3 , typename Grammar4 , typename Grammar5 , typename Grammar6 , typename Grammar7 , typename Grammar8 , typename Grammar9
>
struct lambda_matches<
T<Expr0 , Expr1 , Expr2 , Expr3 , Expr4 , Expr5 , Expr6 , Expr7 , Expr8 , Expr9>
, T<Grammar0 , Grammar1 , Grammar2 , Grammar3 , Grammar4 , Grammar5 , Grammar6 , Grammar7 , Grammar8 , Grammar9>
BOOST_PROTO_TEMPLATE_ARITY_PARAM(10)
>
: and_10<
lambda_matches< Expr0 , Grammar0 >::value,
lambda_matches< Expr1 , Grammar1 > , lambda_matches< Expr2 , Grammar2 > , lambda_matches< Expr3 , Grammar3 > , lambda_matches< Expr4 , Grammar4 > , lambda_matches< Expr5 , Grammar5 > , lambda_matches< Expr6 , Grammar6 > , lambda_matches< Expr7 , Grammar7 > , lambda_matches< Expr8 , Grammar8 > , lambda_matches< Expr9 , Grammar9 >
>
{};
|