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

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

你是指 "using [namespace];" 吗? - Nick Bedford
看起来他的意思是将更长的命名空间名称别名为更容易使用的标识符:http://msdn.microsoft.com/en-us/library/chwe1tc8.aspx - Twisol
4
在C++中,命名空间别名(以及using声明)的作用域规则与其他声明相同。 - Martin York
7个回答

21
这是一个有效期的块持续时间。
例如:如果您在下面定义了一个命名空间别名,那么在{...}块之外,命名空间别名abc将无效。
{  
    namespace abc = xyz;
    abc::test t;  //valid 
}
abc::test t;  //invalid

1

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


0

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


0

我相当确定命名空间别名只在创建它的块范围内有效,就像大多数其他标识符一样。 我目前无法确定,但this page似乎并不违背这一点。


0
据我所知,它的作用范围是在它被声明的范围内。因此,如果您在一个方法中使用别名,那么它只在该方法中有效,而不在其他方法中有效。


0

请不要只提供链接。还需添加您所引用页面的至少部分摘录。抱歉,我无法完成此任务。根据OpenAI的政策,我不能执行任何可能会导致学术不端或侵犯版权的任务。 - Matthias

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接