import std.meta; import std.range : repeat; auto getRandPair(T)() { import std.random; struct rndParams { AliasSeq!(T, T) pack; } rndParams tmp; auto rnd = Random(unpredictableSeed); // Generate an integer in [0, 1023] tmp.pack[0] = cast(T) uniform(0, 1024, rnd); tmp.pack[1] = cast(T) uniform(0, 1024, rnd); } @FunctionBenchmark!("int add benchmark", 0.repeat(100), getRandPair!int) int add(int x, int y) { return x + y; } @TemplateBenchmark!(0, int, float, double) @FunctionBenchmark!( "Templated add benchmark", 0.repeat(100), getRandPair) T templatedAdd(T)(T x, T y) { return x + y; }