简而言之,我是在问
using foo::bar::baz;
具有相同的效果
using baz = foo::bar::baz;
(很明显,我假设foo::bar::baz
命名了一个不是类成员的类型,例如,我指的是类似namesapce foo::bar { using baz = int; }
的类型,而不是类似namespace foo { struct bar { using baz = int; }; }
的类型。)
我非常确定它们是两个不同的东西(否则它们也可以一直并排,但事实并非如此,因为我知道前者不可能在struct
/class
中,不像后者),但我如何从标准中读取它呢?我正在查看[namespace. udecl]和[dcl. pre],但我无法真正得出结论。
1条答案
按热度按时间ghhaqwfi1#
这两者之间肯定有区别,但是大多数程序员对其中的大多数都不感兴趣。
一个实际的区别是导出模块中先前声明的名称:
x一个一个一个一个x一个一个二个x
当然,* using-declaration * 也可以应用于非类型声明,而 * alias-declaration * 也可以作为模板。