import std.stdio;
import std.typetuple;
class A {
static const int value = 3;
};
class B {
static const int value = 4;
};
pure auto getValue(D, T...)() if (staticIndexOf!(D, T) > -1) {
return T[staticIndexOf!(D, T)].value;
}
int main() {
static assert(getValue!(B, A, B) == 4);
writeln(getValue!(A, A, B));
return 0;
}
aW1wb3J0IHN0ZC5zdGRpbzsKaW1wb3J0IHN0ZC50eXBldHVwbGU7CgpjbGFzcyBBIHsKCXN0YXRpYyBjb25zdCBpbnQgdmFsdWUgPSAzOwp9OwoKY2xhc3MgQiB7CglzdGF0aWMgY29uc3QgaW50IHZhbHVlID0gNDsKfTsKCgpwdXJlIGF1dG8gZ2V0VmFsdWUoRCwgVC4uLikoKSBpZiAoc3RhdGljSW5kZXhPZiEoRCwgVCkgPiAtMSkgewoJcmV0dXJuIFRbc3RhdGljSW5kZXhPZiEoRCwgVCldLnZhbHVlOwp9CgppbnQgbWFpbigpIHsKCXN0YXRpYyBhc3NlcnQoZ2V0VmFsdWUhKEIsIEEsIEIpID09IDQpOwoJCgl3cml0ZWxuKGdldFZhbHVlIShBLCBBLCBCKSk7CgkKCXJldHVybiAwOwp9