C++11 typedef和C+之间的差异+;11类型别名
我在这里阅读模板别名: 我想知道,即使它写在我链接的页面的第一行,typedef和类型别名(C++11 typedef和C+之间的差异+;11类型别名,c++11,C++11,我在这里阅读模板别名: 我想知道,即使它写在我链接的页面的第一行,typedef和类型别名(使用mytype=T;)之间有什么区别 它们不是可以互换的吗?两者之间绝对没有区别。 如果您查看一下标准: 7.1.3类型定义规范[dcl.typedef] typedef名称也可以通过别名声明引入。using关键字后面的标识符将成为typedef名称它的语义与由typedef说明符引入的语义相同。特别是,它不定义新类型,也不应出现在type-id中 7.3.3使用声明[namespace.udecl]
使用mytype=T;
)之间有什么区别
它们不是可以互换的吗?两者之间绝对没有区别。 如果您查看一下标准: 7.1.3类型定义规范[dcl.typedef] typedef名称也可以通过别名声明引入。
using
关键字后面的标识符将成为typedef名称它的语义与由typedef
说明符引入的语义相同。特别是,它不定义新类型,也不应出现在type-id中
7.3.3使用声明[namespace.udecl]
如果using声明使用关键字typename并指定从属名称(14.6.2),则using声明引入的名称将被视为typedef名称
但是,从本页: 据说: 类型别名类似于,但是,具有使用模板的优点。 看来这个
// template type alias
template<class T> using ptr = T*;
// the name 'ptr<T>' is now an alias for pointer to T
ptr<int> x;
//模板类型别名
使用ptr=T*的模板;
//名称“ptr”现在是指向T的指针的别名
ptrx;
只有使用指令才能执行此操作
不要忘记这是一个C++11特性。有些编译器还不支持它。没有区别
typedef为类型提供别名。