friend な演算子がコンパイルエラーになってしまいます。何故ですか?
クラス内で

friend ostream& operator<< (ostream& out, const Int& rhs);

と宣言していて、

ostream& operator<< (ostream& out, const Int& rhs)
{
out << rhs.m_Value;
return out;
}
と実装しているのですが m_Value <- こいつがプライベイト変数なのですが、
プライベートだと怒られます。
なぜか operator<< ではなくて、通常の関数にすると大丈夫なのです。
何故演算子だとコンパイルエラーになるのでしょうか?

VC6 を使っています。よろしくお願いします。