Was just wondering why UFCS only works in one direction, that is why functions can be used as if it were part of a struct/class but not the other way around.

struct Vec3
{
    float x;
    float y;
    float z;

    float dot(Vec3 o)
    {
        return x * o.x + y * o.y + z * o.z;
    }
}

int dot;
Vec3 a, b;

float value = dot(a, b); // would be same as a.dot(b)
                         // doesn't try to use local "int dot"


It may not add as much value but I think it'd be a bit better as now you no longer have a global function with a simple name "dot". For mathematical purposes it is a lot easier to understand "dot(a, b)" than "a.dot(b)", at least in my opinion. Just curious that's all.

Reply via email to