次のように名前空間を省略した場合、ここでの質問に従います。
void f(window);
class window{
private:
int a;
friend void ::f(window);
};
void f(window rhs){
std::cout << rhs.a << std::endl;
}
私は奇妙な振る舞いをします:
friend void f(window);
f(window) の前方宣言なしでコンパイルしますが、
friend void ::f(window);
ではない:
error C2039: 'f' : is not a member of '`global namespace''
誰かがその理由を説明できますか? とにかくグローバル名前空間にいる場合、 :: がこの違いを生むのはなぜですか...
感謝?