Por que uma função de membro estático só pode ser declarada estática dentro da definição de classe e não também em sua própria definição?

Ao implementar uma classe para criar / atualizar caixas na tela, eu queria adicionar uma função de membro estática para garantir que nenhuma caixa visível no momento se sobreponha (levando suas informações de uma matriz de ponteiro estático para todas as caixas atualmente visíveis)

Meu código inicial tinha a seguinte estrutura:

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

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

Fiquei surpreso que isso tenha gerado um erro C2724: 'estático' não deve ser usado em funções-membro definidas no escopo do arquivo.

Com algumas tentativas, google e erro, descobri que minha definição de função deveria perder a palavra-chavestatic, ou seja, deve ser

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

No entanto, não tenho idéia de qual poderia ser a lógica por trás disso. Parece ser tão assimétrico e confuso ter um cabeçalho de função diferente para sua declaração na definição de classe e em sua própria definição. Existe alguma razão para isso?

questionAnswers(1)

yourAnswerToTheQuestion