Erro C2689 do Compilador
'function' : uma função de amigo não pode ser definida dentro de uma classe local
Você pode declarar mas não definir uma função de amigo em uma classe local.
A seguinte amostra gera C2689:
// C2689.cpp
// compile with: /c
void g() {
void f2();
class X {
friend void f2(){} // C2689
friend void f2(); // OK
};
}