On Friday, 26 February 2016 at 23:11:32 UTC, Andrei Alexandrescu
wrote:
On 02/26/2016 06:09 PM, Andrei Alexandrescu wrote:
static if (is(partition == function) || is(partition ==
delegate))
partition(r);
else if (__traits(compiles, partition!less(r, n)))
partition!less(r, n);
else
partition!less(r);
Nevertheless, I'm still on lookout for a more elegant solution!
I have this mindset that using __traits(compiles) is some sort
of cheating.
I don't see it as cheating; in fact it is more elegant, because
it checks for exactly the thing you depend on, namely that
`partition` is callable. Your explicit check above rejects
structs with opCall(), for example, which is probably not what
you intended.