I've got D2 code: > template ObjcMethodSelectorCheck(string sel, A...) { > const n = countMethodArguments(sel);
and: pure static uint countMethodArguments(string name) { if (name.length == 0) return 0; if (name[0] == ':') return 1+countMethodArguments(name[1..$]); return countMethodArguments(name[1..$]); } Original version of this method was pure too, but used count++. Fine, maybe compiler wasn't smart enough to understand that, but now I've rewritten it in purely functional style, and it's still not "constant" enough! objc/method.d(54): Error: cannot evaluate countMethodArguments(ToSetterSelector) at compile time objc/method.d(57): Error: expression 1u != countMethodArguments(ToSetterSelector) is not constant or does not evaluate to a bool