Возможно ли в C ++ ссылаться на одну и ту же переменную, используя разные имена, без использования препроцессора?
Для достижения того же эффекта, что и этот псевдокод
struct vec3f {
float[3] values;
};
struct color : public vec3f {
#define r values[0]
#define g values[1]
#define b values[2]
};
color c;
c.r = 0.5f;
Следующий код имеет правильную семантику, за исключением выделения места в структуре для трех ссылок:
struct color : public vec3f {
float& r;
float& g;
float& b;
color() : r(values[0]), g(values[1]), b(values[2]) { }
};
Есть ли способ получить эту замену имени во время компиляции без увеличения размера структуры?