在函数定义内定义的 C++ 命名空间别名是否具有块、函数、文件或其他作用域(有效期)?
这是区块的有效期。
例如:如果您按如下方式定义命名空间别名,则命名空间别名 abc 在
{...}
块之外将无效。
{
namespace abc = xyz;
abc::test t; //valid
}
abc::test t; //invalid
范围是定义别名的声明区域。
它将具有定义它的块的范围 - 可能与函数范围相同,除非您在函数内的块内声明别名。
我相当确定命名空间别名仅在其创建的块内具有范围,就像大多数其他类型的标识符一样。我目前无法确定,但此页面似乎并不反对。
据我所知,它在其声明的范围内。因此,如果您在一个方法中使用别名,那么它在该方法中有效,但在另一个方法中无效。
在引入范围内有效。
看看http://en.cppreference.com/w/cpp/language/namespace_alias,我相信cppreference的解释,它更标准。