別名模板

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;