Qué significa realmente la imposibilidad de devolver matrices en C?

No estoy tratando de replicar la pregunta habitual acerca de que C no puede devolver matrices, sino profundizar un poco más en ella.

No podemos hacer esto:

char f(void)[8] {
    char ret;
    // ...fill...
    return ret;
}

int main(int argc, char ** argv) {
    char obj_a[10];
    obj_a = f();
}

Pero podemos hacer:

struct s { char arr[10]; };

struct s f(void) {
    struct s ret;
    // ...fill...
    return ret;
}

int main(int argc, char ** argv) {
    struct s obj_a;
    obj_a = f();
}

Entonces, estaba rozando el código ASM generado por gcc -S y parece estar trabajando con la pila, dirigiéndome a-x(%rbp) como con cualquier otra función de retorno

¿Qué pasa con la devolución de matrices directamente? Quiero decir, no en términos de optimización o complejidad computacional, sino en términos de la capacidad real de hacerlo sin la capa de estructura.

Datos adicionales: estoy usando Linux y gcc en un Intel x64.

Respuestas a la pregunta(4)

Su respuesta a la pregunta