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.