Я использовал что-то подобное раньше. Я не уверен, что стандарт на 100% в порядке, но, похоже, он подходит для всех компиляторов, на которых мне нужно было его использовать.
struct Vec2
{
float x;
float y;
float& operator[](int i) { return *(&x+i); }
};
Вы можете добавить проверку границ и т. Д. К оператору [], если хотите (возможно, вам нужно), и вы можете предоставить const-версию оператора [].