我在这里阅读模板别名:http://en.cppreference.com/w/cpp/language/type_alias
我想知道,即使它写在我链接的页面的第一行,typedef和类型别名(using mytype = T;)之间的区别是什么
它们不可互换吗?
Pie*_*aud 20
两者之间绝对没有区别.
如果你看看标准:
7.1.3 typedef规范[dcl.typedef]
一个typedef的名称,也可以通过引入的别名声明.的标识符下面的
using关键字成为typedef的名称.它具有与typedef说明符引入的语义相同的语义.特别是,它没有定义新类型,它不应出现在type-id中.7.3.3使用声明[namespace.udecl]
如果using声明使用关键字typename并指定依赖名称(14.6.2),则using声明引入的名称将被视为typedef-name.
但是从这个页面:http://en.cppreference.com/w/cpp/language/type_alias
据说 :
类型别名类似于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;
Run Code Online (Sandbox Code Playgroud)
只有using指令才有可能.
不要忘记这是一个C++ 11功能.有些编译器还不支持它.