| // https://issues.dlang.org/show_bug.cgi?id=6968 |
| /* |
| TEST_OUTPUT: |
| --- |
| fail_compilation/fail6968.d(26): Error: cannot pass type `int` as a function argument |
| fail_compilation/fail6968.d(26): Error: cannot pass type `long` as a function argument |
| fail_compilation/fail6968.d(26): Error: circular initialization of variable `fail6968.PredAny!(int, long, float).PredAny` |
| fail_compilation/fail6968.d(31): Error: template instance `fail6968.PredAny!(int, long, float)` error instantiating |
| fail_compilation/fail6968.d(31): while evaluating `pragma(msg, PredAny!(int, long, float))` |
| --- |
| */ |
| |
| template Pred(A, B) |
| { |
| static if(is(B == int)) |
| enum bool Pred = true; |
| else |
| enum bool Pred = false; |
| } |
| |
| template PredAny(A, B...) |
| { |
| static if(B.length == 0) |
| enum bool PredAny = false; |
| else |
| enum bool PredAny = Pred(A, B[0]) || PredAny(A, B[1..$]); |
| } |
| |
| void main() |
| { |
| pragma(msg, PredAny!(int, long, float)); |
| } |