请考虑以下两个using陈述:
using ::space1::space2::MyType;
using MyType = ::space1::space2::MyType;
Run Code Online (Sandbox Code Playgroud)
似乎在之后using,两种方式都允许我们MyType直接使用(没有任何限定符).
那么上面两个有什么区别呢?
正如评论中所述,在第一种情况下,您实际上是将名称从名称空间导出到包含using声明的名称空间,而在第二种情况下,您在名称空间中定义一个别名,其中包含using指向该特定名称的语句及其周围的命名空间。
例如,使用第二个表达式,您可以定义如下所示的别名:
using Foo = Bar<MyClass>;
template <class C>
using Foo = Bar<C, MyClass>;
Run Code Online (Sandbox Code Playgroud)
虽然第一个using表达式不能,但它仅用于让名称在与包含名称的空间不同的空间中可用。
有关使用指令、使用声明和别名(类型和模板)的更多详细信息,请参阅此处。
| 归档时间: |
|
| 查看次数: |
149 次 |
| 最近记录: |