C++11 typedef和C+之间的差异+;11类型别名

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]

我在这里阅读模板别名:

我想知道,即使它写在我链接的页面的第一行,typedef和类型别名(
使用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为类型提供别名。