.. an extension of certain compilers, and straight illegal in other compilers.

The only standard-compliant of doing something similar is with the following:

class vec3
{
    float my_vec[3];
public:
    [[nodiscard]] constexpr float& x(){
        return my_vec[0];
    }
    
    [[nodiscard]] constexpr float& y(){
        return my_vec[1];
    }

.....
};

But i see this approach less than ideal (writing () per member access might be a little tough). Hence, i propose the following syntax:

class vec3
{
    float my_vec[3];
public:
    using x = my_vec[0];
    using y = my_vec[1];
    ....
};

which would serve as a referencing mechanism to the specified elements of the array, similar to the previous method.

El jue, 7 mar 2024 a las 22:54, veronica alphonso (<verodeving@gmail.com>) escribió:
In C++ there isn't a standard-compliant way of creating named aliases of c-like array elements. In certain contexts, it is preferred to access these these array elements with a named identifier that is bounded to that particular array entry, e.g:

union
{
    float my_vec[3];
    struct
    {
        float x, y, z;
    };
};

However, anonymous structs/classes are only