The underlying problems are:* How do I ensure the two first arguments (used as coordinates) are types of numbers (all kinds: ints, floats, reals, etc.)* At least one argument is passed after the coordinates
I found a solution which satisfies my needs :) void foo(X, Y, Args...)(X x, Y y, Args args)if (__traits(isArithmetic, x) && __traits(isArithmetic, y) && args.length >= 1)
{ // ... }