使用和使用=对于类型的区别?

One*_*ero 5 c++ using

请考虑以下两个using陈述:

using ::space1::space2::MyType;
using MyType = ::space1::space2::MyType;
Run Code Online (Sandbox Code Playgroud)

似乎在之后using,两种方式都允许我们MyType直接使用(没有任何限定符).

那么上面两个有什么区别呢?

sky*_*ack 2

正如评论中所述,在第一种情况下,您实际上是将名称从名称空间导出到包含using声明的名称空间,而在第二种情况下,您在名称空间中定义一个别名,其中包含using指向该特定名称的语句及其周围的命名空间。

例如,使用第二个表达式,您可以定义如下所示的别名:

using Foo = Bar<MyClass>;

template <class C>
using Foo = Bar<C, MyClass>;
Run Code Online (Sandbox Code Playgroud)

虽然第一个using表达式不能,但它仅用于让名称在与包含名称的空间不同的空间中可用。

有关使用指令、使用声明和别名(类型和模板)的更多详细信息,请参阅此处。