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

时间:2018-01-21 23:54:37

标签: c++ 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;
    }
}

关于documentation等类似主题存在一些问题,但它们已经过时了。

1 个答案:

答案 0 :(得分:3)

自2018年1月起,将名称转发到命名空间仍然与标准的第一个版本相同,即声明必须在该命名空间内。

  

我可以写一些像class Foo::Bar

这样的内容吗?

不符合当前(C ++ 17)标准。

有一个提案P0289R0只添加了这样的功能,但它没有被遵循,并且从C ++ 17开始,这种更改还没有被引入标准。< / p>