¿Por qué una función miembro estática solo puede declararse estática dentro de la definición de clase y no también en su propia definición?

Mientras implementaba una clase para crear / actualizar cuadros en la pantalla, quería agregar una función miembro estática que se asegurara de que ningún cuadro visible actualmente se superponga (tomando su información de una matriz de puntero estático a todos los cuadros actualmente visibles)

Mi código inicial tenía la siguiente estructura:

class Box
{
public:
    // ...
    static void arrangeOverlappingBoxes();
};

static void Box::arrangeOverlappingBoxes()
{
    // ...
}

Me sorprendió bastante que esto generara un error C2724: 'static' no debería usarse en funciones miembro definidas en el alcance del archivo.

Con un poco de prueba, google y error, descubrí que la definición de mi función debería perder la palabra clavestatic, es decir, debería ser

void Box::arrangeOverlappingBoxes()
{
    // ...
}

Sin embargo, no tengo idea de cuál podría ser la razón detrás de esto. Parece ser tan asimétrico y confuso tener un encabezado de función diferente para su declaración en la definición de clase y su propia definición. Hay alguna razón para esto?

Respuestas a la pregunta(1)

Su respuesta a la pregunta