我在一篇文章中遇到了以下代码
struct entire_program   
{
    struct B;
    struct A
    {
        B *bbb;
        void Aa() { B bb; bb.Bb(); };
    };
    struct B
    {
        A aaa;
        void Bb() { A aa; aa.Aa(); };
    };
};
为什么在这种情况下允许我调用方法Bb(),但是如果我更改struct entire_program它namespace entire_program会产生编译器错误?
我已经读过这个问题,我要问的是:如果可以在类/结构/联合中调用尚未定义的方法,为什么命名空间不能以相同的方式工作?我对这种行为背后的动机很感兴趣。
Programmers.SE 上的相关问题(针对那些对文章中介绍的编码风格感兴趣的人)