Можно ли написать одну шаблонную функцию для увеличения (числовых) полей разных структур? Например:
struct Color
{
ubyte a,r,g,b;
}
struct Point
{
double x, y;
}
Я пробовал что-то вроде этого:
T update(T, A)(T t, A a)
if (is(T == struct))
{
auto vals = t.tupleof;
foreach (i; 0 .. vals.length) {
vals[i] += a; // error: i cannot be read at compile time
}
return T(vals); // convert back to struct
}
Я также пробовал писать шаблоны функций, которые принимают кортежи, но кортежи всегда расширяются, что не позволяет компилятору сопоставить правильный шаблон. Спасибо.