我在这里阅读模板别名:http: //en.cppreference.com/w/cpp/language/type_alias
而且我想知道,即使它写在我链接的页面的第一行,typedef 和类型别名 ( using mytype = T;
)之间有什么区别
他们不是可以互换的吗?
我在这里阅读模板别名:http: //en.cppreference.com/w/cpp/language/type_alias
而且我想知道,即使它写在我链接的页面的第一行,typedef 和类型别名 ( using mytype = T;
)之间有什么区别
他们不是可以互换的吗?
两者之间绝对没有区别。
如果你看一下标准:
7.1.3 typedef 说明符 [dcl.typedef ]
typedef-name也可以由alias -declaration引入。关键字后面的标识符成为
using
typedef -name。它具有与由说明符引入的语义相同的语义typedef
。特别是,它没有定义新类型,并且不应出现在type-id中。7.3.3 using 声明 [namespace.udecl]
如果using-declaration使用关键字typename并指定依赖名称 (14.6.2),则using-declaration引入的名称将被视为typedef-name。
但是从这个页面:http ://en.cppreference.com/w/cpp/language/type_alias
据说 :
类型别名类似于typedefs,但是具有使用模板的优势。
看来这
// template type alias
template<class T> using ptr = T*;
// the name 'ptr<T>' is now an alias for pointer to T
ptr<int> x;
只有使用using
指令才有可能。
不要忘记这是 C++11 的一个特性。一些编译器还不支持它。
没有区别。
typedef 给出类型的别名。