Gre*_*ree 3 c++ namespaces class definition
g++、icc 和 clang 接受以下代码:
namespace ns { struct A ; }
namespace ns1 // note : not enclosing namespace
{
using namespace ns ;
struct A { } ;
}
Run Code Online (Sandbox Code Playgroud)
由于标准,这是一个有效的代码。?
[命名空间。qual ]#7: ... 然而,在这样的命名空间成员声明中,嵌套名称说明符可能依赖 using-directives 隐式提供嵌套名称说明符的初始部分。
如相关答案所述,
您可以省略nested-name-specifier 的初始部分,但不能省略任何中间部分。
(从我知道它可以/必须在封闭的命名空间中完成,我不记得了。)
代码符合要求,但可能不会达到您的预期。
namespace ns
{
struct A ; // declaration of ns::A
}
namespace ns1
{
using namespace ns ;
struct A { } ; // definition of ns1::A, which has nothing to do with ns::A
}
Run Code Online (Sandbox Code Playgroud)
请注意,命名空间内的任何声明都会成为该命名空间的成员,因此ns::A和ns1::A是两个不相关的structs。
| 归档时间: |
|
| 查看次数: |
1172 次 |
| 最近记录: |