Por que operadores sobrecarregados não podem ser definidos como membros estáticos de uma classe?

A sintaxe do C ++ permite definir operadores sobrecarregados dentro da estrutura / classe como:

struct X
{
   void operator+(X);
}

ou fora da estrutura / classe como:

void operator+(X, X);

mas não como

struct X
{
   static void operator+(X, X);
}

Algum corpo conhece razões para essa decisão? Por que a terceira forma não é permitida? (MSVC dá um erro de sintaxe). Talvez haja alguma história por trás disso?

p.s. A presença da primeira e da segunda definições ao mesmo tempo cria ambiguidade:

1>CppTest1.cxx
1>c:\ballerup\misc\cf_html\cpptest1.cxx(39) : error C2593: 'operator +' is ambiguous
1>        c:\ballerup\misc\cf_html\cpptest1.cxx(13): could be 'void B1::operator +(B1 &)'
1>        c:\ballerup\misc\cf_html\cpptest1.cxx(16): or       'void operator +(B1 &,B1 &)'
1>        while trying to match the argument list '(B1, B1)'

Eu não entendo porque essa ambigüidade é melhor do que entre 1,3 e 2,3.

questionAnswers(7)

yourAnswerToTheQuestion