Why does UFCS seem to require that functions be defined in a
higher (global being the highest) scope than themselves while the
normal function syntax works fine?

This is OK:
int fun1(int n) {
        return n + 1;
}

int fun2(int n) {
        return n.fun1;
}

This is also OK:
int fun3(int n) {
        int fun4(int n) {
                return n + 1;
        }

        return fun4(n);
}

This is not OK:
int fun5(int n) {
        int fun6(int n) {
                return n + 1;
        }

        return n.fun6;
}

Reply via email to