On Tuesday, 10 November 2020 at 17:19:09 UTC, Ola Fosheim Grøstad wrote:

Interesting, so "auto ref T" is the go-to type specifier for generic code then? I guess I also should conditionally add things like pure, nogc, nothrow... I assume I would have to test the comparison operator. I actually want to implement

The compiler infers pure, @nogc, nothrow etc. for template functions automatically. It's actually better if you don't add them by hand.

(low <= value) && (value < high)

So I guess I need to test both. But how...? compiles-trait?

You could add a template constraint, if you wanted. Something like:

alias isOrderingComparableWith(T, U) = __traits(compiles, (T t, U u) => t < u);
    bool between(Value, Bound)(...)
        if (isOrderingComparaibleWith!(Value, Bound))

For a function this short, though, I don't think it's really necessary.

Reply via email to