别名模板

Version >= C++ 11

基本示例:

template<typename T> using pointer = T*;

这个定义使得 pointer<T> 成为 T*的别名。例如:

pointer<int> p = new int; // equivalent to: int* p = new int;

别名模板不能专门化。但是,可以通过让它们引用结构中的嵌套类型来间接获得该功能:

template<typename T>
 struct nonconst_pointer_helper { typedef T* type; };

template<typename T>
 struct nonconst_pointer_helper<T const> { typedef T* type; };

template<typename T> using nonconst_pointer = nonconst_pointer_helper<T>::type;