On Monday 24 January 2011 07:48:25 Andrej Mitrovic wrote: > Maybe if we get that "any" function any time soon (pardon the pun), we > could simplify those constraints a little bit: > > enum string[] binaryOps = ["+", "-", "*", "/", "%", "^^", "&", "|", > "^", "<<", ">>", ">>>", "~"]; > > void assertPred(string op, L, R, E) > (L lhs, R rhs, E expected, lazy string msg = null, > string file = __FILE__, size_t line = __LINE__) > if(any(op, binaryOps) && > __traits(compiles, mixin("lhs " ~ op ~ " rhs")) && > __traits(compiles, mixin("(lhs " ~ op ~ " rhs) == expected")) && > isPrintable!L && > isPrintable!R) > { > } > > I don't recall what any will look like exactly, but something like > that could work I guess.
Assuming that it worked with CTFE, of course (surprisingly little in std.algorithm works in CTFE from what I've seen). Ultimately, I don' think that it matters all that much, since you need a list of the acceptable operators somewhere regardless, but using any _would_ be a bit cleaner. - Jonathan M Davis