我可以避免在前向声明中使用嵌套名称空间吗?

Can I avoid nested namespaces in forward declaration?

截至 2018 年 1 月,最现代的前向声明方式是什么?我们使用类似下面的东西,但是有更紧凑的版本吗?

我可以写类似 class Foo::Bar 的东西吗(对我不起作用,但也许我错过了更新的 C++ 标准)?或者更紧凑的版本?

当前样式:

namespace Foo
{
    class SimpleCommandParser;

    namespace Bar
    {
        class Parts;
        class Situation;
        class Callsign;
    }
    namespace Yep
    {
        class AircraftSnapshot;
        class Aircraft;
    }
}

有一些关于 Forward Declaration in a nested namespace 等类似主题的问题,但它们已经很老了。

截至 2018 年 1 月,名称在命名空间中的前向声明仍然与第一版标准相同,即声明必须在该命名空间内。

Could I write something like class Foo::Bar

不在当前 (C++17) 标准中。

已经有人提议 P0289R0 添加这样的功能,但它没有被遵循,并且这样的变化还没有被引入到 C++17 的标准中。