On Saturday, 11 March 2017 at 14:49:42 UTC, XavierAP wrote:
But also I don't want to modify the function signature,
certainly in this way.
It is already copied by the time you get in to the function
though because of the signature (unless they are constructed
in-place at the call site).
But you can also do an unrolled loop with AliasSeq
http://dpldocs.info/experimental-docs/std.meta.AliasSeq.html
import std.meta;
import std.exception;
void calc(double in1, double in2, double in3, double in4)
in {
foreach(ref item; AliasSeq!(in1, in2, in3, in4))
enforce(item > 0);
}
body { /* ... */ }
Note that if the loop body is large, this could bloat the code
slightly since a foreach over AliasSeq is always an unrolled
loop. But that's probably irrelevant to you.