import std.meta;
enum A = AliasSeq!(1, 2, 3, 4);
THREELOOP: static foreach (idx, field; A) {
static if (field == 3) {
pragma(msg, "Got a 3!");
break THREELOOP;
}
static if (idx == A.length - 1) {
static assert(0, "Got no 3...");
}
}
What I'd like to achieve in this example is for compilation to
fail if the given tuple doesn't contain a matching item. Is
there an easy way to do this? Trying to break out of the static
foreach gives me
Error:enclosing label `THREELOOP` for `break` not found
In this reduced example, I was able to accomplish this by setting
some enum within the successful comparison body and then checking
e.g. static if (!__traits(compiles, FOUND)) but this breaks down
once I start dealing with multiple levels of scope.