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

时间:2009-09-30 00:54:15

标签: c++ scope namespaces

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

7 个答案:

答案 0 :(得分:20)

这是一段有效期。例如,如果您定义如下的命名空间别名,则命名空间别名abc在{...}块之外将无效。


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

答案 1 :(得分:1)

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

我非常确定命名空间别名只在其创建的块中具有范围,就像大多数其他种类的标识符一样。我目前无法确定,但this page似乎并不反对。

答案 4 :(得分:0)

据我所知,这是在宣布的范围内。因此,如果您在方法中使用别名,那么它在该方法中有效,但在另一种方法中无效。

答案 5 :(得分:0)

答案 6 :(得分:0)

它在引入范围的持续时间内有效。

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