Perché non è ansible utilizzare una funzione non membro per sovraccaricare l’operatore di assegnazione?

L’operatore di assegnazione può essere sovraccaricato utilizzando una funzione membro, ma non una funzione friend non membro:

 class Test { int a; public: Test(int x) :a(x) {} friend Test& operator=(Test &obj1, Test &obj2); }; Test& operator=(Test &obj1, Test &obj2)//Not implemented fully. just for test. { return obj1; } 

Causa questo errore:

errore C2801: ‘operator =’ deve essere un membro non statico

Perché una funzione friend non può essere utilizzata per sovraccaricare l’operatore di assegnazione? Il compilatore sta permettendo di sovraccaricare altri operatori come += e -= usando friend . Qual è il problema / limite inerente nel supportare l’ operator= ?