C++11中的“typedef”和“using”有什么区别?

我知道,在C++11中,我们现在可以使用using来编写类型别名,如typedefs:

typedef int MyInt;

据我所知,相当于:

使用MyInt=int;

这种新的语法是通过努力找到一种表达“的方式”而产生的;模板类型定义":

模板<T级>使用MyType=AnotherType<T、 MyAllocatorType>;

但是,对于前两个非模板示例,标准中还有其他细微差别吗?例如,typedefs在"“弱”;方法也就是说,它不创建新类型,只创建新名称(这些名称之间的转换是隐式的)

它与使用的相同,还是生成新类型?有什么不同吗

根据标准(重点矿山)(7.1.3.2),它们是等效的:

typedef名称也可以通过别名声明引入。这个
using关键字后面的标识符将成为typedef名称和
标识符后的可选属性说明符seq
到那个名字它的语义与
由typedef说明符引入。
特别是
不定义新类型,且不应出现在类型id中

发表评论