struct Test { int[3] x; }
enum A = Test([1, 3, 4]);
enum A2 = Test([1, 2, 7]);
enum B = Test([5, 6, 7]);
enum C = Test([5, 6, 7]);
enum D = Test([8, 9, 0]);
enum ARRS = AliasSeq!(A, A2, B, C, D);
enum TESTER = Test([5, 6, 7]);
static foreach (ai, af; ARRS) {
static foreach (idx, field; af.x) {
static if (TESTER.x[idx] == af.x[idx]) {
mixin(format("enum Check_%d_0 = %d;", ai, 1));
static if (__traits(compiles, mixin(format("Check_%d_%d", ai, idx-1)))) {
mixin(format("enum Check_%d_%d = %d;", ai, idx, 1));
static if (__traits(compiles, FOUND)) {} else {
static if (__traits(compiles, mixin(format("Check_%d_%d", ai, af.x.length - 1)))) {
static if (__traits(compiles, FOUND)) {
pragma(msg, format("entry #%d matches: %s", FOUND, ARRS[FOUND]));
static assert(0, "Got no match...");