C++ 中命名空间别名的范围是什么?

问题描述 投票:0回答:7

在函数定义内定义的 C++ 命名空间别名是否具有块、函数、文件或其他作用域(有效期)?

c++ scope namespaces
7个回答
21
投票

这是区块的有效期。

例如:如果您按如下方式定义命名空间别名,则命名空间别名 abc 在

{...}
块之外将无效。

{  
    namespace abc = xyz;
    abc::test t;  //valid 
}
abc::test t;  //invalid

1
投票

范围是定义别名的声明区域。


0
投票

它将具有定义它的块的范围 - 可能与函数范围相同,除非您在函数内的块内声明别名。


0
投票

我相当确定命名空间别名仅在其创建的块内具有范围,就像大多数其他类型的标识符一样。我目前无法确定,但此页面似乎并不反对。


0
投票

据我所知,它在其声明的范围内。因此,如果您在一个方法中使用别名,那么它在该方法中有效,但在另一个方法中无效。



0
投票

在引入范围内有效。

看看http://en.cppreference.com/w/cpp/language/namespace_alias,我相信cppreference的解释,它更标准。

© www.soinside.com 2019 - 2024. All rights reserved.