为类模板类型指定别名,将会很方便。比如你可以使用最常规的方法指定别名即typedef,具体代码如下所示:
typedef std::array<double,12> arrd ;
typedef std::array<int,12> arri ;
typedef std::array<string,12> arrst ;
arrd gallons ; //gallons 是array(double,12)类型的变量
arri days ; //days 是array(int,12)类型的变量
arrst months ; //months 是array(string,12)类型的变量
假如你常常使用上述方法指定别名,那么你可能是忘记了C++(11)的新功能——使用模板提供一些列别名,具体代码如下所示:
template<Type>
using arrtype = std::array<Type,12> ;
arrtype<double> arrd ;
arrtype<int> arri ;
arrtype<string> arrst ;
总而言之就是使用arrtype<Type>去代替 std::array<Type,12> 。
并且C++11允许将using语法用于非模板的别名申明,这种语句的可读性比typedef更高。
typedef const char* pc1 ;
using pc2 = const char* ;