@@ -128,45 +128,38 @@ template dtorIsNothrow(T)
128
128
enum dtorIsNothrow = is (typeof (function {T t=void ;}) : void function () nothrow );
129
129
}
130
130
131
- /*
132
- Tests whether all given items satisfy a template predicate, i.e. evaluates to
133
- $(D F!(T[0]) && F!(T[1]) && ... && F!(T[$ - 1])).
134
- */
131
+ // taken from std.meta.allSatisfy
135
132
package (core.internal )
136
133
template allSatisfy (alias F, T... )
137
134
{
138
- static if (T.length == 0 )
139
- {
140
- enum allSatisfy = true ;
141
- }
142
- else static if (T.length == 1 )
135
+ static foreach (Ti; T)
143
136
{
144
- enum allSatisfy = F! (T[0 ]);
137
+ static if (! is (typeof (allSatisfy) == bool ) && // not yet defined
138
+ ! F! (Ti))
139
+ {
140
+ enum allSatisfy = false ;
141
+ }
145
142
}
146
- else
143
+ static if ( ! is ( typeof (allSatisfy) == bool )) // if not yet defined
147
144
{
148
- static if (allSatisfy! (F, T[0 .. $/ 2 ]))
149
- enum allSatisfy = allSatisfy! (F, T[$/ 2 .. $]);
150
- else
151
- enum allSatisfy = false ;
145
+ enum allSatisfy = true ;
152
146
}
153
147
}
154
148
149
+ // taken from std.meta.anySatisfy
155
150
template anySatisfy (alias F, T... )
156
151
{
157
- static if (T.length == 0 )
158
- {
159
- enum anySatisfy = false ;
160
- }
161
- else static if (T.length == 1 )
152
+ static foreach (Ti; T)
162
153
{
163
- enum anySatisfy = F! (T[0 ]);
154
+ static if (! is (typeof (anySatisfy) == bool ) && // not yet defined
155
+ F! (Ti))
156
+ {
157
+ enum anySatisfy = true ;
158
+ }
164
159
}
165
- else
160
+ static if ( ! is ( typeof (anySatisfy) == bool )) // if not yet defined
166
161
{
167
- enum anySatisfy =
168
- anySatisfy! (F, T[ 0 .. $/ 2 ]) ||
169
- anySatisfy! (F, T[$/ 2 .. $ ]);
162
+ enum anySatisfy = false ;
170
163
}
171
164
}
172
165
0 commit comments