我知道在 C++11 中我们现在可以使用using
编写类型别名,例如typedef
s:
typedef int MyInt;
据我了解,相当于:
using MyInt = int;
新的语法是为了找到一种表达“模板 typedef”的方法而出现的:
template< class T > using MyType = AnotherType< T, MyAllocatorType >;
但是,对于前两个非模板示例,标准中是否还有其他细微差别?例如,typedef
以“弱”方式进行别名处理。也就是说,它不会创建新类型,而只会创建新名称(这些名称之间的转换是隐式的)。
是否与using
或者它会生成新类型吗?有什么区别吗?
从标准(强调我的)(7.1.3.2)来看,它们是等效的:
typedef 名称也可以通过别名声明引入。这
using 关键字后面的标识符成为 typedef-name 并且
标识符所属的可选 attribute-specifier-seq
到那个 typedef 名称。它具有相同的语义,就好像它是
由 typedef 说明符引入。特别是,它
没有定义新类型,并且它不应出现在 type-id 中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)